From 0425dc8981120741e47d5061a7dae9897e784f12 Mon Sep 17 00:00:00 2001 From: eddyem Date: Tue, 17 Dec 2019 21:49:29 +0300 Subject: [PATCH] add LEDS_BT --- 220controlled_socket/kicad/socket.xml | 1186 ++++++++--------- 220controlled_socket/kicad/socketBOM.csv | 82 +- 220controlled_socket/kicad/socketBOM.ods | Bin 12775 -> 18354 bytes 220controlled_socket/src/220socket.ihx | 246 ++-- DRUM/schematics/drum.pro | 46 +- LEDS_BT/LEDs.config | 3 + LEDS_BT/LEDs.creator | 1 + LEDS_BT/LEDs.files | 6 + LEDS_BT/LEDs.includes | 1 + LEDS_BT/Makefile | 34 + LEDS_BT/Readme | 2 + LEDS_BT/interrupts.c | 167 +++ LEDS_BT/interrupts.h | 147 ++ LEDS_BT/main.c | 141 ++ LEDS_BT/ports_definition.h | 43 + LEDS_BT/uart.c | 67 + LEDS_BT/uart.h | 46 + LEDS_BT/uart.ihx | 30 + .../schematic/stepper-rescue.lib | 204 ++- stepper_independent_bin/schematic/stepper.pro | 38 +- 20 files changed, 1624 insertions(+), 866 deletions(-) create mode 100644 LEDS_BT/LEDs.config create mode 100644 LEDS_BT/LEDs.creator create mode 100644 LEDS_BT/LEDs.files create mode 100644 LEDS_BT/LEDs.includes create mode 100644 LEDS_BT/Makefile create mode 100644 LEDS_BT/Readme create mode 100644 LEDS_BT/interrupts.c create mode 100644 LEDS_BT/interrupts.h create mode 100644 LEDS_BT/main.c create mode 100644 LEDS_BT/ports_definition.h create mode 100644 LEDS_BT/uart.c create mode 100644 LEDS_BT/uart.h create mode 100644 LEDS_BT/uart.ihx diff --git a/220controlled_socket/kicad/socket.xml b/220controlled_socket/kicad/socket.xml index 212a5d7..2e7ae18 100644 --- a/220controlled_socket/kicad/socket.xml +++ b/220controlled_socket/kicad/socket.xml @@ -1,9 +1,9 @@ - /Big/Data/00__Electronics/STM8/220controlled_socket/kicad/socket.sch - Пн 25 июн 2018 20:37:06 - Eeschema 4.0.7 + /home/eddy/Dropbox/Dropbox/Projects/STM8_samples/220controlled_socket/kicad/socket.sch + Вс 06 янв 2019 16:31:28 + Eeschema 6.0.0-rc1-unknown @@ -22,570 +22,598 @@ <comp ref="U3"> <value>STM8S003F3P</value> <footprint>Package_SSOP:SSOP-20_4.4x6.5mm_P0.65mm</footprint> - <libsource lib="socket-rescue" part="STM8S003F3P-RESCUE-socket"/> + <libsource lib="socket-rescue" part="STM8S003F3P-RESCUE-socket" description=""/> <sheetpath names="/" tstamps="/"/> <tstamp>5A632CF7</tstamp> </comp> <comp ref="U1"> <value>MAX3232</value> <footprint>Package_SSOP:SOP-16_4.4x10.4mm_P1.27mm</footprint> - <libsource lib="Interface_UART" part="MAX3232"/> + <libsource lib="socket-rescue" part="MAX3232" description=""/> <sheetpath names="/" tstamps="/"/> <tstamp>5A632ED9</tstamp> </comp> <comp ref="C7"> <value>0.1</value> <footprint>Capacitor_SMD:C_0603_1608Metric_Pad0.84x1.00mm_HandSolder</footprint> - <libsource lib="Device" part="C"/> + <libsource lib="socket-rescue" part="C" description=""/> <sheetpath names="/" tstamps="/"/> <tstamp>5A633096</tstamp> </comp> <comp ref="C4"> <value>0.1</value> <footprint>Capacitor_SMD:C_0603_1608Metric_Pad0.84x1.00mm_HandSolder</footprint> - <libsource lib="Device" part="C"/> + <libsource lib="socket-rescue" part="C" description=""/> <sheetpath names="/" tstamps="/"/> <tstamp>5A63312F</tstamp> </comp> <comp ref="C1"> <value>0.1</value> <footprint>Capacitor_SMD:C_0603_1608Metric_Pad0.84x1.00mm_HandSolder</footprint> - <libsource lib="Device" part="C"/> + <libsource lib="socket-rescue" part="C" description=""/> <sheetpath names="/" tstamps="/"/> <tstamp>5A63318D</tstamp> </comp> <comp ref="C2"> <value>0.1</value> <footprint>Capacitor_SMD:C_0603_1608Metric_Pad0.84x1.00mm_HandSolder</footprint> - <libsource lib="Device" part="C"/> + <libsource lib="socket-rescue" part="C" description=""/> <sheetpath names="/" tstamps="/"/> <tstamp>5A6331E2</tstamp> </comp> <comp ref="J1"> <value>DB9_Female</value> <footprint>Connector_Dsub:DSUB-9_Female_Horizontal_P2.77x2.84mm_EdgePinOffset4.94mm_Housed_MountingHolesOffset7.48mm</footprint> - <libsource lib="Connector_Specialized" part="DB9_Female"/> + <libsource lib="socket-rescue" part="DB9_Female" description=""/> <sheetpath names="/" tstamps="/"/> <tstamp>5A633A5D</tstamp> </comp> <comp ref="D1"> <value>SMF05</value> <footprint>Package_TO_SOT_SMD:SOT-353_SC-70-5_Handsoldering</footprint> - <libsource lib="Power_Protection" part="SP0504BAHT"/> + <libsource lib="socket-rescue" part="SP0504BAHT" description=""/> <sheetpath names="/" tstamps="/"/> <tstamp>5A6340F1</tstamp> </comp> <comp ref="U2"> <value>CH340G</value> <footprint>Package_SOIC:SOIC-16_3.9x9.9mm_P1.27mm</footprint> - <libsource lib="ch34x" part="CH340G"/> + <libsource lib="ch34x" part="CH340G" description=""/> <sheetpath names="/" tstamps="/"/> <tstamp>5A63435A</tstamp> </comp> <comp ref="Y1"> <value>12M</value> <footprint>Crystal:Crystal_HC49-U_Vertical</footprint> - <libsource lib="Device" part="Crystal"/> + <libsource lib="socket-rescue" part="Crystal" description=""/> <sheetpath names="/" tstamps="/"/> <tstamp>5A6346A7</tstamp> </comp> <comp ref="C3"> <value>22p</value> <footprint>Capacitor_SMD:C_0603_1608Metric_Pad0.84x1.00mm_HandSolder</footprint> - <libsource lib="Device" part="C"/> + <libsource lib="socket-rescue" part="C" description=""/> <sheetpath names="/" tstamps="/"/> <tstamp>5A634730</tstamp> </comp> <comp ref="C5"> <value>22p</value> <footprint>Capacitor_SMD:C_0603_1608Metric_Pad0.84x1.00mm_HandSolder</footprint> - <libsource lib="Device" part="C"/> + <libsource lib="socket-rescue" part="C" description=""/> <sheetpath names="/" tstamps="/"/> <tstamp>5A634AB8</tstamp> </comp> <comp ref="J2"> <value>USB_B</value> <footprint>Connector_USB:USB_B_Horizontal</footprint> - <libsource lib="Connector_Specialized" part="USB_B"/> + <libsource lib="socket-rescue" part="USB_B" description=""/> <sheetpath names="/" tstamps="/"/> <tstamp>5A6355E2</tstamp> </comp> <comp ref="R1"> <value>22</value> <footprint>Resistor_SMD:R_0603_1608Metric_Pad0.84x1.00mm_HandSolder</footprint> - <libsource lib="Device" part="R"/> + <libsource lib="socket-rescue" part="R" description=""/> <sheetpath names="/" tstamps="/"/> <tstamp>5A6379FA</tstamp> </comp> <comp ref="R2"> <value>22</value> <footprint>Resistor_SMD:R_0603_1608Metric_Pad0.84x1.00mm_HandSolder</footprint> - <libsource lib="Device" part="R"/> + <libsource lib="socket-rescue" part="R" description=""/> <sheetpath names="/" tstamps="/"/> <tstamp>5A637D15</tstamp> </comp> <comp ref="C6"> <value>0.1</value> <footprint>Capacitor_SMD:C_0603_1608Metric_Pad0.84x1.00mm_HandSolder</footprint> - <libsource lib="Device" part="C"/> + <libsource lib="socket-rescue" part="C" description=""/> <sheetpath names="/" tstamps="/"/> <tstamp>5A639FC7</tstamp> </comp> <comp ref="J3"> <value>5Vext</value> <footprint>Connector_PinHeader_2.54mm:PinHeader_1x02_P2.54mm_Vertical</footprint> - <libsource lib="Connector_Generic" part="Conn_01x02"/> + <libsource lib="socket-rescue" part="Conn_01x02" description=""/> <sheetpath names="/" tstamps="/"/> <tstamp>5A649591</tstamp> </comp> <comp ref="C8"> <value>0.1</value> <footprint>Capacitor_SMD:C_0603_1608Metric_Pad0.84x1.00mm_HandSolder</footprint> - <libsource lib="Device" part="C"/> + <libsource lib="socket-rescue" part="C" description=""/> <sheetpath names="/" tstamps="/"/> <tstamp>5A64B889</tstamp> </comp> <comp ref="J4"> <value>SWIM</value> <footprint>Connector_PinHeader_2.54mm:PinHeader_1x03_P2.54mm_Vertical</footprint> - <libsource lib="Connector_Generic" part="Conn_01x03"/> + <libsource lib="socket-rescue" part="Conn_01x03" description=""/> <sheetpath names="/" tstamps="/"/> <tstamp>5A64FDB7</tstamp> </comp> <comp ref="D2"> <value>SS14</value> <footprint>Diode_SMD:D_SMA-SMB_Universal_Handsoldering</footprint> - <libsource lib="Device" part="D_Schottky"/> + <libsource lib="socket-rescue" part="D_Schottky" description=""/> <sheetpath names="/" tstamps="/"/> <tstamp>5A650205</tstamp> </comp> <comp ref="C10"> <value>0.1</value> <footprint>Capacitor_SMD:C_0603_1608Metric_Pad0.84x1.00mm_HandSolder</footprint> - <libsource lib="Device" part="C"/> + <libsource lib="socket-rescue" part="C" description=""/> <sheetpath names="/" tstamps="/"/> <tstamp>5A652B90</tstamp> </comp> <comp ref="C9"> <value>0.1</value> <footprint>Capacitor_SMD:C_0603_1608Metric_Pad0.84x1.00mm_HandSolder</footprint> - <libsource lib="Device" part="C"/> + <libsource lib="socket-rescue" part="C" description=""/> <sheetpath names="/" tstamps="/"/> <tstamp>5A653BA1</tstamp> </comp> <comp ref="U8"> <value>MOC3063M</value> <footprint>Package_DIP:DIP-6_W7.62mm</footprint> - <libsource lib="Relay_SolidState" part="MOC3063M"/> + <libsource lib="socket-rescue" part="MOC3063M" description=""/> <sheetpath names="/" tstamps="/"/> <tstamp>5A654A52</tstamp> </comp> <comp ref="D3"> <value>BT137-600E</value> <footprint>Package_TO_SOT_THT:TO-220-3_Vertical</footprint> - <libsource lib="bt137" part="BT137-600E"/> + <libsource lib="bt137" part="BT137-600E" description="triode for alternating current (TRIAC)"/> <sheetpath names="/" tstamps="/"/> <tstamp>5A6663E2</tstamp> </comp> <comp ref="R19"> <value>330</value> - <footprint>Resistor_THT:R_Axial_DIN0309_L9.0mm_D3.2mm_P12.70mm_Horizontal</footprint> - <libsource lib="Device" part="R"/> + <footprint>Resistor_SMD:R_1206_HandSoldering</footprint> + <libsource lib="socket-rescue" part="R" description=""/> <sheetpath names="/" tstamps="/"/> <tstamp>5A666603</tstamp> </comp> <comp ref="R20"> <value>330</value> - <footprint>Resistor_SMD:R_1206_3216Metric_Pad1.24x1.80mm_HandSolder</footprint> - <libsource lib="Device" part="R"/> + <footprint>Resistor_SMD:R_1206_HandSoldering</footprint> + <libsource lib="socket-rescue" part="R" description=""/> <sheetpath names="/" tstamps="/"/> <tstamp>5A6668C8</tstamp> </comp> <comp ref="R15"> <value>150</value> <footprint>Resistor_SMD:R_0603_1608Metric_Pad0.84x1.00mm_HandSolder</footprint> - <libsource lib="Device" part="R"/> + <libsource lib="socket-rescue" part="R" description=""/> <sheetpath names="/" tstamps="/"/> <tstamp>5A666D5B</tstamp> </comp> <comp ref="Q8"> <value>2N7002</value> <footprint>Package_TO_SOT_SMD:SOT-23_Handsoldering</footprint> - <libsource lib="Device" part="Q_NMOS_GSD"/> + <libsource lib="socket-rescue" part="Q_NMOS_GSD" description=""/> <sheetpath names="/" tstamps="/"/> <tstamp>5A668F1E</tstamp> </comp> <comp ref="R16"> <value>330</value> <footprint>Resistor_SMD:R_0603_1608Metric_Pad0.84x1.00mm_HandSolder</footprint> - <libsource lib="Device" part="R"/> + <libsource lib="socket-rescue" part="R" description=""/> <sheetpath names="/" tstamps="/"/> <tstamp>5A66984A</tstamp> </comp> <comp ref="J6"> <value>Power</value> <footprint>TerminalBlock:TerminalBlock_Altech_AK300-3_P5.00mm</footprint> - <libsource lib="Connector_Specialized" part="Screw_Terminal_01x03"/> + <libsource lib="socket-rescue" part="Screw_Terminal_01x03" description=""/> <sheetpath names="/" tstamps="/"/> <tstamp>5A66B8C0</tstamp> </comp> <comp ref="U10"> <value>ACS712</value> <footprint>Package_SOIC:SOIC-8_3.9x4.9mm_P1.27mm</footprint> - <libsource lib="acs712" part="ACS712"/> + <libsource lib="acs712" part="ACS712" description=""/> <sheetpath names="/" tstamps="/"/> <tstamp>5A671829</tstamp> </comp> <comp ref="C11"> <value>0.1</value> <footprint>Capacitor_SMD:C_0603_1608Metric_Pad0.84x1.00mm_HandSolder</footprint> - <libsource lib="Device" part="C"/> + <libsource lib="socket-rescue" part="C" description=""/> <sheetpath names="/" tstamps="/"/> <tstamp>5A674128</tstamp> </comp> <comp ref="C12"> <value>1n</value> <footprint>Capacitor_SMD:C_0603_1608Metric_Pad0.84x1.00mm_HandSolder</footprint> - <libsource lib="Device" part="C"/> + <libsource lib="socket-rescue" part="C" description=""/> <sheetpath names="/" tstamps="/"/> <tstamp>5A67650B</tstamp> </comp> <comp ref="R5"> <value>4k7</value> <footprint>Resistor_SMD:R_0603_1608Metric_Pad0.84x1.00mm_HandSolder</footprint> - <libsource lib="Device" part="R"/> + <libsource lib="socket-rescue" part="R" description=""/> <sheetpath names="/" tstamps="/"/> <tstamp>5A677EBD</tstamp> </comp> <comp ref="U9"> <value>MOC3063M</value> <footprint>Package_DIP:DIP-6_W7.62mm</footprint> - <libsource lib="Relay_SolidState" part="MOC3063M"/> + <libsource lib="socket-rescue" part="MOC3063M" description=""/> <sheetpath names="/" tstamps="/"/> <tstamp>5A67BDE1</tstamp> </comp> <comp ref="D4"> <value>BT137-600E</value> <footprint>Package_TO_SOT_THT:TO-220-3_Vertical</footprint> - <libsource lib="bt137" part="BT137-600E"/> + <libsource lib="bt137" part="BT137-600E" description="triode for alternating current (TRIAC)"/> <sheetpath names="/" tstamps="/"/> <tstamp>5A67BDE7</tstamp> </comp> <comp ref="R21"> <value>330</value> - <footprint>Resistor_THT:R_Axial_DIN0309_L9.0mm_D3.2mm_P12.70mm_Horizontal</footprint> - <libsource lib="Device" part="R"/> + <footprint>Resistor_SMD:R_1206_HandSoldering</footprint> + <libsource lib="socket-rescue" part="R" description=""/> <sheetpath names="/" tstamps="/"/> <tstamp>5A67BDED</tstamp> </comp> <comp ref="R22"> <value>330</value> - <footprint>Resistor_SMD:R_1206_3216Metric_Pad1.24x1.80mm_HandSolder</footprint> - <libsource lib="Device" part="R"/> + <footprint>Resistor_SMD:R_1206_HandSoldering</footprint> + <libsource lib="socket-rescue" part="R" description=""/> <sheetpath names="/" tstamps="/"/> <tstamp>5A67BDF3</tstamp> </comp> <comp ref="R17"> <value>150</value> <footprint>Resistor_SMD:R_0603_1608Metric_Pad0.84x1.00mm_HandSolder</footprint> - <libsource lib="Device" part="R"/> + <libsource lib="socket-rescue" part="R" description=""/> <sheetpath names="/" tstamps="/"/> <tstamp>5A67BDF9</tstamp> </comp> <comp ref="Q9"> <value>2N7002</value> <footprint>Package_TO_SOT_SMD:SOT-23_Handsoldering</footprint> - <libsource lib="Device" part="Q_NMOS_GSD"/> + <libsource lib="socket-rescue" part="Q_NMOS_GSD" description=""/> <sheetpath names="/" tstamps="/"/> <tstamp>5A67BE0B</tstamp> </comp> <comp ref="R18"> <value>330</value> <footprint>Resistor_SMD:R_0603_1608Metric_Pad0.84x1.00mm_HandSolder</footprint> - <libsource lib="Device" part="R"/> + <libsource lib="socket-rescue" part="R" description=""/> <sheetpath names="/" tstamps="/"/> <tstamp>5A67BE17</tstamp> </comp> <comp ref="K2"> <value>SRD-05VDC</value> <footprint>Relay_THT:Relay_SPDT_SANYOU_SRD_Series_Form_C</footprint> - <libsource lib="Relay" part="G5LE-1"/> + <libsource lib="socket-rescue" part="G5LE-1" description=""/> <sheetpath names="/" tstamps="/"/> <tstamp>5A67BE1D</tstamp> </comp> <comp ref="J7"> <value>Power</value> <footprint>TerminalBlock:TerminalBlock_Altech_AK300-3_P5.00mm</footprint> - <libsource lib="Connector_Specialized" part="Screw_Terminal_01x03"/> + <libsource lib="socket-rescue" part="Screw_Terminal_01x03" description=""/> <sheetpath names="/" tstamps="/"/> <tstamp>5A67BE23</tstamp> </comp> <comp ref="U6"> <value>PC817</value> <footprint>Package_DIP:DIP-4_W7.62mm</footprint> - <libsource lib="Isolator" part="PC817"/> + <libsource lib="socket-rescue" part="PC817" description=""/> <sheetpath names="/" tstamps="/"/> <tstamp>5A67FC76</tstamp> </comp> <comp ref="U7"> <value>PC817</value> <footprint>Package_DIP:DIP-4_W7.62mm</footprint> - <libsource lib="Isolator" part="PC817"/> + <libsource lib="socket-rescue" part="PC817" description=""/> <sheetpath names="/" tstamps="/"/> <tstamp>5A68037B</tstamp> </comp> <comp ref="U5"> <value>PC817</value> <footprint>Package_DIP:DIP-4_W7.62mm</footprint> - <libsource lib="Isolator" part="PC817"/> + <libsource lib="socket-rescue" part="PC817" description=""/> <sheetpath names="/" tstamps="/"/> <tstamp>5A68120F</tstamp> </comp> <comp ref="R10"> <value>150</value> <footprint>Resistor_SMD:R_0603_1608Metric_Pad0.84x1.00mm_HandSolder</footprint> - <libsource lib="Device" part="R"/> + <libsource lib="socket-rescue" part="R" description=""/> <sheetpath names="/" tstamps="/"/> <tstamp>5A683C5D</tstamp> </comp> <comp ref="R9"> <value>150</value> <footprint>Resistor_SMD:R_0603_1608Metric_Pad0.84x1.00mm_HandSolder</footprint> - <libsource lib="Device" part="R"/> + <libsource lib="socket-rescue" part="R" description=""/> <sheetpath names="/" tstamps="/"/> <tstamp>5A6842AC</tstamp> </comp> <comp ref="R7"> <value>150</value> <footprint>Resistor_SMD:R_0603_1608Metric_Pad0.84x1.00mm_HandSolder</footprint> - <libsource lib="Device" part="R"/> + <libsource lib="socket-rescue" part="R" description=""/> <sheetpath names="/" tstamps="/"/> <tstamp>5A685FA8</tstamp> </comp> <comp ref="R8"> <value>150</value> <footprint>Resistor_SMD:R_0603_1608Metric_Pad0.84x1.00mm_HandSolder</footprint> - <libsource lib="Device" part="R"/> + <libsource lib="socket-rescue" part="R" description=""/> <sheetpath names="/" tstamps="/"/> <tstamp>5A6887AD</tstamp> </comp> <comp ref="Q1"> <value>2N7002</value> <footprint>Package_TO_SOT_SMD:SOT-23_Handsoldering</footprint> - <libsource lib="Device" part="Q_NMOS_GSD"/> + <libsource lib="socket-rescue" part="Q_NMOS_GSD" description=""/> <sheetpath names="/" tstamps="/"/> <tstamp>5A688863</tstamp> </comp> <comp ref="Q2"> <value>2N7002</value> <footprint>Package_TO_SOT_SMD:SOT-23_Handsoldering</footprint> - <libsource lib="Device" part="Q_NMOS_GSD"/> + <libsource lib="socket-rescue" part="Q_NMOS_GSD" description=""/> <sheetpath names="/" tstamps="/"/> <tstamp>5A688E43</tstamp> </comp> <comp ref="R4"> <value>330</value> <footprint>Resistor_SMD:R_0603_1608Metric_Pad0.84x1.00mm_HandSolder</footprint> - <libsource lib="Device" part="R"/> + <libsource lib="socket-rescue" part="R" description=""/> <sheetpath names="/" tstamps="/"/> <tstamp>5A689B60</tstamp> </comp> <comp ref="R3"> <value>330</value> <footprint>Resistor_SMD:R_0603_1608Metric_Pad0.84x1.00mm_HandSolder</footprint> - <libsource lib="Device" part="R"/> + <libsource lib="socket-rescue" part="R" description=""/> <sheetpath names="/" tstamps="/"/> <tstamp>5A689C9C</tstamp> </comp> <comp ref="J5"> <value>DB15_Male</value> <footprint>Connector_Dsub:DSUB-15_Male_EdgeMount_P2.77mm</footprint> - <libsource lib="Connector_Specialized" part="DB15_Male"/> + <libsource lib="socket-rescue" part="DB15_Male" description=""/> <sheetpath names="/" tstamps="/"/> <tstamp>5A79F666</tstamp> </comp> <comp ref="Q3"> <value>SI2300</value> <footprint>Package_TO_SOT_SMD:SOT-23_Handsoldering</footprint> - <libsource lib="Device" part="Q_NMOS_GSD"/> + <libsource lib="socket-rescue" part="Q_NMOS_GSD" description=""/> <sheetpath names="/" tstamps="/"/> <tstamp>5A7A8D09</tstamp> </comp> <comp ref="Q4"> <value>SI2300</value> <footprint>Package_TO_SOT_SMD:SOT-23_Handsoldering</footprint> - <libsource lib="Device" part="Q_NMOS_GSD"/> + <libsource lib="socket-rescue" part="Q_NMOS_GSD" description=""/> <sheetpath names="/" tstamps="/"/> <tstamp>5A7AA80B</tstamp> </comp> <comp ref="R11"> <value>330</value> <footprint>Resistor_SMD:R_0603_1608Metric_Pad0.84x1.00mm_HandSolder</footprint> - <libsource lib="Device" part="R"/> + <libsource lib="socket-rescue" part="R" description=""/> <sheetpath names="/" tstamps="/"/> <tstamp>5A7AC3F3</tstamp> </comp> <comp ref="R12"> <value>330</value> <footprint>Resistor_SMD:R_0603_1608Metric_Pad0.84x1.00mm_HandSolder</footprint> - <libsource lib="Device" part="R"/> + <libsource lib="socket-rescue" part="R" description=""/> <sheetpath names="/" tstamps="/"/> <tstamp>5A7AC8CB</tstamp> </comp> <comp ref="R14"> <value>330</value> <footprint>Resistor_SMD:R_0603_1608Metric_Pad0.84x1.00mm_HandSolder</footprint> - <libsource lib="Device" part="R"/> + <libsource lib="socket-rescue" part="R" description=""/> <sheetpath names="/" tstamps="/"/> <tstamp>5A7ACCA5</tstamp> </comp> <comp ref="D5"> - <value>MM3Z3V6</value> + <value>5V suppressor</value> <footprint>Diode_SMD:D_SOD-323_HandSoldering</footprint> - <libsource lib="Device" part="D_Zener"/> + <libsource lib="socket-rescue" part="D_Zener" description=""/> <sheetpath names="/" tstamps="/"/> <tstamp>5A7C171C</tstamp> </comp> <comp ref="C13"> <value>0.1</value> <footprint>Capacitor_SMD:C_0603_1608Metric_Pad0.84x1.00mm_HandSolder</footprint> - <libsource lib="Device" part="C"/> + <libsource lib="socket-rescue" part="C" description=""/> <sheetpath names="/" tstamps="/"/> <tstamp>5A7CF343</tstamp> </comp> - <comp ref="D6"> - <value>SS14</value> - <footprint>Diode_SMD:D_SMA-SMB_Universal_Handsoldering</footprint> - <libsource lib="Device" part="D_Schottky"/> - <sheetpath names="/" tstamps="/"/> - <tstamp>5A7D0BF4</tstamp> - </comp> <comp ref="K1"> <value>SRD-05VDC</value> <footprint>Relay_THT:Relay_SPDT_SANYOU_SRD_Series_Form_C</footprint> - <libsource lib="Relay" part="G5LE-1"/> + <libsource lib="socket-rescue" part="G5LE-1" description=""/> <sheetpath names="/" tstamps="/"/> <tstamp>5A66AAE1</tstamp> </comp> - <comp ref="Q6"> - <value>AO3407</value> - <footprint>Package_TO_SOT_SMD:SOT-23_Handsoldering</footprint> - <libsource lib="Device" part="Q_PMOS_GSD"/> - <sheetpath names="/" tstamps="/"/> - <tstamp>5ACFAF39</tstamp> - </comp> <comp ref="R33"> <value>47k</value> <footprint>Resistor_SMD:R_0805_2012Metric_Pad1.15x1.50mm_HandSolder</footprint> - <libsource lib="Device" part="R"/> + <libsource lib="socket-rescue" part="R" description=""/> <sheetpath names="/" tstamps="/"/> <tstamp>5B171912</tstamp> </comp> <comp ref="R27"> <value>47k</value> <footprint>Resistor_SMD:R_0805_2012Metric_Pad1.15x1.50mm_HandSolder</footprint> - <libsource lib="Device" part="R"/> + <libsource lib="socket-rescue" part="R" description=""/> <sheetpath names="/" tstamps="/"/> <tstamp>5B171C65</tstamp> </comp> <comp ref="R25"> <value>47k</value> <footprint>Resistor_SMD:R_0805_2012Metric_Pad1.15x1.50mm_HandSolder</footprint> - <libsource lib="Device" part="R"/> + <libsource lib="socket-rescue" part="R" description=""/> <sheetpath names="/" tstamps="/"/> <tstamp>5B173BDC</tstamp> </comp> <comp ref="R26"> <value>47k</value> <footprint>Resistor_SMD:R_0805_2012Metric_Pad1.15x1.50mm_HandSolder</footprint> - <libsource lib="Device" part="R"/> + <libsource lib="socket-rescue" part="R" description=""/> <sheetpath names="/" tstamps="/"/> <tstamp>5B173ECD</tstamp> </comp> <comp ref="R6"> <value>47k</value> <footprint>Resistor_SMD:R_0805_2012Metric_Pad1.15x1.50mm_HandSolder</footprint> - <libsource lib="Device" part="R"/> + <libsource lib="socket-rescue" part="R" description=""/> <sheetpath names="/" tstamps="/"/> <tstamp>5B177690</tstamp> </comp> <comp ref="R13"> <value>47k</value> <footprint>Resistor_SMD:R_0805_2012Metric_Pad1.15x1.50mm_HandSolder</footprint> - <libsource lib="Device" part="R"/> + <libsource lib="socket-rescue" part="R" description=""/> <sheetpath names="/" tstamps="/"/> <tstamp>5B1781E2</tstamp> </comp> <comp ref="R30"> <value>47k</value> <footprint>Resistor_SMD:R_0805_2012Metric_Pad1.15x1.50mm_HandSolder</footprint> - <libsource lib="Device" part="R"/> + <libsource lib="socket-rescue" part="R" description=""/> <sheetpath names="/" tstamps="/"/> <tstamp>5B179FBF</tstamp> </comp> <comp ref="Q5"> <value>2N7002</value> <footprint>Package_TO_SOT_SMD:SOT-23_Handsoldering</footprint> - <libsource lib="Device" part="Q_NMOS_GSD"/> + <libsource lib="socket-rescue" part="Q_NMOS_GSD" description=""/> <sheetpath names="/" tstamps="/"/> <tstamp>5B17D4BB</tstamp> </comp> <comp ref="R28"> <value>330</value> <footprint>Resistor_SMD:R_0603_1608Metric_Pad0.84x1.00mm_HandSolder</footprint> - <libsource lib="Device" part="R"/> + <libsource lib="socket-rescue" part="R" description=""/> <sheetpath names="/" tstamps="/"/> <tstamp>5B17EF01</tstamp> </comp> <comp ref="R29"> <value>47k</value> <footprint>Resistor_SMD:R_0805_2012Metric_Pad1.15x1.50mm_HandSolder</footprint> - <libsource lib="Device" part="R"/> + <libsource lib="socket-rescue" part="R" description=""/> <sheetpath names="/" tstamps="/"/> <tstamp>5B17F8C7</tstamp> </comp> <comp ref="Q7"> <value>2N7002</value> <footprint>Package_TO_SOT_SMD:SOT-23_Handsoldering</footprint> - <libsource lib="Device" part="Q_NMOS_GSD"/> + <libsource lib="socket-rescue" part="Q_NMOS_GSD" description=""/> <sheetpath names="/" tstamps="/"/> <tstamp>5B184429</tstamp> </comp> <comp ref="R31"> <value>330</value> <footprint>Resistor_SMD:R_0603_1608Metric_Pad0.84x1.00mm_HandSolder</footprint> - <libsource lib="Device" part="R"/> + <libsource lib="socket-rescue" part="R" description=""/> <sheetpath names="/" tstamps="/"/> <tstamp>5B18442F</tstamp> </comp> <comp ref="R32"> <value>47k</value> <footprint>Resistor_SMD:R_0805_2012Metric_Pad1.15x1.50mm_HandSolder</footprint> - <libsource lib="Device" part="R"/> + <libsource lib="socket-rescue" part="R" description=""/> <sheetpath names="/" tstamps="/"/> <tstamp>5B184435</tstamp> </comp> <comp ref="D7"> <value>SS14</value> - <footprint>Diode_SMD:D_SMA_Handsoldering</footprint> - <libsource lib="Device" part="D"/> + <footprint>Diode_SMD:D_SMA</footprint> + <libsource lib="socket-rescue" part="D" description=""/> <sheetpath names="/" tstamps="/"/> <tstamp>5B31642E</tstamp> </comp> <comp ref="D8"> <value>SS14</value> - <footprint>Diode_SMD:D_SMA_Handsoldering</footprint> - <libsource lib="Device" part="D"/> + <footprint>Diode_SMD:D_SMA</footprint> + <libsource lib="socket-rescue" part="D" description=""/> <sheetpath names="/" tstamps="/"/> <tstamp>5B31734F</tstamp> </comp> <comp ref="R23"> <value>4k7</value> <footprint>Resistor_SMD:R_0603_1608Metric_Pad0.84x1.00mm_HandSolder</footprint> - <libsource lib="Device" part="R"/> + <libsource lib="socket-rescue" part="R" description=""/> <sheetpath names="/" tstamps="/"/> <tstamp>5B318A76</tstamp> </comp> + <comp ref="R24"> + <value>4k7</value> + <footprint>Resistor_SMD:R_0603_1608Metric_Pad0.84x1.00mm_HandSolder</footprint> + <libsource lib="socket-rescue" part="R" description=""/> + <sheetpath names="/" tstamps="/"/> + <tstamp>5B3D0D24</tstamp> + </comp> + <comp ref="Q6"> + <value>AO3407</value> + <footprint>Package_TO_SOT_SMD:SOT-23_Handsoldering</footprint> + <libsource lib="socket-rescue" part="Q_PMOS_GSD" description=""/> + <sheetpath names="/" tstamps="/"/> + <tstamp>5ACFAF39</tstamp> + </comp> + <comp ref="R34"> + <value>330 2W</value> + <footprint>Resistor_THT:R_Axial_Power_L20.0mm_W6.4mm_P25.40mm</footprint> + <libsource lib="socket-rescue" part="R" description=""/> + <sheetpath names="/" tstamps="/"/> + <tstamp>5C0761A4</tstamp> + </comp> + <comp ref="C14"> + <value>0.01 600V</value> + <footprint>Capacitor_THT:C_Disc_D6.0mm_W2.5mm_P5.00mm</footprint> + <libsource lib="socket-rescue" part="C" description=""/> + <sheetpath names="/" tstamps="/"/> + <tstamp>5C0762EC</tstamp> + </comp> + <comp ref="R35"> + <value>330 2W</value> + <footprint>Resistor_THT:R_Axial_Power_L20.0mm_W6.4mm_P25.40mm</footprint> + <libsource lib="socket-rescue" part="R" description=""/> + <sheetpath names="/" tstamps="/"/> + <tstamp>5C0775F9</tstamp> + </comp> + <comp ref="C15"> + <value>0.01 600V</value> + <footprint>Capacitor_THT:C_Disc_D6.0mm_W2.5mm_P5.00mm</footprint> + <libsource lib="socket-rescue" part="C" description=""/> + <sheetpath names="/" tstamps="/"/> + <tstamp>5C0775FF</tstamp> + </comp> </components> <libparts> <libpart lib="acs712" part="ACS712"> @@ -616,20 +644,6 @@ <pin num="3" name="G" type="input"/> </pins> </libpart> - <libpart lib="Device" part="C"> - <description>Unpolarized capacitor</description> - <footprints> - <fp>C_*</fp> - </footprints> - <fields> - <field name="Reference">C</field> - <field name="Value">C</field> - </fields> - <pins> - <pin num="1" name="~" type="passive"/> - <pin num="2" name="~" type="passive"/> - </pins> - </libpart> <libpart lib="ch34x" part="CH340G"> <fields> <field name="Reference">U</field> @@ -654,9 +668,20 @@ <pin num="16" name="VCC" type="power_in"/> </pins> </libpart> - <libpart lib="Connector_Generic" part="Conn_01x02"> - <description>Generic connector, single row, 01x02, script generated (kicad-library-utils/schlib/autogen/connector/)</description> - <docs>~</docs> + <libpart lib="socket-rescue" part="C"> + <footprints> + <fp>C_*</fp> + </footprints> + <fields> + <field name="Reference">C</field> + <field name="Value">C</field> + </fields> + <pins> + <pin num="1" name="~" type="passive"/> + <pin num="2" name="~" type="passive"/> + </pins> + </libpart> + <libpart lib="socket-rescue" part="Conn_01x02"> <footprints> <fp>Connector*:*_1x??_*</fp> </footprints> @@ -669,9 +694,7 @@ <pin num="2" name="Pin_2" type="passive"/> </pins> </libpart> - <libpart lib="Connector_Generic" part="Conn_01x03"> - <description>Generic connector, single row, 01x03, script generated (kicad-library-utils/schlib/autogen/connector/)</description> - <docs>~</docs> + <libpart lib="socket-rescue" part="Conn_01x03"> <footprints> <fp>Connector*:*_1x??_*</fp> </footprints> @@ -685,8 +708,7 @@ <pin num="3" name="Pin_3" type="passive"/> </pins> </libpart> - <libpart lib="Device" part="Crystal"> - <description>Two pin crystal</description> + <libpart lib="socket-rescue" part="Crystal"> <footprints> <fp>Crystal*</fp> </footprints> @@ -699,8 +721,7 @@ <pin num="2" name="2" type="passive"/> </pins> </libpart> - <libpart lib="Device" part="D"> - <description>Diode</description> + <libpart lib="socket-rescue" part="D"> <footprints> <fp>TO-???*</fp> <fp>*SingleDiode</fp> @@ -717,8 +738,7 @@ <pin num="2" name="A" type="passive"/> </pins> </libpart> - <libpart lib="Connector_Specialized" part="DB15_Male"> - <description>15-pin male D-SUB connector (low-density/2 columns)</description> + <libpart lib="socket-rescue" part="DB15_Male"> <footprints> <fp>DB*M*</fp> </footprints> @@ -744,8 +764,7 @@ <pin num="15" name="P15" type="passive"/> </pins> </libpart> - <libpart lib="Connector_Specialized" part="DB9_Female"> - <description>9-pin female D-SUB connector</description> + <libpart lib="socket-rescue" part="DB9_Female"> <footprints> <fp>DB*F*</fp> </footprints> @@ -765,8 +784,7 @@ <pin num="9" name="9" type="passive"/> </pins> </libpart> - <libpart lib="Device" part="D_Schottky"> - <description>Schottky diode</description> + <libpart lib="socket-rescue" part="D_Schottky"> <footprints> <fp>TO-???*</fp> <fp>*SingleDiode</fp> @@ -783,9 +801,7 @@ <pin num="2" name="A" type="passive"/> </pins> </libpart> - <libpart lib="Device" part="D_Zener"> - <description>Zener Diode</description> - <docs>https://en.wikipedia.org/wiki/Zener_diode</docs> + <libpart lib="socket-rescue" part="D_Zener"> <footprints> <fp>TO-???*</fp> <fp>*SingleDiode</fp> @@ -802,9 +818,7 @@ <pin num="2" name="A" type="passive"/> </pins> </libpart> - <libpart lib="Relay" part="G5LE-1"> - <description>Omron G5LE relay, Miniature Single Pole, SPDT, 10A</description> - <docs>http://www.omron.com/ecb/products/pdf/en-g5le.pdf</docs> + <libpart lib="socket-rescue" part="G5LE-1"> <footprints> <fp>Relay*SPDT*Omron*G5LE?1*</fp> </footprints> @@ -821,16 +835,7 @@ <pin num="5" name="~" type="passive"/> </pins> </libpart> - <libpart lib="Interface_UART" part="MAX232"> - <aliases> - <alias>MAX232I</alias> - <alias>MAX202</alias> - <alias>ADM232A</alias> - <alias>MAX3232</alias> - <alias>ICL3232</alias> - </aliases> - <description>Dual RS232 driver/receiver, 5V supply, 120kb/s, 0C-70C</description> - <docs>http://www.ti.com/lit/ds/symlink/max232.pdf</docs> + <libpart lib="socket-rescue" part="MAX3232"> <footprints> <fp>SOIC*P1.27mm*</fp> <fp>DIP*W7.62mm*</fp> @@ -838,7 +843,7 @@ </footprints> <fields> <field name="Reference">U</field> - <field name="Value">MAX232</field> + <field name="Value">MAX3232</field> </fields> <pins> <pin num="1" name="C1+" type="passive"/> @@ -859,24 +864,7 @@ <pin num="16" name="VCC" type="power_in"/> </pins> </libpart> - <libpart lib="Relay_SolidState" part="MOC3031M"> - <aliases> - <alias>MOC3032M</alias> - <alias>MOC3033M</alias> - <alias>MOC3041M</alias> - <alias>MOC3042M</alias> - <alias>MOC3043M</alias> - <alias>MOC3081M</alias> - <alias>MOC3082M</alias> - <alias>MOC3083M</alias> - <alias>MOC3061M</alias> - <alias>MOC3062M</alias> - <alias>MOC3063M</alias> - <alias>MOC3162M</alias> - <alias>MOC3163M</alias> - </aliases> - <description>Zero Cross Opto-Triac, Vdrm 250V, Ift 15mA, DIP6</description> - <docs>http://www.fairchildsemi.com/ds/MO/MOC3031M.pdf</docs> + <libpart lib="socket-rescue" part="MOC3063M"> <footprints> <fp>DIP*W7.62mm*</fp> <fp>SMDIP*W9.53mm*</fp> @@ -884,7 +872,7 @@ </footprints> <fields> <field name="Reference">U</field> - <field name="Value">MOC3031M</field> + <field name="Value">MOC3063M</field> </fields> <pins> <pin num="1" name="~" type="passive"/> @@ -895,7 +883,7 @@ <pin num="6" name="~" type="passive"/> </pins> </libpart> - <libpart lib="Isolator" part="PC817"> + <libpart lib="socket-rescue" part="PC817"> <footprints> <fp>DIP*W7.62mm*</fp> </footprints> @@ -911,8 +899,7 @@ <pin num="4" name="~" type="passive"/> </pins> </libpart> - <libpart lib="Device" part="Q_NMOS_GSD"> - <description>Transistor N-MOSFETwith substrate diode (general)</description> + <libpart lib="socket-rescue" part="Q_NMOS_GSD"> <fields> <field name="Reference">Q</field> <field name="Value">Q_NMOS_GSD</field> @@ -923,8 +910,7 @@ <pin num="3" name="D" type="passive"/> </pins> </libpart> - <libpart lib="Device" part="Q_PMOS_GSD"> - <description>Transistor P-MOSFET with substrate diode (general)</description> + <libpart lib="socket-rescue" part="Q_PMOS_GSD"> <fields> <field name="Reference">Q</field> <field name="Value">Q_PMOS_GSD</field> @@ -935,8 +921,7 @@ <pin num="3" name="D" type="passive"/> </pins> </libpart> - <libpart lib="Device" part="R"> - <description>Resistor</description> + <libpart lib="socket-rescue" part="R"> <footprints> <fp>R_*</fp> <fp>R_*</fp> @@ -950,9 +935,7 @@ <pin num="2" name="~" type="passive"/> </pins> </libpart> - <libpart lib="Power_Protection" part="SP0504BAHT"> - <description>TVS Diode Array, 5.5V Standoff, 4 Channels, SOT-23-5 package</description> - <docs>http://www.littelfuse.com/~/media/files/littelfuse/technical%20resources/documents/data%20sheets/sp05xxba.pdf</docs> + <libpart lib="socket-rescue" part="SP0504BAHT"> <footprints> <fp>SOT?23*</fp> </footprints> @@ -1001,9 +984,7 @@ <pin num="20" name="PD3" type="BiDi"/> </pins> </libpart> - <libpart lib="Connector_Specialized" part="Screw_Terminal_01x03"> - <description>Generic screw terminal, single row, 01x03, script generated (kicad-library-utils/schlib/autogen/connector/)</description> - <docs>~</docs> + <libpart lib="socket-rescue" part="Screw_Terminal_01x03"> <footprints> <fp>TerminalBlock*:*</fp> </footprints> @@ -1017,8 +998,7 @@ <pin num="3" name="Pin_3" type="passive"/> </pins> </libpart> - <libpart lib="Connector_Specialized" part="USB_B"> - <description>USB Type B connector</description> + <libpart lib="socket-rescue" part="USB_B"> <footprints> <fp>USB*</fp> </footprints> @@ -1036,90 +1016,68 @@ </libpart> </libparts> <libraries> - <library logical="socket-rescue"> - <uri>socket-rescue.lib</uri> - </library> - <library logical="ch34x"> - <uri>ch34x.lib</uri> + <library logical="acs712"> + <uri>/home/eddy/Dropbox/Dropbox/Projects/STM8_samples/220controlled_socket/kicad/acs712.lib</uri> </library> <library logical="bt137"> - <uri>bt137.lib</uri> + <uri>/home/eddy/Dropbox/Dropbox/Projects/STM8_samples/220controlled_socket/kicad/bt137.lib</uri> </library> - <library logical="Relay_SolidState"> - <uri>/usr/share/kicad/library/Relay_SolidState.lib</uri> + <library logical="ch34x"> + <uri>/home/eddy/Dropbox/Dropbox/Projects/STM8_samples/220controlled_socket/kicad/ch34x.lib</uri> </library> - <library logical="Device"> - <uri>/usr/share/kicad/library/Device.lib</uri> - </library> - <library logical="Relay"> - <uri>/usr/share/kicad/library/Relay.lib</uri> - </library> - <library logical="Interface_UART"> - <uri>/usr/share/kicad/library/Interface_UART.lib</uri> - </library> - <library logical="Power_Protection"> - <uri>/usr/share/kicad/library/Power_Protection.lib</uri> - </library> - <library logical="Connector_Specialized"> - <uri>/usr/share/kicad/library/Connector_Specialized.lib</uri> - </library> - <library logical="Connector_Generic"> - <uri>/usr/share/kicad/library/Connector_Generic.lib</uri> - </library> - <library logical="acs712"> - <uri>acs712.lib</uri> - </library> - <library logical="Isolator"> - <uri>/usr/share/kicad/library/Isolator.lib</uri> + <library logical="socket-rescue"> + <uri>/home/eddy/Dropbox/Dropbox/Projects/STM8_samples/220controlled_socket/kicad/socket-rescue.lib</uri> </library> </libraries> <nets> - <net code="1" name="Net-(Q5-Pad3)"> - <node ref="U8" pin="2"/> - <node ref="Q5" pin="3"/> + <net code="1" name="Net-(Q1-Pad1)"> + <node ref="R6" pin="1"/> + <node ref="R4" pin="1"/> + <node ref="Q1" pin="1"/> </net> - <net code="2" name="Net-(C9-Pad1)"> - <node ref="C9" pin="1"/> - <node ref="U3" pin="8"/> + <net code="2" name="Net-(J5-Pad3)"> + <node ref="J5" pin="3"/> + <node ref="U6" pin="4"/> </net> - <net code="3" name="Net-(R20-Pad2)"> - <node ref="R20" pin="2"/> - <node ref="U8" pin="6"/> + <net code="3" name="/~In0"> + <node ref="U3" pin="12"/> + <node ref="D5" pin="1"/> + <node ref="R9" pin="2"/> + <node ref="R24" pin="2"/> </net> - <net code="4" name="Net-(D2-Pad2)"> - <node ref="J2" pin="1"/> - <node ref="D2" pin="2"/> + <net code="4" name="Net-(J5-Pad4)"> + <node ref="U6" pin="3"/> + <node ref="J5" pin="4"/> </net> - <net code="5" name="Net-(R15-Pad1)"> - <node ref="R15" pin="1"/> - <node ref="U8" pin="1"/> + <net code="5" name="Net-(Q1-Pad3)"> + <node ref="U6" pin="2"/> + <node ref="Q1" pin="3"/> </net> - <net code="6" name="Net-(K1-Pad5)"> - <node ref="Q8" pin="3"/> - <node ref="K1" pin="5"/> + <net code="6" name="Net-(J5-Pad9)"> + <node ref="R10" pin="1"/> + <node ref="J5" pin="9"/> </net> - <net code="7" name="Net-(D1-Pad5)"> - <node ref="D1" pin="5"/> - <node ref="U2" pin="5"/> - <node ref="R1" pin="1"/> + <net code="7" name="Net-(J5-Pad12)"> + <node ref="J5" pin="12"/> + <node ref="R9" pin="1"/> </net> - <net code="8" name="Net-(D1-Pad4)"> - <node ref="U2" pin="6"/> - <node ref="D1" pin="4"/> - <node ref="R2" pin="1"/> + <net code="8" name="Net-(R22-Pad2)"> + <node ref="R22" pin="2"/> + <node ref="U9" pin="6"/> </net> - <net code="9" name="Net-(C6-Pad2)"> - <node ref="U2" pin="4"/> - <node ref="C6" pin="2"/> + <net code="9" name="Net-(C12-Pad1)"> + <node ref="C12" pin="1"/> + <node ref="U10" pin="6"/> </net> <net code="10" name="Net-(C13-Pad1)"> <node ref="R5" pin="2"/> <node ref="C13" pin="1"/> <node ref="U3" pin="20"/> </net> - <net code="11" name="Net-(R22-Pad2)"> - <node ref="U9" pin="6"/> - <node ref="R22" pin="2"/> + <net code="11" name="Net-(D4-Pad3)"> + <node ref="D4" pin="3"/> + <node ref="U9" pin="4"/> + <node ref="R21" pin="2"/> </net> <net code="12" name="Net-(R17-Pad1)"> <node ref="U9" pin="1"/> @@ -1129,438 +1087,444 @@ <node ref="K2" pin="5"/> <node ref="Q9" pin="3"/> </net> - <net code="14" name="Net-(D4-Pad1)"> - <node ref="D4" pin="1"/> - <node ref="R21" pin="1"/> - <node ref="K2" pin="3"/> - <node ref="J7" pin="3"/> - </net> - <net code="15" name="Net-(C12-Pad1)"> - <node ref="C12" pin="1"/> - <node ref="U10" pin="6"/> - </net> - <net code="16" name="Net-(Q9-Pad1)"> - <node ref="Q9" pin="1"/> + <net code="14" name="Net-(Q9-Pad1)"> <node ref="R18" pin="1"/> <node ref="R33" pin="1"/> + <node ref="Q9" pin="1"/> </net> - <net code="17" name="Net-(D6-Pad1)"> - <node ref="R5" pin="1"/> - <node ref="D6" pin="1"/> + <net code="15" name="Net-(J5-Pad2)"> + <node ref="U7" pin="3"/> + <node ref="J5" pin="2"/> </net> - <net code="18" name="Net-(D3-Pad1)"> - <node ref="U10" pin="2"/> - <node ref="K1" pin="3"/> - <node ref="D3" pin="1"/> - <node ref="R19" pin="1"/> - <node ref="U10" pin="1"/> + <net code="16" name="Net-(J5-Pad1)"> + <node ref="U7" pin="4"/> + <node ref="J5" pin="1"/> </net> - <net code="19" name="Net-(K1-Pad4)"> - <node ref="K1" pin="4"/> + <net code="17" name="Net-(Q2-Pad3)"> + <node ref="U7" pin="2"/> + <node ref="Q2" pin="3"/> </net> - <net code="20" name="Net-(J5-Pad15)"> - <node ref="J5" pin="15"/> - <node ref="R27" pin="1"/> - <node ref="Q6" pin="2"/> + <net code="18" name="Net-(R7-Pad1)"> + <node ref="R7" pin="1"/> + <node ref="U6" pin="1"/> + </net> + <net code="19" name="Net-(R8-Pad1)"> + <node ref="U7" pin="1"/> + <node ref="R8" pin="1"/> + </net> + <net code="20" name="/~In1"> + <node ref="U5" pin="4"/> + <node ref="U3" pin="5"/> </net> <net code="21" name="Net-(Q3-Pad1)"> + <node ref="R25" pin="1"/> <node ref="Q3" pin="1"/> <node ref="R11" pin="1"/> - <node ref="R25" pin="1"/> </net> - <net code="22" name="/NKEY2"> - <node ref="R11" pin="2"/> - <node ref="U3" pin="13"/> - </net> - <net code="23" name="/NKEY1"> - <node ref="U3" pin="15"/> - <node ref="R12" pin="2"/> - </net> - <net code="24" name="Net-(Q6-Pad1)"> - <node ref="R14" pin="1"/> - <node ref="Q6" pin="1"/> - <node ref="R27" pin="2"/> - </net> - <net code="25" name="Net-(Q1-Pad1)"> - <node ref="R4" pin="1"/> - <node ref="R6" pin="1"/> - <node ref="Q1" pin="1"/> - </net> - <net code="26" name="GNDREF"> - <node ref="J7" pin="2"/> - <node ref="J6" pin="2"/> - </net> - <net code="27" name="Net-(J5-Pad13)"> - <node ref="J5" pin="13"/> - </net> - <net code="28" name="Net-(J5-Pad5)"> - <node ref="J5" pin="5"/> - </net> - <net code="29" name="/~In0"> - <node ref="R9" pin="2"/> - <node ref="U3" pin="12"/> - <node ref="D5" pin="1"/> - </net> - <net code="30" name="Net-(U3-Pad1)"> - <node ref="U3" pin="1"/> - </net> - <net code="31" name="Net-(J2-Pad3)"> - <node ref="J2" pin="3"/> - <node ref="R1" pin="2"/> - </net> - <net code="32" name="Net-(J2-Pad2)"> - <node ref="R2" pin="2"/> - <node ref="J2" pin="2"/> - </net> - <net code="33" name="Net-(C7-Pad2)"> - <node ref="U1" pin="3"/> - <node ref="C7" pin="2"/> - </net> - <net code="34" name="Net-(C1-Pad2)"> - <node ref="C1" pin="2"/> - <node ref="U1" pin="2"/> - </net> - <net code="35" name="Net-(C2-Pad2)"> - <node ref="C2" pin="2"/> - <node ref="U1" pin="6"/> - </net> - <net code="36" name="Net-(C4-Pad2)"> - <node ref="U1" pin="5"/> - <node ref="C4" pin="2"/> - </net> - <net code="37" name="Net-(C4-Pad1)"> - <node ref="C4" pin="1"/> - <node ref="U1" pin="4"/> - </net> - <net code="38" name="Net-(C7-Pad1)"> - <node ref="C7" pin="1"/> - <node ref="U1" pin="1"/> - </net> - <net code="39" name="Net-(Q8-Pad1)"> - <node ref="R30" pin="1"/> - <node ref="Q8" pin="1"/> - <node ref="R16" pin="1"/> - </net> - <net code="40" name="Net-(Q5-Pad1)"> - <node ref="R28" pin="1"/> - <node ref="Q5" pin="1"/> - <node ref="R29" pin="2"/> - </net> - <net code="41" name="/Triac0"> - <node ref="R28" pin="2"/> - <node ref="U3" pin="19"/> - </net> - <net code="42" name="VCC"> - <node ref="R8" pin="2"/> - <node ref="R7" pin="2"/> - <node ref="C10" pin="2"/> - <node ref="U2" pin="16"/> - <node ref="D2" pin="1"/> - <node ref="J3" pin="1"/> - <node ref="U1" pin="16"/> - <node ref="U3" pin="9"/> - <node ref="K2" pin="2"/> - <node ref="K1" pin="2"/> - <node ref="R15" pin="2"/> - <node ref="C11" pin="1"/> - <node ref="U10" pin="8"/> - <node ref="R17" pin="2"/> - <node ref="R23" pin="1"/> - </net> - <net code="43" name="Net-(Q4-Pad1)"> - <node ref="Q4" pin="1"/> - <node ref="R12" pin="1"/> - <node ref="R26" pin="1"/> - </net> - <net code="44" name="Net-(Q2-Pad1)"> - <node ref="R13" pin="2"/> - <node ref="Q2" pin="1"/> - <node ref="R3" pin="1"/> - </net> - <net code="45" name="Net-(K2-Pad4)"> - <node ref="K2" pin="4"/> - </net> - <net code="46" name="/Rx"> - <node ref="U3" pin="3"/> - <node ref="D8" pin="2"/> - <node ref="D7" pin="2"/> - <node ref="R23" pin="2"/> - </net> - <net code="47" name="Net-(D8-Pad1)"> - <node ref="U1" pin="12"/> - <node ref="D8" pin="1"/> - </net> - <net code="48" name="Net-(Q7-Pad3)"> - <node ref="Q7" pin="3"/> - <node ref="U9" pin="2"/> - </net> - <net code="49" name="Net-(Q7-Pad1)"> - <node ref="Q7" pin="1"/> - <node ref="R31" pin="1"/> - <node ref="R32" pin="2"/> - </net> - <net code="50" name="/Triac1"> - <node ref="R31" pin="2"/> - <node ref="U3" pin="16"/> - </net> - <net code="51" name="Net-(J5-Pad7)"> - <node ref="J5" pin="7"/> - <node ref="Q4" pin="3"/> - </net> - <net code="52" name="Net-(J5-Pad12)"> - <node ref="J5" pin="12"/> - <node ref="R9" pin="1"/> - </net> - <net code="53" name="GND"> - <node ref="C10" pin="1"/> - <node ref="C11" pin="2"/> - <node ref="J3" pin="2"/> - <node ref="U5" pin="3"/> - <node ref="U2" pin="1"/> - <node ref="Q1" pin="2"/> - <node ref="C8" pin="2"/> - <node ref="J4" pin="1"/> - <node ref="C5" pin="1"/> - <node ref="U10" pin="5"/> - <node ref="C3" pin="1"/> - <node ref="Q2" pin="2"/> - <node ref="C1" pin="1"/> - <node ref="Q3" pin="2"/> - <node ref="U3" pin="7"/> - <node ref="J5" pin="11"/> - <node ref="J5" pin="6"/> - <node ref="C2" pin="1"/> - <node ref="C12" pin="2"/> - <node ref="J1" pin="5"/> - <node ref="D1" pin="2"/> - <node ref="Q8" pin="2"/> - <node ref="C9" pin="2"/> - <node ref="Q9" pin="2"/> - <node ref="U1" pin="15"/> - <node ref="R30" pin="2"/> - <node ref="R6" pin="2"/> - <node ref="D5" pin="2"/> - <node ref="R26" pin="2"/> - <node ref="R13" pin="1"/> - <node ref="Q7" pin="2"/> - <node ref="R32" pin="1"/> - <node ref="R29" pin="1"/> - <node ref="Q5" pin="2"/> - <node ref="R25" pin="2"/> - <node ref="R33" pin="2"/> - <node ref="J2" pin="4"/> - <node ref="C13" pin="2"/> - <node ref="Q4" pin="2"/> - <node ref="C6" pin="1"/> - <node ref="J2" pin="5"/> - </net> - <net code="54" name="Net-(J5-Pad8)"> + <net code="22" name="Net-(J5-Pad8)"> <node ref="J5" pin="8"/> <node ref="Q3" pin="3"/> </net> - <net code="55" name="Net-(D3-Pad3)"> + <net code="23" name="Net-(J5-Pad7)"> + <node ref="J5" pin="7"/> + <node ref="Q4" pin="3"/> + </net> + <net code="24" name="Net-(D3-Pad3)"> <node ref="D3" pin="3"/> <node ref="R19" pin="2"/> <node ref="U8" pin="4"/> </net> - <net code="56" name="Net-(D4-Pad3)"> - <node ref="D4" pin="3"/> - <node ref="U9" pin="4"/> - <node ref="R21" pin="2"/> - </net> - <net code="57" name="Net-(J5-Pad3)"> - <node ref="U6" pin="4"/> - <node ref="J5" pin="3"/> - </net> - <net code="58" name="Net-(J5-Pad4)"> - <node ref="U6" pin="3"/> - <node ref="J5" pin="4"/> - </net> - <net code="59" name="Net-(Q1-Pad3)"> - <node ref="U6" pin="2"/> - <node ref="Q1" pin="3"/> - </net> - <net code="60" name="Net-(D7-Pad1)"> - <node ref="U2" pin="2"/> + <net code="25" name="Net-(D7-Pad1)"> <node ref="D7" pin="1"/> + <node ref="U2" pin="2"/> </net> - <net code="61" name="Net-(J5-Pad9)"> - <node ref="J5" pin="9"/> - <node ref="R10" pin="1"/> + <net code="26" name="Net-(C3-Pad2)"> + <node ref="U2" pin="7"/> + <node ref="C3" pin="2"/> + <node ref="Y1" pin="2"/> </net> - <net code="62" name="Net-(J5-Pad14)"> - <node ref="Q6" pin="3"/> + <net code="27" name="Net-(D1-Pad4)"> + <node ref="U2" pin="6"/> + <node ref="D1" pin="4"/> + <node ref="R2" pin="1"/> + </net> + <net code="28" name="Net-(J2-Pad3)"> + <node ref="J2" pin="3"/> + <node ref="R1" pin="2"/> + </net> + <net code="29" name="Net-(J2-Pad2)"> + <node ref="R2" pin="2"/> + <node ref="J2" pin="2"/> + </net> + <net code="30" name="Net-(D1-Pad5)"> + <node ref="R1" pin="1"/> + <node ref="U2" pin="5"/> + <node ref="D1" pin="5"/> + </net> + <net code="31" name="Net-(C1-Pad2)"> + <node ref="U1" pin="2"/> + <node ref="C1" pin="2"/> + </net> + <net code="32" name="Net-(C2-Pad2)"> + <node ref="U1" pin="6"/> + <node ref="C2" pin="2"/> + </net> + <net code="33" name="Net-(C4-Pad2)"> + <node ref="U1" pin="5"/> + <node ref="C4" pin="2"/> + </net> + <net code="34" name="Net-(C4-Pad1)"> + <node ref="U1" pin="4"/> + <node ref="C4" pin="1"/> + </net> + <net code="35" name="Net-(C7-Pad1)"> + <node ref="U1" pin="1"/> + <node ref="C7" pin="1"/> + </net> + <net code="36" name="Net-(C7-Pad2)"> + <node ref="C7" pin="2"/> + <node ref="U1" pin="3"/> + </net> + <net code="37" name="Net-(C5-Pad2)"> + <node ref="U2" pin="8"/> + <node ref="C5" pin="2"/> + <node ref="Y1" pin="1"/> + </net> + <net code="38" name="Net-(C9-Pad1)"> + <node ref="C9" pin="1"/> + <node ref="U3" pin="8"/> + </net> + <net code="39" name="Net-(R20-Pad2)"> + <node ref="R20" pin="2"/> + <node ref="U8" pin="6"/> + </net> + <net code="40" name="Net-(Q5-Pad3)"> + <node ref="Q5" pin="3"/> + <node ref="U8" pin="2"/> + </net> + <net code="41" name="Net-(R15-Pad1)"> + <node ref="U8" pin="1"/> + <node ref="R15" pin="1"/> + </net> + <net code="42" name="Net-(K1-Pad5)"> + <node ref="K1" pin="5"/> + <node ref="Q8" pin="3"/> + </net> + <net code="43" name="Net-(C6-Pad2)"> + <node ref="C6" pin="2"/> + <node ref="U2" pin="4"/> + </net> + <net code="44" name="Net-(J5-Pad14)"> <node ref="J5" pin="14"/> + <node ref="Q6" pin="3"/> </net> - <net code="63" name="/~In1"> - <node ref="U5" pin="4"/> - <node ref="U3" pin="5"/> + <net code="45" name="Net-(D2-Pad2)"> + <node ref="D2" pin="2"/> + <node ref="J2" pin="1"/> </net> - <net code="64" name="Net-(R10-Pad2)"> + <net code="46" name="Net-(C15-Pad2)"> + <node ref="R35" pin="1"/> + <node ref="C15" pin="2"/> + </net> + <net code="47" name="Net-(C15-Pad1)"> + <node ref="R21" pin="1"/> + <node ref="J7" pin="3"/> + <node ref="D4" pin="1"/> + <node ref="K2" pin="3"/> + <node ref="C15" pin="1"/> + </net> + <net code="48" name="/NC1"> + <node ref="J6" pin="2"/> + <node ref="K1" pin="4"/> + </net> + <net code="49" name="Net-(D4-Pad2)"> + <node ref="R22" pin="1"/> + <node ref="D4" pin="2"/> + <node ref="R35" pin="2"/> + <node ref="J7" pin="1"/> + <node ref="K2" pin="1"/> + </net> + <net code="50" name="/NC2"> + <node ref="J7" pin="2"/> + <node ref="K2" pin="4"/> + </net> + <net code="51" name="Net-(D3-Pad1)"> + <node ref="K1" pin="3"/> + <node ref="U10" pin="2"/> + <node ref="U10" pin="1"/> + <node ref="D3" pin="1"/> + <node ref="R19" pin="1"/> + </net> + <net code="52" name="VCC"> + <node ref="U2" pin="16"/> + <node ref="R17" pin="2"/> + <node ref="R23" pin="1"/> + <node ref="K1" pin="2"/> + <node ref="R27" pin="2"/> + <node ref="R15" pin="2"/> + <node ref="R7" pin="2"/> + <node ref="R8" pin="2"/> + <node ref="U3" pin="9"/> + <node ref="J3" pin="1"/> + <node ref="R24" pin="1"/> + <node ref="D2" pin="1"/> + <node ref="U1" pin="16"/> + <node ref="U10" pin="8"/> + <node ref="C11" pin="1"/> + <node ref="K2" pin="2"/> + <node ref="C10" pin="2"/> + </net> + <net code="53" name="Net-(Q6-Pad1)"> + <node ref="Q6" pin="1"/> + <node ref="R14" pin="1"/> + </net> + <net code="54" name="Net-(J5-Pad15)"> + <node ref="Q6" pin="2"/> + <node ref="J5" pin="15"/> + </net> + <net code="55" name="Net-(C14-Pad1)"> + <node ref="C14" pin="1"/> + <node ref="U10" pin="4"/> + <node ref="U10" pin="3"/> + <node ref="J6" pin="3"/> + </net> + <net code="56" name="Net-(D3-Pad2)"> + <node ref="D3" pin="2"/> + <node ref="R34" pin="2"/> + <node ref="R20" pin="1"/> + <node ref="K1" pin="1"/> + <node ref="J6" pin="1"/> + </net> + <net code="57" name="Net-(C14-Pad2)"> + <node ref="C14" pin="2"/> + <node ref="R34" pin="1"/> + </net> + <net code="58" name="Net-(Q4-Pad1)"> + <node ref="Q4" pin="1"/> + <node ref="R26" pin="1"/> + <node ref="R12" pin="1"/> + </net> + <net code="59" name="Net-(Q2-Pad1)"> + <node ref="R3" pin="1"/> + <node ref="Q2" pin="1"/> + <node ref="R13" pin="2"/> + </net> + <net code="60" name="Net-(Q7-Pad1)"> + <node ref="R32" pin="2"/> + <node ref="Q7" pin="1"/> + <node ref="R31" pin="1"/> + </net> + <net code="61" name="Net-(Q8-Pad1)"> + <node ref="R30" pin="1"/> + <node ref="R16" pin="1"/> + <node ref="Q8" pin="1"/> + </net> + <net code="62" name="Net-(Q5-Pad1)"> + <node ref="R29" pin="2"/> + <node ref="Q5" pin="1"/> + <node ref="R28" pin="1"/> + </net> + <net code="63" name="Net-(R10-Pad2)"> <node ref="R10" pin="2"/> <node ref="U5" pin="2"/> </net> - <net code="65" name="Net-(J5-Pad10)"> + <net code="64" name="Net-(J5-Pad10)"> <node ref="J5" pin="10"/> <node ref="U5" pin="1"/> </net> - <net code="66" name="Net-(J5-Pad2)"> - <node ref="U7" pin="3"/> - <node ref="J5" pin="2"/> + <net code="65" name="Net-(D8-Pad1)"> + <node ref="D8" pin="1"/> + <node ref="U1" pin="12"/> </net> - <net code="67" name="Net-(J5-Pad1)"> - <node ref="U7" pin="4"/> - <node ref="J5" pin="1"/> + <net code="66" name="GND"> + <node ref="Q9" pin="2"/> + <node ref="C1" pin="1"/> + <node ref="C2" pin="1"/> + <node ref="U2" pin="1"/> + <node ref="D1" pin="2"/> + <node ref="U3" pin="7"/> + <node ref="J5" pin="6"/> + <node ref="D5" pin="2"/> + <node ref="C13" pin="2"/> + <node ref="R33" pin="2"/> + <node ref="R25" pin="2"/> + <node ref="R26" pin="2"/> + <node ref="Q3" pin="2"/> + <node ref="Q4" pin="2"/> + <node ref="U10" pin="5"/> + <node ref="C12" pin="2"/> + <node ref="C11" pin="2"/> + <node ref="U5" pin="3"/> + <node ref="J1" pin="5"/> + <node ref="Q8" pin="2"/> + <node ref="J5" pin="11"/> + <node ref="Q1" pin="2"/> + <node ref="Q2" pin="2"/> + <node ref="R13" pin="1"/> + <node ref="C3" pin="1"/> + <node ref="R30" pin="2"/> + <node ref="C10" pin="1"/> + <node ref="J2" pin="5"/> + <node ref="R32" pin="1"/> + <node ref="Q7" pin="2"/> + <node ref="J2" pin="4"/> + <node ref="C6" pin="1"/> + <node ref="R29" pin="1"/> + <node ref="Q5" pin="2"/> + <node ref="J3" pin="2"/> + <node ref="C5" pin="1"/> + <node ref="J4" pin="1"/> + <node ref="U1" pin="15"/> + <node ref="C9" pin="2"/> + <node ref="R6" pin="2"/> + <node ref="C8" pin="2"/> </net> - <net code="68" name="Net-(Q2-Pad3)"> - <node ref="Q2" pin="3"/> - <node ref="U7" pin="2"/> + <net code="67" name="/Rx"> + <node ref="D8" pin="2"/> + <node ref="D7" pin="2"/> + <node ref="R23" pin="2"/> + <node ref="U3" pin="3"/> </net> - <net code="69" name="Net-(R7-Pad1)"> - <node ref="U6" pin="1"/> - <node ref="R7" pin="1"/> + <net code="68" name="/Triac1"> + <node ref="R31" pin="2"/> + <node ref="U3" pin="16"/> </net> - <net code="70" name="Net-(R8-Pad1)"> - <node ref="R8" pin="1"/> - <node ref="U7" pin="1"/> + <net code="69" name="Net-(Q7-Pad3)"> + <node ref="U9" pin="2"/> + <node ref="Q7" pin="3"/> </net> - <net code="71" name="Net-(U2-Pad12)"> - <node ref="U2" pin="12"/> - </net> - <net code="72" name="/Tx"> - <node ref="U3" pin="2"/> - <node ref="U1" pin="11"/> - <node ref="U2" pin="3"/> - </net> - <net code="73" name="Net-(U2-Pad9)"> - <node ref="U2" pin="9"/> - </net> - <net code="74" name="Net-(U2-Pad10)"> - <node ref="U2" pin="10"/> - </net> - <net code="75" name="Net-(U2-Pad11)"> - <node ref="U2" pin="11"/> - </net> - <net code="76" name="Net-(U2-Pad13)"> - <node ref="U2" pin="13"/> - </net> - <net code="77" name="Net-(U2-Pad14)"> - <node ref="U2" pin="14"/> - </net> - <net code="78" name="Net-(U2-Pad15)"> + <net code="70" name="Net-(U2-Pad15)"> <node ref="U2" pin="15"/> </net> - <net code="79" name="Net-(C5-Pad2)"> - <node ref="Y1" pin="1"/> - <node ref="U2" pin="8"/> - <node ref="C5" pin="2"/> + <net code="71" name="Net-(U2-Pad14)"> + <node ref="U2" pin="14"/> </net> - <net code="80" name="Net-(C3-Pad2)"> - <node ref="C3" pin="2"/> - <node ref="U2" pin="7"/> - <node ref="Y1" pin="2"/> + <net code="72" name="Net-(U2-Pad13)"> + <node ref="U2" pin="13"/> </net> - <net code="81" name="/NRST"> + <net code="73" name="Net-(U2-Pad12)"> + <node ref="U2" pin="12"/> + </net> + <net code="74" name="Net-(U2-Pad11)"> + <node ref="U2" pin="11"/> + </net> + <net code="75" name="Net-(U2-Pad10)"> + <node ref="U2" pin="10"/> + </net> + <net code="76" name="Net-(U2-Pad9)"> + <node ref="U2" pin="9"/> + </net> + <net code="77" name="Net-(U8-Pad3)"> + <node ref="U8" pin="3"/> + </net> + <net code="78" name="Net-(U8-Pad5)"> + <node ref="U8" pin="5"/> + </net> + <net code="79" name="/NRST"> <node ref="C8" pin="1"/> <node ref="J4" pin="2"/> <node ref="U3" pin="4"/> </net> - <net code="82" name="/SWIM"> + <net code="80" name="/SWIM"> <node ref="J4" pin="3"/> <node ref="U3" pin="18"/> </net> - <net code="83" name="Net-(U1-Pad7)"> - <node ref="U1" pin="7"/> - </net> - <net code="84" name="Net-(U1-Pad8)"> + <net code="81" name="Net-(U1-Pad8)"> <node ref="U1" pin="8"/> </net> - <net code="85" name="Net-(U1-Pad9)"> + <net code="82" name="Net-(U1-Pad7)"> + <node ref="U1" pin="7"/> + </net> + <net code="83" name="Net-(U1-Pad9)"> <node ref="U1" pin="9"/> </net> - <net code="86" name="Net-(U1-Pad10)"> + <net code="84" name="/PKEY1"> + <node ref="U3" pin="11"/> + <node ref="R27" pin="1"/> + <node ref="R14" pin="2"/> + </net> + <net code="85" name="/NKEY1"> + <node ref="U3" pin="15"/> + <node ref="R12" pin="2"/> + </net> + <net code="86" name="/Relay0"> + <node ref="R16" pin="2"/> + <node ref="U3" pin="17"/> + </net> + <net code="87" name="/Triac0"> + <node ref="U3" pin="19"/> + <node ref="R28" pin="2"/> + </net> + <net code="88" name="/Out1"> + <node ref="U3" pin="6"/> + <node ref="R4" pin="2"/> + </net> + <net code="89" name="Net-(U1-Pad10)"> <node ref="U1" pin="10"/> </net> - <net code="87" name="/Out1"> - <node ref="R4" pin="2"/> - <node ref="U3" pin="6"/> + <net code="90" name="/TXD"> + <node ref="U1" pin="13"/> + <node ref="D1" pin="1"/> + <node ref="J1" pin="3"/> </net> - <net code="88" name="/Out0"> - <node ref="U3" pin="10"/> - <node ref="R3" pin="2"/> + <net code="91" name="Net-(J1-Pad9)"> + <node ref="J1" pin="9"/> </net> - <net code="89" name="/PKEY1"> - <node ref="R14" pin="2"/> - <node ref="U3" pin="11"/> - </net> - <net code="90" name="Net-(J1-Pad4)"> + <net code="92" name="Net-(J1-Pad4)"> <node ref="J1" pin="4"/> </net> - <net code="91" name="Net-(J1-Pad6)"> - <node ref="J1" pin="6"/> - </net> - <net code="92" name="Net-(J1-Pad7)"> - <node ref="J1" pin="7"/> - </net> <net code="93" name="Net-(J1-Pad8)"> <node ref="J1" pin="8"/> </net> - <net code="94" name="Net-(J1-Pad9)"> - <node ref="J1" pin="9"/> + <net code="94" name="Net-(J1-Pad7)"> + <node ref="J1" pin="7"/> </net> - <net code="95" name="/RXD"> - <node ref="J1" pin="2"/> - <node ref="D1" pin="3"/> - <node ref="U1" pin="14"/> + <net code="95" name="Net-(J1-Pad6)"> + <node ref="J1" pin="6"/> </net> - <net code="96" name="/TXD"> - <node ref="D1" pin="1"/> - <node ref="J1" pin="3"/> - <node ref="U1" pin="13"/> - </net> - <net code="97" name="Net-(J1-Pad1)"> + <net code="96" name="Net-(J1-Pad1)"> <node ref="J1" pin="1"/> </net> - <net code="98" name="/Relay1"> - <node ref="R18" pin="2"/> + <net code="97" name="/RXD"> + <node ref="J1" pin="2"/> + <node ref="U1" pin="14"/> + <node ref="D1" pin="3"/> + </net> + <net code="98" name="/Tx"> + <node ref="U1" pin="11"/> + <node ref="U3" pin="2"/> + <node ref="U2" pin="3"/> + </net> + <net code="99" name="/Out0"> + <node ref="U3" pin="10"/> + <node ref="R3" pin="2"/> + </net> + <net code="100" name="Net-(J5-Pad13)"> + <node ref="J5" pin="13"/> + </net> + <net code="101" name="Net-(J5-Pad5)"> + <node ref="J5" pin="5"/> + </net> + <net code="102" name="Net-(U3-Pad1)"> + <node ref="U3" pin="1"/> + </net> + <net code="103" name="/NKEY2"> + <node ref="U3" pin="13"/> + <node ref="R11" pin="2"/> + </net> + <net code="104" name="/Cur0"> + <node ref="U10" pin="7"/> + <node ref="R5" pin="1"/> + </net> + <net code="105" name="/Relay1"> <node ref="U3" pin="14"/> + <node ref="R18" pin="2"/> </net> - <net code="99" name="/Relay0"> - <node ref="U3" pin="17"/> - <node ref="R16" pin="2"/> - </net> - <net code="100" name="Net-(U8-Pad3)"> - <node ref="U8" pin="3"/> - </net> - <net code="101" name="Net-(U8-Pad5)"> - <node ref="U8" pin="5"/> - </net> - <net code="102" name="Net-(J6-Pad3)"> - <node ref="J6" pin="3"/> - <node ref="U10" pin="3"/> - <node ref="U10" pin="4"/> - </net> - <net code="103" name="Net-(D3-Pad2)"> - <node ref="R20" pin="1"/> - <node ref="J6" pin="1"/> - <node ref="K1" pin="1"/> - <node ref="D3" pin="2"/> - </net> - <net code="104" name="Net-(U9-Pad3)"> + <net code="106" name="Net-(U9-Pad3)"> <node ref="U9" pin="3"/> </net> - <net code="105" name="Net-(U9-Pad5)"> + <net code="107" name="Net-(U9-Pad5)"> <node ref="U9" pin="5"/> </net> - <net code="106" name="Net-(D4-Pad2)"> - <node ref="J7" pin="1"/> - <node ref="K2" pin="1"/> - <node ref="R22" pin="1"/> - <node ref="D4" pin="2"/> - </net> - <net code="107" name="/Cur0"> - <node ref="U10" pin="7"/> - <node ref="D6" pin="2"/> - </net> </nets> </export> diff --git a/220controlled_socket/kicad/socketBOM.csv b/220controlled_socket/kicad/socketBOM.csv index 25e3917..1f4b362 100644 --- a/220controlled_socket/kicad/socketBOM.csv +++ b/220controlled_socket/kicad/socketBOM.csv @@ -1,47 +1,35 @@ -Component,Description,Part,References,Value,Footprint,Quantity Per PCB,Datasheet -1,Unpolarized capacitor,C,C1 C2 C4 C6 C7 C8 C9 C10 C11 C13,0.1,C_0603_1608Metric_Pad0.84x1.00mm_HandSolder,10, -2,Unpolarized capacitor,C,C12,1n,C_0603_1608Metric_Pad0.84x1.00mm_HandSolder,1, -3,Unpolarized capacitor,C,C3 C5,22p,C_0603_1608Metric_Pad0.84x1.00mm_HandSolder,2, -4,triode for alternating current (TRIAC),BT137-600E,D3 D4,BT137-600E,TO-220-3_Vertical,2, -5,Zener Diode,D_Zener,D5,MM3Z3V6,D_SOD-323_HandSoldering,1,https://en.wikipedia.org/wiki/Zener_diode -6,"TVS Diode Array, 5.5V Standoff, 4 Channels, SOT-23-5 package",SP0504BAHT,D1,SMF05,SOT-353_SC-70-5_Handsoldering,1,http://www.littelfuse.com/~/media/files/littelfuse/technical%20resources/documents/data%20sheets/sp05xxba.pdf -7,Schottky diode,D_Schottky,D2 D6,SS14,D_SMA-SMB_Universal_Handsoldering,2, -8,Diode,D,D7 D8,SS14,D_SMA_Handsoldering,2, -9,"Generic connector, single row, 01x02, script generated (kicad-library-utils/schlib/autogen/connector/)",Conn_01x02,J3,5Vext,PinHeader_1x02_P2.54mm_Vertical,1, -10,15-pin male D-SUB connector (low-density/2 columns),DB15_Male,J5,DB15_Male,DSUB-15_Male_EdgeMount_P2.77mm,1, -11,"Generic screw terminal, single row, 01x03, script generated (kicad-library-utils/schlib/autogen/connector/)",Screw_Terminal_01x03,J6 J7,Power,TerminalBlock_Altech_AK300-3_P5.00mm,2, -12,"Generic connector, single row, 01x03, script generated (kicad-library-utils/schlib/autogen/connector/)",Conn_01x03,J4,SWIM,PinHeader_1x03_P2.54mm_Vertical,1, -13,USB Type B connector,USB_B,J2,USB_B,USB_B_Horizontal,1, -14,"Omron G5LE relay, Miniature Single Pole, SPDT, 10A",G5LE-1,K1 K2,SRD-05VDC,Relay_SPDT_SANYOU_SRD_Series_Form_C,2,http://www.omron.com/ecb/products/pdf/en-g5le.pdf -15,Transistor N-MOSFETwith substrate diode (general),Q_NMOS_GSD,Q1 Q2 Q5 Q7 Q8 Q9,2N7002,SOT-23_Handsoldering,6, -16,Transistor P-MOSFET with substrate diode (general),Q_PMOS_GSD,Q6,AO3407,SOT-23_Handsoldering,1, -17,Transistor N-MOSFETwith substrate diode (general),Q_NMOS_GSD,Q3 Q4,SI2300,SOT-23_Handsoldering,2, -18,Resistor,R,R7 R8 R9 R10 R15 R17,150,R_0603_1608Metric_Pad0.84x1.00mm_HandSolder,6, -19,Resistor,R,R1 R2,22,R_0603_1608Metric_Pad0.84x1.00mm_HandSolder,2, -20,Resistor,R,R3 R4 R11 R12 R14 R16 R18 R28 R31,330,R_0603_1608Metric_Pad0.84x1.00mm_HandSolder,9, -21,Resistor,R,R19 R21,330,R_Axial_DIN0309_L9.0mm_D3.2mm_P12.70mm_Horizontal,2, -22,Resistor,R,R20 R22,330,R_1206_3216Metric_Pad1.24x1.80mm_HandSolder,2, -23,Resistor,R,R6 R13 R25 R26 R27 R29 R30 R32 R33,47k,R_0805_2012Metric_Pad1.15x1.50mm_HandSolder,9, -24,Resistor,R,R5 R23,4k7,R_0603_1608Metric_Pad0.84x1.00mm_HandSolder,2, -25,,ACS712,U10,ACS712,SOIC-8_3.9x4.9mm_P1.27mm,1, -26,,CH340G,U2,CH340G,SOIC-16_3.9x9.9mm_P1.27mm,1, -27,"Dual RS232 driver/receiver, 5V supply, 120kb/s, 0C-70C",MAX3232,U1,MAX3232,SOP-16_4.4x10.4mm_P1.27mm,1,http://www.ti.com/lit/ds/symlink/max232.pdf -28,"Zero Cross Opto-Triac, Vdrm 250V, Ift 15mA, DIP6",MOC3063M,U8 U9,MOC3063M,DIP-6_W7.62mm,2,http://www.fairchildsemi.com/ds/MO/MOC3031M.pdf -29,,PC817,U5 U6 U7,PC817,DIP-4_W7.62mm,3, -30,,STM8S003F3P-RESCUE-socket,U3,STM8S003F3P,SSOP-20_4.4x6.5mm_P0.65mm,1, -31,Two pin crystal,Crystal,Y1,12M,Crystal_HC49-U_Vertical,1, - - - - - -Component Groups:,31 -Component Count:,80 -Fitted Components:,80 -Number of PCBs:,1 -Total components:,80 -Schematic Version:, -Schematic Date:, -BoM Date:, 25 2018 20:37:06 -Schematic Source:,/Big/Data/00__Electronics/STM8/220controlled_socket/kicad/socket.sch -KiCad Version:,Eeschema 4.0.7 +"Id";"Designator";"Package";"Quantity";"Designation";"Supplier and ref"; +1;"R17,R7,R8,R9,R10,R15";"R_0603_1608Metric_Pad0.84x1.00mm_HandSolder";6;"150";;; +2;"C1,C2,C4,C6,C7,C8,C9,C10,C11,C13";"C_0603_1608Metric_Pad0.84x1.00mm_HandSolder";10;"0.1";;; +3;"U1";"SOP-16_4.4x10.4mm_P1.27mm";1;"MAX3232";;; +4;"C3,C5";"C_0603_1608Metric_Pad0.84x1.00mm_HandSolder";2;"22p";;; +5;"D1";"SOT-353_SC-70-5_Handsoldering";1;"SMF05";;; +6;"D2";"D_SMA-SMB_Universal_Handsoldering";1;"SS14";;; +7;"D3,D4";"TO-220-3_Vertical";2;"BT137-600E";;; +8;"J2";"USB_B_Horizontal";1;"USB_B";;; +9;"J3";"PinHeader_1x02_P2.54mm_Vertical";1;"5Vext";;; +10;"J4";"PinHeader_1x03_P2.54mm_Vertical";1;"SWIM";;; +11;"J5";"DSUB-15_Male_EdgeMount_P2.77mm";1;"DB15_Male";;; +12;"J6,J7";"TerminalBlock_Altech_AK300-3_P5.00mm";2;"Power";;; +13;"K1,K2";"Relay_SPDT_SANYOU_SRD_Series_Form_C";2;"SRD-05VDC";;; +14;"Q1,Q2,Q8,Q9,Q5,Q7";"SOT-23_Handsoldering";6;"2N7002";;; +15;"Q3,Q4";"SOT-23_Handsoldering";2;"SI2300";;; +16;"Q6";"SOT-23_Handsoldering";1;"AO3407";;; +17;"R1,R2";"R_0603_1608Metric_Pad0.84x1.00mm_HandSolder";2;"22";;; +18;"R3,R4,R11,R12,R14,R16,R18,R28,R31";"R_0603_1608Metric_Pad0.84x1.00mm_HandSolder";9;"330";;; +19;"R5,R23,R24";"R_0603_1608Metric_Pad0.84x1.00mm_HandSolder";3;"4k7";;; +20;"U2";"SOIC-16_3.9x9.9mm_P1.27mm";1;"CH340G";;; +21;"U3";"SSOP-20_4.4x6.5mm_P0.65mm";1;"STM8S003F3P";;; +22;"U5,U6,U7";"DIP-4_W7.62mm";3;"PC817";;; +23;"U8,U9";"DIP-6_W7.62mm";2;"MOC3063M";;; +24;"U10";"SOIC-8_3.9x4.9mm_P1.27mm";1;"ACS712";;; +25;"Y1";"Crystal_HC49-U_Vertical";1;"12M";;; +26;"J1";"DSUB-9_Female_Horizontal_P2.77x2.84mm_EdgePinOffset4.94mm_Housed_MountingHolesOffset7.48mm";1;"DB9_Female";;; +27;"D5";"D_SOD-323_HandSoldering";1;"5V suppressor";;; +28;"C12";"C_0603_1608Metric_Pad0.84x1.00mm_HandSolder";1;"1n";;; +29;"REF**,REF**,REF**,REF**";"Hole_3mm";4;"MountingHole_3.2mm_M3";;; +30;"R6,R13,R25,R26,R27,R29,R30,R32,R33";"R_0805_2012Metric_Pad1.15x1.50mm_HandSolder";9;"47k";;; +31;"D7,D8";"D_SMA";2;"SS14";;; +32;"C15,C14";"C_Disc_D6.0mm_W2.5mm_P5.00mm";2;"0.01 600V";;; +33;"R34,R35";"R_Axial_Power_L20.0mm_W6.4mm_P25.40mm";2;"330 2W";;; +34;"R19,R20,R21,R22";"R_1206_HandSoldering";4;"330";;; diff --git a/220controlled_socket/kicad/socketBOM.ods b/220controlled_socket/kicad/socketBOM.ods index eb83bc083f30ea444121f60ccc1a81b93be2f335..74b7807fd43e73ebf5a2b0647567e15cf7da0156 100644 GIT binary patch literal 18354 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⁡jcw0)2GrV{whGS-vgG$j2- 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 literal 12775 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 diff --git a/220controlled_socket/src/220socket.ihx b/220controlled_socket/src/220socket.ihx index 8be0945..9f2127e 100644 --- a/220controlled_socket/src/220socket.ihx +++ b/220controlled_socket/src/220socket.ihx @@ -1,125 +1,123 @@ -:04808300725F000127 -:2080A4008080808080808080808080808080AE5230F6A520272BAE5231F6725D001B262127 -:2080C400725D0001260AA13A2617350100012011A1232705C700042008725F000135010031 -:2080E4001B8080AE5405F65F97CF0002AE5404F6954F4FCA000302CA000295CF0002350137 -:20810400001AAE5400F6A43FF780AE5344F644241B90CE001E72A90001C6001DA90097C6B0 -:12812400001CA9009590CF001ECF001C350053448080BB -:018E8A0000E7 -:20813600AE5230F64D2AF9AE52317B03F781AE5230F64D2AF9350A523181160390F64D2780 -:2081560018AE5230F64D2AF9AE5235F6AA08F790F6905CAE5231F720E381725D001B260356 -:208176004F200C1E03C60004F7725F001BA6018152255F1F031F017B2AA1042303CC826C36 -:208196007B2AA1032603CC826C0D2A2603CC826C961C00051F124F5F9772FB127F4CA10C5F -:2081B60025F51E12A60AE70A7B2AA101270E7B2AA10227197B2AA104272E20451E28F66B0F -:2081D6001B4F5F6B031F017B1B6B042034162817141E14FE1F1C161C17200F1F0F1E16200B -:2081F6001703161E17012019162817161E16E6036B25E6026B24FE1F221624170316221759 -:2082160001A6096B114B0A5F894B001E07891E0789CD8DC05B08517B110A115F9772FB124E -:20823600909FAB30F74B0A5F894B001E07891E0789CD8E305B081F0317011E0326041E01B1 -:2082560027067B11A1FF2CBD7B114C5F9772FB1289CD81505B025B2581AE5011F6AA20F72E -:14827600AE5012F6AA20F73568523235035233352C523581E6 -:018E8B0000E6 -:20828A0072107F60350050C635075347357D53483501534335855340AE5005F6AA20F735FD -:2082AA000C5002350E50033520500735F8500C35F8500D35045011350450123524540035EA -:1082CA00105407350854023573540135735401812B -:208000008200808382000000820080A4820080A5820080A6820080A7820080A8820080A966 -:20802000820080AA820080AB8200000082000000820080AC820080AD820080AE820080AF25 -:20804000820080B08200000082000000820080B1820080B2820080E6820000008200000017 -:20806000820080E78200810E82008135820000008200000082000000820000008200000044 -:1D808700AE00192707724F00005A26F9AE001C2709D68E89D700195A26F7CC808093 -:03808000CC87AA00 -:2082DA005238AE00081F1D1E1D5C5C1F0B1E0BFE161D72A900041711161190FE1703130365 -:2082FA00230FCF00051E0B1603FF1E1190CE0005FF1E1D1C00081F051E05FE161D72A9009A -:20831A000A1735163590FE172D132D230FCF00051E05162DFF1E3590CE0005FF1E1D1C0019 -:20833A000E1F171E17FE161D72A90010171F161F90FE17011301230FCF00051E171601FFD8 -:20835A001E1F90CE0005FF1E1DFE160B90FE17331333230FCF00051E1D1633FF1E0B90CEDC -:20837A000005FF1E1D1C00061F0D1E0DFE160590FE17231323230FCF00051E0D1623FF1E8D -:20839A000590CE0005FF1E1D1C000C1F131E13FE161790FE170F130F230FCF00051E131648 -:2083BA000FFF1E1790CE0005FF1E0BFE161190FE172B132B230FCF00051E0B162BFF1E1104 -:2083DA0090CE0005FF1E05FE163590FE17191319230FCF00051E051619FF1E3590CE0005BE -:2083FA00FF1E17FE161F90FE17151315230FCF00051E171615FF1E1F90CE0005FF1E1DFEDD -:20841A00160D90FE171B131B230FCF00051E1D161BFF1E0D90CE0005FF1E35FE161F90FE1F -:20843A0017071307230FCF00051E351607FF1E1F90CE0005FF1E05FE161790FE173113316E -:20845A00230FCF00051E051631FF1E1790CE0005FF1E0DFE161390FE17371337230FCF0083 -:20847A00051E0D1637FF1E1390CE0005FF1E0BFE160590FE17271327230FCF00051E0B1646 -:20849A0027FF1E0590CE0005FF1E11FE163590FE17211321230FCF00051E111621FF1E35E7 -:2084BA0090CE0005FF1E05FE161790FE17091309230FCF00051E051609FF1E1790CE000549 -:2084DA00FF1E05FE161190FE17291329230FCF00051E051629FF1E1190CE0005FF1E13FE0A -:2084FA00160590FE172F132F230FCF00051E13162FFF1E0590CE0005FF1E05FE161190FE5B -:20851A0017251325230FCF00051E051625FF1E1190CE0005FF1E05FE5B388152037B066B63 -:20853A00027B02A1412603CC85FE7B02A1422603CC861A7B02A1432603CC86367B02A149DA -:20855A002603CC868C7B02A14B2603CC86DF7B02A14C2603CC86FB7B02A14D2603CC871759 -:20857A007B02A14E2603CC87327B02A14F2603CC874D7B02A1592603CC87687B02A15A2698 -:20859A0003CC87827B02A161275A7B02A16227707B02A1632603CC86367B02A1692603CC24 -:2085BA00868C7B02A16B2603CC86DF7B02A16C2603CC86FB7B02A16D2603CC87177B02A170 -:2085DA006E2603CC87327B02A16F2603CC874D7B02A1792603CC87687B02A17A2603CC8780 -:2085FA0082CC87A7AE8BD389CD81505B02AE500FF6A5042704A6312002A6306B03CC879D51 -:20861A00AE8BDB89CD81505B02AE500AF6A5402704A6312002A6306B03CC879DAE8BE389C8 -:20863A00CD81505B027B06A1632606A6016B0120020F010D012704A6302002A63188CD8151 -:20865A0036844B3DCD8136840D012713AE5006F6A5102604A6312002A6306B03CC879DAEBA -:20867A005001F6A5022604A6312002A6306B03CC879DAE8BE689CD81505B02AE00024B02FB -:20869A0089CD81865B03AE8BF089CD81505B02AE00304B0289CD81865B03AE8BF889CD816A -:2086BA00505B02AE00324B0289CD81865B03AE8C0089CD81505B02CE00344B0289CD8186A1 -:2086DA005B03CC87A7AE8C0689CD81505B02AE5005F6A5202604A6312002A6306B03CC87EC -:2086FA009DAE8C0D89CD81505B02AE500AF6A5202704A6312002A6306B03CC879DAE8C148F -:20871A0089CD81505B02AE500AF6A5082704A6312002A6306B03206BAE8C1B89CD81505B46 -:20873A0002AE5000F6A5082704A6312002A6306B032050AE8C2189CD81505B02AE5000F6D1 -:20875A00A5042704A6312002A6306B032035AE8C2789CD81505B02AE500AF64D2A04A63164 -:20877A002002A6306B03201BAE8C2F89CD81505B02AE500AF6A5102704A6312002A6306B39 -:20879A000320007B0388CD813684CD81445B038152235F1F0C1F0AAEFFFF1F085F1F065F3F -:2087BA001F03AE8C371F01CD828ACD826F9AAE8C4489CD81505B02725D001A2744AE0008AF -:2087DA001F0E5FC60007975872FB0E90CE0002FFC600074CC70007A1092622725F00071E8E -:2087FA00035C1F03CD82DA7B07891102857B068912018524021F06130824021F08725F00EC -:20881A001ACE001E72F00C1F12C6001D120B6B11C6001C120A6B10AE00C713124F12114F49 -:20883A0012102433CE001E1F0CCE001C1F0A7B04C700357B03C700345F1F037B07C700318C -:20885A007B06C700307B09C700337B08C700325F1F06AEFFFF1F08CE00222605CE00202705 -:20887A003DCE001E72B000221F16C6001DC200216B15C6001CC200206B14AE006413164F29 -:20889A0012154F121424175FCF0022CF0020AE500AF6AA80F7AE8C7189CD81505B02CE008C -:2088BA00262605CE0024273DCE001E72B000261F1AC6001DC200256B19C6001CC200246B09 -:2088DA0018AE0064131A4F12194F121824175FCF0026CF0024AE500AF6AA10F7AE8C7B89C5 -:2088FA00CD81505B02CE002A2605CE0028273DCE001E72B0002A1F1EC6001DC200296B1D1B -:20891A00C6001CC200286B1CAE0064131E4F121D4F121C24175FCF002ACF0028AE500FF61F -:20893A00A4FBF7AE8C8589CD81505B02CE002E2605CE002C273DCE001E72B0002E1F22C67C -:20895A00001DC2002D6B21C6001CC2002C6B20AE006413224F12214F122024175FCF002E29 -:20897A00CF002CAE500AF6A4BFF7AE8C8F89CD81505B02961C000589CD81705B024D26036C -:20899A00CC87D17B05A1412603CC8A45A1422603CC8A59A1432603CC8BC6A1492603CC8B24 -:2089BA00C6A14B2603CC8A6AA14C2603CC8A7EA14D2603CC8A92A14E2603CC8AA6A14F26EF -:2089DA0003CC8ABAA1532603CC8AC4A1592603CC8B16A15A2603CC8B87A1612744A162270A -:2089FA0054A1632603CC8BC6A1692603CC8BC6A16B2756A16C2763A16D2773A16E2603CCA3 -:208A1A008A9CA16F2603CC8AB0A1732603CC8AC4A1792603CC8AD7A17A2603CC8B47CC8BD7 -:208A3A00BAAE500FF6AA04F7CC8BC6AE500FF6A4FBF7CC8BC6AE500AF6AA40F7CC8BC6AE3D -:208A5A00500AF6A4BFF7CC8BC6AE5005F6A4DFF7AE5005F6AA20F7CC8BC6AE500AF6AA2023 -:208A7A00F7CC8BC6AE500AF6A4DFF7CC8BC6AE500AF6AA08F7CC8BC6AE500AF6A4F7F7CC13 -:208A9A008BC6AE5000F6AA08F7CC8BC6AE5000F6A4F7F7CC8BC6AE5000F6AA04F7CC8BC658 -:208ABA00AE5000F6A4FBF7CC8BC61E01F64D2603CC8BC65C8988CD8535848520EFAE500F34 -:208ADA00F6A5042707721E500ACC8BC6AE500FF6AA04F790CE001ECE001C90CF0022CF004A -:208AFA0020CE0022260FCE0020260AAE0001CF00225FCF0020A6616B05CC8BC6AE500FF674 -:208B1A00A504272290CE001ECE001C90CF002ACF0028CE002A260FCE0028260AAE0001CF92 -:208B3A00002A5FCF0028721F500ACC8BC6AE500AF6A5402709AE500AF6AA10F7206EAE5045 -:208B5A000AF6AA40F790CE001ECE001C90CF0026CF0024CE0026260FCE0024260AAE000142 -:208B7A00CF00265FCF0024A6626B05203FAE500AF6A540272290CE001ECE001C90CF002E9E -:208B9A00CF002CCE002E260FCE002C260AAE0001CF002E5FCF002CAE500AF6A4EFF7200CAB -:208BBA00AE8C9989CD81505B02CC87D17B0588CD853584CC87D15B23815452494143303D0A -:208BDA00005452494143313D00496E0041444356414C55453D004144434D41583D004144F1 -:208BFA00434D494E3D004E5054533D00504B4559313D004E4B4559313D004E4B4559323D83 -:208C1A00004F5554303D004F5554313D0052454C4159303D0052454C4159313D0061626374 -:208C3A0043696B6C6D6E6F797A0049276D20616C6976652121210A436F6D6D616E6473208D -:208C5A006C6F6F6B73206C696B6520273A73796D626F6C23270A0052454C4159303D310A7D -:208C7A000052454C4159313D310A005452494143303D300A005452494143313D300A000A75 -:208C9A0050524F544F3A0A612F41202D207475726E206F6E2F6F6666207472696163300A07 -:208CBA00622F42202D207475726E206F6E2F6F6666207472696163310A632F43202D206317 -:208CDA006865636B20696E302F310A692F49202D2073686F772063757272656E7420616D2E -:208CFA00706C2E2028414455290A6B2F4B202D207365742F726573657420504B4559310A77 -:208D1A006C2F4C202D207365742F7265736574204E4B4559310A6D2F4D202D207365742FE4 -:208D3A007265736574204E4B4559320A6E2F6F202D206163746976617465206F7574302FC2 -:208D5A00310A4E2F4F202D2064656163746976617465206F7574302F310A732F53202D20F7 -:208D7A0073686F7720616C6C207374617469737469630A792F59202D207475726E206F6E89 -:208D9A002F6F66662072656C6179300A7A2F5A202D207475726E206F6E2F6F666620726541 -:068DBA006C6179310A0032 -:1A8E8C0000000000000000000000000000000000000000000000FFFF0000CE -:208DC00052030F030F017B0A484F494D262E160C1E0A905859170C1F0A1E08130C7B071266 -:208DE0000B7B06120A240D160C1E0A549056170C1F0A20080C017B016B0320CA7B036B02D6 -:208E00001E0872F00C7B07120B90977B06120A25061F0890951706160C1E0A549056170C20 -:208E20001F0A7B020A024D26D71E0816065B038152065F1F051F03A6206B027B09484F4981 -:208E40006B01160B1E09905859170B1F0916051E0390585917051F030D0127067B06AA01B1 -:208E60006B061E0572F00F7B04120E90977B03120D250C1F05909517037B0CAA016B0C0A43 -:0A8E80000226B81E0B16095B0681DE +:2082930072107F60350050C635075347357D53483501534335855340721A5005350C50026F +:2082B300350E50033520500735F8500C35F8500D35045011350450123524540035105407D4 +:0D82D3003508540235735401357354018190 +:04806F00725F00013B +:2082E0008080808080808080808080808080C65230A520272AC65231725D001B2621725DD7 +:208300000001260AA13A2617350100012011A1232705C700042008725F00013501001B8026 +:2083200080C654055F97CF0002C6540495C6000302CA000295CF00023501001AC65400A419 +:208340003FC7540080C6534444241BCE001E1C0001C6001DA9009097C6001CA9009095CF28 +:0C836000001E90CF001C350053448080AC +:018277000006 +:20836C00C652302AFBAE52317B03F781C652302AFB350A5231811E03F6260181C652302A7C +:20838C00FB72165235F65CC7523120EC81725D001B26024F811E03C60004F7725F001BA648 +:2083AC00018152215F1F201F1E7B26A1042303CC84877B26A1032603CC84870D262603CC31 +:2083CC008487965C1F134F5F9772FB137F4CA10C25F51E13A60AE70A7B264A270E7B26A1D7 +:2083EC000227157B26A1042727203D1E24F65F97905F1F20171E20301624170D93FE1F1B38 +:20840C001F110F100F0F16111720160F171E20181624171593E6036B1AE6026B19FE1F17EC +:20842C00161917201617171EA6096B1D4B0A5F894B001E24891E2489CD8D735B08517B1DFA +:20844C000A1D5F9772FB13909FAB30F74B0A5F894B001E24891E2489CD8DE35B081F20175E +:20846C001E1E2026C71E1E26C37B1D4C97494FA2009572FB1389CD83825B025B2181721A77 +:13848C005011721A50123568523235035233352C52358147 +:018278000005 +:208000008200806F82000000820082E0820082E1820082E2820082E3820082E4820082E506 +:20802000820082E6820082E78200000082000000820082E8820082E9820082EA820082EBB1 +:20804000820082EC8200000082000000820082ED820082EE82008320820000008200000020 +:0C80600082008321820083458200836B34 +:1D807300AE00192707724F00005A26F9AE001C2709D68276D700195A26F7CC806CDA +:03806C00CC89823A +:20849F005236AE000A1F29FEA608AB046B2CA600A9006B2B162B90FE17271327230FCF0016 +:2084BF00051E291627FF1E2B90CE0005FFAE00101F25FEA608AB0A6B24A600A9006B231685 +:2084DF002390FE17211321230FCF00051E251621FF1E2390CE0005FFAE00161F1FFEA60890 +:2084FF00AB106B1EA600A9006B1D161D90FE171B131B230FCF00051E1F161BFF1E1D90CE15 +:20851F000005FFCE0008162990FE171913192310CF0005AE00081619FF1E2990CE0005FFA5 +:20853F00AE000E1F17FE162590FE17091309230FCF00051E171609FF1E2590CE0005FFAE7B +:20855F0000141F07FE161F90FE17051305230FCF00051E071605FF1E1F90CE0005FF1E29A2 +:20857F00FE162B90FE17031303230FCF00051E291603FF1E2B90CE0005FF1E25FE162390C5 +:20859F00FE17011301230FCF00051E251601FF1E2390CE0005FF1E1FFE161D90FE17351335 +:2085BF0035230FCF00051E1F1635FF1E1D90CE0005FFCE0008161790FE173313332310CF1A +:2085DF000005AE00081633FF1E1790CE0005FF1E23FE161D90FE17311331230FCF00051E32 +:2085FF00231631FF1E1D90CE0005FF1E25FE161F90FE172F132F230FCF00051E25162FFF3D +:20861F001E1F90CE0005FF1E17FE160790FE172D132D230FCF00051E17162DFF1E0790CE3A +:20863F000005FF1E29FE162590FE17151315230FCF00051E291615FF1E2590CE0005FF1E7B +:20865F002BFE162390FE17131313230FCF00051E2B1613FF1E2390CE0005FF1E25FE161F2B +:20867F0090FE17111311230FCF00051E251611FF1E1F90CE0005FF1E25FE162B90FE170FBD +:20869F00130F230FCF00051E25160FFF1E2B90CE0005FF1E07FE162590FE170D130D230F1F +:2086BF00CF00051E07160DFF1E2590CE0005FF1E25FE162B90FE170B130B230FCF00051E67 +:2086DF0025160BFF1E2B90CE0005FF1E25FE5B368152187B1BA1412603CC87B87B1BA142A9 +:2086FF002603CC87D77B1BA1432603CC87F67B1BA1492603CC88527B1BA14B2603CC88A529 +:20871F007B1BA14C2603CC88C47B1BA14D2603CC88E37B1BA14E2603CC89017B1BA14F26E2 +:20873F0003CC891F7B1BA1592603CC893D7B1BA15A2603CC89597B1BA161275D7B1BA1623B +:20875F002603CC87D77B1BA1632603CC87F67B1BA1692603CC88527B1BA16B2603CC88A568 +:20877F007B1BA16C2603CC88C47B1BA16D2603CC88E37B1BA16E2603CC89017B1BA16F2602 +:20879F0003CC891F7B1BA1792603CC893D7B1BA17A2603CC8959CC897FAE809089CD838263 +:2087BF005B02C6500FA5042706A6310F172004A6300F176B01CC89754B984B80CD83825B14 +:2087DF0002C6500AA5402706A6310F062004A6300F066B01CC8975AE80A089CD83825B028F +:2087FF007B1BA06326044C6B10C10F100D102704AE0030BCAE00319F88CD836C844B3DCD73 +:20881F00836C840D102716C65006A5102606A6310F0A2004A6300F0A6B01CC8975C650011F +:20883F00A5022606A6310F082004A6300F086B01CC89754BA34B80CD83825B02AE00024B2E +:20885F000289CD83AE5B034BAD4B80CD83825B02AE00304B0289CD83AE5B03AE80B589CDD7 +:20887F0083825B02AE00324B0289CD83AE5B03AE80BD89CD83825B02CE00344B0289CD839A +:20889F00AE5B03CC897F4BC34B80CD83825B02C65005A5202606A6310F0E2004A6300F0EBA +:2088BF006B01CC89754BCA4B80CD83825B02C6500AA5202706A6310F0C2004A6300F0C6BD0 +:2088DF0001CC8975AE80D189CD83825B02C6500AA5082706A6310F042004A6300F046B019A +:2088FF0020744BD84B80CD83825B02C65000A5082706A6310F022004A6300F026B012056E3 +:20891F004BDE4B80CD83825B02C65000A5042706A6310F152004A6300F156B0120384BE41D +:20893F004B80CD83825B02C6500A2A06A6310F132004A6300F136B01201CAE80EC89CD831E +:20895F00825B02C6500AA5102706A6310F112004A6300F116B017B0188CD836C84CD83788E +:20897F005B188152215F1F1C1F1AAEFFFF1F185F1F165F1F20CD8293CD848A9A4B014B811A +:20899F00CD83825B02725D001A273F5FC6000797581C000890CE0002FF725C0007C60007FA +:2089BF00A1092622725F00071E205C1F20CD849F1F1E1E16131E2404161E17161E18131E73 +:2089DF002304161E1718725F001ACE001E72F01C1F10C6001D121B6B0FC6001C121A6B0E59 +:2089FF00AE00C713104F120F4F120E2424CE001E1F1CCE001C1F1A1E20CF00345F1F201E52 +:208A1F0016CF00301E18CF00325F1F16AEFFFF1F18CE00222605CE0020273ECE001E72B0F8 +:208A3F0000221F0CC6001DC200216B0BC6001CC200206B0AAE0064130C4F120B4F120A2429 +:208A5F00185FCF0022CF0020C6500AAA80C7500A4B2E4B81CD83825B02CE00262605CE00D4 +:208A7F0024273ECE001E72B000261F08C6001DC200256B07C6001CC200246B06AE00641359 +:208A9F00084F12074F120624185FCF0026CF0024C6500AAA10C7500A4B384B81CD83825BE6 +:208ABF0002CE002A2605CE0028273ECE001E72B0002A1F04C6001DC200296B03C6001CC2DC +:208ADF0000286B02AE006413044F12034F120224185FCF002ACF0028C6500FA4FBC7500F7D +:208AFF004B424B81CD83825B02CE002E2605CE002C273ECE001E72B0002E1F14C6001DC235 +:208B1F00002D6B13C6001CC2002C6B12AE006413144F12134F121224185FCF002ECF002C8B +:208B3F00C6500AA4BFC7500A4B4C4B81CD83825B02965C89CD83995B024D2603CC89A47B35 +:208B5F0001A1412603CC8C277B01A1422603CC8C2E7B01A1432603CC8D697B01A149260383 +:208B7F00CC8D697B01A14B2603CC8C397B01A14C2603CC8C477B01A14D2603CC8C557B0105 +:208B9F00A14E2603CC8C637B01A14F2603CC8C717B01A1532603CC8C787B01A1592603CCB1 +:208BBF008CC67B01A15A2603CC8D2E7B01A1612603CC8D697B01A1622603CC8D697B01A12D +:208BDF00632603CC8D697B01A1692603CC8D697B01A16B27417B01A16C27467B01A16D2720 +:208BFF004E7B01A16E27567B01A16F275E7B01A17327667B01A1792603CC8C8B7B01A17A99 +:208C1F002603CC8CF5CC8D5D7215500FCC8D69721D500ACC8D69721B5005721A5005CC8D9A +:208C3F0069721A500ACC8D69721B500ACC8D697216500ACC8D697217500ACC8D697216503A +:208C5F0000CC8D6972175000CC8D6972145000CC8D6972155000CC8D69AE80F4F62603CC5A +:208C7F008D695C8988CD86F0848520F0C6500FA5042707721E500ACC8D697214500FCE00BB +:208C9F001E90CE001CCF002290CF0020CE0022260FCE0020260AAE0001CF00225FCF00207C +:208CBF00A6616B01CC8D69C6500FA5042722CE001E90CE001CCF002A90CF0028CE002A2645 +:208CDF000FCE0028260AAE0001CF002A5FCF0028721F500A2074C6500AA5402706721850B7 +:208CFF000A2067721C500ACE001E90CE001CCF002690CF0024CE0026260FCE0024260AAE05 +:208D1F000001CF00265FCF0024A6626B01203BC6500AA5402722CE001E90CE001CCF002E6C +:208D3F0090CF002CCE002E260FCE002C260AAE0001CF002E5FCF002C7219500A200C4B5676 +:148D5F004B81CD83825B02CC89A47B0188CD86F084CC89A448 +:208090005452494143303D005452494143313D00496E0041444356414C55453D004144430E +:2080B0004D41583D004144434D494E3D004E5054533D00504B4559313D004E4B4559313DD6 +:2080D000004E4B4559323D004F5554303D004F5554313D0052454C4159303D0052454C4111 +:2080F00059313D0061626343696B6C6D6E6F797A0049276D20616C6976652121210A436F96 +:208110006D6D616E6473206C6F6F6B73206C696B6520273A73796D626F6C23270A005245C0 +:208130004C4159303D310A0052454C4159313D310A005452494143303D300A005452494131 +:2081500043313D300A000A50524F544F3A0A412020202D207475726E206F666620747269C1 +:208170006163300A422020202D207475726E206F6666207472696163310A632F43202D202E +:20819000636865636B20696E302F310A692F49202D2073686F772063757272656E7420618D +:2081B0006D706C2E2028414455290A6B2F4B202D207365742F726573657420504B45593169 +:2081D0000A6C2F4C202D207365742F7265736574204E4B4559310A6D2F4D202D207365745F +:2081F0002F7265736574204E4B4559320A6E2F6F202D206163746976617465206F75743018 +:208210002F310A4E2F4F202D2064656163746976617465206F7574302F310A732F53202D3D +:208230002073686F7720616C6C207374617469737469630A792F59202D207475726E206F2C +:208250006E2F6F66662072656C6179300A7A2F5A202D207475726E206F6E2F6F666620728D +:07827000656C6179310A0021 +:1A82790000000000000000000000000000000000000000000000FFFF0000ED +:208D730052030F030F017B0A484F494D262E160C1E0A905859170C1F0A1E08130C7B0712B3 +:208D93000B7B06120A240D160C1E0A549056170C1F0A20080C017B016B0320CA7B036B0223 +:208DB3001E0872F00C7B07120B90977B06120A25061F0890951706160C1E0A549056170C6E +:208DD3001F0A7B020A024D26D71E0816065B038152065F1F051F03A6206B027B09484F49CF +:208DF3006B01160B1E09905859170B1F0916051E0390585917051F030D0127067B06AA01FF +:208E13006B061E0572F00F7B04120E90977B03120D250C1F05909517037B0CAA016B0C0A90 +:0A8E33000226B81E0B16095B06812B :00000001FF diff --git a/DRUM/schematics/drum.pro b/DRUM/schematics/drum.pro index fe05f48..f89a609 100644 --- a/DRUM/schematics/drum.pro +++ b/DRUM/schematics/drum.pro @@ -1,4 +1,4 @@ -update=Вс 28 дек 2014 15:05:11 +update=Пн 18 ноя 2019 14:37:39 last_client=kicad [general] version=1 @@ -48,48 +48,4 @@ NetIExt=net EquName1=devcms [eeschema] version=1 -PageLayoutDescrFile= -SubpartIdSeparator=0 -SubpartFirstId=65 LibDir= -NetFmtName= -SpiceForceRefPrefix=0 -SpiceUseNetNumbers=0 -RptD_X=0 -RptD_Y=100 -RptLab=1 -LabSize=60 -[eeschema/libraries] -LibName1=power -LibName2=device -LibName3=transistors -LibName4=conn -LibName5=linear -LibName6=regul -LibName7=74xx -LibName8=cmos4000 -LibName9=adc-dac -LibName10=memory -LibName11=xilinx -LibName12=special -LibName13=microcontrollers -LibName14=dsp -LibName15=microchip -LibName16=analog_switches -LibName17=motorola -LibName18=texas -LibName19=intel -LibName20=audio -LibName21=interface -LibName22=digital-audio -LibName23=philips -LibName24=display -LibName25=cypress -LibName26=siliconi -LibName27=opto -LibName28=atmel -LibName29=contrib -LibName30=valves -LibName31=stm8s105k4t6c -LibName32=tda2822 -LibName33=CD74HC154 diff --git a/LEDS_BT/LEDs.config b/LEDS_BT/LEDs.config new file mode 100644 index 0000000..3e6d801 --- /dev/null +++ b/LEDS_BT/LEDs.config @@ -0,0 +1,3 @@ +// Add predefined macros for your project here. For example: +// #define THE_ANSWER 42 +#define STM8S103 diff --git a/LEDS_BT/LEDs.creator b/LEDS_BT/LEDs.creator new file mode 100644 index 0000000..e94cbbd --- /dev/null +++ b/LEDS_BT/LEDs.creator @@ -0,0 +1 @@ +[General] diff --git a/LEDS_BT/LEDs.files b/LEDS_BT/LEDs.files new file mode 100644 index 0000000..0732498 --- /dev/null +++ b/LEDS_BT/LEDs.files @@ -0,0 +1,6 @@ +interrupts.c +interrupts.h +main.c +ports_definition.h +uart.c +uart.h diff --git a/LEDS_BT/LEDs.includes b/LEDS_BT/LEDs.includes new file mode 100644 index 0000000..eb4d905 --- /dev/null +++ b/LEDS_BT/LEDs.includes @@ -0,0 +1 @@ +../ diff --git a/LEDS_BT/Makefile b/LEDS_BT/Makefile new file mode 100644 index 0000000..e845e46 --- /dev/null +++ b/LEDS_BT/Makefile @@ -0,0 +1,34 @@ +NAME=uart +SDCC=sdcc + +CCFLAGS=-DSTM8S103 -I../ -I/usr/share/sdcc/include -mstm8 --out-fmt-ihx +LDFLAGS= -mstm8 --out-fmt-ihx -lstm8 +FLASHFLAGS=-cstlinkv2 -pstm8s103f2 + +SRC=$(wildcard *.c) + +OBJ=$(SRC:%.c=%.rel) +TRASH=$(OBJ) $(SRC:%.c=%.rst) $(SRC:%.c=%.asm) $(SRC:%.c=%.lst) $(SRC:%.c=%.cdb) +TRASH+=$(SRC:%.c=%.sym) $(NAME).lk $(NAME).map +INDEPENDENT_HEADERS=../stm8s.h ports_definition.h Makefile + +all: $(NAME).ihx + +#$(SRC) : %.c : %.h $(INDEPENDENT_HEADERS) +# @touch $@ +# +#%.h: ; + +clean: + rm -f $(TRASH) + +load: $(NAME).ihx + stm8flash $(FLASHFLAGS) -w $(NAME).ihx + +%.rel: %.c + $(SDCC) $(CCFLAGS) -c $< + +$(NAME).ihx: $(OBJ) + $(SDCC) $(LDFLAGS) $(OBJ) -o $(NAME).ihx + +.PHONY: all diff --git a/LEDS_BT/Readme b/LEDS_BT/Readme new file mode 100644 index 0000000..4aacabc --- /dev/null +++ b/LEDS_BT/Readme @@ -0,0 +1,2 @@ +Setup "bluetooth control 8-lamp", connect STM8S103F2 to bluetooth HC-06. +Manage up to 8 LEDs controlled by bluetooth module HC-06 diff --git a/LEDS_BT/interrupts.c b/LEDS_BT/interrupts.c new file mode 100644 index 0000000..cd357e3 --- /dev/null +++ b/LEDS_BT/interrupts.c @@ -0,0 +1,167 @@ +/* + * interrupts.c + * + * Copyright 2018 Edward V. Emelianoff <eddy@sao.ru> + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, + * MA 02110-1301, USA. + */ + +#include "ports_definition.h" +#include "uart.h" + +// Top Level Interrupt +INTERRUPT_HANDLER(TLI_IRQHandler, 0){} + +// Auto Wake Up Interrupt +INTERRUPT_HANDLER(AWU_IRQHandler, 1){} + +// Clock Controller Interrupt +INTERRUPT_HANDLER(CLK_IRQHandler, 2){} + +// External Interrupt PORTA +INTERRUPT_HANDLER(EXTI_PORTA_IRQHandler, 3){} + +// External Interrupt PORTB +INTERRUPT_HANDLER(EXTI_PORTB_IRQHandler, 4){} + +// External Interrupt PORTC +INTERRUPT_HANDLER(EXTI_PORTC_IRQHandler, 5){ +} + +// External Interrupt PORTD +INTERRUPT_HANDLER(EXTI_PORTD_IRQHandler, 6){ +} + +// External Interrupt PORTE +INTERRUPT_HANDLER(EXTI_PORTE_IRQHandler, 7){} + +#ifdef STM8S903 +// External Interrupt PORTF +INTERRUPT_HANDLER(EXTI_PORTF_IRQHandler, 8){} +#endif // STM8S903 + +#if defined (STM8S208) || defined (STM8AF52Ax) +// CAN RX Interrupt routine. +INTERRUPT_HANDLER(CAN_RX_IRQHandler, 8){} + +// CAN TX Interrupt routine. +INTERRUPT_HANDLER(CAN_TX_IRQHandler, 9){} +#endif // STM8S208 || STM8AF52Ax + +// SPI Interrupt routine. +INTERRUPT_HANDLER(SPI_IRQHandler, 10){} + +// Timer1 Update/Overflow/Trigger/Break Interrupt +INTERRUPT_HANDLER(TIM1_UPD_OVF_TRG_BRK_IRQHandler, 11){ + if(TIM1_SR1 & TIM_SR1_UIF){ // update interrupt + Global_time++; // increase timer + } + TIM1_SR1 = 0; // clear all interrupt flag +} + +// Timer1 Capture/Compare Interrupt routine. +INTERRUPT_HANDLER(TIM1_CAP_COM_IRQHandler, 12){} + +#ifdef STM8S903 +// Timer5 Update/Overflow/Break/Trigger Interrupt +INTERRUPT_HANDLER(TIM5_UPD_OVF_BRK_TRG_IRQHandler, 13){} + +// Timer5 Capture/Compare Interrupt +INTERRUPT_HANDLER(TIM5_CAP_COM_IRQHandler, 14){} + +#else // STM8S208, STM8S207, STM8S105 or STM8S103 or STM8AF62Ax or STM8AF52Ax or STM8AF626x + +// Timer2 Update/Overflow/Break Interrupt +INTERRUPT_HANDLER(TIM2_UPD_OVF_BRK_IRQHandler, 13){ +} + +// Timer2 Capture/Compare Interrupt +INTERRUPT_HANDLER(TIM2_CAP_COM_IRQHandler, 14){ +} +#endif // STM8S903 + +#if defined (STM8S208) || defined(STM8S207) || defined(STM8S007) || defined(STM8S105) || \ + defined(STM8S005) || defined (STM8AF62Ax) || defined (STM8AF52Ax) || defined (STM8AF626x) +// Timer3 Update/Overflow/Break Interrupt +INTERRUPT_HANDLER(TIM3_UPD_OVF_BRK_IRQHandler, 15){} + +// Timer3 Capture/Compare Interrupt +INTERRUPT_HANDLER(TIM3_CAP_COM_IRQHandler, 16){} +#endif // STM8S208, STM8S207 or STM8S105 or STM8AF62Ax or STM8AF52Ax or STM8AF626x + +#if defined (STM8S208) || defined(STM8S207) || defined(STM8S007) || defined(STM8S103) || \ + defined(STM8S003) || defined (STM8AF62Ax) || defined (STM8AF52Ax) || defined (STM8S903) +// UART1 TX Interrupt +INTERRUPT_HANDLER(UART1_TX_IRQHandler, 17){} + +// UART1 RX Interrupt +INTERRUPT_HANDLER(UART1_RX_IRQHandler, 18){ + U8 rb; + unsigned long Tlast = 0; + if(UART1_SR & UART_SR_RXNE){ // data received + rb = UART1_DR; // read received byte & clear RXNE flag + if(uart_ready) return; // omit everything before command read + if(Global_time - Tlast < CMD_PAUSE){ // need a little pause + Tlast = Global_time; + return; + } + Tlast = Global_time; + //if(rb == '+') return; // answer when disconnected + UART_rx_cmd = rb; // put received byte into cycled buffer + uart_ready = 1; + } +} +#endif // STM8S208 or STM8S207 or STM8S103 or STM8S903 or STM8AF62Ax or STM8AF52Ax + +// I2C Interrupt +INTERRUPT_HANDLER(I2C_IRQHandler, 19){} + +#if defined(STM8S105) || defined(STM8S005) || defined (STM8AF626x) +// UART2 TX interrupt +INTERRUPT_HANDLER(UART2_TX_IRQHandler, 20){} + +// UART2 RX interrupt +INTERRUPT_HANDLER(UART2_RX_IRQHandler, 21){ +} +#endif // STM8S105 or STM8AF626x + +#if defined(STM8S207) || defined(STM8S007) || defined(STM8S208) || defined (STM8AF52Ax) || defined (STM8AF62Ax) +// UART3 TX interrupt +INTERRUPT_HANDLER(UART3_TX_IRQHandler, 20){} + +// UART3 RX interrupt +INTERRUPT_HANDLER(UART3_RX_IRQHandler, 21){} +#endif // STM8S208 or STM8S207 or STM8AF52Ax or STM8AF62Ax + +#if defined(STM8S207) || defined(STM8S007) || defined(STM8S208) || defined (STM8AF52Ax) || defined (STM8AF62Ax) +// ADC2 interrupt +INTERRUPT_HANDLER(ADC2_IRQHandler, 22){} +#else +INTERRUPT_HANDLER(ADC1_IRQHandler, 22){ // read ADC value +} +#endif // STM8S208 or STM8S207 or STM8AF52Ax or STM8AF62Ax + +#ifdef STM8S903 +// Timer6 Update/Overflow/Trigger Interrupt +INTERRUPT_HANDLER(TIM6_UPD_OVF_TRG_IRQHandler, 23){} +#else // STM8S208, STM8S207, STM8S105 or STM8S103 or STM8AF52Ax or STM8AF62Ax or STM8AF626x +// Timer4 Update/Overflow Interrupt +INTERRUPT_HANDLER(TIM4_UPD_OVF_IRQHandler, 23){ +} +#endif // STM8S903 + +// Eeprom EEC Interrupt +INTERRUPT_HANDLER(EEPROM_EEC_IRQHandler, 24){} diff --git a/LEDS_BT/interrupts.h b/LEDS_BT/interrupts.h new file mode 100644 index 0000000..9e17f55 --- /dev/null +++ b/LEDS_BT/interrupts.h @@ -0,0 +1,147 @@ +/* + * interrupts.h + * + * Copyright 2014 Edward V. Emelianoff <eddy@sao.ru> + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, + * MA 02110-1301, USA. + */ +#pragma once +#ifndef __INTERRUPTS_H__ +#define __INTERRUPTS_H__ + +#include "stm8s.h" + +extern volatile U8 ADC_ready; // flag: data ready +extern volatile int ADC_value; // value of last ADC measurement + +// Top Level Interrupt +INTERRUPT_DEFINITION(TLI_IRQHandler, 0); + +// Auto Wake Up Interrupt +INTERRUPT_DEFINITION(AWU_IRQHandler, 1); + +// Clock Controller Interrupt +INTERRUPT_DEFINITION(CLK_IRQHandler, 2); + +// External Interrupt PORTA +INTERRUPT_DEFINITION(EXTI_PORTA_IRQHandler, 3); + +// External Interrupt PORTB +INTERRUPT_DEFINITION(EXTI_PORTB_IRQHandler, 4); + +// External Interrupt PORTC +INTERRUPT_DEFINITION(EXTI_PORTC_IRQHandler, 5); + +// External Interrupt PORTD +INTERRUPT_DEFINITION(EXTI_PORTD_IRQHandler, 6); + +// External Interrupt PORTE +INTERRUPT_DEFINITION(EXTI_PORTE_IRQHandler, 7); + +#ifdef STM8S903 +// External Interrupt PORTF +INTERRUPT_DEFINITION(EXTI_PORTF_IRQHandler, 8); +#endif // STM8S903 + +#if defined (STM8S208) || defined (STM8AF52Ax) +// CAN RX Interrupt routine. +INTERRUPT_DEFINITION(CAN_RX_IRQHandler, 8); + +// CAN TX Interrupt routine. +INTERRUPT_DEFINITION(CAN_TX_IRQHandler, 9); +#endif // STM8S208 || STM8AF52Ax + +// SPI Interrupt routine. +INTERRUPT_DEFINITION(SPI_IRQHandler, 10); + +// Timer1 Update/Overflow/Trigger/Break Interrupt +INTERRUPT_DEFINITION(TIM1_UPD_OVF_TRG_BRK_IRQHandler, 11); + +// Timer1 Capture/Compare Interrupt routine. +INTERRUPT_DEFINITION(TIM1_CAP_COM_IRQHandler, 12); + +#ifdef STM8S903 +// Timer5 Update/Overflow/Break/Trigger Interrupt +INTERRUPT_DEFINITION(TIM5_UPD_OVF_BRK_TRG_IRQHandler, 13); + +// Timer5 Capture/Compare Interrupt +INTERRUPT_DEFINITION(TIM5_CAP_COM_IRQHandler, 14); + +#else // STM8S208, STM8S207, STM8S105 or STM8S103 or STM8AF62Ax or STM8AF52Ax or STM8AF626x +// Timer2 Update/Overflow/Break Interrupt +INTERRUPT_DEFINITION(TIM2_UPD_OVF_BRK_IRQHandler, 13); + +// Timer2 Capture/Compare Interrupt +INTERRUPT_DEFINITION(TIM2_CAP_COM_IRQHandler, 14); +#endif // STM8S903 + +#if defined (STM8S208) || defined(STM8S207) || defined(STM8S007) || defined(STM8S105) || \ + defined(STM8S005) || defined (STM8AF62Ax) || defined (STM8AF52Ax) || defined (STM8AF626x) +// Timer3 Update/Overflow/Break Interrupt +INTERRUPT_DEFINITION(TIM3_UPD_OVF_BRK_IRQHandler, 15); + +// Timer3 Capture/Compare Interrupt +INTERRUPT_DEFINITION(TIM3_CAP_COM_IRQHandler, 16); +#endif // STM8S208, STM8S207 or STM8S105 or STM8AF62Ax or STM8AF52Ax or STM8AF626x + +#if defined (STM8S208) || defined(STM8S207) || defined(STM8S007) || defined(STM8S103) || \ + defined(STM8S003) || defined (STM8AF62Ax) || defined (STM8AF52Ax) || defined (STM8S903) +// UART1 TX Interrupt +INTERRUPT_DEFINITION(UART1_TX_IRQHandler, 17); + +// UART1 RX Interrupt +INTERRUPT_DEFINITION(UART1_RX_IRQHandler, 18); +#endif // STM8S208 or STM8S207 or STM8S103 or STM8S903 or STM8AF62Ax or STM8AF52Ax + +// I2C Interrupt +INTERRUPT_DEFINITION(I2C_IRQHandler, 19); + +#if defined(STM8S105) || defined(STM8S005) || defined (STM8AF626x) +// UART2 TX interrupt +INTERRUPT_DEFINITION(UART2_TX_IRQHandler, 20); + +// UART2 RX interrupt +INTERRUPT_DEFINITION(UART2_RX_IRQHandler, 21); +#endif // STM8S105 or STM8AF626x + +#if defined(STM8S207) || defined(STM8S007) || defined(STM8S208) || defined (STM8AF52Ax) || defined (STM8AF62Ax) +// UART3 TX interrupt +INTERRUPT_DEFINITION(UART3_TX_IRQHandler, 20); + +// UART3 RX interrupt +INTERRUPT_DEFINITION(UART3_RX_IRQHandler, 21); +#endif // STM8S208 or STM8S207 or STM8AF52Ax or STM8AF62Ax + +#if defined(STM8S207) || defined(STM8S007) || defined(STM8S208) || defined (STM8AF52Ax) || defined (STM8AF62Ax) +// ADC2 interrupt +INTERRUPT_DEFINITION(ADC2_IRQHandler, 22); +#else // STM8S105, STM8S103 or STM8S903 or STM8AF626x +// ADC1 interrupt +INTERRUPT_DEFINITION(ADC1_IRQHandler, 22); +#endif // STM8S208 or STM8S207 or STM8AF52Ax or STM8AF62Ax + +#ifdef STM8S903 +// Timer6 Update/Overflow/Trigger Interrupt +INTERRUPT_DEFINITION(TIM6_UPD_OVF_TRG_IRQHandler, 23); +#else // STM8S208, STM8S207, STM8S105 or STM8S103 or STM8AF52Ax or STM8AF62Ax or STM8AF626x +// Timer4 Update/Overflow Interrupt +INTERRUPT_DEFINITION(TIM4_UPD_OVF_IRQHandler, 23); +#endif // STM8S903 + +// Eeprom EEC Interrupt +INTERRUPT_DEFINITION(EEPROM_EEC_IRQHandler, 24); + +#endif // __INTERRUPTS_H__ diff --git a/LEDS_BT/main.c b/LEDS_BT/main.c new file mode 100644 index 0000000..3dd7491 --- /dev/null +++ b/LEDS_BT/main.c @@ -0,0 +1,141 @@ +/* + * blinky.c + * + * Copyright 2014 Edward V. Emelianoff <eddy@sao.ru> + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, + * MA 02110-1301, USA. + */ +#include "ports_definition.h" +#include "interrupts.h" +#include "uart.h" + +volatile unsigned long Global_time = 0L; // global time in ms +/* + LED channels: + 0 - D3 + 1 - D2 + 2 - D1 + 3 - C7 + 4 - C6 + 5 - C5 + 6 - C4 + 7 - C3 + */ +/* don't work! +static U8* LEDODRS[8] = {(U8*)0x500F, &PD_ODR, &PD_ODR, &PC_ODR, &PC_ODR, &PC_ODR, &PC_ODR, &PC_ODR}; +static const U8 LEDPINS[8] = {1<<3, 1<<2, 1<<1, 1<<7, 1<<6, 1<<5, 1<<4, 1<<3}; +*/ + +int main() { + unsigned long T = 0L; + U8 rb; + CFG_GCR |= 1; // disable SWIM + // Configure clocking + CLK_CKDIVR = 0; // F_HSI = 16MHz, f_CPU = 16MHz + // TIM1 - system timer (1ms) + TIM1_PSCRH = 0; + TIM1_PSCRL = 15; // LSB should be written last as it updates prescaler + // auto-reload each 1ms: TIM_ARR = 1000 = 0x03E8 + TIM1_ARRH = 0x03; + TIM1_ARRL = 0xE8; + // interrupts: update + TIM1_IER = TIM_IER_UIE; + // auto-reload + interrupt on overflow + enable + TIM1_CR1 = TIM_CR1_APRE | TIM_CR1_URS | TIM_CR1_CEN; + // leds - opendrain + PD_DDR = 0x0e; + PC_DDR = 0xf8; +/* + PD_CR1 = 0x0e; + PC_CR1 = 0xf8; +*/ + PORT(LED_PORT, DDR) |= LED_PIN; + PORT(LED_PORT, CR1) |= LED_PIN; + + uart_init(); + + // enable all interrupts + enableInterrupts(); + + // Loop + do{ + if(Global_time - T > 499){ + T = Global_time; + PORT(LED_PORT, ODR) ^= LED_PIN; // blink on-board LED + } + if(uart_read_cmd(&rb)){ // buffer isn't empty + switch(rb){ + case '1': + PD_ODR |= (1<<3); + break; + case '2': + PD_ODR |= (1<<2); + break; + case '3': + PD_ODR |= (1<<1); + break; + case '4': + PC_ODR |= (1<<7); + break; + case '5': + PC_ODR |= (1<<6); + break; + case '6': + PC_ODR |= (1<<5); + break; + case '7': + PC_ODR |= (1<<4); + break; + case '8': + PC_ODR |= (1<<3); + break; + case 'A': + PD_ODR &= (1<<3); + break; + case 'B': + PD_ODR &= (1<<2); + break; + case 'C': + PD_ODR &= (1<<1); + break; + case 'D': + PC_ODR &= (1<<7); + break; + case 'E': + PC_ODR &= (1<<6); + break; + case 'F': + PC_ODR &= (1<<5); + break; + case 'G': + PC_ODR &= (1<<4); + break; + case 'H': + PC_ODR &= (1<<3); + break; + case '9': + PD_ODR |= 0x0e; + PC_ODR |= 0xf8; + break; + case 'I': + PD_ODR &= ~0x0e; + PC_ODR &= ~0xf8; + break; + } + } + }while(1); +} + diff --git a/LEDS_BT/ports_definition.h b/LEDS_BT/ports_definition.h new file mode 100644 index 0000000..f6287a0 --- /dev/null +++ b/LEDS_BT/ports_definition.h @@ -0,0 +1,43 @@ +/* + * ports_definition.h - definition of ports pins & so on + * + * Copyright 2014 Edward V. Emelianov <eddy@sao.ru, edward.emelianoff@gmail.com> + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, + * MA 02110-1301, USA. + */ + +#pragma once +#ifndef __PORTS_DEFINITION_H__ +#define __PORTS_DEFINITION_H__ + +#include "stm8s.h" + +// minimal pause between commands (ms) +#define CMD_PAUSE 100 + +// macro for using in port constructions like PORT(LED_PORT, ODR) = xx +#define CONCAT(a, b) a ## _ ## b +#define PORT(a, b) CONCAT(a , b) + +// on-board LED - PB5 +#define LED_PORT PB +#define LED_PIN GPIO_PIN5 + +// UART2_TX +#define UART_PORT PD +#define UART_TX_PIN GPIO_PIN5 + +#endif // __PORTS_DEFINITION_H__ diff --git a/LEDS_BT/uart.c b/LEDS_BT/uart.c new file mode 100644 index 0000000..665711e --- /dev/null +++ b/LEDS_BT/uart.c @@ -0,0 +1,67 @@ +/* + * blinky.c + * + * Copyright 2018 Edward V. Emelianoff <eddy@sao.ru> + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, + * MA 02110-1301, USA. + */ +#include "ports_definition.h" +#include "uart.h" +#include "interrupts.h" + +U8 UART_rx_cmd; // command received +volatile U8 uart_ready = 0;// command ready flag + +/** + * Send one byte through UART + * @param byte - data to send + */ +void uart_send_byte(U8 byte){ + while(!(UART1_SR & UART_SR_TXE)); // wait until previous byte transmitted + UART1_DR = byte; +} + +void uart_write(char *str){ + while(*str){ + while(!(UART1_SR & UART_SR_TXE)); + UART1_CR2 |= UART_CR2_TEN; + UART1_DR = *str++; + } +} + +/** + * Read one byte from Rx buffer + * @param byte - where to store data read + * @return 1 in case of non-empty buffer + */ +U8 uart_read_cmd(U8 *byte){ + if(!uart_ready) // buffer is empty + return 0; + *byte = UART_rx_cmd; + uart_ready = 0; + return 1; +} + +void uart_init(){ + // PD5 - UART1_TX + PORT(UART_PORT, DDR) |= UART_TX_PIN; + PORT(UART_PORT, CR1) |= UART_TX_PIN; +// Configure UART + // 8 bit, no parity, 1 stop (UART_CR1/3 = 0 - reset value) + // 9600 on 16MHz: DIV=0x0693 -> BRR1=0x68, BRR2=0x03 + UART1_BRR1 = 0x68; UART1_BRR2 = 0x03; + UART1_CR2 = UART_CR2_TEN | UART_CR2_REN | UART_CR2_RIEN; // Allow RX/TX, generate ints on rx +} diff --git a/LEDS_BT/uart.h b/LEDS_BT/uart.h new file mode 100644 index 0000000..330a93c --- /dev/null +++ b/LEDS_BT/uart.h @@ -0,0 +1,46 @@ +/* + * blinky.h + * + * Copyright 2018 Edward V. Emelianoff <eddy@sao.ru> + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, + * MA 02110-1301, USA. + */ +#pragma once +#ifndef __MAIN_H__ +#define __MAIN_H__ + +#include "stm8s.h" + +extern volatile unsigned long Global_time; // global time in ms + +#define UART_BUF_LEN 8 // max 7 bytes transmited in on operation + +extern U8 UART_rx_cmd; +extern volatile U8 uart_ready; + +void uart_send_byte(U8 byte); +void uart_write(char *str); +void newline(); +void printUint(U8 *val, U8 len); +void print_long(long Number); +void error_msg(char *msg); +void uart_init(); +U8 uart_read_cmd(U8 *byte); +void printUHEX(U8 val); + +#define check_UART_pointer(x) do{if(x == UART_BUF_LEN) x = 0;}while(0) + +#endif // __MAIN_H__ diff --git a/LEDS_BT/uart.ihx b/LEDS_BT/uart.ihx new file mode 100644 index 0000000..27a3e97 --- /dev/null +++ b/LEDS_BT/uart.ihx @@ -0,0 +1,30 @@ +:20809100808080808080808080C6525544241BCE00051C0001C60004A9009097C60003A963 +:2080B100009095CF000590CF000335005255808080808088C65230A5202741C652316B0146 +:2080D100725D0002263690CE0005CE000390A300649FA2009EA200240EC60006C60005C687 +:2080F1000004C600032015C60006C60005C60004C600037B01C700013501000284808080C3 +:0281110080806C +:20811300C652302AFBAE52317B03F7811E03F6260181C652302AFB72165235F65CC75231E1 +:2081330020EC81725D000226024F811E03C60001F7725F0002A60181721A5011721A501221 +:0D8153003568523235035233352C523581D8 +:01808C0000F3 +:208000008200806F82000000820080918200809282008093820080948200809582008096EC +:2080200082008097820080988200000082000000820080998200809A820080C0820080C14D +:20804000820080C28200000082000000820080C3820080C48200810F8200000082000000B7 +:0C806000820081108200811182008112D8 +:1D806F00AE00012707724F00005A26F9AE00052709D6808BD700015A26F7CC806C12 +:03806C00CC816064 +:2081600052095F1F081F06C67F60905FAA01C77F60350050C635005260350F526135035261 +:208180006235E852633501525435855250350E501135F8500C721A5007C65008AA20C75064 +:2081A00008CD814B9ACE000572F0081F04C6000412076B03C6000312066B02AE01F31304CC +:2081C0004F12034F12022412CE00051F08CE00031F06C65005A820C75005965C89CD8136B4 +:2081E0005B024D27C07B01A13125BA7B01A14922B47B01A0315F9758DE81FCFC822E82352C +:20820000823C8243824A82518258825F82BE81A581A581A581A581A581A581A5826682715C +:20822000827C82878292829D82A882B382D37216500FCC81A57214500FCC81A57212500FBD +:20824000CC81A5721E500ACC81A5721C500ACC81A5721A500ACC81A57218500ACC81A57256 +:2082600016500ACC81A5C6500FA408C7500FCC81A5C6500FA404C7500FCC81A5C6500FA405 +:2082800002C7500FCC81A5C6500AA480C7500ACC81A5C6500AA440C7500ACC81A5C6500A36 +:2082A000A420C7500ACC81A5C6500AA410C7500ACC81A5C6500AA408C7500ACC81A5C6500B +:2082C0000FAA0EC7500FC6500A905FAAF8C7500ACC81A5C6500FA4F1C7500FC6500AA40742 +:0682E000C7500ACC81A585 +:04808D0000000000EF +:00000001FF diff --git a/stepper_independent_bin/schematic/stepper-rescue.lib b/stepper_independent_bin/schematic/stepper-rescue.lib index ec792b3..91423f4 100644 --- a/stepper_independent_bin/schematic/stepper-rescue.lib +++ b/stepper_independent_bin/schematic/stepper-rescue.lib @@ -1,6 +1,20 @@ -EESchema-LIBRARY Version 2.3 +EESchema-LIBRARY Version 2.4 #encoding utf-8 # +# +3.3V +# +DEF +3.3V #PWR 0 0 Y Y 1 F P +F0 "#PWR" 0 -40 30 H I C CNN +F1 "+3.3V" 0 110 30 H V C CNN +F2 "" 0 0 60 H V C CNN +F3 "" 0 0 60 H V C CNN +DRAW +C 0 60 20 0 1 0 N +P 3 0 1 0 0 0 0 40 0 40 N +X +3.3V 1 0 0 0 U 30 30 0 0 W N +ENDDRAW +ENDDEF +# # +3.3V-RESCUE-stepper # DEF +3.3V-RESCUE-stepper #PWR 0 0 Y Y 1 F P @@ -9,9 +23,29 @@ F1 "+3.3V-RESCUE-stepper" 0 110 30 H V C CNN F2 "" 0 0 60 H V C CNN F3 "" 0 0 60 H V C CNN DRAW -X +3.3V 1 0 0 0 U 30 30 0 0 W N C 0 60 20 0 1 0 N P 3 0 1 0 0 0 0 40 0 40 N +X +3.3V 1 0 0 0 U 30 30 0 0 W N +ENDDRAW +ENDDEF +# +# C +# +DEF C C 0 10 N Y 1 F N +F0 "C" 0 100 40 H V L CNN +F1 "C" 6 -85 40 H V L CNN +F2 "" 38 -150 30 H V C CNN +F3 "" 0 0 60 H V C CNN +$FPLIST + SM* + C? + C1-1 +$ENDFPLIST +DRAW +P 2 0 1 20 -80 -30 80 -30 N +P 2 0 1 20 -80 30 80 30 N +X ~ 1 0 200 170 D 40 40 1 1 P +X ~ 2 0 -200 170 U 40 40 1 1 P ENDDRAW ENDDEF # @@ -35,6 +69,110 @@ X ~ 2 0 -200 170 U 40 40 1 1 P ENDDRAW ENDDEF # +# CONN_14 +# +DEF CONN_14 P 0 40 Y N 1 F N +F0 "P" -30 0 60 V V C CNN +F1 "CONN_14" 80 0 60 V V C CNN +F2 "" 0 0 60 H V C CNN +F3 "" 0 0 60 H V C CNN +DRAW +S -100 700 150 -700 0 1 0 N +X P1 1 -350 650 250 R 50 50 1 1 P I +X P10 10 -350 -250 250 R 50 50 1 1 P I +X P11 11 -350 -350 250 R 50 50 1 1 P I +X P12 12 -350 -450 250 R 50 50 1 1 P I +X P13 13 -350 -550 250 R 50 50 1 1 P I +X P14 14 -350 -650 250 R 50 50 1 1 P I +X P2 2 -350 550 250 R 50 50 1 1 P I +X P3 3 -350 450 250 R 50 50 1 1 P I +X P4 4 -350 350 250 R 50 50 1 1 P I +X P5 5 -350 250 250 R 50 50 1 1 P I +X P6 6 -350 150 250 R 50 50 1 1 P I +X P7 7 -350 50 250 R 50 50 1 1 P I +X P8 8 -350 -50 250 R 50 50 1 1 P I +X P9 9 -350 -150 250 R 50 50 1 1 P I +ENDDRAW +ENDDEF +# +# CONN_3 +# +DEF CONN_3 K 0 40 Y N 1 F N +F0 "K" -50 0 50 V V C CNN +F1 "CONN_3" 50 0 40 V V C CNN +F2 "" 0 0 60 H V C CNN +F3 "" 0 0 60 H V C CNN +DRAW +S -100 150 100 -150 0 1 0 N +X P1 1 -350 100 250 R 60 60 1 1 P I +X PM 2 -350 0 250 R 60 60 1 1 P I +X P3 3 -350 -100 250 R 60 60 1 1 P I +ENDDRAW +ENDDEF +# +# CONN_4 +# +DEF CONN_4 P 0 40 Y N 1 F N +F0 "P" -50 0 50 V V C CNN +F1 "CONN_4" 50 0 50 V V C CNN +F2 "" 0 0 60 H V C CNN +F3 "" 0 0 60 H V C CNN +DRAW +S -100 200 100 -200 0 1 0 N +X P1 1 -350 150 250 R 50 50 1 1 P I +X P2 2 -350 50 250 R 50 50 1 1 P I +X P3 3 -350 -50 250 R 50 50 1 1 P I +X P4 4 -350 -150 250 R 50 50 1 1 P I +ENDDRAW +ENDDEF +# +# CONN_5 +# +DEF CONN_5 P 0 40 Y Y 1 F N +F0 "P" -50 0 50 V V C CNN +F1 "CONN_5" 50 0 50 V V C CNN +F2 "" 0 0 60 H V C CNN +F3 "" 0 0 60 H V C CNN +DRAW +S -100 250 100 -250 0 1 0 f +X ~ 1 -400 200 300 R 60 60 1 1 P I +X ~ 2 -400 100 300 R 60 60 1 1 P I +X ~ 3 -400 0 300 R 60 60 1 1 P I +X ~ 4 -400 -100 300 R 60 60 1 1 P I +X ~ 5 -400 -200 300 R 60 60 1 1 P I +ENDDRAW +ENDDEF +# +# CONN_5_ +# +DEF CONN_5_ P 0 40 Y Y 1 F N +F0 "P" 50 -300 50 H V C CNN +F1 "CONN_5_" 150 0 50 V V C CNN +F2 "" 0 0 60 H V C CNN +F3 "" 0 0 60 H V C CNN +DRAW +S -100 250 200 -250 0 1 0 f +X ~ 1 -400 200 300 R 60 60 1 1 w I +X ~ 2 -400 100 300 R 60 60 1 1 w I +X ~ 3 -400 0 300 R 60 60 1 1 O I +X ~ 4 -400 -100 300 R 60 60 1 1 I I +X ~ 5 -400 -200 300 R 60 60 1 1 w I +ENDDRAW +ENDDEF +# +# GND +# +DEF ~GND #PWR 0 0 Y Y 1 F P +F0 "#PWR" 0 0 30 H I C CNN +F1 "GND" 0 -70 30 H I C CNN +F2 "" 0 0 60 H V C CNN +F3 "" 0 0 60 H V C CNN +DRAW +P 4 0 1 0 -50 0 0 -50 50 0 -50 0 N +X GND 1 0 0 0 U 30 30 1 1 W N +ENDDRAW +ENDDEF +# # GND-RESCUE-stepper # DEF ~GND-RESCUE-stepper #PWR 0 0 Y Y 1 F P @@ -48,6 +186,32 @@ X GND 1 0 0 0 U 30 30 1 1 W N ENDDRAW ENDDEF # +# LED +# +DEF LED D 0 40 Y N 1 F N +F0 "D" 0 100 50 H V C CNN +F1 "LED" 0 -100 50 H V C CNN +F2 "" 0 0 60 H V C CNN +F3 "" 0 0 60 H V C CNN +$FPLIST + LED-3MM + LED-5MM + LED-10MM + LED-0603 + LED-0805 + LED-1206 + LEDV +$ENDFPLIST +DRAW +P 2 0 1 0 50 50 50 -50 N +P 3 0 1 0 -50 50 50 0 -50 -50 F +P 3 0 1 0 65 -40 110 -80 105 -55 N +P 3 0 1 0 80 -25 125 -65 120 -40 N +X A 1 -200 0 150 R 40 40 1 1 P +X K 2 200 0 150 L 40 40 1 1 P +ENDDRAW +ENDDEF +# # LED-RESCUE-stepper # DEF LED-RESCUE-stepper D 0 40 Y N 1 F N @@ -74,6 +238,27 @@ X K 2 200 0 150 L 40 40 1 1 P ENDDRAW ENDDEF # +# R +# +DEF R R 0 0 N Y 1 F N +F0 "R" 80 0 40 V V C CNN +F1 "R" 7 1 40 V V C CNN +F2 "" -70 0 30 V V C CNN +F3 "" 0 0 30 H V C CNN +$FPLIST + R? + SM0603 + SM0805 + R?-* + SM1206 +$ENDFPLIST +DRAW +S -40 150 40 -150 0 1 12 N +X ~ 1 0 250 100 D 60 60 1 1 P +X ~ 2 0 -250 100 U 60 60 1 1 P +ENDDRAW +ENDDEF +# # R-RESCUE-stepper # DEF R-RESCUE-stepper R 0 0 N Y 1 F N @@ -95,4 +280,19 @@ X ~ 2 0 -250 100 U 60 60 1 1 P ENDDRAW ENDDEF # +# SW_PUSH +# +DEF SW_PUSH SW 0 40 N N 1 F N +F0 "SW" 150 110 50 H V C CNN +F1 "SW_PUSH" 0 -80 50 H V C CNN +F2 "" 0 0 60 H V C CNN +F3 "" 0 0 60 H V C CNN +DRAW +S -170 50 170 60 0 1 0 N +P 4 0 1 0 -40 60 -30 90 30 90 40 60 N +X 1 1 -300 0 200 R 60 60 0 1 P I +X 2 2 300 0 200 L 60 60 0 1 P I +ENDDRAW +ENDDEF +# #End Library diff --git a/stepper_independent_bin/schematic/stepper.pro b/stepper_independent_bin/schematic/stepper.pro index b8281cd..3277ac3 100644 --- a/stepper_independent_bin/schematic/stepper.pro +++ b/stepper_independent_bin/schematic/stepper.pro @@ -1,41 +1,5 @@ -update=Чт 12 апр 2018 17:56:59 +update=Пн 18 ноя 2019 14:38:35 last_client=kicad [eeschema] version=1 LibDir= -[eeschema/libraries] -LibName1=stepper-rescue -LibName2=power -LibName3=device -LibName4=transistors -LibName5=conn -LibName6=linear -LibName7=regul -LibName8=74xx -LibName9=cmos4000 -LibName10=adc-dac -LibName11=memory -LibName12=xilinx -LibName13=special -LibName14=microcontrollers -LibName15=dsp -LibName16=microchip -LibName17=analog_switches -LibName18=motorola -LibName19=texas -LibName20=intel -LibName21=audio -LibName22=interface -LibName23=digital-audio -LibName24=philips -LibName25=display -LibName26=cypress -LibName27=siliconi -LibName28=opto -LibName29=atmel -LibName30=contrib -LibName31=valves -LibName32=stm8 -LibName33=st-microelectronics -LibName34=stm8s105k4t6c -LibName35=stepper-cache