├── LICENSE ├── Makefile ├── README.md ├── designs ├── README.md ├── case-ppm-1.3 │ ├── 01-front.sch │ ├── 02-back.sch │ ├── edit │ ├── print │ ├── proj │ └── v1.pdf ├── case-scb-1.0 │ ├── 01-front.sch │ ├── 02-back.sch │ ├── edit │ ├── print │ ├── proj │ └── v1.pdf ├── coil-1.0 │ ├── 01-coil.sch │ ├── edit │ ├── print │ ├── proj │ └── v1.pdf ├── coil-2.0 │ ├── 01-coil.sch │ ├── edit │ ├── print │ ├── proj │ └── v2.pdf ├── dig-1.0 │ ├── 01-mcu.sch │ ├── 02-adc.sch │ ├── board │ ├── dig-bom.csv │ ├── dig-v1.zip │ ├── edit │ ├── print │ ├── proj │ ├── v1-brd.pdf │ ├── v1-brd.png │ ├── v1.cmd │ ├── v1.net │ ├── v1.pcb │ └── v1.pdf ├── fil-1.0 │ ├── 01-fil.sch │ ├── board │ ├── edit │ ├── fil-bom.csv │ ├── fil-v1.zip │ ├── print │ ├── proj │ ├── v1-brd.pdf │ ├── v1-brd.png │ ├── v1.cmd │ ├── v1.net │ ├── v1.pcb │ └── v1.pdf ├── ina-1.0 │ ├── 01-ina.sch │ ├── board │ ├── edit │ ├── ina-bom.csv │ ├── ina-v1.zip │ ├── print │ ├── proj │ ├── v1-brd.pdf │ ├── v1-brd.png │ ├── v1.cmd │ ├── v1.net │ ├── v1.pcb │ └── v1.pdf ├── osc-1.0 │ ├── 01-osc.sch │ ├── board │ ├── edit │ ├── osc-bom.csv │ ├── osc-v1.zip │ ├── print │ ├── proj │ ├── v1-brd.pdf │ ├── v1-brd.png │ ├── v1.cmd │ ├── v1.net │ ├── v1.pcb │ └── v1.pdf ├── ppm-1.0 │ ├── 01-overview.sch │ ├── 02-pulprog.sch │ ├── 03-mcu-core.sch │ ├── 04-mcu-ports.sch │ ├── 05-dcdc.sch │ ├── 06-ldo.sch │ ├── 07-asc-ina.sch │ ├── 08-asc-gain.sch │ ├── 09-asc-fil-1of2.sch │ ├── 10-asc-fil-2of2.sch │ ├── 11-adc.sch │ ├── 12-dac.sch │ ├── 13-ccs.sch │ ├── 14-relay.sch │ ├── 15-leds.sch │ ├── board │ ├── edit │ ├── extra │ ├── ppm-bom.csv │ ├── ppm-v1.zip │ ├── print │ ├── proj │ ├── v1-brd.pdf │ ├── v1-brd.png │ ├── v1.cmd │ ├── v1.net │ ├── v1.pcb │ └── v1.pdf ├── ppm-1.1 │ ├── 01-overview.sch │ ├── 02-pulprog.sch │ ├── 03-mcu-core.sch │ ├── 04-mcu-ports.sch │ ├── 05-dcdc.sch │ ├── 06-ldo.sch │ ├── 07-asc-ina.sch │ ├── 08-asc-gain.sch │ ├── 09-asc-fil-1of2.sch │ ├── 10-asc-fil-2of2.sch │ ├── 11-adc.sch │ ├── 12-dac.sch │ ├── 13-ccs.sch │ ├── 14-relay.sch │ ├── 15-leds.sch │ ├── board │ ├── edit │ ├── extra │ ├── ppm-bom.csv │ ├── ppm-v1.zip │ ├── print │ ├── proj │ ├── v1-brd.pdf │ ├── v1-brd.png │ ├── v1.cmd │ ├── v1.net │ ├── v1.pcb │ └── v1.pdf ├── ppm-1.2 │ ├── 01-overview.sch │ ├── 02-pulprog.sch │ ├── 03-mcu-core.sch │ ├── 04-mcu-ports.sch │ ├── 05-dcdc.sch │ ├── 06-ldo.sch │ ├── 07-asc-ina.sch │ ├── 08-asc-gain.sch │ ├── 09-asc-fil-1of2.sch │ ├── 10-asc-fil-2of2.sch │ ├── 11-adc.sch │ ├── 12-dac.sch │ ├── 13-ccs.sch │ ├── 14-relay.sch │ ├── 15-leds.sch │ ├── board │ ├── bom │ ├── edit │ ├── extra │ ├── merge │ ├── ppm-bom.csv │ ├── ppm-bom.pdf │ ├── ppm-v1.zip │ ├── print │ ├── proj │ ├── v1-brd.pdf │ ├── v1-brd.png │ ├── v1.cmd │ ├── v1.net │ ├── v1.pcb │ └── v1.pdf ├── ppm-1.3 │ ├── 01-overview.sch │ ├── 02-pulprog.sch │ ├── 03-mcu-core.sch │ ├── 04-mcu-ports.sch │ ├── 05-dcdc.sch │ ├── 06-ldo.sch │ ├── 07-asc-ina.sch │ ├── 08-asc-gain.sch │ ├── 09-asc-fil-1of2.sch │ ├── 10-asc-fil-2of2.sch │ ├── 11-adc.sch │ ├── 12-pol.sch │ ├── 13-relay.sch │ ├── 14-leds.sch │ ├── board │ ├── bom │ ├── edit │ ├── extra │ ├── merge │ ├── ppm-bom.csv │ ├── ppm-v1.zip │ ├── print │ ├── proj │ ├── v1-brd.pdf │ ├── v1-brd.png │ ├── v1.cmd │ ├── v1.net │ ├── v1.pcb │ └── v1.pdf ├── ppm-2.0 │ ├── 01-overview.sch │ ├── 02-pulprog.sch │ ├── 03-mcu-core.sch │ ├── 04-mcu-ports.sch │ ├── 05-dcdc.sch │ ├── 06-ldo-5.0v.sch │ ├── 07-ldo-2.5v.sch │ ├── 08-ldo-hc.sch │ ├── 09-iso.sch │ ├── 10-asc-tune-1of2.sch │ ├── 11-asc-tune-2of2.sch │ ├── 12-asc-ina.sch │ ├── 13-asc-gain.sch │ ├── 14-asc-fil-1of2.sch │ ├── 15-asc-fil-2of2.sch │ ├── 16-adc.sch │ ├── 17-dac.sch │ ├── 18-buf-shim.sch │ ├── 19-buf-tx.sch │ ├── 20-pol.sch │ ├── 21-relay.sch │ ├── 22-leds.sch │ ├── board │ ├── bom │ ├── edit │ ├── extra │ ├── ppm-bom.csv │ ├── ppm-v2.zip │ ├── print │ ├── proj │ ├── v2-brd.pdf │ ├── v2-brd.png │ ├── v2.cmd │ ├── v2.net │ ├── v2.pcb │ └── v2r0.pdf ├── ppm-2.1 │ ├── 01-overview.sch │ ├── 02-pulprog.sch │ ├── 03-mcu-core.sch │ ├── 04-mcu-ports.sch │ ├── 05-dcdc.sch │ ├── 06-ldo-5.0v.sch │ ├── 07-ldo-2.5v.sch │ ├── 08-ldo-hc.sch │ ├── 09-iso.sch │ ├── 10-asc-tune-1of2.sch │ ├── 11-asc-tune-2of2.sch │ ├── 12-asc-ina.sch │ ├── 13-asc-gain.sch │ ├── 14-asc-fil-1of2.sch │ ├── 15-asc-fil-2of2.sch │ ├── 16-adc.sch │ ├── 17-dac.sch │ ├── 18-buf-shim.sch │ ├── 19-buf-tx.sch │ ├── 20-pol.sch │ ├── 21-relay.sch │ ├── 22-leds.sch │ ├── board │ ├── bom │ ├── edit │ ├── extra │ ├── ppm-bom.csv │ ├── ppm-bom.pdf │ ├── ppm-v2.zip │ ├── print │ ├── proj │ ├── v2-brd.pdf │ ├── v2-brd.png │ ├── v2.cmd │ ├── v2.net │ ├── v2.pcb │ └── v2r1.pdf ├── ppm-2.2 │ ├── 01-overview.sch │ ├── 02-pulprog.sch │ ├── 03-mcu-core.sch │ ├── 04-mcu-ports.sch │ ├── 05-dcdc.sch │ ├── 06-ldo-5.0v.sch │ ├── 07-ldo-2.5v.sch │ ├── 08-ldo-hc-1of2.sch │ ├── 09-ldo-hc-2of2.sch │ ├── 10-iso.sch │ ├── 11-asc-tune-1of2.sch │ ├── 12-asc-tune-2of2.sch │ ├── 13-asc-ina.sch │ ├── 14-asc-gain.sch │ ├── 15-asc-fil-1of2.sch │ ├── 16-asc-fil-2of2.sch │ ├── 17-adc.sch │ ├── 18-dac.sch │ ├── 19-buf-shim.sch │ ├── 20-buf-tx.sch │ ├── 21-pol.sch │ ├── 22-relay.sch │ ├── 23-leds.sch │ ├── board │ ├── bom │ ├── edit │ ├── extra │ ├── ppm-bom-long.csv │ ├── ppm-bom-short.csv │ ├── ppm-v2.zip │ ├── print │ ├── proj │ ├── v2-brd.pdf │ ├── v2-brd.png │ ├── v2.cmd │ ├── v2.net │ ├── v2.pcb │ └── v2r2.pdf └── scb-1.0 │ ├── 01-overview.sch │ ├── 02-mcu-core.sch │ ├── 03-mcu-ports.sch │ ├── 04-bootstrap.sch │ ├── 05-ldo.sch │ ├── 06-dac.sch │ ├── 07-buf-x.sch │ ├── 08-buf-y.sch │ ├── 09-buf-z.sch │ ├── 10-leds.sch │ ├── board │ ├── bom │ ├── edit │ ├── extra │ ├── print │ ├── proj │ ├── scb-bom.csv │ ├── scb-v1.zip │ ├── v1-brd.pdf │ ├── v1-brd.png │ ├── v1.cmd │ ├── v1.net │ ├── v1.pcb │ └── v1.pdf ├── firmware ├── README.md ├── dds-1.0 │ ├── Makefile │ ├── dds.c │ ├── dds.h │ ├── gpio.c │ ├── gpio.h │ ├── main.c │ ├── main.h │ ├── spi.c │ └── spi.h ├── dds-1.1 │ ├── Makefile │ ├── dds.S │ ├── main.c │ └── main.h ├── dig-1.0 │ ├── Makefile │ ├── gpio.c │ ├── gpio.h │ ├── main.c │ ├── main.h │ ├── spi.c │ ├── spi.h │ ├── tcnt.c │ └── tcnt.h ├── global.mk ├── lib │ ├── Makefile │ ├── clk.c │ ├── clk.h │ ├── macros.h │ ├── msg.c │ ├── msg.h │ ├── seq.c │ ├── seq.h │ ├── usb-defines.h │ ├── usb.c │ └── usb.h ├── ppm-1.1 │ ├── Makefile │ ├── gpio-defines.h │ ├── gpio.c │ ├── gpio.h │ ├── main.c │ ├── main.h │ ├── ppm.c │ ├── ppm.h │ ├── spi.c │ ├── spi.h │ ├── tcnt.c │ └── tcnt.h ├── ppm-1.2 │ ├── Makefile │ ├── gpio-defines.h │ ├── gpio.c │ ├── gpio.h │ ├── main.c │ ├── main.h │ ├── ppm.c │ ├── ppm.h │ ├── spi.c │ ├── spi.h │ ├── tcnt.c │ └── tcnt.h ├── ppm-1.3 │ ├── Makefile │ ├── gpio-defines.h │ ├── gpio.c │ ├── gpio.h │ ├── main.c │ ├── main.h │ ├── ppm.c │ ├── ppm.h │ ├── spi.c │ ├── spi.h │ ├── tcnt.c │ └── tcnt.h ├── ppm-2.1 │ ├── Makefile │ ├── gpio-defines.h │ ├── gpio.c │ ├── gpio.h │ ├── main.c │ ├── main.h │ ├── ppm.c │ ├── ppm.h │ ├── spi.c │ ├── spi.h │ ├── tcnt.S │ └── tcnt.h ├── ppm-2.2 └── scb-1.0 │ ├── Makefile │ ├── gpio-defines.h │ ├── gpio.c │ ├── gpio.h │ ├── main.c │ ├── main.h │ ├── scb.c │ ├── scb.h │ ├── spi.c │ └── spi.h ├── footprints ├── 1455L1201.fp ├── 1455P1601.fp ├── ABM7-SMD2.fp ├── Battery-9V.fp ├── Bourns-DPAK.fp ├── CB3LV-7x5.fp ├── CTX02-13665.fp ├── CTX33-3.fp ├── Coiltronics-UP04C.fp ├── DCDC-DIP.fp ├── DCDC-TDK.fp ├── DPAK.fp ├── HC49US.fp ├── ISL9R-D2PAK.fp ├── LT1210-DDPAK7.fp ├── LT1764-DDPAK5.fp ├── MSOP8_EP.fp ├── Omron-G6A2.fp ├── Phone_Jack_PJ1535.fp ├── Power_Jack_PJ037.fp ├── README.md ├── SOT28.fp ├── TRAPC3MX.fp ├── TSSOP16_EP.fp ├── TSSOP20_EP.fp ├── TSSOP24_EP.fp ├── Tact-Sw-FSMSM.fp ├── USB-Mini-B.fp └── install ├── models ├── 1n4148.mod ├── README.md ├── ad797.mod ├── ad8428.mod ├── ad8541.mod ├── ad8591.mod ├── ad8597.mod ├── ada4841.mod ├── irlr024n.mod ├── lt1012.mod ├── lt1013.mod ├── ltc6241.mod ├── mmbt3904.mod ├── mmbt3906.mod ├── mmz2012r300a.mod ├── mur860.mod ├── op162.mod └── sd101a.mod ├── notes ├── README.md ├── gerbv-colors.md └── ppm-v1r1.md ├── scripts ├── README.md ├── board ├── bom ├── bom-internal ├── bom.awk ├── build ├── clean ├── edit ├── effbw ├── layer.awk └── print ├── simulations ├── README.md ├── asc-1.0 │ ├── asc.net │ ├── asc.nut │ ├── asc.plt │ ├── asc.spi │ ├── build │ ├── clean │ └── proj ├── asc-1.1 │ ├── asc.net │ ├── asc.nut │ ├── asc.plt │ ├── asc.spi │ ├── build │ ├── clean │ └── proj ├── dig-1.0 │ ├── dig-floor-freq.txt │ ├── dig-floor-time.txt │ ├── dig-floor.png │ ├── dig-sin1k.png │ ├── dig-sin1k.txt │ ├── dig.plt │ └── proj ├── fil-1.0 │ ├── build │ ├── clean │ ├── fil-meas.txt │ ├── fil.net │ ├── fil.nut │ ├── fil.plt │ ├── fil.spi │ └── proj ├── ina-1.0 │ ├── build │ ├── clean │ ├── ina-meas.txt │ ├── ina.net │ ├── ina.nut │ ├── ina.plt │ ├── ina.spi │ └── proj ├── ina-1.1 │ ├── build │ ├── clean │ ├── ina-meas.txt │ ├── ina.net │ ├── ina.nut │ ├── ina.plt │ ├── ina.spi │ └── proj ├── osc-1.0 │ ├── build │ ├── clean │ ├── osc-meas.txt │ ├── osc-tran.txt │ ├── osc.net │ ├── osc.nut │ ├── osc.plt │ ├── osc.spi │ └── proj ├── sink-1.0 │ ├── build │ ├── sink.plt │ └── sink.spi.in └── sink-2.0 │ ├── build │ ├── clean │ ├── proj │ ├── sink-sim.txt │ ├── sink.net │ ├── sink.nut │ ├── sink.plt │ ├── sink.raw │ └── sink.spi ├── software ├── README.md ├── cli │ ├── Makefile │ ├── ft.c │ ├── hrft.c │ ├── rpp.c │ ├── rst.c │ ├── snd.c │ ├── ver.c │ ├── wfp.c │ ├── wpp.c │ └── zg.c ├── core │ ├── Makefile │ ├── ppm-data.c │ ├── ppm-data.h │ ├── ppm-fall.c │ ├── ppm-fall.h │ ├── ppm-hw.c │ ├── ppm-hw.h │ ├── ppm-math.c │ ├── ppm-math.h │ ├── ppm-prog.c │ ├── ppm-prog.h │ ├── ppm-tune.c │ ├── ppm-tune.h │ ├── ppm.c │ └── ppm.h ├── global.mk ├── liveft │ ├── Makefile │ └── liveft.c ├── napkin │ ├── Makefile │ ├── coil-1.0.txt │ ├── coil-2.0.txt │ └── napkin.c ├── pulprogs │ ├── Makefile │ ├── README.md │ ├── __init__.py │ ├── hard.py │ ├── misc.py │ └── soft.py ├── py │ ├── Makefile │ ├── README.md │ ├── pyppm.c │ └── setup.py └── solver │ ├── Makefile │ ├── mkvideo.sh │ ├── multisol.m │ ├── pul.m │ └── sol.m └── symbols ├── 74 ├── sn74lvc16t245_core-1.sym ├── sn74lvc16t245_output-1.sym ├── sn74lvc1t45-1.sym ├── sn74lvc2g14_core-1.sym ├── sn74lvc2g14_output-1.sym ├── sn74lvc8t245_core-1.sym └── sn74lvc8t245_output-1.sym ├── README.md ├── analog ├── ad5300_sot26-1.sym ├── ad5320_sot26-1.sym ├── ad5328_core-1.sym ├── ad5328_output-1.sym ├── ad5663_core-1.sym ├── ad5663_output-1.sym ├── ad5752_core-1.sym ├── ad5752_output-1.sym ├── ad7680_sot26-1.sym ├── ad8428-1.sym ├── ad8541_sot25-1.sym ├── ad8591_sot26-1.sym ├── ad8597-1.sym ├── ada4841_so8-1.sym ├── ada4841_sot26-1.sym ├── adg714-1.sym ├── adr4520-1.sym ├── dcdc-dual-1.sym ├── dcdc-dual-trim-1.sym ├── dual-opamp-2.sym ├── fan3111e-1.sym ├── inductor-dual-1.sym ├── opa569-1.sym ├── osc-cb3lv-1.sym ├── tlv4110-1.sym ├── transformer_ctx02_13665-1.sym ├── wm8741_core-1.sym ├── wm8741_left-1.sym └── wm8741_right-1.sym ├── connector ├── mini-XL-1.sym ├── trs-1.sym └── usb-mini-b-1.sym ├── diode ├── dual-series-1.sym └── schottky-dual-series-1.sym ├── install ├── linear ├── lt1012-1.sym ├── lt1206-1.sym ├── lt1210-1.sym ├── lt1761es5-1.sym ├── lt1761es5-2.sym ├── lt1763cs8-1.sym ├── lt1764aeq-1.sym ├── lt1964es5-1.sym ├── lt1964es5-2.sym ├── lt3015-1.sym ├── lt3439-1.sym └── ltc2909-1.sym ├── memory └── m25pexx-1.sym ├── micro ├── atmega32u2_core-1.sym ├── atmega32u2_portB-1.sym ├── atmega32u2_portC-1.sym ├── atmega32u2_portD-1.sym ├── atmega32u4_core-1.sym ├── atmega32u4_portB-1.sym ├── atmega32u4_portC-1.sym ├── atmega32u4_portD-1.sym ├── atmega32u4_portEF-1.sym ├── ft232h-1.sym └── tusb1210-1.sym ├── national └── lm3671-1.sym ├── opto ├── acsl-6300-1.sym ├── acsl-6310-1.sym └── hcpl-0201-1.sym ├── power ├── gnd-earth-1.sym └── gnd-tri-1.sym ├── relay └── omron-G6A-2-DCx-1.sym └── xilinx ├── xc6slx9-tqg144-bank0-1.sym ├── xc6slx9-tqg144-bank1-1.sym ├── xc6slx9-tqg144-bank2-1.sym ├── xc6slx9-tqg144-bank3-1.sym ├── xc6slx9-tqg144-config-1.sym ├── xc6slx9-tqg144-jtag-1.sym └── xc6slx9-tqg144-power-1.sym /Makefile: -------------------------------------------------------------------------------- 1 | 2 | SHELL := /bin/bash 3 | .PHONY: all tidy dist 4 | 5 | all: 6 | @echo "No 'all' target exists for this project." 7 | 8 | tidy: 9 | @echo " TIDY" 10 | @for dir in $$(find firmware/* -type d); do \ 11 | make -s -C $${dir} clean; done 12 | @for dir in $$(find software/* -type d); do \ 13 | make -s -C $${dir} clean; done 14 | @find * -type f | awk -F '/' '$$NF~/^\._/' | xargs rm -vf 15 | 16 | dist: tidy 17 | @echo " DIST" 18 | @pushd .. >/dev/null; \ 19 | isodate=$$(date +%Y%m%d); \ 20 | ftar="ppm-$${isodate}.tar"; \ 21 | ftgz="ppm-$${isodate}.tar.gz"; \ 22 | rm -f $${ftar}; \ 23 | if [ -e $${ftgz} ]; then \ 24 | echo -n "The file $${ftgz} exists. overwrite? (y/n) "; \ 25 | read resp; \ 26 | if [ "$${resp}" == "y" ]; then \ 27 | rm -f $${ftgz}; \ 28 | else \ 29 | exit; \ 30 | fi \ 31 | fi; \ 32 | tar cf $${ftar} ppm/ && gzip -9 $${ftar}; \ 33 | popd >/dev/null 34 | 35 | -------------------------------------------------------------------------------- /designs/README.md: -------------------------------------------------------------------------------- 1 | # pyppm/designs 2 | 3 | All hardware designs are placed in subdirectories here. You will need 4 | [gEDA gschem](http://www.geda-project.org/) and 5 | [gEDA PCB](http://pcb.geda-project.org/) to view the raw design sources. 6 | 7 | In any of the design subdirectories, you can run `./edit` to open the schematic 8 | editor. To open the printed circuit board editor, run `./edit pcb` instead. 9 | 10 | ### Latest PyPPM board design 11 | 12 | The latest PyPPMv1 board design is v1r3, located in `ppm-1.3`. The latest 13 | PyPPMv2 board design is v2r1, located in `ppm-2.1`. 14 | 15 | ### Coil designs 16 | 17 | Coil designs are found in the `coil-X.Y` subdirectories. 18 | 19 | ### Case designs 20 | 21 | Case designs start with `case-`, and end with the design that they are 22 | intended to match with. For example, `case-ppm-2.1` is the case design 23 | for `ppm-2.1`. 24 | -------------------------------------------------------------------------------- /designs/case-ppm-1.3/edit: -------------------------------------------------------------------------------- 1 | ../../scripts/edit -------------------------------------------------------------------------------- /designs/case-ppm-1.3/print: -------------------------------------------------------------------------------- 1 | ../../scripts/print -------------------------------------------------------------------------------- /designs/case-ppm-1.3/proj: -------------------------------------------------------------------------------- 1 | prj=case 2 | ver=1 3 | -------------------------------------------------------------------------------- /designs/case-ppm-1.3/v1.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geekysuavo/pyppm/bbb7e3f5b7eac8cd6dbd61fbf1a65142902b7502/designs/case-ppm-1.3/v1.pdf -------------------------------------------------------------------------------- /designs/case-scb-1.0/edit: -------------------------------------------------------------------------------- 1 | ../../scripts/edit -------------------------------------------------------------------------------- /designs/case-scb-1.0/print: -------------------------------------------------------------------------------- 1 | ../../scripts/print -------------------------------------------------------------------------------- /designs/case-scb-1.0/proj: -------------------------------------------------------------------------------- 1 | prj=case 2 | ver=1 3 | -------------------------------------------------------------------------------- /designs/case-scb-1.0/v1.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geekysuavo/pyppm/bbb7e3f5b7eac8cd6dbd61fbf1a65142902b7502/designs/case-scb-1.0/v1.pdf -------------------------------------------------------------------------------- /designs/coil-1.0/edit: -------------------------------------------------------------------------------- 1 | ../../scripts/edit -------------------------------------------------------------------------------- /designs/coil-1.0/print: -------------------------------------------------------------------------------- 1 | ../../scripts/print -------------------------------------------------------------------------------- /designs/coil-1.0/proj: -------------------------------------------------------------------------------- 1 | prj=coil 2 | ver=1 3 | -------------------------------------------------------------------------------- /designs/coil-1.0/v1.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geekysuavo/pyppm/bbb7e3f5b7eac8cd6dbd61fbf1a65142902b7502/designs/coil-1.0/v1.pdf -------------------------------------------------------------------------------- /designs/coil-2.0/edit: -------------------------------------------------------------------------------- 1 | ../../scripts/edit -------------------------------------------------------------------------------- /designs/coil-2.0/print: -------------------------------------------------------------------------------- 1 | ../../scripts/print -------------------------------------------------------------------------------- /designs/coil-2.0/proj: -------------------------------------------------------------------------------- 1 | prj=coil 2 | ver=2 3 | -------------------------------------------------------------------------------- /designs/coil-2.0/v2.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geekysuavo/pyppm/bbb7e3f5b7eac8cd6dbd61fbf1a65142902b7502/designs/coil-2.0/v2.pdf -------------------------------------------------------------------------------- /designs/dig-1.0/board: -------------------------------------------------------------------------------- 1 | ../../scripts/board -------------------------------------------------------------------------------- /designs/dig-1.0/dig-bom.csv: -------------------------------------------------------------------------------- 1 | U1,ATmega32U2,ATMEGA32U2-AU-ND 2 | U2,16M-XO,887-1274-1-ND 3 | U3,AD7680,AD7680ARJZ-REEL7CT-ND 4 | 5 | J1,Mini-B,H2959CT-ND 6 | S1,SPST-NO,CKN10358-ND 7 | S2,SPST-NO,CKN10358-ND 8 | 9 | C7,27p,399-1114-1-ND 10 | C8,27p,399-1114-1-ND 11 | C2,100n,311-1142-1-ND 12 | C3,100n,311-1142-1-ND 13 | C9,100n,311-1142-1-ND 14 | C10,100n,311-1142-1-ND 15 | C12,100n,311-1142-1-ND 16 | C6,1u,399-1284-1-ND 17 | C1,10u,399-3824-1-ND 18 | C4,10u,399-3824-1-ND 19 | C5,10u,399-3824-1-ND 20 | C11,10u,399-3824-1-ND 21 | 22 | R1,22,P22.0CCT-ND 23 | R2,22,P22.0CCT-ND 24 | R3,47k,P47.0KCCT-ND 25 | R5,47k,P47.0KCCT-ND 26 | R7,47k,P47.0KCCT-ND 27 | R4,330,P330CCT-ND 28 | R6,330,P330CCT-ND 29 | 30 | L1,MMZ2012,445-2199-1-ND 31 | 32 | D1,1N4148,1N4148WTPMSCT-ND 33 | D2,1N4148,1N4148WTPMSCT-ND 34 | 35 | -------------------------------------------------------------------------------- /designs/dig-1.0/dig-v1.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geekysuavo/pyppm/bbb7e3f5b7eac8cd6dbd61fbf1a65142902b7502/designs/dig-1.0/dig-v1.zip -------------------------------------------------------------------------------- /designs/dig-1.0/edit: -------------------------------------------------------------------------------- 1 | ../../scripts/edit -------------------------------------------------------------------------------- /designs/dig-1.0/print: -------------------------------------------------------------------------------- 1 | ../../scripts/print -------------------------------------------------------------------------------- /designs/dig-1.0/proj: -------------------------------------------------------------------------------- 1 | prj=dig 2 | ver=1 3 | -------------------------------------------------------------------------------- /designs/dig-1.0/v1-brd.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geekysuavo/pyppm/bbb7e3f5b7eac8cd6dbd61fbf1a65142902b7502/designs/dig-1.0/v1-brd.pdf -------------------------------------------------------------------------------- /designs/dig-1.0/v1-brd.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geekysuavo/pyppm/bbb7e3f5b7eac8cd6dbd61fbf1a65142902b7502/designs/dig-1.0/v1-brd.png -------------------------------------------------------------------------------- /designs/dig-1.0/v1.net: -------------------------------------------------------------------------------- 1 | unnamed_net16 L1-2 C12-2 C11-1 U3-1 2 | unnamed_net15 J2-1 U3-3 3 | unnamed_net14 U3-6 R7-1 U1-18 4 | unnamed_net13 U3-5 U1-17 5 | unnamed_net12 U3-4 U1-15 6 | unnamed_net11 S2-1 R6-2 7 | unnamed_net10 S1-1 R4-2 8 | unnamed_net9 R1-1 J1-3 9 | unnamed_net8 R2-1 J1-2 10 | unnamed_net7 R2-2 U1-30 11 | unnamed_net6 R1-2 U1-29 12 | unnamed_net5 R5-1 C10-2 D2-2 R6-1 U1-13 13 | +5V L1-1 R7-2 R5-2 D2-1 R3-2 D1-1 C5-1 C4-1 C3-1 C1-1 C2-2 J1-1 U1-31 U1-4 U1-32 14 | GND J2-2 C11-2 C12-1 U3-2 S2-2 C10-1 S1-2 C9-1 C8-1 C7-1 C4-2 C3-2 C5-2 C1-2 C2-1 C6-1 J1-5 U1-28 U1-3 15 | unnamed_net4 C6-2 U1-27 16 | unnamed_net3 U2-2 C8-2 U1-2 17 | unnamed_net2 U2-1 C7-2 U1-1 18 | unnamed_net1 R3-1 C9-2 D1-2 R4-1 U1-24 19 | -------------------------------------------------------------------------------- /designs/dig-1.0/v1.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geekysuavo/pyppm/bbb7e3f5b7eac8cd6dbd61fbf1a65142902b7502/designs/dig-1.0/v1.pdf -------------------------------------------------------------------------------- /designs/fil-1.0/board: -------------------------------------------------------------------------------- 1 | ../../scripts/board -------------------------------------------------------------------------------- /designs/fil-1.0/edit: -------------------------------------------------------------------------------- 1 | ../../scripts/edit -------------------------------------------------------------------------------- /designs/fil-1.0/fil-bom.csv: -------------------------------------------------------------------------------- 1 | Component,Ideal,Real,SKU 2 | U1,OP462,OP462,OP462GSZ-ND 3 | 4 | Ca1,10n,10n,PCF1196CT-ND 5 | Ca2,10n,10n,PCF1196CT-ND 6 | Ra1,14.3k,14.3k,P14.3KCCT-ND 7 | Ra2,15.51k,15.4k,P15.4KDACT-ND 8 | Ra3,44.97k,45.3k,P45.3KCCT-ND 9 | 10 | Cb1,10n,10n,PCF1196CT-ND 11 | Cb2,10n,10n,PCF1196CT-ND 12 | Rb1,5.52k,5.49k,P5.49KCCT-ND 13 | Rb2,5.99k,6.04k,P6.04KCCT-ND 14 | Rb3,17.37k,17.4k,P17.4KCCT-ND 15 | 16 | Cc1,10n,10n,PCF1196CT-ND 17 | Cc2,10n,10n,PCF1196CT-ND 18 | Rc1,13.29k,13.3k,P13.3KCCT-ND 19 | Rc2,5.19k,5.23k,P5.23KCCT-ND 20 | Rc3,232.04k,232k,P232KCCT-ND 21 | 22 | Cd1,10n,10n,PCF1196CT-ND 23 | Cd2,10n,10n,PCF1196CT-ND 24 | Rd1,1.99k,2k,P2.0KACT-ND 25 | Rd2,733.1,732,P732CCT-ND 26 | Rd3,34.79k,34.8k,P34.8KCCT-ND 27 | 28 | C1,100n,100n,311-1142-1-ND 29 | C2,100n,100n,311-1142-1-ND 30 | C3,22u,22u,399-5211-1-ND 31 | C4,22u,22u,399-5211-1-ND 32 | 33 | -------------------------------------------------------------------------------- /designs/fil-1.0/fil-v1.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geekysuavo/pyppm/bbb7e3f5b7eac8cd6dbd61fbf1a65142902b7502/designs/fil-1.0/fil-v1.zip -------------------------------------------------------------------------------- /designs/fil-1.0/print: -------------------------------------------------------------------------------- 1 | ../../scripts/print -------------------------------------------------------------------------------- /designs/fil-1.0/proj: -------------------------------------------------------------------------------- 1 | prj=fil 2 | ver=1 3 | -------------------------------------------------------------------------------- /designs/fil-1.0/v1-brd.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geekysuavo/pyppm/bbb7e3f5b7eac8cd6dbd61fbf1a65142902b7502/designs/fil-1.0/v1-brd.pdf -------------------------------------------------------------------------------- /designs/fil-1.0/v1-brd.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geekysuavo/pyppm/bbb7e3f5b7eac8cd6dbd61fbf1a65142902b7502/designs/fil-1.0/v1-brd.png -------------------------------------------------------------------------------- /designs/fil-1.0/v1.net: -------------------------------------------------------------------------------- 1 | unnamed_net13 Cd2-1 Rd2-2 Rd1-2 Cd1-1 2 | unnamed_net12 J2-1 Cd2-2 Rd3-2 U1-14 3 | unnamed_net11 Rd3-1 Cd1-2 U1-13 4 | unnamed_net10 Cc2-1 Rc2-2 Rc1-2 Cc1-1 5 | unnamed_net9 Rd1-1 Cc2-2 Rc3-2 U1-8 6 | unnamed_net8 Rc3-1 Cc1-2 U1-9 7 | unnamed_net7 Cb2-1 Rb2-2 Rb1-2 Cb1-1 8 | unnamed_net6 Rc1-1 Cb2-2 Rb3-2 U1-7 9 | unnamed_net5 Rb3-1 Cb1-2 U1-6 10 | unnamed_net4 J1-1 Ra1-1 11 | unnamed_net3 Ca2-1 Ra2-2 Ra1-2 Ca1-1 12 | +5V C3-1 C1-2 J3-1 U1-4 13 | -5V C4-2 C2-1 J4-2 U1-11 14 | unnamed_net2 Rb1-1 Ca2-2 Ra3-2 U1-1 15 | unnamed_net1 Ra3-1 Ca1-2 U1-2 16 | GND C4-1 C3-2 C2-2 C1-1 J4-1 J3-2 J2-2 Rd2-1 U1-12 Rc2-1 U1-10 Rb2-1 U1-5 J1-2 Ra2-1 U1-3 17 | -------------------------------------------------------------------------------- /designs/fil-1.0/v1.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geekysuavo/pyppm/bbb7e3f5b7eac8cd6dbd61fbf1a65142902b7502/designs/fil-1.0/v1.pdf -------------------------------------------------------------------------------- /designs/ina-1.0/board: -------------------------------------------------------------------------------- 1 | ../../scripts/board -------------------------------------------------------------------------------- /designs/ina-1.0/edit: -------------------------------------------------------------------------------- 1 | ../../scripts/edit -------------------------------------------------------------------------------- /designs/ina-1.0/ina-bom.csv: -------------------------------------------------------------------------------- 1 | C1,1n,PCF1296CT-ND 2 | C2,10n,PCF1177CT-ND 3 | C3,10n,PCF1177CT-ND 4 | C4,220p,PCF1320CT-ND 5 | C5,100n,399-1170-1-ND 6 | C6,100n,399-1170-1-ND 7 | C7,33u,399-4017-1-ND 8 | C8,33u,399-4017-1-ND 9 | 10 | D1,SD101A,SD101AW-7FDICT-ND 11 | D2,SD101A,SD101AW-7FDICT-ND 12 | 13 | L1,MMZ2012,445-2199-1-ND 14 | L2,MMZ2012,445-2199-1-ND 15 | 16 | R1,33.2,P33.2CCT-ND 17 | R2,33.2,P33.2CCT-ND 18 | R3,1M,P1.00MCCT-ND 19 | R4,1M,P1.00MCCT-ND 20 | 21 | U1,AD8428,AD8428ARZ-ND 22 | 23 | -------------------------------------------------------------------------------- /designs/ina-1.0/ina-v1.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geekysuavo/pyppm/bbb7e3f5b7eac8cd6dbd61fbf1a65142902b7502/designs/ina-1.0/ina-v1.zip -------------------------------------------------------------------------------- /designs/ina-1.0/print: -------------------------------------------------------------------------------- 1 | ../../scripts/print -------------------------------------------------------------------------------- /designs/ina-1.0/proj: -------------------------------------------------------------------------------- 1 | prj=ina 2 | ver=1 3 | -------------------------------------------------------------------------------- /designs/ina-1.0/v1-brd.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geekysuavo/pyppm/bbb7e3f5b7eac8cd6dbd61fbf1a65142902b7502/designs/ina-1.0/v1-brd.pdf -------------------------------------------------------------------------------- /designs/ina-1.0/v1-brd.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geekysuavo/pyppm/bbb7e3f5b7eac8cd6dbd61fbf1a65142902b7502/designs/ina-1.0/v1-brd.png -------------------------------------------------------------------------------- /designs/ina-1.0/v1.net: -------------------------------------------------------------------------------- 1 | unnamed_net9 R102-1 L102-2 2 | unnamed_net8 R101-1 L101-2 3 | unnamed_net7 C104-1 U101-2 4 | unnamed_net6 C104-2 U101-3 5 | -5V J3-3 C306-2 C305-1 U101-5 6 | +5V J3-1 C302-1 C301-2 U101-8 7 | unnamed_net5 D101-1 D102-2 R104-2 C102-1 C103-2 R102-2 U101-1 8 | unnamed_net4 D102-1 D101-2 R103-1 C102-2 C101-1 R101-2 U101-4 9 | unnamed_net3 U101-7 J2-1 10 | GND J3-2 C306-1 C302-2 C305-2 C301-1 R104-1 R103-2 C103-1 C101-2 U101-6 J2-2 11 | unnamed_net2 L101-1 J1-1 12 | unnamed_net1 L102-1 J1-2 13 | -------------------------------------------------------------------------------- /designs/ina-1.0/v1.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geekysuavo/pyppm/bbb7e3f5b7eac8cd6dbd61fbf1a65142902b7502/designs/ina-1.0/v1.pdf -------------------------------------------------------------------------------- /designs/osc-1.0/board: -------------------------------------------------------------------------------- 1 | ../../scripts/board -------------------------------------------------------------------------------- /designs/osc-1.0/edit: -------------------------------------------------------------------------------- 1 | ../../scripts/edit -------------------------------------------------------------------------------- /designs/osc-1.0/osc-bom.csv: -------------------------------------------------------------------------------- 1 | U1,LT1012,LT1012ACS8#PBF-ND 2 | 3 | S1,SPST,CKN10358-ND 4 | CB1,100n,311-1142-1-ND 5 | CB2,10u,399-3824-1-ND 6 | 7 | R1,10k,P10.0KCCT-ND 8 | R2,10k,P10.0KCCT-ND 9 | R3,470k,P470KCCT-ND 10 | R4,470k,P470KCCT-ND 11 | R5,33k,P33.0KCCT-ND 12 | R6,33k,P33.0KCCT-ND 13 | R7,15k,P15.0KCCT-ND 14 | R8,1M,P1.00MCCT-ND 15 | R9,10,P10.0CCT-ND 16 | 17 | C1,10n,PCF1177CT-ND 18 | C2,4.7n,PCF1173CT-ND 19 | C3,4.7n,PCF1173CT-ND 20 | 21 | D1,1N4148,1N4148WTPMSCT-ND 22 | D2,1N4148,1N4148WTPMSCT-ND 23 | 24 | -------------------------------------------------------------------------------- /designs/osc-1.0/osc-v1.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geekysuavo/pyppm/bbb7e3f5b7eac8cd6dbd61fbf1a65142902b7502/designs/osc-1.0/osc-v1.zip -------------------------------------------------------------------------------- /designs/osc-1.0/print: -------------------------------------------------------------------------------- 1 | ../../scripts/print -------------------------------------------------------------------------------- /designs/osc-1.0/proj: -------------------------------------------------------------------------------- 1 | prj=osc 2 | ver=1 3 | -------------------------------------------------------------------------------- /designs/osc-1.0/v1-brd.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geekysuavo/pyppm/bbb7e3f5b7eac8cd6dbd61fbf1a65142902b7502/designs/osc-1.0/v1-brd.pdf -------------------------------------------------------------------------------- /designs/osc-1.0/v1-brd.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geekysuavo/pyppm/bbb7e3f5b7eac8cd6dbd61fbf1a65142902b7502/designs/osc-1.0/v1-brd.png -------------------------------------------------------------------------------- /designs/osc-1.0/v1.net: -------------------------------------------------------------------------------- 1 | unnamed_net8 B1-1 S1-1 2 | unnamed_net7 J2-1 R9-2 R8-1 3 | unnamed_net6 R5-2 C1-2 R6-1 4 | unnamed_net5 C2-2 C3-1 R7-1 5 | unnamed_net4 R4-2 D2-1 D1-2 6 | unnamed_net3 J1-1 R8-2 C3-2 R6-2 R3-2 D2-2 D1-1 U1-6 7 | unnamed_net2 C2-1 R5-1 R4-1 U1-2 8 | unnamed_net1 R3-1 R2-2 R1-1 U1-3 9 | +9V R1-2 U1-7 S1-2 CB2-1 CB1-2 10 | GND J2-2 J1-2 R9-1 C1-1 R7-2 R2-1 U1-4 B1-2 CB2-2 CB1-1 11 | -------------------------------------------------------------------------------- /designs/osc-1.0/v1.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geekysuavo/pyppm/bbb7e3f5b7eac8cd6dbd61fbf1a65142902b7502/designs/osc-1.0/v1.pdf -------------------------------------------------------------------------------- /designs/ppm-1.0/board: -------------------------------------------------------------------------------- 1 | ../../scripts/board -------------------------------------------------------------------------------- /designs/ppm-1.0/edit: -------------------------------------------------------------------------------- 1 | ../../scripts/edit -------------------------------------------------------------------------------- /designs/ppm-1.0/extra: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | source proj 4 | 5 | sed -e 's@\(Q01\)-G@\1-1@g' \ 6 | -e 's@\(Q01\)-D@\1-4@g' \ 7 | -e 's@\(Q01\)-S@\1-3@g' \ 8 | -i v${ver}.net 9 | 10 | sed -e 's@\(Q02\)-G@\1-1@g' \ 11 | -e 's@\(Q02\)-D@\1-3@g' \ 12 | -e 's@\(Q02\)-S@\1-2@g' \ 13 | -i v${ver}.net 14 | 15 | -------------------------------------------------------------------------------- /designs/ppm-1.0/ppm-v1.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geekysuavo/pyppm/bbb7e3f5b7eac8cd6dbd61fbf1a65142902b7502/designs/ppm-1.0/ppm-v1.zip -------------------------------------------------------------------------------- /designs/ppm-1.0/print: -------------------------------------------------------------------------------- 1 | ../../scripts/print -------------------------------------------------------------------------------- /designs/ppm-1.0/proj: -------------------------------------------------------------------------------- 1 | prj=ppm 2 | ver=1 3 | -------------------------------------------------------------------------------- /designs/ppm-1.0/v1-brd.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geekysuavo/pyppm/bbb7e3f5b7eac8cd6dbd61fbf1a65142902b7502/designs/ppm-1.0/v1-brd.pdf -------------------------------------------------------------------------------- /designs/ppm-1.0/v1-brd.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geekysuavo/pyppm/bbb7e3f5b7eac8cd6dbd61fbf1a65142902b7502/designs/ppm-1.0/v1-brd.png -------------------------------------------------------------------------------- /designs/ppm-1.0/v1.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geekysuavo/pyppm/bbb7e3f5b7eac8cd6dbd61fbf1a65142902b7502/designs/ppm-1.0/v1.pdf -------------------------------------------------------------------------------- /designs/ppm-1.1/board: -------------------------------------------------------------------------------- 1 | ../../scripts/board -------------------------------------------------------------------------------- /designs/ppm-1.1/edit: -------------------------------------------------------------------------------- 1 | ../../scripts/edit -------------------------------------------------------------------------------- /designs/ppm-1.1/extra: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | source proj 4 | 5 | sed -e 's@\(Q01\)-G@\1-1@g' \ 6 | -e 's@\(Q01\)-D@\1-4@g' \ 7 | -e 's@\(Q01\)-S@\1-3@g' \ 8 | -i v${ver}.net 9 | 10 | sed -e 's@\(Q02\)-G@\1-1@g' \ 11 | -e 's@\(Q02\)-D@\1-3@g' \ 12 | -e 's@\(Q02\)-S@\1-2@g' \ 13 | -i v${ver}.net 14 | 15 | -------------------------------------------------------------------------------- /designs/ppm-1.1/ppm-v1.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geekysuavo/pyppm/bbb7e3f5b7eac8cd6dbd61fbf1a65142902b7502/designs/ppm-1.1/ppm-v1.zip -------------------------------------------------------------------------------- /designs/ppm-1.1/print: -------------------------------------------------------------------------------- 1 | ../../scripts/print -------------------------------------------------------------------------------- /designs/ppm-1.1/proj: -------------------------------------------------------------------------------- 1 | prj=ppm 2 | ver=1 3 | -------------------------------------------------------------------------------- /designs/ppm-1.1/v1-brd.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geekysuavo/pyppm/bbb7e3f5b7eac8cd6dbd61fbf1a65142902b7502/designs/ppm-1.1/v1-brd.pdf -------------------------------------------------------------------------------- /designs/ppm-1.1/v1-brd.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geekysuavo/pyppm/bbb7e3f5b7eac8cd6dbd61fbf1a65142902b7502/designs/ppm-1.1/v1-brd.png -------------------------------------------------------------------------------- /designs/ppm-1.1/v1.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geekysuavo/pyppm/bbb7e3f5b7eac8cd6dbd61fbf1a65142902b7502/designs/ppm-1.1/v1.pdf -------------------------------------------------------------------------------- /designs/ppm-1.2/board: -------------------------------------------------------------------------------- 1 | ../../scripts/board -------------------------------------------------------------------------------- /designs/ppm-1.2/bom: -------------------------------------------------------------------------------- 1 | ../../scripts/bom -------------------------------------------------------------------------------- /designs/ppm-1.2/edit: -------------------------------------------------------------------------------- 1 | ../../scripts/edit -------------------------------------------------------------------------------- /designs/ppm-1.2/extra: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | source proj 4 | 5 | sed -e 's@\(Q01\)-G@\1-1@g' \ 6 | -e 's@\(Q01\)-D@\1-4@g' \ 7 | -e 's@\(Q01\)-S@\1-3@g' \ 8 | -i v${ver}.net 9 | 10 | sed -e 's@\(Q02\)-G@\1-1@g' \ 11 | -e 's@\(Q02\)-D@\1-3@g' \ 12 | -e 's@\(Q02\)-S@\1-2@g' \ 13 | -i v${ver}.net 14 | 15 | -------------------------------------------------------------------------------- /designs/ppm-1.2/merge: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | blacklist="R31 R32 R33" 4 | 5 | f_new="v1.pcb" 6 | f_old="../ppm-1.1/v1.pcb" 7 | 8 | n_new=$(wc -l < $f_new) 9 | n_old=$(wc -l < $f_old) 10 | 11 | for el in $(awk '/^Element/{print$3}' $f_new | sed -e 's@"@@g' | sort); do 12 | if [ ! "$(echo ${blacklist} | grep ${el})" == "" ]; then 13 | continue 14 | fi 15 | n1_new=$(awk "/^Element/&&\$3==\"\\\"${el}\\\"\"{print NR}" $f_new) 16 | n1_old=$(awk "/^Element/&&\$3==\"\\\"${el}\\\"\"{print NR}" $f_old) 17 | for n in $(seq $n1_new $n_new); do 18 | if [ "$(awk -v l=$n 'NR==l&&$0=="\t)"{print "1"}' $f_new)" == "1" ]; then 19 | n2_new=$n 20 | break 21 | fi 22 | done 23 | for n in $(seq $n1_old $n_old); do 24 | if [ "$(awk -v l=$n 'NR==l&&$0=="\t)"{print "1"}' $f_old)" == "1" ]; then 25 | n2_old=$n 26 | break 27 | fi 28 | done 29 | if [ ! "${n1_new}" == "" -a ! "${n2_new}" == "" \ 30 | -a ! "${n1_old}" == "" -a ! "${n2_old}" == "" ]; then 31 | d_new=$(echo "${n2_new}-${n1_new}+1" | bc -l) 32 | d_old=$(echo "${n2_old}-${n1_old}+1" | bc -l) 33 | if [ "${d_new}" == "${d_old}" ]; then 34 | sed -n "1,$(expr ${n1_new} - 1)p" $f_new > TMP 35 | sed -n "${n1_old},${n2_old}p" $f_old >> TMP 36 | sed -n "$(expr ${n2_new} + 1),${n_new}p" $f_new >> TMP 37 | mv TMP $f_new 38 | fi 39 | fi 40 | done 41 | 42 | -------------------------------------------------------------------------------- /designs/ppm-1.2/ppm-bom.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geekysuavo/pyppm/bbb7e3f5b7eac8cd6dbd61fbf1a65142902b7502/designs/ppm-1.2/ppm-bom.pdf -------------------------------------------------------------------------------- /designs/ppm-1.2/ppm-v1.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geekysuavo/pyppm/bbb7e3f5b7eac8cd6dbd61fbf1a65142902b7502/designs/ppm-1.2/ppm-v1.zip -------------------------------------------------------------------------------- /designs/ppm-1.2/print: -------------------------------------------------------------------------------- 1 | ../../scripts/print -------------------------------------------------------------------------------- /designs/ppm-1.2/proj: -------------------------------------------------------------------------------- 1 | prj=ppm 2 | ver=1 3 | -------------------------------------------------------------------------------- /designs/ppm-1.2/v1-brd.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geekysuavo/pyppm/bbb7e3f5b7eac8cd6dbd61fbf1a65142902b7502/designs/ppm-1.2/v1-brd.pdf -------------------------------------------------------------------------------- /designs/ppm-1.2/v1-brd.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geekysuavo/pyppm/bbb7e3f5b7eac8cd6dbd61fbf1a65142902b7502/designs/ppm-1.2/v1-brd.png -------------------------------------------------------------------------------- /designs/ppm-1.2/v1.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geekysuavo/pyppm/bbb7e3f5b7eac8cd6dbd61fbf1a65142902b7502/designs/ppm-1.2/v1.pdf -------------------------------------------------------------------------------- /designs/ppm-1.3/board: -------------------------------------------------------------------------------- 1 | ../../scripts/board -------------------------------------------------------------------------------- /designs/ppm-1.3/bom: -------------------------------------------------------------------------------- 1 | ../../scripts/bom -------------------------------------------------------------------------------- /designs/ppm-1.3/edit: -------------------------------------------------------------------------------- 1 | ../../scripts/edit -------------------------------------------------------------------------------- /designs/ppm-1.3/extra: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | source proj 4 | 5 | sed -e 's@\(Q01\)-G@\1-1@g' \ 6 | -e 's@\(Q01\)-D@\1-4@g' \ 7 | -e 's@\(Q01\)-S@\1-3@g' \ 8 | -i v${ver}.net 9 | 10 | sed -e 's@\(Q02\)-G@\1-1@g' \ 11 | -e 's@\(Q02\)-D@\1-3@g' \ 12 | -e 's@\(Q02\)-S@\1-2@g' \ 13 | -i v${ver}.net 14 | 15 | -------------------------------------------------------------------------------- /designs/ppm-1.3/ppm-v1.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geekysuavo/pyppm/bbb7e3f5b7eac8cd6dbd61fbf1a65142902b7502/designs/ppm-1.3/ppm-v1.zip -------------------------------------------------------------------------------- /designs/ppm-1.3/print: -------------------------------------------------------------------------------- 1 | ../../scripts/print -------------------------------------------------------------------------------- /designs/ppm-1.3/proj: -------------------------------------------------------------------------------- 1 | prj=ppm 2 | ver=1 3 | -------------------------------------------------------------------------------- /designs/ppm-1.3/v1-brd.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geekysuavo/pyppm/bbb7e3f5b7eac8cd6dbd61fbf1a65142902b7502/designs/ppm-1.3/v1-brd.pdf -------------------------------------------------------------------------------- /designs/ppm-1.3/v1-brd.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geekysuavo/pyppm/bbb7e3f5b7eac8cd6dbd61fbf1a65142902b7502/designs/ppm-1.3/v1-brd.png -------------------------------------------------------------------------------- /designs/ppm-1.3/v1.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geekysuavo/pyppm/bbb7e3f5b7eac8cd6dbd61fbf1a65142902b7502/designs/ppm-1.3/v1.pdf -------------------------------------------------------------------------------- /designs/ppm-2.0/board: -------------------------------------------------------------------------------- 1 | ../../scripts/board -------------------------------------------------------------------------------- /designs/ppm-2.0/bom: -------------------------------------------------------------------------------- 1 | ../../scripts/bom -------------------------------------------------------------------------------- /designs/ppm-2.0/edit: -------------------------------------------------------------------------------- 1 | ../../scripts/edit -------------------------------------------------------------------------------- /designs/ppm-2.0/extra: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | source proj 4 | 5 | sed -e 's@\(Q01\)-G@\1-1@g' \ 6 | -e 's@\(Q01\)-D@\1-4@g' \ 7 | -e 's@\(Q01\)-S@\1-3@g' \ 8 | -i v${ver}.net 9 | 10 | sed -e 's@\(Q02\)-G@\1-1@g' \ 11 | -e 's@\(Q02\)-D@\1-3@g' \ 12 | -e 's@\(Q02\)-S@\1-2@g' \ 13 | -i v${ver}.net 14 | 15 | -------------------------------------------------------------------------------- /designs/ppm-2.0/ppm-v2.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geekysuavo/pyppm/bbb7e3f5b7eac8cd6dbd61fbf1a65142902b7502/designs/ppm-2.0/ppm-v2.zip -------------------------------------------------------------------------------- /designs/ppm-2.0/print: -------------------------------------------------------------------------------- 1 | ../../scripts/print -------------------------------------------------------------------------------- /designs/ppm-2.0/proj: -------------------------------------------------------------------------------- 1 | prj=ppm 2 | ver=2 3 | rev=0 4 | -------------------------------------------------------------------------------- /designs/ppm-2.0/v2-brd.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geekysuavo/pyppm/bbb7e3f5b7eac8cd6dbd61fbf1a65142902b7502/designs/ppm-2.0/v2-brd.pdf -------------------------------------------------------------------------------- /designs/ppm-2.0/v2-brd.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geekysuavo/pyppm/bbb7e3f5b7eac8cd6dbd61fbf1a65142902b7502/designs/ppm-2.0/v2-brd.png -------------------------------------------------------------------------------- /designs/ppm-2.0/v2r0.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geekysuavo/pyppm/bbb7e3f5b7eac8cd6dbd61fbf1a65142902b7502/designs/ppm-2.0/v2r0.pdf -------------------------------------------------------------------------------- /designs/ppm-2.1/board: -------------------------------------------------------------------------------- 1 | ../../scripts/board -------------------------------------------------------------------------------- /designs/ppm-2.1/bom: -------------------------------------------------------------------------------- 1 | ../../scripts/bom -------------------------------------------------------------------------------- /designs/ppm-2.1/edit: -------------------------------------------------------------------------------- 1 | ../../scripts/edit -------------------------------------------------------------------------------- /designs/ppm-2.1/extra: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | source proj 4 | 5 | sed -e 's@\(Q01\)-G@\1-1@g' \ 6 | -e 's@\(Q01\)-D@\1-4@g' \ 7 | -e 's@\(Q01\)-S@\1-3@g' \ 8 | -i v${ver}.net 9 | 10 | sed -e 's@\(Q02\)-G@\1-1@g' \ 11 | -e 's@\(Q02\)-D@\1-3@g' \ 12 | -e 's@\(Q02\)-S@\1-2@g' \ 13 | -i v${ver}.net 14 | 15 | -------------------------------------------------------------------------------- /designs/ppm-2.1/ppm-bom.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geekysuavo/pyppm/bbb7e3f5b7eac8cd6dbd61fbf1a65142902b7502/designs/ppm-2.1/ppm-bom.pdf -------------------------------------------------------------------------------- /designs/ppm-2.1/ppm-v2.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geekysuavo/pyppm/bbb7e3f5b7eac8cd6dbd61fbf1a65142902b7502/designs/ppm-2.1/ppm-v2.zip -------------------------------------------------------------------------------- /designs/ppm-2.1/print: -------------------------------------------------------------------------------- 1 | ../../scripts/print -------------------------------------------------------------------------------- /designs/ppm-2.1/proj: -------------------------------------------------------------------------------- 1 | prj=ppm 2 | ver=2 3 | rev=1 4 | -------------------------------------------------------------------------------- /designs/ppm-2.1/v2-brd.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geekysuavo/pyppm/bbb7e3f5b7eac8cd6dbd61fbf1a65142902b7502/designs/ppm-2.1/v2-brd.pdf -------------------------------------------------------------------------------- /designs/ppm-2.1/v2-brd.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geekysuavo/pyppm/bbb7e3f5b7eac8cd6dbd61fbf1a65142902b7502/designs/ppm-2.1/v2-brd.png -------------------------------------------------------------------------------- /designs/ppm-2.1/v2r1.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geekysuavo/pyppm/bbb7e3f5b7eac8cd6dbd61fbf1a65142902b7502/designs/ppm-2.1/v2r1.pdf -------------------------------------------------------------------------------- /designs/ppm-2.2/board: -------------------------------------------------------------------------------- 1 | ../../scripts/board -------------------------------------------------------------------------------- /designs/ppm-2.2/bom: -------------------------------------------------------------------------------- 1 | ../../scripts/bom-internal -------------------------------------------------------------------------------- /designs/ppm-2.2/edit: -------------------------------------------------------------------------------- 1 | ../../scripts/edit -------------------------------------------------------------------------------- /designs/ppm-2.2/extra: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | source proj 4 | 5 | sed -e 's@\(Q01\)-G@\1-1@g' \ 6 | -e 's@\(Q01\)-D@\1-4@g' \ 7 | -e 's@\(Q01\)-S@\1-3@g' \ 8 | -i v${ver}.net 9 | 10 | sed -e 's@\(Q02\)-G@\1-1@g' \ 11 | -e 's@\(Q02\)-D@\1-3@g' \ 12 | -e 's@\(Q02\)-S@\1-2@g' \ 13 | -i v${ver}.net 14 | 15 | -------------------------------------------------------------------------------- /designs/ppm-2.2/ppm-v2.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geekysuavo/pyppm/bbb7e3f5b7eac8cd6dbd61fbf1a65142902b7502/designs/ppm-2.2/ppm-v2.zip -------------------------------------------------------------------------------- /designs/ppm-2.2/print: -------------------------------------------------------------------------------- 1 | ../../scripts/print -------------------------------------------------------------------------------- /designs/ppm-2.2/proj: -------------------------------------------------------------------------------- 1 | prj=ppm 2 | ver=2 3 | rev=2 4 | -------------------------------------------------------------------------------- /designs/ppm-2.2/v2-brd.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geekysuavo/pyppm/bbb7e3f5b7eac8cd6dbd61fbf1a65142902b7502/designs/ppm-2.2/v2-brd.pdf -------------------------------------------------------------------------------- /designs/ppm-2.2/v2-brd.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geekysuavo/pyppm/bbb7e3f5b7eac8cd6dbd61fbf1a65142902b7502/designs/ppm-2.2/v2-brd.png -------------------------------------------------------------------------------- /designs/ppm-2.2/v2r2.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geekysuavo/pyppm/bbb7e3f5b7eac8cd6dbd61fbf1a65142902b7502/designs/ppm-2.2/v2r2.pdf -------------------------------------------------------------------------------- /designs/scb-1.0/board: -------------------------------------------------------------------------------- 1 | ../../scripts/board -------------------------------------------------------------------------------- /designs/scb-1.0/bom: -------------------------------------------------------------------------------- 1 | ../../scripts/bom -------------------------------------------------------------------------------- /designs/scb-1.0/edit: -------------------------------------------------------------------------------- 1 | ../../scripts/edit -------------------------------------------------------------------------------- /designs/scb-1.0/extra: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | source proj 4 | 5 | sed -e 's@\(Q01\)-G@\1-1@g' \ 6 | -e 's@\(Q01\)-D@\1-4@g' \ 7 | -e 's@\(Q01\)-S@\1-3@g' \ 8 | -i v${ver}.net 9 | 10 | sed -e 's@\(Q02\)-G@\1-1@g' \ 11 | -e 's@\(Q02\)-D@\1-3@g' \ 12 | -e 's@\(Q02\)-S@\1-2@g' \ 13 | -i v${ver}.net 14 | 15 | -------------------------------------------------------------------------------- /designs/scb-1.0/print: -------------------------------------------------------------------------------- 1 | ../../scripts/print -------------------------------------------------------------------------------- /designs/scb-1.0/proj: -------------------------------------------------------------------------------- 1 | prj=scb 2 | ver=1 3 | -------------------------------------------------------------------------------- /designs/scb-1.0/scb-v1.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geekysuavo/pyppm/bbb7e3f5b7eac8cd6dbd61fbf1a65142902b7502/designs/scb-1.0/scb-v1.zip -------------------------------------------------------------------------------- /designs/scb-1.0/v1-brd.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geekysuavo/pyppm/bbb7e3f5b7eac8cd6dbd61fbf1a65142902b7502/designs/scb-1.0/v1-brd.pdf -------------------------------------------------------------------------------- /designs/scb-1.0/v1-brd.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geekysuavo/pyppm/bbb7e3f5b7eac8cd6dbd61fbf1a65142902b7502/designs/scb-1.0/v1-brd.png -------------------------------------------------------------------------------- /designs/scb-1.0/v1.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geekysuavo/pyppm/bbb7e3f5b7eac8cd6dbd61fbf1a65142902b7502/designs/scb-1.0/v1.pdf -------------------------------------------------------------------------------- /firmware/dds-1.0/Makefile: -------------------------------------------------------------------------------- 1 | # Makefile: all compilation and programming parameters for PPM firmware 2 | 3 | # define the project base filename 4 | PROJ=dds 5 | 6 | # list object files to be compiled into the project 7 | OBJECTS=main.o dds.o gpio.o spi.o 8 | COREOBJ=clk.o usb.o 9 | 10 | # include all software-global make rules. 11 | include ../global.mk 12 | 13 | -------------------------------------------------------------------------------- /firmware/dds-1.0/dds.h: -------------------------------------------------------------------------------- 1 | 2 | /* dds.h: PPM firmware timer/counter peripherals header. 3 | * Copyright (C) 2013 Bradley Worley 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see . 17 | */ 18 | 19 | /* ensure proper inclusion. */ 20 | #ifndef __PPM_DDS_H__ 21 | #define __PPM_DDS_H__ 22 | 23 | /* begin function declarations: */ 24 | 25 | void dds_init (void); 26 | 27 | void dds_set_frequency (void); 28 | 29 | #endif /* __PPM_DDS_H__ */ 30 | -------------------------------------------------------------------------------- /firmware/dds-1.0/main.h: -------------------------------------------------------------------------------- 1 | 2 | /* main.h: PPM firmware main header. 3 | * Copyright (C) 2013 Bradley Worley 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see . 17 | */ 18 | 19 | /* include required avr headers. */ 20 | #include 21 | #include 22 | #include 23 | #include 24 | #include 25 | 26 | /* include required PPM headers. */ 27 | #include "../lib/clk.h" 28 | #include "../lib/usb.h" 29 | #include "dds.h" 30 | #include "gpio.h" 31 | #include "spi.h" 32 | -------------------------------------------------------------------------------- /firmware/dds-1.0/spi.h: -------------------------------------------------------------------------------- 1 | 2 | /* spi.h: PPM firmware serial peripheral interface header. 3 | * Copyright (C) 2013 Bradley Worley 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see . 17 | */ 18 | 19 | /* ensure proper inclusion. */ 20 | #ifndef __PPM_SPI_H__ 21 | #define __PPM_SPI_H__ 22 | 23 | /* begin function declarations: */ 24 | 25 | void spi_init (void); 26 | 27 | uint16_t spi_read_adc (void); 28 | 29 | void spi_write_dac (uint16_t value); 30 | 31 | void spi_write_dac_8 (uint8_t value); 32 | 33 | #endif /* __PPM_SPI_H__ */ 34 | -------------------------------------------------------------------------------- /firmware/dds-1.1/main.c: -------------------------------------------------------------------------------- 1 | 2 | /* include the main header. */ 3 | #include "main.h" 4 | 5 | /* declare the assembly functions for the core dds algorithm. */ 6 | extern void dds_init (void); 7 | 8 | /* main: firmware execution entry point. */ 9 | int main (void) { 10 | /* disable the watchdog timer. */ 11 | MCUSR = 0x00; 12 | wdt_disable (); 13 | 14 | cli (); 15 | 16 | /* configure the clock prescaler for 16 mhz operation. */ 17 | CLKPR = (1 << CLKPCE); 18 | CLKPR = 0; 19 | 20 | /* enable output on GPIO D0, D1 and D2. */ 21 | DDRD |= ((1 << DDD0) | (1 << DDD1) | (1 << DDD2)); 22 | 23 | /* enable output on GPIO C5. */ 24 | DDRC |= (1 << DDC5); 25 | 26 | /* initialize the dds core functions and start the dds. */ 27 | dds_init (); 28 | 29 | /* loop indefinitely. */ 30 | while (1); 31 | 32 | /* nope. */ 33 | return 0; 34 | } 35 | 36 | -------------------------------------------------------------------------------- /firmware/dds-1.1/main.h: -------------------------------------------------------------------------------- 1 | 2 | /* include required avr headers. */ 3 | #include 4 | #include 5 | #include 6 | #include 7 | 8 | -------------------------------------------------------------------------------- /firmware/dig-1.0/Makefile: -------------------------------------------------------------------------------- 1 | 2 | # define the project base filename 3 | PROJ=ccu 4 | 5 | # list object files to be compiled into the project 6 | OBJECTS=main.o tcnt.o gpio.o spi.o 7 | COREOBJ=clk.o usb.o 8 | 9 | # include all software-global make rules. 10 | include ../global.mk 11 | 12 | -------------------------------------------------------------------------------- /firmware/dig-1.0/gpio.c: -------------------------------------------------------------------------------- 1 | 2 | /* gpio.c: CCU firmware general purpose input/output source code. 3 | * Copyright (C) 2013 Bradley Worley 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see . 17 | */ 18 | 19 | /* include the main header. */ 20 | #include "main.h" 21 | 22 | /* gpio_init: initialize general purpose input/output pins. */ 23 | void gpio_init (void) { 24 | /* initialize the PORTB data direction register. */ 25 | DDRB |= ((1 << DDB0) | (1 << DDB1) | (1 << DDB2) | (1 << DDB4)); 26 | DDRB &= ~((1 << DDB3) | (1 << DDB5) | (1 << DDB6) | (1 << DDB7)); 27 | 28 | /* initialize the PORTB outputs: ADC /CS pin is set high. */ 29 | PORTB = (1 << PORTB4); 30 | 31 | /* initialize all PORTC GPIO to hi-z. */ 32 | DDRC = 0; 33 | PORTC = 0; 34 | 35 | /* initialize all PORTD GPIO to hi-z. */ 36 | DDRD = 0; 37 | PORTD = 0; 38 | } 39 | -------------------------------------------------------------------------------- /firmware/dig-1.0/gpio.h: -------------------------------------------------------------------------------- 1 | 2 | /* gpio.h: CCU firmware general purpose input/output header. 3 | * Copyright (C) 2013 Bradley Worley 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see . 17 | */ 18 | 19 | /* ensure proper inclusion. */ 20 | #ifndef __CCU_GPIO_H__ 21 | #define __CCU_GPIO_H__ 22 | 23 | /* begin function declarations: */ 24 | 25 | void gpio_init (void); 26 | 27 | #endif /* __CCU_GPIO_H__ */ 28 | -------------------------------------------------------------------------------- /firmware/dig-1.0/main.h: -------------------------------------------------------------------------------- 1 | 2 | /* main.h: CCU firmware main header. 3 | * Copyright (C) 2013 Bradley Worley 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see . 17 | */ 18 | 19 | /* include required avr headers. */ 20 | #include 21 | #include 22 | #include 23 | #include 24 | 25 | /* include required CCU headers. */ 26 | #include "../lib/clk.h" 27 | #include "../lib/usb.h" 28 | #include "tcnt.h" 29 | #include "gpio.h" 30 | #include "spi.h" 31 | -------------------------------------------------------------------------------- /firmware/dig-1.0/spi.h: -------------------------------------------------------------------------------- 1 | 2 | /* spi.h: CCU firmware serial peripheral interface header. 3 | * Copyright (C) 2013 Bradley Worley 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see . 17 | */ 18 | 19 | /* ensure proper inclusion. */ 20 | #ifndef __CCU_SPI_H__ 21 | #define __CCU_SPI_H__ 22 | 23 | /* begin function declarations: */ 24 | 25 | void spi_init (void); 26 | 27 | uint16_t spi_read_adc (void); 28 | 29 | #endif /* __CCU_SPI_H__ */ 30 | -------------------------------------------------------------------------------- /firmware/dig-1.0/tcnt.h: -------------------------------------------------------------------------------- 1 | 2 | /* tcnt.h: CCU firmware timer/counter peripherals header. 3 | * Copyright (C) 2013 Bradley Worley 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see . 17 | */ 18 | 19 | /* ensure proper inclusion. */ 20 | #ifndef __CCU_TCNT_H__ 21 | #define __CCU_TCNT_H__ 22 | 23 | /* begin function declarations: */ 24 | 25 | void tcnt_init (void); 26 | 27 | void tcnt0_start (void); 28 | 29 | void tcnt1_start (void); 30 | 31 | #endif /* __CCU_TCNT_H__ */ 32 | -------------------------------------------------------------------------------- /firmware/lib/Makefile: -------------------------------------------------------------------------------- 1 | 2 | # dummy target to avoid warnings during source tree cleanup. 3 | clean: 4 | @echo " CLEAN" 5 | -------------------------------------------------------------------------------- /firmware/lib/clk.c: -------------------------------------------------------------------------------- 1 | 2 | /* clk.c: PPM firmware clocking source code. 3 | * Copyright (C) 2014 Bradley Worley 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see . 17 | */ 18 | 19 | /* include the clocking header. */ 20 | #include "clk.h" 21 | 22 | /* clk_init: initialize the clock sources and prescalers. */ 23 | void clk_init (void) { 24 | /* configure the system clock prescaler for full frequency operation. */ 25 | CLKPR = (1 << CLKPCE); 26 | CLKPR = 0; 27 | } 28 | 29 | /* pll_init: initialize the usb clock phase-locked loop. */ 30 | void pll_init (void) { 31 | /* configure the PLL prescaler to generate an 8.0 MHz clock. */ 32 | PLLCSR |= (1 << PINDIV); 33 | 34 | /* enable the PLL. */ 35 | PLLCSR |= (1 << PLLE); 36 | 37 | /* wait for the PLL to achieve lock. */ 38 | while (!(PLLCSR & (1 << PLOCK))); 39 | } 40 | -------------------------------------------------------------------------------- /firmware/lib/clk.h: -------------------------------------------------------------------------------- 1 | 2 | /* clk.h: PPM firmware clocking header. 3 | * Copyright (C) 2014 Bradley Worley 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see . 17 | */ 18 | 19 | /* include required avr headers. */ 20 | #include 21 | 22 | /* ensure proper inclusion. */ 23 | #ifndef __PPM_CLK_H__ 24 | #define __PPM_CLK_H__ 25 | 26 | /* redefine the PINDIV bit in PLLCSR to match the m32u2 datasheet. 27 | * m32u2 datasheet, sec 8.11.6, page 40. 28 | * m32u4 datasheet, sec 6.10.2, page 40. 29 | */ 30 | #ifndef _AVR_IOM32U4_H_ 31 | #define PINDIV PLLP0 32 | #endif 33 | 34 | /* begin function declarations: */ 35 | 36 | void clk_init (void); 37 | 38 | void pll_init (void); 39 | 40 | #endif /* __PPM_CLK_H__ */ 41 | -------------------------------------------------------------------------------- /firmware/ppm-1.1/Makefile: -------------------------------------------------------------------------------- 1 | # Makefile: all compilation and programming parameters for PPM firmware 2 | 3 | # define the project base filename and version. 4 | PROJ=ppm 5 | VER=1 6 | REV=1 7 | 8 | # list object files to be compiled into the project. 9 | OBJECTS=main.o ppm.o tcnt.o gpio.o spi.o 10 | COREOBJ=clk.o usb.o 11 | 12 | # include all software-global make rules. 13 | include ../global.mk 14 | 15 | -------------------------------------------------------------------------------- /firmware/ppm-1.1/gpio.h: -------------------------------------------------------------------------------- 1 | 2 | /* gpio.h: PPM firmware general purpose input/output header. 3 | * Copyright (C) 2014 Bradley Worley 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see . 17 | */ 18 | 19 | /* ensure proper inclusion. */ 20 | #ifndef __PPM_GPIO_H__ 21 | #define __PPM_GPIO_H__ 22 | 23 | /* include the gpio definitions. */ 24 | #include "gpio-defines.h" 25 | 26 | /* begin function declarations: */ 27 | 28 | void gpio_init (void); 29 | 30 | #endif /* __PPM_GPIO_H__ */ 31 | -------------------------------------------------------------------------------- /firmware/ppm-1.1/main.h: -------------------------------------------------------------------------------- 1 | 2 | /* main.h: PPM firmware main header. 3 | * Copyright (C) 2014 Bradley Worley 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see . 17 | */ 18 | 19 | /* include required avr headers. */ 20 | #include 21 | #include 22 | #include 23 | #include 24 | #include 25 | 26 | /* include global ppm headers. */ 27 | #include "../lib/seq.h" 28 | #include "../lib/clk.h" 29 | #include "../lib/usb.h" 30 | #include "../lib/msg.h" 31 | 32 | /* include local ppm headers. */ 33 | #include "ppm.h" 34 | #include "tcnt.h" 35 | #include "gpio.h" 36 | #include "spi.h" 37 | 38 | -------------------------------------------------------------------------------- /firmware/ppm-1.1/ppm.h: -------------------------------------------------------------------------------- 1 | 2 | /* ppm.h: PPM firmware main controller header. 3 | * Copyright (C) 2014 Bradley Worley 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see . 17 | */ 18 | 19 | /* ensure proper inclusion. */ 20 | #ifndef __PPM_PPM_H__ 21 | #define __PPM_PPM_H__ 22 | 23 | /* begin function declarations: */ 24 | 25 | inline void ppm_tick_del (void); 26 | 27 | inline void ppm_tick_acq (void); 28 | 29 | #endif /* __PPM_PPM_H__ */ 30 | -------------------------------------------------------------------------------- /firmware/ppm-1.1/spi.h: -------------------------------------------------------------------------------- 1 | 2 | /* spi.h: PPM firmware serial peripheral interface header. 3 | * Copyright (C) 2013 Bradley Worley 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see . 17 | */ 18 | 19 | /* ensure proper inclusion. */ 20 | #ifndef __PPM_SPI_H__ 21 | #define __PPM_SPI_H__ 22 | 23 | /* begin function declarations: */ 24 | 25 | void spi_init (void); 26 | 27 | uint16_t spi_read_adc (void); 28 | 29 | void spi_write_dac (uint16_t value); 30 | 31 | #endif /* __PPM_SPI_H__ */ 32 | -------------------------------------------------------------------------------- /firmware/ppm-1.1/tcnt.h: -------------------------------------------------------------------------------- 1 | 2 | /* tcnt.h: PPM firmware timer/counter peripherals header. 3 | * Copyright (C) 2014 Bradley Worley 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see . 17 | */ 18 | 19 | /* ensure proper inclusion. */ 20 | #ifndef __PPM_TCNT_H__ 21 | #define __PPM_TCNT_H__ 22 | 23 | /* begin function declarations: */ 24 | 25 | void tcnt_init (void); 26 | 27 | void tcnt0_start (void); 28 | 29 | void tcnt1_start (uint16_t ovf); 30 | 31 | inline void tcnt0_stop (void); 32 | 33 | inline void tcnt1_stop (void); 34 | 35 | #endif /* __PPM_TCNT_H__ */ 36 | -------------------------------------------------------------------------------- /firmware/ppm-1.2/Makefile: -------------------------------------------------------------------------------- 1 | # Makefile: all compilation and programming parameters for PPM firmware 2 | 3 | # define the project base filename and version. 4 | PROJ=ppm 5 | VER=1 6 | REV=2 7 | 8 | # list object files to be compiled into the project. 9 | OBJECTS=main.o ppm.o tcnt.o gpio.o spi.o 10 | COREOBJ=clk.o usb.o 11 | 12 | # include all software-global make rules. 13 | include ../global.mk 14 | 15 | -------------------------------------------------------------------------------- /firmware/ppm-1.2/gpio.h: -------------------------------------------------------------------------------- 1 | 2 | /* gpio.h: PPM firmware general purpose input/output header. 3 | * Copyright (C) 2013 Bradley Worley 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see . 17 | */ 18 | 19 | /* ensure proper inclusion. */ 20 | #ifndef __PPM_GPIO_H__ 21 | #define __PPM_GPIO_H__ 22 | 23 | /* include the gpio definitions. */ 24 | #include "gpio-defines.h" 25 | 26 | /* begin function declarations: */ 27 | 28 | void gpio_init (void); 29 | 30 | #endif /* __PPM_GPIO_H__ */ 31 | -------------------------------------------------------------------------------- /firmware/ppm-1.2/main.h: -------------------------------------------------------------------------------- 1 | 2 | /* main.h: PPM firmware main header. 3 | * Copyright (C) 2014 Bradley Worley 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see . 17 | */ 18 | 19 | /* include required avr headers. */ 20 | #include 21 | #include 22 | #include 23 | #include 24 | #include 25 | 26 | /* include global ppm headers. */ 27 | #include "../lib/seq.h" 28 | #include "../lib/clk.h" 29 | #include "../lib/usb.h" 30 | #include "../lib/msg.h" 31 | 32 | /* include local ppm headers. */ 33 | #include "ppm.h" 34 | #include "tcnt.h" 35 | #include "gpio.h" 36 | #include "spi.h" 37 | 38 | -------------------------------------------------------------------------------- /firmware/ppm-1.2/ppm.h: -------------------------------------------------------------------------------- 1 | 2 | /* ppm.h: PPM firmware main controller header. 3 | * Copyright (C) 2014 Bradley Worley 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see . 17 | */ 18 | 19 | /* ensure proper inclusion. */ 20 | #ifndef __PPM_PPM_H__ 21 | #define __PPM_PPM_H__ 22 | 23 | /* begin function declarations: */ 24 | 25 | inline void ppm_tick_del (void); 26 | 27 | inline void ppm_tick_acq (void); 28 | 29 | #endif /* __PPM_PPM_H__ */ 30 | -------------------------------------------------------------------------------- /firmware/ppm-1.2/spi.h: -------------------------------------------------------------------------------- 1 | 2 | /* spi.h: PPM firmware serial peripheral interface header. 3 | * Copyright (C) 2013 Bradley Worley 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see . 17 | */ 18 | 19 | /* ensure proper inclusion. */ 20 | #ifndef __PPM_SPI_H__ 21 | #define __PPM_SPI_H__ 22 | 23 | /* begin function declarations: */ 24 | 25 | void spi_init (void); 26 | 27 | uint16_t spi_read_adc (void); 28 | 29 | void spi_write_dac (uint16_t value); 30 | 31 | #endif /* __PPM_SPI_H__ */ 32 | -------------------------------------------------------------------------------- /firmware/ppm-1.2/tcnt.h: -------------------------------------------------------------------------------- 1 | 2 | /* tcnt.h: PPM firmware timer/counter peripherals header. 3 | * Copyright (C) 2014 Bradley Worley 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see . 17 | */ 18 | 19 | /* ensure proper inclusion. */ 20 | #ifndef __PPM_TCNT_H__ 21 | #define __PPM_TCNT_H__ 22 | 23 | /* begin function declarations: */ 24 | 25 | void tcnt_init (void); 26 | 27 | void tcnt0_start (void); 28 | 29 | void tcnt1_start (uint16_t ovf); 30 | 31 | inline void tcnt0_stop (void); 32 | 33 | inline void tcnt1_stop (void); 34 | 35 | #endif /* __PPM_TCNT_H__ */ 36 | -------------------------------------------------------------------------------- /firmware/ppm-1.3/Makefile: -------------------------------------------------------------------------------- 1 | # Makefile: all compilation and programming parameters for PPM firmware 2 | 3 | # define the project base filename and version. 4 | PROJ=ppm 5 | VER=1 6 | REV=3 7 | 8 | # list object files to be compiled into the project. 9 | OBJECTS=main.o ppm.o tcnt.o gpio.o spi.o 10 | COREOBJ=clk.o usb.o 11 | 12 | # include all software-global make rules. 13 | include ../global.mk 14 | 15 | -------------------------------------------------------------------------------- /firmware/ppm-1.3/gpio.h: -------------------------------------------------------------------------------- 1 | 2 | /* gpio.h: PPM firmware general purpose input/output header. 3 | * Copyright (C) 2014 Bradley Worley 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see . 17 | */ 18 | 19 | /* ensure proper inclusion. */ 20 | #ifndef __PPM_GPIO_H__ 21 | #define __PPM_GPIO_H__ 22 | 23 | /* include the gpio definitions. */ 24 | #include "gpio-defines.h" 25 | 26 | /* begin function declarations: */ 27 | 28 | void gpio_init (void); 29 | 30 | #endif /* __PPM_GPIO_H__ */ 31 | -------------------------------------------------------------------------------- /firmware/ppm-1.3/main.h: -------------------------------------------------------------------------------- 1 | 2 | /* main.h: PPM firmware main header. 3 | * Copyright (C) 2014 Bradley Worley 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see . 17 | */ 18 | 19 | /* include required avr headers. */ 20 | #include 21 | #include 22 | #include 23 | #include 24 | #include 25 | 26 | /* include global ppm headers. */ 27 | #include "../lib/seq.h" 28 | #include "../lib/clk.h" 29 | #include "../lib/usb.h" 30 | #include "../lib/msg.h" 31 | 32 | /* include local ppm headers. */ 33 | #include "ppm.h" 34 | #include "tcnt.h" 35 | #include "gpio.h" 36 | #include "spi.h" 37 | 38 | -------------------------------------------------------------------------------- /firmware/ppm-1.3/ppm.h: -------------------------------------------------------------------------------- 1 | 2 | /* ppm.h: PPM firmware main controller header. 3 | * Copyright (C) 2013 Bradley Worley 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see . 17 | */ 18 | 19 | /* ensure proper inclusion. */ 20 | #ifndef __PPM_PPM_H__ 21 | #define __PPM_PPM_H__ 22 | 23 | /* begin function declarations: */ 24 | 25 | inline void ppm_tick_del (void); 26 | 27 | inline void ppm_tick_acq (void); 28 | 29 | #endif /* __PPM_PPM_H__ */ 30 | -------------------------------------------------------------------------------- /firmware/ppm-1.3/spi.h: -------------------------------------------------------------------------------- 1 | 2 | /* spi.h: PPM firmware serial peripheral interface header. 3 | * Copyright (C) 2013 Bradley Worley 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see . 17 | */ 18 | 19 | /* ensure proper inclusion. */ 20 | #ifndef __PPM_SPI_H__ 21 | #define __PPM_SPI_H__ 22 | 23 | /* begin function declarations: */ 24 | 25 | void spi_init (void); 26 | 27 | uint16_t spi_read_adc (void); 28 | 29 | #endif /* __PPM_SPI_H__ */ 30 | -------------------------------------------------------------------------------- /firmware/ppm-1.3/tcnt.h: -------------------------------------------------------------------------------- 1 | 2 | /* tcnt.h: PPM firmware timer/counter peripherals header. 3 | * Copyright (C) 2014 Bradley Worley 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see . 17 | */ 18 | 19 | /* ensure proper inclusion. */ 20 | #ifndef __PPM_TCNT_H__ 21 | #define __PPM_TCNT_H__ 22 | 23 | /* begin function declarations: */ 24 | 25 | void tcnt_init (void); 26 | 27 | void tcnt0_start (void); 28 | 29 | void tcnt1_start (uint16_t ovf); 30 | 31 | inline void tcnt0_stop (void); 32 | 33 | inline void tcnt1_stop (void); 34 | 35 | #endif /* __PPM_TCNT_H__ */ 36 | -------------------------------------------------------------------------------- /firmware/ppm-2.1/Makefile: -------------------------------------------------------------------------------- 1 | # Makefile: all compilation and programming parameters for PPM firmware 2 | 3 | # define the project base filename and version. 4 | PROJ=ppm 5 | VER=2 6 | REV=1 7 | 8 | # list object files to be compiled into the project. 9 | OBJECTS=tcnt.o gpio.o spi.o ppm.o main.o 10 | COREOBJ=clk.o usb.o 11 | 12 | # include all software-global make rules. 13 | include ../global.mk 14 | 15 | # change the target microcontroller. 16 | MCU=atmega32u4 17 | 18 | -------------------------------------------------------------------------------- /firmware/ppm-2.1/gpio.h: -------------------------------------------------------------------------------- 1 | 2 | /* gpio.h: PPM firmware general purpose input/output header. 3 | * Copyright (C) 2014 Bradley Worley 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see . 17 | */ 18 | 19 | /* ensure proper inclusion. */ 20 | #ifndef __PPM_GPIO_H__ 21 | #define __PPM_GPIO_H__ 22 | 23 | /* include the gpio definitions. */ 24 | #include "gpio-defines.h" 25 | 26 | /* begin function declarations: */ 27 | 28 | void gpio_init (void); 29 | 30 | #endif /* __PPM_GPIO_H__ */ 31 | -------------------------------------------------------------------------------- /firmware/ppm-2.1/main.h: -------------------------------------------------------------------------------- 1 | 2 | /* main.h: PPM firmware main header. 3 | * Copyright (C) 2014 Bradley Worley 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see . 17 | */ 18 | 19 | /* include required avr headers. */ 20 | #include 21 | #include 22 | #include 23 | #include 24 | #include 25 | 26 | /* include global ppm headers. */ 27 | #include "../lib/seq.h" 28 | #include "../lib/clk.h" 29 | #include "../lib/usb.h" 30 | #include "../lib/msg.h" 31 | 32 | /* include local ppm headers. */ 33 | #include "ppm.h" 34 | #include "tcnt.h" 35 | #include "gpio.h" 36 | #include "spi.h" 37 | 38 | -------------------------------------------------------------------------------- /firmware/ppm-2.1/ppm.h: -------------------------------------------------------------------------------- 1 | 2 | /* ppm.h: PPM firmware main controller header. 3 | * Copyright (C) 2014 Bradley Worley 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see . 17 | */ 18 | 19 | /* ensure proper inclusion. */ 20 | #ifndef __PPM_PPM_H__ 21 | #define __PPM_PPM_H__ 22 | 23 | /* begin function declarations: */ 24 | 25 | #endif /* __PPM_PPM_H__ */ 26 | -------------------------------------------------------------------------------- /firmware/ppm-2.1/tcnt.h: -------------------------------------------------------------------------------- 1 | 2 | /* tcnt.h: PPM firmware timer/counter peripherals header. 3 | * Copyright (C) 2014 Bradley Worley 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see . 17 | */ 18 | 19 | /* ensure proper inclusion. */ 20 | #ifndef __PPM_TCNT_H__ 21 | #define __PPM_TCNT_H__ 22 | 23 | /* begin function declarations: */ 24 | 25 | extern void tcnt_init (void); 26 | 27 | extern uint16_t tcnt0_run_interp (uint16_t n, uint16_t astart, 28 | uint16_t astep, uint8_t dir); 29 | 30 | extern void tcnt0_run_pulse (uint32_t n, uint32_t f, uint8_t a); 31 | 32 | extern void tcnt1_run_acquire (uint32_t n, uint16_t ovf); 33 | 34 | #endif /* __PPM_TCNT_H__ */ 35 | -------------------------------------------------------------------------------- /firmware/ppm-2.2: -------------------------------------------------------------------------------- 1 | ppm-2.1 -------------------------------------------------------------------------------- /firmware/scb-1.0/Makefile: -------------------------------------------------------------------------------- 1 | # Makefile: all compilation and programming parameters for SCB firmware 2 | 3 | # define the project base filename and version. 4 | PROJ=scb 5 | VER=0 6 | REV=0 7 | 8 | # list object files to be compiled into the project. 9 | OBJECTS=main.o scb.o gpio.o spi.o 10 | COREOBJ=clk.o usb.o 11 | 12 | # include all software-global make rules. 13 | include ../global.mk 14 | 15 | -------------------------------------------------------------------------------- /firmware/scb-1.0/gpio.c: -------------------------------------------------------------------------------- 1 | 2 | /* gpio.c: SCB firmware general purpose input/output source code. 3 | * Copyright (C) 2014 Bradley Worley 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see . 17 | */ 18 | 19 | /* include the main header. */ 20 | #include "main.h" 21 | 22 | /* gpio_init: initialize general purpose input/output pins. */ 23 | void gpio_init (void) { 24 | /* initialize all PORTB GPIO to hi-z. */ 25 | DDRB = 0; 26 | PORTB = 0; 27 | 28 | /* initialize all PORTC GPIO to hi-z. */ 29 | DDRC = 0; 30 | PORTC = 0; 31 | 32 | /* initialize all PORTD GPIO to hi-z. */ 33 | DDRD = 0; 34 | PORTD = 0; 35 | 36 | /* initialize the spi digital-to-analog converter. */ 37 | gpio_dac_init (); 38 | 39 | /* initialize the high current regulator. */ 40 | gpio_ldo_init (); 41 | 42 | /* initialize the led indicator. */ 43 | gpio_led_init (); 44 | 45 | /* signal that general purpose i/o has initialized by turning on the 46 | * indicator led. 47 | */ 48 | gpio_led_comm_on (); 49 | } 50 | -------------------------------------------------------------------------------- /firmware/scb-1.0/gpio.h: -------------------------------------------------------------------------------- 1 | 2 | /* gpio.h: SCB firmware general purpose input/output header. 3 | * Copyright (C) 2014 Bradley Worley 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see . 17 | */ 18 | 19 | /* ensure proper inclusion. */ 20 | #ifndef __PPM_GPIO_H__ 21 | #define __PPM_GPIO_H__ 22 | 23 | /* include the gpio definitions. */ 24 | #include "gpio-defines.h" 25 | 26 | /* begin function declarations: */ 27 | 28 | void gpio_init (void); 29 | 30 | #endif /* __PPM_GPIO_H__ */ 31 | -------------------------------------------------------------------------------- /firmware/scb-1.0/main.h: -------------------------------------------------------------------------------- 1 | 2 | /* main.h: SCB firmware main header. 3 | * Copyright (C) 2013 Bradley Worley 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see . 17 | */ 18 | 19 | /* include required avr headers. */ 20 | #include 21 | #include 22 | #include 23 | #include 24 | #include 25 | 26 | /* include required SCB headers. */ 27 | #include "scb.h" 28 | #include "../lib/clk.h" 29 | #include "../lib/usb.h" 30 | #include "../lib/msg.h" 31 | #include "gpio.h" 32 | #include "spi.h" 33 | -------------------------------------------------------------------------------- /firmware/scb-1.0/scb.h: -------------------------------------------------------------------------------- 1 | 2 | /* scb.h: SCB firmware main controller header. 3 | * Copyright (C) 2013 Bradley Worley 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see . 17 | */ 18 | 19 | /* ensure proper inclusion. */ 20 | #ifndef __PPM_SCB_H__ 21 | #define __PPM_SCB_H__ 22 | 23 | /* begin function declarations: */ 24 | 25 | void ppm_done (void); 26 | 27 | void ppm_error (void); 28 | 29 | void ppm_version (void); 30 | 31 | void ppm_reset (void); 32 | 33 | void ppm_execute (void); 34 | 35 | void ppm_pulprog (void); 36 | 37 | #endif /* __PPM_SCB_H__ */ 38 | -------------------------------------------------------------------------------- /footprints/1455L1201.fp: -------------------------------------------------------------------------------- 1 | Element["" "Hammond 1455L1201" "" "" 10000 10000 33000 33000 0 100 ""] 2 | ( 3 | ElementLine [ 0 383500 472000 383500 1000] 4 | ElementLine [ 0 10000 472000 10000 1000] 5 | ElementLine [ 0 393500 0 0 1000] 6 | ElementLine [472000 393500 0 393500 1000] 7 | ElementLine [472000 0 472000 393500 1000] 8 | ElementLine [ 0 0 472000 0 1000] 9 | ) 10 | -------------------------------------------------------------------------------- /footprints/1455P1601.fp: -------------------------------------------------------------------------------- 1 | Element["" "Hammond 1455P1601" "" "" 10000 10000 33000 33000 0 100 ""] 2 | ( 3 | ElementLine [ 0 464400 630000 464400 1000] 4 | ElementLine [ 0 10000 630000 10000 1000] 5 | ElementLine [ 0 474400 0 0 1000] 6 | ElementLine [630000 474400 0 474400 1000] 7 | ElementLine [630000 0 630000 474400 1000] 8 | ElementLine [ 0 0 630000 0 1000] 9 | ) 10 | -------------------------------------------------------------------------------- /footprints/ABM7-SMD2.fp: -------------------------------------------------------------------------------- 1 | Element["" "ABM7-SMD2" "" "" 80550 120500 4050 -14000 0 100 ""] 2 | ( 3 | Pad[-8450 -1750 -8450 1750 7500 2000 8700 "" "1" "square"] 4 | Pad[8450 -1750 8450 1750 7500 2000 8700 "" "2" "square"] 5 | ElementLine [-13500 -7500 -13500 7500 1000] 6 | ElementLine [-13500 7500 13500 7500 1000] 7 | ElementLine [13500 7500 13500 -7500 1000] 8 | ElementLine [13500 -7500 -13500 -7500 1000] 9 | ) 10 | -------------------------------------------------------------------------------- /footprints/Battery-9V.fp: -------------------------------------------------------------------------------- 1 | Element[0x00 "9V Battery Holder" "" "" 1000 1000 1000 1000 0 100 0x00] 2 | ( 3 | ElementLine[ 0 0 190000 0 1000] 4 | ElementLine[190000 0 190000 112500 1000] 5 | ElementLine[190000 112500 0 112500 1000] 6 | ElementLine[ 0 112500 0 0 1000] 7 | 8 | Pin[194300 31250 10000 3000 13000 7000 "1" "1" 0x0001] 9 | Pin[205700 12250 10000 3000 13000 7000 "1a" "1a" 0x0001] 10 | Pin[205700 50250 10000 3000 13000 7000 "1b" "1b" 0x0001] 11 | 12 | Pin[194300 81250 10000 3000 13000 7000 "2" "2" 0x0101] 13 | Pin[205700 62250 10000 3000 13000 7000 "2a" "2a" 0x0001] 14 | Pin[205700 100250 10000 3000 13000 7000 "2b" "2b" 0x0001] 15 | 16 | Pin[ 21800 12500 16000 3000 18000 13000 "m1" "m1" 0x0001] 17 | Pin[ 21800 100000 16000 3000 18000 13000 "m2" "m2" 0x0001] 18 | Pin[159300 12500 16000 3000 18000 13000 "m3" "m3" 0x0001] 19 | Pin[159300 100000 16000 3000 18000 13000 "m4" "m4" 0x0001] 20 | ) 21 | -------------------------------------------------------------------------------- /footprints/Bourns-DPAK.fp: -------------------------------------------------------------------------------- 1 | Element[0x00000000 "Bourns power resistor" "" "DPAK" 0 0 0 0 0 100 0x00000000] 2 | ( 3 | Pad[ 0 -1250 0 1250 31000 4000 33000 "G" "G" 0x0100] 4 | Pad[-10000 27750 -10000 35750 7000 4000 9000 "1" "1" 0x0100] 5 | Pad[ 10000 27750 10000 35750 7000 4000 9000 "2" "2" 0x0100] 6 | ElementLine[-17000 18000 17000 18000 1000] 7 | ElementLine[-17000 18000 -17000 -18000 1000] 8 | ElementLine[ 17000 18000 17000 -18000 1000] 9 | ElementLine[-17000 -18000 17000 -18000 1000] 10 | ) 11 | -------------------------------------------------------------------------------- /footprints/CB3LV-7x5.fp: -------------------------------------------------------------------------------- 1 | Element["" "CB3LV-7x5" "" "" 80550 120500 4050 -14000 0 100 ""] 2 | ( 3 | Pad[-10000 8250 -10000 8250 7900 2000 8700 "" "1" "square"] 4 | Pad[ 10000 8250 10000 8250 7900 2000 8700 "" "2" "square"] 5 | Pad[ 10000 -8250 10000 -8250 7900 2000 8700 "" "3" "square"] 6 | Pad[-10000 -8250 -10000 -8250 7900 2000 8700 "" "4" "square"] 7 | 8 | ElementLine [-15000 -13000 -15000 13000 1000] 9 | ElementLine [-15000 13000 15000 13000 1000] 10 | ElementLine [ 15000 13000 15000 -13000 1000] 11 | ElementLine [ 15000 -13000 -15000 -13000 1000] 12 | 13 | ElementLine [-15000 3200 -5000 3200 1000] 14 | ElementLine [ -5000 3200 -5000 13000 1000] 15 | ) 16 | -------------------------------------------------------------------------------- /footprints/CTX02-13665.fp: -------------------------------------------------------------------------------- 1 | Element[0x00000000 "CTX02-13665" "" "CTX02" 0 0 0 0 0 100 0x00000000] 2 | ( 3 | Pad[-29000 0 -32000 0 7000 4000 9000 "1" "1" 0x0100] 4 | Pad[-29000 9840 -32000 9840 7000 4000 9000 "2" "2" 0x0100] 5 | Pad[-29000 19680 -32000 19680 7000 4000 9000 "3" "3" 0x0100] 6 | Pad[-29000 29520 -32000 29520 7000 4000 9000 "4" "4" 0x0100] 7 | Pad[-29000 39360 -32000 39360 7000 4000 9000 "5" "5" 0x0100] 8 | Pad[-29000 49200 -32000 49200 7000 4000 9000 "6" "6" 0x0100] 9 | 10 | Pad[ 29000 0 32000 0 7000 4000 9000 "12" "12" 0x0100] 11 | Pad[ 29000 9840 32000 9840 7000 4000 9000 "11" "11" 0x0100] 12 | Pad[ 29000 19680 32000 19680 7000 4000 9000 "10" "10" 0x0100] 13 | Pad[ 29000 29520 32000 29520 7000 4000 9000 "9" "9" 0x0100] 14 | Pad[ 29000 39360 32000 39360 7000 4000 9000 "8" "8" 0x0100] 15 | Pad[ 29000 49200 32000 49200 7000 4000 9000 "7" "7" 0x0100] 16 | 17 | ElementLine[-37000 54500 37000 54500 1000] 18 | ElementLine[-37000 54500 -37000 -5000 1000] 19 | ElementLine[ 37000 54500 37000 -5000 1000] 20 | ElementLine[-37000 -5000 37000 -5000 1000] 21 | ) 22 | -------------------------------------------------------------------------------- /footprints/CTX33-3.fp: -------------------------------------------------------------------------------- 1 | Element(0x00 "Cooper CTX3 Dual Inductor" "" "" 3930 170 -370 -60 0 100 0x00) 2 | ( 3 | ElementLine( 21 153 153 21 10) 4 | ElementLine(153 21 339 21 10) 5 | ElementLine(339 21 471 153 10) 6 | ElementLine(471 153 471 339 10) 7 | ElementLine(471 339 339 471 10) 8 | ElementLine(339 471 153 471 10) 9 | ElementLine(153 471 21 339 10) 10 | ElementLine( 21 339 21 153 10) 11 | 12 | ElementArc(80 206 20 20 0 360 10) 13 | 14 | Pad( 0 226 0 266 120 30 150 "1" "1" 0x00000100) 15 | Pad(226 0 266 0 120 30 150 "4" "4" 0x00000100) 16 | Pad(492 226 492 266 120 30 150 "3" "3" 0x00000100) 17 | Pad(226 492 266 492 120 30 150 "2" "2" 0x00000100) 18 | ) 19 | -------------------------------------------------------------------------------- /footprints/Coiltronics-UP04C.fp: -------------------------------------------------------------------------------- 1 | Element[0x00000000 "Coiltronics UP0.4C-xxx-R" "" "" 0 0 0 0 0 100 0x00000000] 2 | ( 3 | Pad[-10800 -2900 -10800 2900 5600 2000 7600 "" "1" 0x00000100] 4 | Pad[ 10800 -2900 10800 2900 5600 2000 7600 "" "2" 0x00000100] 5 | 6 | ElementLine[-9000 -6500 -9000 -9000 1000] 7 | ElementLine[ 9000 -6500 9000 -9000 1000] 8 | ElementLine[-9000 6500 -9000 9000 1000] 9 | ElementLine[ 9000 6500 9000 9000 1000] 10 | ElementLine[-9000 9000 9000 9000 1000] 11 | ElementLine[-9000 -9000 9000 -9000 1000] 12 | ) 13 | -------------------------------------------------------------------------------- /footprints/DCDC-DIP.fp: -------------------------------------------------------------------------------- 1 | Element["" "Dual in-line DC-DC package, wide (600 mil)" "" "DCDC-DIP" 126000 141000 32000 5000 3 100 ""] 2 | ( 3 | Pin[0 10000 7000 3000 7600 3800 "1" "1" ""] 4 | Pin[0 20000 7000 3000 7600 3800 "2" "2" ""] 5 | Pin[0 80000 7000 3000 7600 3800 "3" "3" ""] 6 | Pin[0 100000 7000 3000 7600 3800 "4" "4" ""] 7 | 8 | Pin[60000 100000 7000 3000 7600 3800 "5" "5" ""] 9 | Pin[60000 80000 7000 3000 7600 3800 "6" "6" ""] 10 | Pin[60000 20000 7000 3000 7600 3800 "7" "7" ""] 11 | Pin[60000 10000 7000 3000 7600 3800 "8" "8" ""] 12 | 13 | ElementLine [-10000 -5000 -10000 115000 1000] 14 | ElementLine [-10000 115000 70000 115000 1000] 15 | ElementLine [ 70000 115000 70000 -5000 1000] 16 | ElementLine [-10000 -5000 25000 -5000 1000] 17 | ElementLine [ 35000 -5000 70000 -5000 1000] 18 | 19 | ElementArc [30000 -5000 5000 5000 0 180 1000] 20 | ) 21 | -------------------------------------------------------------------------------- /footprints/DCDC-TDK.fp: -------------------------------------------------------------------------------- 1 | Element["" "TDK-Lambda DC-DC Converter" "" "" 80550 120500 4050 -14000 0 100 ""] 2 | ( 3 | Pad[-40500 0 -50500 0 5000 2000 6000 "1" "1" "square"] 4 | Pad[-40500 40000 -50500 40000 5000 2000 6000 "2" "2" "square"] 5 | Pad[-40500 60000 -50500 60000 5000 2000 6000 "3" "3" "square"] 6 | 7 | Pad[ 40500 60000 50500 60000 5000 2000 6000 "4" "4" "square"] 8 | Pad[ 40500 40000 50500 40000 5000 2000 6000 "5" "5" "square"] 9 | Pad[ 40500 20000 50500 20000 5000 2000 6000 "6" "6" "square"] 10 | Pad[ 40500 0 50500 0 5000 2000 6000 "7" "7" "square"] 11 | 12 | ElementLine[-45000 -11500 45000 -11500 1000] 13 | ElementLine[-45000 71500 45000 71500 1000] 14 | ElementLine[-45000 -11500 -45000 -3500 1000] 15 | ElementLine[ 45000 -11500 45000 -3500 1000] 16 | ElementLine[-45000 71500 -45000 63500 1000] 17 | ElementLine[ 45000 71500 45000 63500 1000] 18 | ElementLine[-45000 3500 -45000 36500 1000] 19 | ElementLine[ 45000 3500 45000 16500 1000] 20 | ElementLine[ 45000 23500 45000 36500 1000] 21 | ElementLine[-45000 43500 -45000 56500 1000] 22 | ElementLine[ 45000 43500 45000 56500 1000] 23 | 24 | ElementArc[-30000 -3500 2000 2000 0 360 1000] 25 | ) 26 | -------------------------------------------------------------------------------- /footprints/DPAK.fp: -------------------------------------------------------------------------------- 1 | Element[0x00000000 "IRF HEXFET" "" "DPAK" 0 0 0 0 0 100 0x00000000] 2 | ( 3 | Pad[ 0 0 0 0 28000 4000 30000 "4" "4" 0x0100] 4 | Pad[-9000 25200 -9000 29200 6000 4000 8000 "1" "1" 0x0100] 5 | Pad[ 9000 25200 9000 29200 6000 4000 8000 "3" "3" 0x0100] 6 | ElementLine[-15000 33500 15000 33500 1000] 7 | ElementLine[-15000 33500 -15000 -15000 1000] 8 | ElementLine[ 15000 33500 15000 -15000 1000] 9 | ElementLine[-15000 -15000 15000 -15000 1000] 10 | ) 11 | -------------------------------------------------------------------------------- /footprints/HC49US.fp: -------------------------------------------------------------------------------- 1 | Element[0x00000000 "HC49/US Crystal" "" "" 0 0 0 0 0 100 0x00000000] 2 | ( 3 | Pad[-11800 0 -25500 0 7900 2000 8900 "" "1" 0x00000100] 4 | Pad[ 11800 0 25500 0 7900 2000 8900 "" "2" 0x00000100] 5 | 6 | ElementLine[-21650 -4500 -21650 -9450 1000] 7 | ElementLine[ 21650 -4500 21650 -9450 1000] 8 | ElementLine[-21650 4500 -21650 9450 1000] 9 | ElementLine[ 21650 4500 21650 9450 1000] 10 | ElementLine[-21650 9450 21650 9450 1000] 11 | ElementLine[-21650 -9450 21650 -9450 1000] 12 | ) 13 | -------------------------------------------------------------------------------- /footprints/ISL9R-D2PAK.fp: -------------------------------------------------------------------------------- 1 | Element[0x00000000 "ISL9R Diode" "" "JEDEC TO-263AB" 0 0 0 0 0 100 0x00000000] 2 | ( 3 | Pad[ -6300 0 6300 0 37500 4000 39500 "1" "1" 0x0100] 4 | Pad[-10000 34400 -10000 44400 5000 4000 7000 "3" "3" 0x0100] 5 | Pad[ 10000 34400 10000 44400 5000 4000 7000 "2" "2" 0x0100] 6 | 7 | ElementLine[-27000 21000 27000 21000 1000] 8 | ElementLine[-27000 21000 -27000 -21000 1000] 9 | ElementLine[ 27000 21000 27000 -21000 1000] 10 | ElementLine[-27000 -21000 27000 -21000 1000] 11 | ) 12 | -------------------------------------------------------------------------------- /footprints/LT1210-DDPAK7.fp: -------------------------------------------------------------------------------- 1 | Element[0x00000000 "LT1210 D2PAK-7" "" "D2PAK-7" 0 0 0 0 0 100 0x00000000] 2 | ( 3 | Pad[-15000 31750 -15000 37250 3500 4000 5500 "1" "1" 0x0100] 4 | Pad[-10000 31750 -10000 37250 3500 4000 5500 "2" "2" 0x0100] 5 | Pad[ -5000 31750 -5000 37250 3500 4000 5500 "3" "3" 0x0100] 6 | Pad[ 0 31750 0 37250 3500 4000 5500 "4" "4" 0x0100] 7 | Pad[ 5000 31750 5000 37250 3500 4000 5500 "5" "5" 0x0100] 8 | Pad[ 10000 31750 10000 37250 3500 4000 5500 "6" "6" 0x0100] 9 | Pad[ 15000 31750 15000 37250 3500 4000 5500 "7" "7" 0x0100] 10 | Pad[ -3500 0 3500 0 35000 4000 37000 "8" "8" 0x0100] 11 | 12 | ElementLine[-24000 21000 24000 21000 1000] 13 | ElementLine[-24000 21000 -24000 -21000 1000] 14 | ElementLine[ 24000 21000 24000 -21000 1000] 15 | ElementLine[-24000 -21000 24000 -21000 1000] 16 | ) 17 | -------------------------------------------------------------------------------- /footprints/LT1764-DDPAK5.fp: -------------------------------------------------------------------------------- 1 | Element[0x00000000 "LT1764 D2PAK-5" "" "D2PAK-5" 0 0 0 0 0 100 0x00000000] 2 | ( 3 | Pad[-13400 34100 -13400 38900 4200 4000 6000 "1" "1" 0x0100] 4 | Pad[ -6700 34100 -6700 38900 4200 4000 6000 "2" "2" 0x0100] 5 | Pad[ 0 34100 0 38900 4200 4000 6000 "3" "3" 0x0100] 6 | Pad[ 6700 34100 6700 38900 4200 4000 6000 "4" "4" 0x0100] 7 | Pad[ 13400 34100 13400 38900 4200 4000 6000 "5" "5" 0x0100] 8 | Pad[ -3500 0 3500 0 35000 4000 37000 "6" "6" 0x0100] 9 | 10 | ElementLine[-24000 21000 24000 21000 1000] 11 | ElementLine[-24000 21000 -24000 -21000 1000] 12 | ElementLine[ 24000 21000 24000 -21000 1000] 13 | ElementLine[-24000 -21000 24000 -21000 1000] 14 | ) 15 | -------------------------------------------------------------------------------- /footprints/MSOP8_EP.fp: -------------------------------------------------------------------------------- 1 | Element["" "Mini small outline package, .65mm" "" "MSOP8_EP" 9000 8000 9900 3800 3 100 ""] 2 | ( 3 | Pad[-10600 0 -5900 0 1600 3000 2200 "1" "1" "square"] 4 | Pad[-10600 2600 -5900 2600 1600 3000 2200 "2" "2" "square"] 5 | Pad[-10600 5100 -5900 5100 1600 3000 2200 "3" "3" "square"] 6 | Pad[-10600 7700 -5900 7700 1600 3000 2200 "4" "4" "square"] 7 | 8 | Pad[5900 7800 10600 7800 1600 3000 2200 "5" "5" "square,edge2"] 9 | Pad[5900 5200 10600 5200 1600 3000 2200 "6" "6" "square,edge2"] 10 | Pad[5900 2700 10600 2700 1600 3000 2200 "7" "7" "square,edge2"] 11 | Pad[5900 100 10600 100 1600 3000 2200 "8" "8" "square,edge2"] 12 | 13 | Pad[ 0 3320 0 4580 6200 3000 6800 "9" "9" "square"] 14 | 15 | ElementLine [-12600 -2000 -12600 9700 1000] 16 | ElementLine [ 12600 -2000 12600 9700 1000] 17 | ElementLine [-12600 9700 12600 9700 1000] 18 | ElementLine [-12600 -2000 -1500 -2000 1000] 19 | ElementLine [ 12600 -2000 1500 -2000 1000] 20 | 21 | ElementArc [0 -2000 1500 1500 0 180 1000] 22 | ) 23 | -------------------------------------------------------------------------------- /footprints/Omron-G6A2.fp: -------------------------------------------------------------------------------- 1 | Element["" "Omron G6A-2" "" "G6A-2" 293000 207000 17000 5000 3 100 ""] 2 | ( 3 | Pin[ 0 0 8000 3000 8600 4000 "1" "1" "square"] 4 | Pin[ 0 30000 8000 3000 8600 4000 "4" "4" ""] 5 | Pin[ 0 50000 8000 3000 8600 4000 "6" "6" ""] 6 | Pin[ 0 70000 8000 3000 8600 4000 "8" "8" ""] 7 | Pin[30000 70000 8000 3000 8600 4000 "9" "9" ""] 8 | Pin[30000 50000 8000 3000 8600 4000 "11" "11" ""] 9 | Pin[30000 30000 8000 3000 8600 4000 "13" "13" ""] 10 | Pin[30000 0 8000 3000 8600 4000 "16" "16" ""] 11 | ElementLine [20000 -5000 35000 -5000 1000] 12 | ElementLine [-5000 -5000 10000 -5000 1000] 13 | ElementLine [35000 75000 35000 -5000 1000] 14 | ElementLine [-5000 75000 35000 75000 1000] 15 | ElementLine [-5000 -5000 -5000 75000 1000] 16 | ElementArc [15000 -5000 5000 5000 0 180 1000] 17 | 18 | ) 19 | -------------------------------------------------------------------------------- /footprints/Phone_Jack_PJ1535.fp: -------------------------------------------------------------------------------- 1 | Element(0x00000000 "Phone Jack PJ1535" "" "" 3930 170 -370 -60 0 100 0x00000000) 2 | ( 3 | Pin(-200 -195 130 30 150 90 "1" "1" 0x0001) 4 | Pin( 200 -195 130 30 150 90 "2" "2" 0x0001) 5 | Pin( 500 -195 130 30 150 90 "3" "3" 0x0001) 6 | Pin(-200 195 130 30 150 90 "tb" "" 0x0001) 7 | Pin( 200 195 130 30 150 90 "rb" "" 0x0001) 8 | Pin( 500 195 130 30 150 90 "sb" "" 0x0001) 9 | Pin( 0 0 170 30 190 130 "h1" "" 0x0001) 10 | 11 | ElementLine(-350 310 725 310 10) 12 | ElementLine(-350 -310 725 -310 10) 13 | ElementLine(-350 -310 -350 310 10) 14 | ElementLine( 725 -310 725 310 10) 15 | ) 16 | -------------------------------------------------------------------------------- /footprints/Power_Jack_PJ037.fp: -------------------------------------------------------------------------------- 1 | Element(0x00000000 "Power Jack PJ037" "" "" 3930 170 -370 -60 0 100 0x00000000) 2 | ( 3 | Pad(-511 150 -541 150 130 30 150 "2" "2" 0x00000100) 4 | Pad(-106 -86 -226 -86 130 30 150 "3" "3" 0x00000100) 5 | Pad(-116 437 -216 437 150 30 170 "1" "1" 0x00000100) 6 | 7 | ElementLine( 100 350 100 0 10) 8 | ElementLine(-470 350 100 350 10) 9 | ElementLine(-470 0 -470 350 10) 10 | ElementLine( 100 0 -470 0 10) 11 | 12 | Pin(-5 175 140 30 160 100 "h1" "" 0x0001) 13 | ) 14 | -------------------------------------------------------------------------------- /footprints/README.md: -------------------------------------------------------------------------------- 1 | # pyppm/footprints 2 | 3 | All custom [gEDA PCB](http://pcb.geda-project.org/) device footprints are 4 | placed in subdirectories here. 5 | 6 | ### Footprint files 7 | 8 | All files in this directory ending with `.fp` are footprint files. When they 9 | are installed into the `PCB` main directory, they will be stripped of this 10 | extension. 11 | 12 | For example, `DPAK.fp` may be referenced in schematics as `DPAK`, and will live 13 | in `/path/to/pcb/newlib/sockets/DPAK`. 14 | 15 | Yes, all footprints are installed into the `newlib/sockets` directory, because 16 | I'm a bit lazy. 17 | 18 | ### Installation script 19 | 20 | To install the custom footprints into your `PCB` main directory, first edit 21 | the `install` file. Make sure the path given on this line: 22 | 23 | > `PCBDIR=/usr/share/pcb` 24 | 25 | is correct. Then you can simply run the install script: 26 | 27 | > `./install` 28 | 29 | -------------------------------------------------------------------------------- /footprints/SOT28.fp: -------------------------------------------------------------------------------- 1 | Element(0x00 "SMT transistor, 8 pins" "" "SOT28" 138 0 3 100 0x00) 2 | ( 3 | ElementLine( 0 0 0 139 10) 4 | ElementLine( 0 139 157 139 10) 5 | ElementLine(157 139 157 0 10) 6 | ElementLine(157 0 0 0 10) 7 | 8 | Pad( 20 102 20 118 24 "1" "1" 0x100) 9 | Pad( 59 102 59 118 24 "2" "2" 0x100) 10 | Pad( 98 102 98 118 24 "3" "3" 0x100) 11 | Pad(137 102 137 118 24 "4" "4" 0x100) 12 | 13 | Pad(137 20 137 36 24 "5" "5" 0x100) 14 | Pad( 98 20 98 36 24 "6" "6" 0x100) 15 | Pad( 59 20 59 36 24 "7" "7" 0x100) 16 | Pad( 20 20 20 36 24 "8" "8" 0x100) 17 | 18 | Mark(20 110) 19 | ) 20 | -------------------------------------------------------------------------------- /footprints/TRAPC3MX.fp: -------------------------------------------------------------------------------- 1 | Element(0x00000000 "mini-XL Jack TRAPC" "" "" 3930 170 -370 -60 0 100 0x00000000) 2 | ( 3 | Pin(-235 0 130 40 170 75 "h1" "" 0x0001) 4 | Pin( 235 0 130 40 170 75 "h1" "" 0x0001) 5 | 6 | Pin( 100 110 75 30 100 45 "1" "1" 0x0001) 7 | Pin( 0 110 75 30 100 45 "2" "2" 0x0001) 8 | Pin(-100 110 75 30 100 45 "3" "3" 0x0001) 9 | 10 | ElementLine(-265 -135 265 -135 10) 11 | ElementLine(-265 375 265 375 10) 12 | ElementLine(-265 -135 -265 375 10) 13 | ElementLine( 265 -135 265 375 10) 14 | ) 15 | -------------------------------------------------------------------------------- /footprints/TSSOP16_EP.fp: -------------------------------------------------------------------------------- 1 | Element["" "TSSOP, standard (4.4mm), exposed pad" "" "TSSOP16_EP" 21614 18956 -2000 -6000 0 100 ""] 2 | ( 3 | Pad[-13917 -8956 -9311 -8956 1299 1000 2299 "1" "1" "square"] 4 | Pad[-13917 -6397 -9311 -6397 1299 1000 2299 "2" "2" "square"] 5 | Pad[-13917 -3838 -9311 -3838 1299 1000 2299 "3" "3" "square"] 6 | Pad[-13917 -1279 -9311 -1279 1299 1000 2299 "4" "4" "square"] 7 | Pad[-13917 1279 -9311 1279 1299 1000 2299 "5" "5" "square"] 8 | Pad[-13917 3838 -9311 3838 1299 1000 2299 "6" "6" "square"] 9 | Pad[-13917 6397 -9311 6397 1299 1000 2299 "7" "7" "square"] 10 | Pad[-13917 8956 -9311 8956 1299 1000 2299 "8" "8" "square"] 11 | Pad[9311 8956 13917 8956 1299 1000 2299 "9" "9" "square,edge2"] 12 | Pad[9311 6397 13917 6397 1299 1000 2299 "10" "10" "square,edge2"] 13 | Pad[9311 3838 13917 3838 1299 1000 2299 "11" "11" "square,edge2"] 14 | Pad[9311 1279 13917 1279 1299 1000 2299 "12" "12" "square,edge2"] 15 | Pad[9311 -1279 13917 -1279 1299 1000 2299 "13" "13" "square,edge2"] 16 | Pad[9311 -3838 13917 -3838 1299 1000 2299 "14" "14" "square,edge2"] 17 | Pad[9311 -6397 13917 -6397 1299 1000 2299 "15" "15" "square,edge2"] 18 | Pad[9311 -8956 13917 -8956 1299 1000 2299 "16" "16" "square,edge2"] 19 | Pad[0 0 0 0 10800 1000 11800 "17" "17" "square,edge2"] 20 | ElementLine [15566 -10606 2500 -10606 1000] 21 | ElementLine [-15566 -10606 -2500 -10606 1000] 22 | ElementLine [15566 10606 15566 -10606 1000] 23 | ElementLine [-15566 10606 15566 10606 1000] 24 | ElementLine [-15566 -10606 -15566 10606 1000] 25 | ElementArc [0 -10606 2500 2500 0 180 1000] 26 | 27 | ) 28 | -------------------------------------------------------------------------------- /footprints/Tact-Sw-FSMSM.fp: -------------------------------------------------------------------------------- 1 | Element[0x00000000 "Tactile Switch SPST-NO" "" "" 0 0 0 0 0 100 0x00000000] 2 | ( 3 | Pad[-18950 0 -16950 0 6300 2000 7900 "" "1" 0x00000100] 4 | Pad[ 16950 0 18950 0 6300 2000 7900 "" "2" 0x00000100] 5 | 6 | ElementLine[-13800 -4500 -13800 -6900 1000] 7 | ElementLine[ 13800 -4500 13800 -6900 1000] 8 | ElementLine[-13800 4500 -13800 6900 1000] 9 | ElementLine[ 13800 4500 13800 6900 1000] 10 | ElementLine[-13800 6900 13800 6900 1000] 11 | ElementLine[-13800 -6900 13800 -6900 1000] 12 | ) 13 | -------------------------------------------------------------------------------- /footprints/USB-Mini-B.fp: -------------------------------------------------------------------------------- 1 | Element[0x00000000 "USB mini-B" "" "" 0 0 0 0 0 100 0x00000000] 2 | ( 3 | Pin[-6890 0 5540 3000 6540 3540 "" "G" 0x00004001] 4 | Pin[ 6890 0 5540 3000 6540 3540 "" "G" 0x00004001] 5 | 6 | Pad[-17130 -7874 -15950 -7874 8660 2000 9460 "" "G" 0x00000100] 7 | Pad[ 15950 -7874 17130 -7874 8660 2000 9460 "" "G" 0x00000100] 8 | Pad[-17130 13000 -15950 13000 8660 2000 9460 "" "G" 0x00000100] 9 | Pad[ 15950 13000 17130 13000 8660 2000 9460 "" "G" 0x00000100] 10 | 11 | Pad[-6300 -5906 -6300 -12795 1969 2000 2769 "" "1" 0x00000100] 12 | Pad[-3150 -5906 -3150 -12795 1969 2000 2769 "" "2" 0x00000100] 13 | Pad[ 0 -5906 0 -12795 1969 2000 2769 "" "3" 0x00000100] 14 | Pad[ 3150 -5906 3150 -12795 1969 2000 2769 "" "4" 0x00000100] 15 | Pad[ 6300 -5906 6300 -12795 1969 2000 2769 "" "5" 0x00000100] 16 | 17 | ElementLine[-15160 25200 15160 25200 1000] 18 | ElementLine[-15160 25200 -15160 18000 1000] 19 | ElementLine[ 15160 25200 15160 18000 1000] 20 | ElementLine[-15160 7900 -15160 -2900 1000] 21 | ElementLine[ 15160 7900 15160 -2900 1000] 22 | ElementLine[ 11000 -7874 7900 -7874 1000] 23 | ElementLine[-11000 -7874 -7900 -7874 1000] 24 | ) 25 | -------------------------------------------------------------------------------- /footprints/install: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # set this to the path to the gEDA PCB main directory. 4 | PCBDIR=/usr/share/pcb 5 | 6 | # check if the sockets directory exists. 7 | if [ ! -d ${PCBDIR}/newlib/sockets ]; then 8 | # it doesn't! create it before proceeding. 9 | sudo install -v -d -m 755 -o root -g root ${PCBDIR}/newlib/sockets 10 | fi 11 | 12 | # loop through every file having a footprint extension. 13 | for f in $(find *.fp -type f); do 14 | # as root, install the file into the newlib/sockets directory. 15 | sudo install -v -m 644 -o root -g root ${f} \ 16 | ${PCBDIR}/newlib/sockets/$(basename ${f} .fp) 17 | done 18 | 19 | # sync the filesystem with the disks. 20 | sync 21 | 22 | -------------------------------------------------------------------------------- /models/1n4148.mod: -------------------------------------------------------------------------------- 1 | * 1n4148 standard diode 2 | * 3 | * Node assignments 4 | * connections: anode 5 | * | cathode 6 | * | | 7 | .subckt 1n4148 1 2 8 | * 9 | R1 1 2 5.827e+9 10 | D1 1 2 dx 11 | * 12 | .model dx d( 13 | + Is=4.352e-9 14 | + N=1.906 15 | + Bv=110 16 | + Ibv=0.0001 17 | + Rs=0.6458 18 | + Cjo=7.048e-13 19 | + Vj=0.869 20 | + M=0.03 21 | + Fc=0.5 22 | + Tt=3.48e-9) 23 | * 24 | .ends 1n4148 25 | * 26 | -------------------------------------------------------------------------------- /models/README.md: -------------------------------------------------------------------------------- 1 | # pyppm/models 2 | 3 | All SPICE models used by [ngspice](http://ngspice.sourceforge.net/) to run 4 | any simulations of PyPPM subcircuits are located here. The `pyppm/simulations` 5 | directory contains the netlist and simulation parameter files. 6 | 7 | -------------------------------------------------------------------------------- /models/lt1012.mod: -------------------------------------------------------------------------------- 1 | * lt1012 picoamp input current, microvolt offset, low-noise opamp 2 | * 3 | * Node assignments: 4 | * connections: non-inverting input 5 | * | inverting input 6 | * | | positive voltage 7 | * | | | negative voltage 8 | * | | | | output 9 | * | | | | | 10 | .subckt lt1012 3 2 7 4 6 11 | * 12 | * input section: 13 | Rc1 7 80 8842 14 | Rc2 7 90 8842 15 | Q1 80 2 10 Qm1 16 | Q2 90 3 11 Qm2 17 | Ddm1 2 3 Dm2 18 | Ddm2 3 2 Dm2 19 | C1 80 90 5.46e-12 20 | Re1 10 12 224.6 21 | Re2 11 12 224.6 22 | Iee 12 4 6.0e-6 23 | Re 12 0 33330000 24 | Ce 12 0 1.579e-12 25 | * 26 | * intermediate gain stage: 27 | Gcm 0 8 12 0 2.841e-11 28 | Ga 8 0 80 90 1.131e-04 29 | R2 8 0 100000 30 | C2 1 8 3.0e-11 31 | Gb 1 0 8 0 196 32 | * 33 | * output stage: 34 | Ro1 1 6 100 35 | Ro2 1 0 900 36 | Rc 17 0 1.063e-04 37 | Gc 0 17 6 0 9408 38 | D1 1 17 Dm1 39 | D2 17 1 Dm1 40 | D3 6 13 Dm2 41 | D4 14 6 Dm2 42 | Vc 7 13 1.785 43 | Ve 14 4 1.785 44 | Ip 7 4 0.000374 45 | Dsub 4 7 Dm2 46 | * 47 | * models used in the subcircuit: 48 | .model Qm1 npn(Is=8.0e-16 Bf=75000) 49 | .model Qm2 npn(Is=8.003e-16 Bf=150000) 50 | .model Dm1 d(Is=1.179e-19) 51 | .model Dm2 d(Is=8.0e-16) 52 | * 53 | .ends lt1012 54 | * 55 | -------------------------------------------------------------------------------- /models/lt1013.mod: -------------------------------------------------------------------------------- 1 | * lt1013 precision operational amplifier 2 | * 3 | * Node assignments: 4 | * connections: non-inverting input 5 | * | inverting input 6 | * | | positive voltage 7 | * | | | negative voltage 8 | * | | | | output 9 | * | | | | | 10 | .subckt lt1013 1 2 3 4 5 11 | * 12 | C1 11 12 6.49e-12 13 | C2 6 7 20.0e-12 14 | Dc 5 53 dx 15 | De 54 5 dx 16 | Dlp 90 91 dx 17 | Dln 92 90 dx 18 | Dp 4 3 dx 19 | Egnd 99 0 POLY(2) (3,0) (4,0) 0 0.5 0.5 20 | Fb 7 99 POLY(5) Vb Vc Ve Vlp Vln 0 3.865e+9 -4.0e+9 4.0e+9 4.0e+9 -4.0e+9 21 | Ga 6 0 11 12 87.97e-6 22 | Gcm 0 6 10 99 98.71e-12 23 | Iee 3 10 dc 8.03e-6 24 | Hlim 90 0 Vlim 1k 25 | Q1 11 2 13 qx 26 | Q2 12 1 14 qx 27 | R2 6 9 100.0e+3 28 | Rc1 4 11 11.37e+3 29 | Rc2 4 12 11.37e+3 30 | Re1 13 10 4.883e+3 31 | Re2 14 10 4.883e+3 32 | Ree 10 99 24.91e+6 33 | Ro1 8 5 50 34 | Ro2 7 99 25 35 | Rp 3 4 87.72e+3 36 | Vb 9 0 dc 0 37 | Vc 3 53 dc 1.6 38 | Ve 54 4 dc 1.6 39 | Vlim 7 8 dc 0 40 | Vlp 91 0 dc 25 41 | Vln 0 92 dc 25 42 | * 43 | * models used in the subcircuit: 44 | .model dx d(Is=800.0e-18) 45 | .model qx pnp(Is=800.0e-18 Bf=266.7) 46 | * 47 | .ends lt1013 48 | * 49 | -------------------------------------------------------------------------------- /models/mmbt3904.mod: -------------------------------------------------------------------------------- 1 | * mmbt3904 - npn general purpose amplifier 2 | * 3 | .model mmbt3904 npn( 4 | + Is=5.88844e-15 5 | + Bf=122.1 6 | + Nf=1 7 | + Br=7.3 8 | + Nr=1 9 | + Ise=1.0e-14 10 | + Ne=1.5 11 | + Isc=1.31826e-11 12 | + Nc=1.5 13 | + Vaf=74.03 14 | + Var=20 15 | + Ikf=0.069453 16 | + Ikr=0.017378 17 | + Rb=12.5 18 | + Rbm=10 19 | + Irb=2.51189e-5 20 | + Re=0.18 21 | + Rc=1.3 22 | + Cje=7.879424e-12 23 | + Vje=0.6464066 24 | + Mje=0.2596434 25 | + Fc=0.5 26 | + Cjc=4.291838e-12 27 | + Vjc=0.5 28 | + Mjc=0.1964945 29 | + Tf=3.012e-10 30 | + Xtf=2.0 31 | + Itf=0.4 32 | + Vtf=4.0 33 | + Tr=2.395e-7 34 | + Xtb=1.5 35 | + Eg=1.17 36 | + Xti=3) 37 | * 38 | -------------------------------------------------------------------------------- /models/mmbt3906.mod: -------------------------------------------------------------------------------- 1 | * mmbt3906 - pnp general purpose amplifier 2 | * 3 | .model mmbt3906 pnp( 4 | + Is=6.84896e-14 5 | + Bf=135.6 6 | + Nf=1.0 7 | + Br=0.304 8 | + Nr=1.0 9 | + Ise=5.524807e-13 10 | + Ne=1.5 11 | + Isc=1.71764e-10 12 | + Nc=1.5 13 | + Vaf=18.7 14 | + Var=200 15 | + Ikf=0.0882 16 | + Ikr=0.229087 17 | + Rb=1.05 18 | + Rbm=0.011 19 | + Irb=1.51189e-3 20 | + Re=0.022 21 | + Rc=1.57 22 | + Cje=8.032025e-12 23 | + Vje=0.7118251 24 | + Mje=0.3042244 25 | + Fc=0.5 26 | + Cjc=9.505229e-12 27 | + Vjc=0.8414405 28 | + Mjc=0.5 29 | + Tf=3.193e-10 30 | + Itf=0.4 31 | + Vtf=4.0 32 | + Xtf=6 33 | + Tr=3.342e-8 34 | + Xtb=1.58 35 | + Eg=0.78 36 | + Xti=3) 37 | * 38 | -------------------------------------------------------------------------------- /models/mmz2012r300a.mod: -------------------------------------------------------------------------------- 1 | * mmz2012r300a spice model 2 | * 3 | .subckt mmz2012r300a 1 2 4 | * 5 | C1 1 11 9.00e-13 6 | L1 1 11 2.50e-07 7 | R1 1 11 3.60e+01 8 | R2 2 11 1.00e-02 9 | * 10 | .ends mmz2012r300a 11 | * 12 | -------------------------------------------------------------------------------- /models/mur860.mod: -------------------------------------------------------------------------------- 1 | * mur860 high current diode 2 | * 3 | .model MUR860 d( 4 | + Is=1.43541e-07 5 | + Rs=0.0590751 6 | + N=2 7 | + Eg=1.3 8 | + Xti=4 9 | + Bv=600 10 | + Ibv=0.00001 11 | + Cjo=3.40446e-10 12 | + Vj=1.5 13 | + M=0.457394 14 | + Fc=0.5 15 | + Tt=9.98853e-08 16 | + Kf=0 17 | + Af=1) 18 | * 19 | -------------------------------------------------------------------------------- /models/sd101a.mod: -------------------------------------------------------------------------------- 1 | * sd101a diode spice model. 2 | * 3 | * Node assignments: 4 | * connections: anode 5 | * | cathode 6 | * | | 7 | .subckt sd101a 1 2 8 | * 9 | .model SD d( 10 | + N=1.70463 11 | + Is=1.55043e-007 12 | + Rs=31.5955 13 | + Eg=0.69 14 | + Xti=2 15 | + Cjo=2.0e-12 16 | + Vj=0.314625 17 | + M=0.188302 18 | + Fc=0.5 19 | + Tt=1.4427e-09 20 | + Bv=60 21 | + Ibv=0.001 22 | + Kf=0 23 | + Af=1) 24 | * 25 | .model PND d( 26 | + N=2.01276 27 | + Is=2.08639e-009 28 | + Rs=0.577781 29 | + Eg=1.11 30 | + Xti=3) 31 | * 32 | D1 1 2 SD 33 | D2 1 2 PND 34 | * 35 | .ends sd101a 36 | * 37 | -------------------------------------------------------------------------------- /notes/README.md: -------------------------------------------------------------------------------- 1 | # pyppm/notes 2 | 3 | All uncategorizable notes are placed here. Information that generally relates 4 | to the project, but cannot be placed into a more specific location will end 5 | up here. 6 | 7 | -------------------------------------------------------------------------------- /notes/gerbv-colors.md: -------------------------------------------------------------------------------- 1 | 2 | # Colors for rendering Gerber layouts 3 | 4 | | *Layer* | *Color* | 5 | |------------------|----------| 6 | | Background | 0xffffff | 7 | | Drill | 0xffffff | 8 | | Top silkscreen | 0x000000 | 9 | | Top soldermask | 0x545454 | 10 | | Top traces | 0xde5b4e | 11 | | Inner traces (3) | 0xdede4e | 12 | | Inner traces (4) | 0x4ede5e | 13 | | Bottom traces | 0x2a67b0 | 14 | 15 | -------------------------------------------------------------------------------- /notes/ppm-v1r1.md: -------------------------------------------------------------------------------- 1 | 2 | # Notes about the PyPPMv1r1 3 | 4 | ## Layer Stackup 5 | | *Num* | *Type* | *PCB Name* | *Gerber Name* | 6 | |-------|----------|-------------|---------------| 7 | | 1 | Signals | Component | top | 8 | | 2 | GND | GND | group3 | 9 | | 3 | +5V | Power | group4 | 10 | | 4 | -5V | Solder | back | 11 | 12 | ## Board Size 13 | 4.720" x 3.935" 14 | 15 | -------------------------------------------------------------------------------- /scripts/board: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # define default project parameters. 4 | prj=null 5 | ver=1 6 | rev=0 7 | 8 | # source the project parameter file. 9 | source proj 10 | 11 | # write a very loud confirmation request to the terminal, and read back a 12 | # response from the user. 13 | echo -n "*** ARE YOU SURE YOU WANT TO WIPE THE CURRENT PCB??? [yes/NO] " 14 | read confirmation 15 | 16 | # check if the response of the user was not precisely 'yes'. 17 | if [ ! "${confirmation}" == "yes" ]; then 18 | # nope. avoid trashing the current board design. 19 | echo "cancelling... later tater." 20 | exit 0 21 | fi 22 | 23 | # remove all previous board design files and rebuild them from scratch. 24 | rm -f v${ver}.{cmd,net,pcb} 25 | gsch2pcb -d /usr/share/pcb/newlib -o v${ver} *.sch 26 | 27 | # clean up and sync. 28 | rm -f *~ *.log 29 | sync 30 | 31 | -------------------------------------------------------------------------------- /scripts/bom: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # define default project parameters. 4 | prj=null 5 | ver=1 6 | rev=0 7 | 8 | # source the project parameter file. 9 | source proj 10 | 11 | # loop for each unique part number in the bill of materials file. 12 | for partno in $(awk -F ',' 'NF==4{print$4}' ${prj}-bom.csv | sort -u); do 13 | # find the number of occurrences of the part number in the BOM. 14 | n=$(awk -F ',' -v pn="${partno}" \ 15 | 'BEGIN {n = 0} $4 == pn {n++} END {print n}' \ 16 | ${prj}-bom.csv) 17 | 18 | # compute the required length to keep a 40-column total width. 19 | len=${#partno} 20 | nsep=$(expr 40 - ${len}) 21 | sep="" 22 | 23 | # build a separator string. 24 | for i in $(seq 1 ${nsep}); do 25 | sep="${sep} " 26 | done 27 | 28 | # print the final line of output. 29 | echo "${partno}${sep}${n}" 30 | done 31 | 32 | # sync the filesystem with the disks. 33 | sync 34 | 35 | -------------------------------------------------------------------------------- /scripts/bom.awk: -------------------------------------------------------------------------------- 1 | BEGIN { 2 | ref = ""; 3 | fpt = ""; 4 | num = ""; 5 | } 6 | /^refdes=/ { 7 | ref = $2; 8 | } 9 | /^footprint=/ { 10 | fpt = $2; 11 | } 12 | /^partno=/ { 13 | num = $2; 14 | } 15 | /^}/ { 16 | if (ref == part) { 17 | print "\"" part "\",\"" fpt "\",\"" num "\""; 18 | } 19 | ref = ""; 20 | fpt = ""; 21 | num = ""; 22 | } 23 | -------------------------------------------------------------------------------- /scripts/clean: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # define default project parameters. 4 | prj=null 5 | ver=1 6 | rev=0 7 | 8 | # source the project parameter file. 9 | source proj 10 | 11 | # clean up. 12 | rm -f ${prj}.raw ${prj}-sim.txt ${prj}.png 13 | 14 | -------------------------------------------------------------------------------- /scripts/edit: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # define default project parameters. 4 | prj=null 5 | ver=1 6 | rev=0 7 | 8 | # source the project parameter file. 9 | source proj 10 | 11 | # check if the use wants to edit the printed circuit board. 12 | if [ "${1}" == "pcb" -o "${1}" == "board" ]; then 13 | # edit the printed circuit board. 14 | pcb v${ver}.pcb 15 | 16 | # clean up when the user exits. 17 | rm -f v${ver}.pcb- 18 | 19 | # check if gerber files were created. 20 | if [ ! "$(ls | grep -e \.cnc -e \.gbr)" == "" ]; then 21 | # yes. create a gerber directory for zipping. 22 | install -d grb 23 | 24 | # remove any current gerber files. 25 | rm -f ${prj}-v${ver}.zip 26 | 27 | # move all generated gerber files into the zip directory. 28 | mv -f *.cnc *.gbr grb/ 29 | 30 | # move into the zip directory. 31 | pushd grb >/dev/null 32 | 33 | # remove undesired files and zip the desired ones together. 34 | rm -vf v${ver}.fab.gbr v${ver}.*paste.gbr 35 | zip -9 -l ../${prj}-v${ver}.zip *.cnc *.gbr 36 | 37 | # move out of the zip directory and clean up. 38 | popd >/dev/null 39 | rm -rf grb 40 | fi 41 | 42 | # check if a postscript file was created. 43 | if [ -e v${ver}.ps ]; then 44 | # yes. convert it to a pdf and clean up. 45 | mv -f v${ver}.ps v${ver}-brd.ps 46 | ps2pdf v${ver}-brd.ps 47 | rm -f v${ver}-brd.ps 48 | fi 49 | else 50 | # edit the schematics. 51 | gschem -q *.sch 52 | 53 | # clean up when the user exits. 54 | rm -f *~ *.log 55 | fi 56 | 57 | # sync the filesystem to the disks. 58 | sync 59 | 60 | -------------------------------------------------------------------------------- /scripts/effbw: -------------------------------------------------------------------------------- 1 | #!/usr/bin/octave -qf 2 | args = argv(); 3 | argc = length(args); 4 | x = load(args{1}); 5 | f = x(:, 1); 6 | A = x(:, 2); 7 | r = [f, A]; 8 | bw = trapz(f, A) ./ max(A); 9 | printf('effective bandwidth: %f kHz\n', bw / 1000); 10 | -------------------------------------------------------------------------------- /scripts/layer.awk: -------------------------------------------------------------------------------- 1 | BEGIN{ 2 | p = 0 3 | i = 0 4 | j = 0 5 | } 6 | { 7 | if ($1 == sprintf("Layer(%d", n)) { 8 | p = 1 9 | i = NR + 2 10 | } 11 | if (p && $0 ~ /^)/) { 12 | p = 0 13 | j = NR - 1 14 | } 15 | } 16 | END { 17 | print i, j 18 | } 19 | -------------------------------------------------------------------------------- /scripts/print: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # define default project parameters. 4 | prj=null 5 | ver=1 6 | rev=0 7 | 8 | # source the project parameter file. 9 | source proj 10 | 11 | # initialize the list of postscript files. 12 | postscripts="" 13 | 14 | # loop through each schematic file. 15 | for schematic in *.sch; do 16 | # build the postscript filename. 17 | postscript="$(echo ${schematic} | sed -e 's/sch/ps/')" 18 | rm -f ${postscript} $(basename ${postscript} .ps).pdf 19 | 20 | # print the schematic file to postscript. 21 | gschem -q -p -o${postscript} -s/usr/share/gEDA/scheme/print.scm ${schematic} 22 | 23 | # add the postscript filename to the list of postscript files. 24 | postscripts="${postscripts} ${postscript}" 25 | done 26 | 27 | # join the postscript files together into a master file. 28 | cat ${postscripts} > v${ver}r${rev}.ps 29 | 30 | # convert the master file to a pdf. 31 | sed -e "s/\(%%Title:\).*/\1 ${prj}v${ver}r${rev}/" -i v${ver}r${rev}.ps 32 | ps2pdf v${ver}r${rev}.ps 33 | 34 | # clean up and sync. 35 | rm -f *~ ${postscripts} v${ver}r${rev}.ps *.log 36 | sync 37 | 38 | -------------------------------------------------------------------------------- /simulations/README.md: -------------------------------------------------------------------------------- 1 | # pyppm/simulations 2 | 3 | All circuit simulations are placed in subdirectories here. You will need 4 | [ngspice and ngnutmeg](http://ngspice.sourceforge.net/) to run the 5 | simulations. 6 | 7 | In any of the design subdirectories, you can run `./build` to create the 8 | output files and `./clean` to remove the built output files. 9 | 10 | -------------------------------------------------------------------------------- /simulations/asc-1.0/asc.net: -------------------------------------------------------------------------------- 1 | * 2 | * voltage sources: 3 | Vdcpos vpos 0 5 4 | Vdcneg 0 vneg 5 5 | Vinput inpos inneg dc 0 ac 1u sin(0 1u 1k) 6 | * 7 | * input filter section: 8 | XlinA inpos ip1 mmz2012r300a 9 | XlinB inneg in1 mmz2012r300a 10 | RinA ip1 ip2 33.2 11 | RinB in1 in2 33.2 12 | CinA ip2 0 1n 13 | CinB in2 0 1n 14 | Cindiff ip2 in2 10n 15 | XddiffA ip2 in2 sd101a 16 | XddiffB in2 ip2 sd101a 17 | RgndretC ip2 0 1meg 18 | RgndretD in2 0 1meg 19 | * 20 | * instrumentation amplifier: 21 | Xina in2 ip2 vneg 0 inaout vpos ad8428 22 | * 23 | * inverting gain stage: 24 | Xpre prein prefb vpos vneg preout ad8597 25 | Chpf inaout prein 100n 26 | Rhpf prein 0 100k 27 | Rpre1 prefb 0 10 28 | Rpre2 prefb preout 1k 29 | * 30 | * filter block #1: 31 | Ra1 preout fa1 14.3k 32 | Ra2 fa1 0 15.4k 33 | Ra3 fa3 fa2 45.3k 34 | Ca1 fa1 fa2 10n 35 | Ca2 fa3 fa1 10n 36 | Xopa1 0 fa2 vpos vneg fa3 op162 37 | * 38 | * filter block #2: 39 | Rb1 fa3 fb1 5.49k 40 | Rb2 fb1 0 6.04k 41 | Rb3 fb3 fb2 17.4k 42 | Cb1 fb1 fb2 10n 43 | Cb2 fb3 fb1 10n 44 | Xopb1 0 fb2 vpos vneg fb3 op162 45 | * 46 | * filter block #3: 47 | Rc1 fb3 fc1 13.3k 48 | Rc2 fc1 0 5.23k 49 | Rc3 fc3 fc2 232k 50 | Cc1 fc1 fc2 10n 51 | Cc2 fc3 fc1 10n 52 | Xopc1 0 fc2 vpos vneg fc3 op162 53 | * 54 | * filter block #4: 55 | Rd1 fc3 fd1 2k 56 | Rd2 fd1 0 732 57 | Rd3 fout fd2 34.8k 58 | Cd1 fd1 fd2 10n 59 | Cd2 fout fd1 10n 60 | Xopd1 0 fd2 vpos vneg fout op162 61 | * 62 | * dc offset adjustment: 63 | Cdc fout dcout 100n 64 | Rdc1 vpos dcout 10k 65 | Rdc2 dcout 0 10k 66 | * 67 | * adc input driver: 68 | Xdrv dcout drvout vpos vneg drvout ada4841 69 | Rdrv drvout out 33 70 | Cdrv out 0 10n 71 | * 72 | -------------------------------------------------------------------------------- /simulations/asc-1.0/asc.nut: -------------------------------------------------------------------------------- 1 | set nobreak=1 2 | set width=1000 3 | setplot ac1 4 | print mag(inpos-inneg),ph(inpos),mag(out),ph(out) > tmp 5 | quit 6 | -------------------------------------------------------------------------------- /simulations/asc-1.0/asc.plt: -------------------------------------------------------------------------------- 1 | set terminal pngcairo size 1920,1280 lw 2 2 | set output 'asc.png' 3 | 4 | set tmargin 0 5 | set bmargin 0 6 | set lmargin 12 7 | set rmargin 6 8 | 9 | set multiplot layout 3,1 title 'asc-1.0 response' 10 | 11 | set xrange [200:10e3] 12 | set log x 13 | unset xtics 14 | set ylabel 'Gain (dB)' 15 | 16 | plot 'asc-meas.txt' u 1:(20*log10($3/$2)) \ 17 | w p pt 5 lt rgb '#ffbbbb' t 'G(w) (Actual)',\ 18 | 'asc-sim.txt' u 2:(20*log10($5/$3)) \ 19 | w l lt rgb '#ff0000' t 'G(w) (Theory)' 20 | 21 | set xtics 22 | set yrange [-180:180] 23 | set ytics 30 24 | set xlabel 'Frequency (Hz)' 25 | set ylabel 'Phase (deg)' 26 | 27 | plot 'asc-meas.txt' u 1:($4) \ 28 | w p pt 5 lt rgb '#bbbbff' t 'phi(w) (Actual)',\ 29 | 'asc-sim.txt' u 2:(($4-$6)*180/pi) \ 30 | w l lt rgb '#0000ff' t 'phi(w) (Theory)' 31 | 32 | unset multiplot 33 | 34 | -------------------------------------------------------------------------------- /simulations/asc-1.0/asc.spi: -------------------------------------------------------------------------------- 1 | * asc-1.0: complete analog signal chain for ppm design. 2 | * 3 | * included models: 4 | .include ../../models/op162.mod 5 | .include ../../models/ad8428.mod 6 | .include ../../models/ad8597.mod 7 | .include ../../models/ada4841.mod 8 | .include ../../models/sd101a.mod 9 | .include ../../models/mmz2012r300a.mod 10 | * 11 | * included netlists: 12 | .include asc.net 13 | * 14 | * simulation statements: 15 | .ac dec 500 1 10e6 16 | .tran 10u 22m 2m 10u 17 | * 18 | * wrap-up: 19 | .end 20 | * 21 | -------------------------------------------------------------------------------- /simulations/asc-1.0/build: -------------------------------------------------------------------------------- 1 | ../../scripts/build -------------------------------------------------------------------------------- /simulations/asc-1.0/clean: -------------------------------------------------------------------------------- 1 | ../../scripts/clean -------------------------------------------------------------------------------- /simulations/asc-1.0/proj: -------------------------------------------------------------------------------- 1 | prj=asc 2 | -------------------------------------------------------------------------------- /simulations/asc-1.1/asc.net: -------------------------------------------------------------------------------- 1 | * 2 | * voltage sources: 3 | Vdcpos vpos 0 5 4 | Vdcneg 0 vneg 5 5 | Vinput inpos inneg dc 0 ac 1u sin(0 1u 1k) 6 | * 7 | * input filter section: 8 | XlinA inpos ip1 mmz2012r300a 9 | XlinB inneg in1 mmz2012r300a 10 | RinA ip1 ip2 49.9 11 | RinB in1 in2 49.9 12 | CinA ip2 0 10n 13 | CinB in2 0 10n 14 | Cindiff ip2 in2 100n 15 | XddiffA ip2 in2 sd101a 16 | XddiffB in2 ip2 sd101a 17 | RgndretC ip2 0 1meg 18 | RgndretD in2 0 1meg 19 | * 20 | * instrumentation amplifier: 21 | Xina in2 ip2 vneg 0 inaout vpos ad8428 22 | * 23 | * inverting gain stage: 24 | Xpre prein prefb vpos vneg preout ad8597 25 | Chpf inaout prein 100n 26 | Rhpf prein 0 100k 27 | Rpre1 prefb 0 10 28 | Rpre2 prefb preout 1k 29 | * 30 | * filter block #1: 31 | Ra1 preout fa1 14.3k 32 | Ra2 fa1 0 15.4k 33 | Ra3 fa3 fa2 45.3k 34 | Ca1 fa1 fa2 10n 35 | Ca2 fa3 fa1 10n 36 | Xopa1 0 fa2 vpos vneg fa3 op162 37 | * 38 | * filter block #2: 39 | Rb1 fa3 fb1 5.49k 40 | Rb2 fb1 0 6.04k 41 | Rb3 fb3 fb2 17.4k 42 | Cb1 fb1 fb2 10n 43 | Cb2 fb3 fb1 10n 44 | Xopb1 0 fb2 vpos vneg fb3 op162 45 | * 46 | * filter block #3: 47 | Rc1 fb3 fc1 13.3k 48 | Rc2 fc1 0 5.23k 49 | Rc3 fc3 fc2 232k 50 | Cc1 fc1 fc2 10n 51 | Cc2 fc3 fc1 10n 52 | Xopc1 0 fc2 vpos vneg fc3 op162 53 | * 54 | * filter block #4: 55 | Rd1 fc3 fd1 2k 56 | Rd2 fd1 0 732 57 | Rd3 fout fd2 34.8k 58 | Cd1 fd1 fd2 10n 59 | Cd2 fout fd1 10n 60 | Xopd1 0 fd2 vpos vneg fout op162 61 | * 62 | * dc offset adjustment: 63 | Cdc fout dcout 100n 64 | Rdc1 vpos dcout 10k 65 | Rdc2 dcout 0 10k 66 | * 67 | * adc input driver: 68 | Xdrv dcout drvout vpos vneg drvout ada4841 69 | Rdrv drvout out 33 70 | Cdrv out 0 10n 71 | * 72 | -------------------------------------------------------------------------------- /simulations/asc-1.1/asc.nut: -------------------------------------------------------------------------------- 1 | set nobreak=1 2 | set width=1000 3 | setplot ac1 4 | print mag(inpos-inneg),ph(inpos),mag(out),ph(out) > tmp 5 | quit 6 | -------------------------------------------------------------------------------- /simulations/asc-1.1/asc.plt: -------------------------------------------------------------------------------- 1 | set terminal pngcairo size 1920,1280 lw 2 2 | set output 'asc.png' 3 | 4 | set tmargin 0 5 | set bmargin 0 6 | set lmargin 12 7 | set rmargin 6 8 | 9 | set multiplot layout 3,1 title 'asc-1.1 response' 10 | 11 | set xrange [200:10e3] 12 | set log x 13 | unset xtics 14 | set ylabel 'Gain (dB)' 15 | 16 | plot 'asc-meas.txt' u 1:(20*log10($3/$2)) \ 17 | w p pt 5 lt rgb '#ffbbbb' t 'G(w) (Actual)',\ 18 | 'asc-sim.txt' u 2:(20*log10($5/$3)) \ 19 | w l lt rgb '#ff0000' t 'G(w) (Theory)' 20 | 21 | set xtics 22 | set yrange [-180:180] 23 | set ytics 30 24 | set xlabel 'Frequency (Hz)' 25 | set ylabel 'Phase (deg)' 26 | 27 | plot 'asc-meas.txt' u 1:($4) \ 28 | w p pt 5 lt rgb '#bbbbff' t 'phi(w) (Actual)',\ 29 | 'asc-sim.txt' u 2:(($4-$6)*180/pi) \ 30 | w l lt rgb '#0000ff' t 'phi(w) (Theory)' 31 | 32 | unset multiplot 33 | 34 | -------------------------------------------------------------------------------- /simulations/asc-1.1/asc.spi: -------------------------------------------------------------------------------- 1 | * asc-1.0: complete analog signal chain for ppm design. 2 | * 3 | * included models: 4 | .include ../../models/op162.mod 5 | .include ../../models/ad8428.mod 6 | .include ../../models/ad8597.mod 7 | .include ../../models/ada4841.mod 8 | .include ../../models/sd101a.mod 9 | .include ../../models/mmz2012r300a.mod 10 | * 11 | * included netlists: 12 | .include asc.net 13 | * 14 | * simulation statements: 15 | .ac dec 500 1 10e6 16 | .tran 10u 22m 2m 10u 17 | * 18 | * wrap-up: 19 | .end 20 | * 21 | -------------------------------------------------------------------------------- /simulations/asc-1.1/build: -------------------------------------------------------------------------------- 1 | ../../scripts/build -------------------------------------------------------------------------------- /simulations/asc-1.1/clean: -------------------------------------------------------------------------------- 1 | ../../scripts/clean -------------------------------------------------------------------------------- /simulations/asc-1.1/proj: -------------------------------------------------------------------------------- 1 | prj=asc 2 | -------------------------------------------------------------------------------- /simulations/dig-1.0/dig-floor.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geekysuavo/pyppm/bbb7e3f5b7eac8cd6dbd61fbf1a65142902b7502/simulations/dig-1.0/dig-floor.png -------------------------------------------------------------------------------- /simulations/dig-1.0/dig-sin1k.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geekysuavo/pyppm/bbb7e3f5b7eac8cd6dbd61fbf1a65142902b7502/simulations/dig-1.0/dig-sin1k.png -------------------------------------------------------------------------------- /simulations/dig-1.0/dig.plt: -------------------------------------------------------------------------------- 1 | set terminal png size 1920,1280 lw 2 2 | set output 'dig-sin1k.png' 3 | 4 | set xlabel 'Frequency (kHz)' 5 | set ylabel 'Input (dBFS)' 6 | 7 | plot 'dig-sin1k.txt' u ($1/1e3):(20*log10($2)-83.6) \ 8 | w l lt rgb '#ff0000' t 'Input (Actual)' 9 | 10 | set output 'dig-floor.png' 11 | set multiplot layout 2,1 title 'dig noise floor' 12 | 13 | set xlabel 'Frequency (kHz)' 14 | set ylabel 'Input (dBFS)' 15 | 16 | plot 'dig-floor-freq.txt' u ($1/1e3):(20*log10($2)-83.6) \ 17 | w l lt rgb '#ff0000' t 'Noise floor (Actual)' 18 | 19 | set xrange [0.0000:0.8192] 20 | set yrange [0.0005:0.0020] 21 | set xlabel 'Time (s)' 22 | set ylabel 'Input (V)' 23 | 24 | plot 'dig-floor-time.txt' u 1:2 \ 25 | w l lt rgb '#0000ff' t 'Noise floor (Actual)' 26 | 27 | -------------------------------------------------------------------------------- /simulations/dig-1.0/proj: -------------------------------------------------------------------------------- 1 | prj=dig 2 | -------------------------------------------------------------------------------- /simulations/fil-1.0/build: -------------------------------------------------------------------------------- 1 | ../../scripts/build -------------------------------------------------------------------------------- /simulations/fil-1.0/clean: -------------------------------------------------------------------------------- 1 | ../../scripts/clean -------------------------------------------------------------------------------- /simulations/fil-1.0/fil.net: -------------------------------------------------------------------------------- 1 | * 2 | * voltage sources: 3 | Vdcpos vpos 0 5 4 | Vdcneg 0 vneg 5 5 | Vinput inp 0 dc 0 ac 100m sin(0 100m 1k) 6 | * 7 | * filter block #1: 8 | Ra1 inp fa1 14.3k 9 | Ra2 fa1 0 15.4k 10 | Ra3 fa3 fa2 45.3k 11 | Ca1 fa1 fa2 10n 12 | Ca2 fa3 fa1 10n 13 | Xopa1 0 fa2 vpos vneg fa3 op162 14 | * 15 | * filter block #2: 16 | Rb1 fa3 fb1 5.49k 17 | Rb2 fb1 0 6.04k 18 | Rb3 fb3 fb2 17.4k 19 | Cb1 fb1 fb2 10n 20 | Cb2 fb3 fb1 10n 21 | Xopb1 0 fb2 vpos vneg fb3 op162 22 | * 23 | * filter block #3: 24 | Rc1 fb3 fc1 13.3k 25 | Rc2 fc1 0 5.23k 26 | Rc3 fc3 fc2 232k 27 | Cc1 fc1 fc2 10n 28 | Cc2 fc3 fc1 10n 29 | Xopc1 0 fc2 vpos vneg fc3 op162 30 | * 31 | * filter block #4: 32 | Rd1 fc3 fd1 2k 33 | Rd2 fd1 0 732 34 | Rd3 out fd2 34.8k 35 | Cd1 fd1 fd2 10n 36 | Cd2 out fd1 10n 37 | Xopd1 0 fd2 vpos vneg out op162 38 | * 39 | -------------------------------------------------------------------------------- /simulations/fil-1.0/fil.nut: -------------------------------------------------------------------------------- 1 | set nobreak=1 2 | set width=1000 3 | setplot ac1 4 | print mag(inp),ph(inp),mag(out),ph(out) > tmp 5 | quit 6 | -------------------------------------------------------------------------------- /simulations/fil-1.0/fil.plt: -------------------------------------------------------------------------------- 1 | set terminal png size 1920,1280 lw 2 2 | set output 'fil.png' 3 | 4 | set tmargin 0 5 | set bmargin 0 6 | set lmargin 12 7 | set rmargin 6 8 | 9 | set multiplot layout 3,1 title 'fil response' 10 | 11 | set xrange [200:10e3] 12 | set log x 13 | unset xtics 14 | set ylabel 'Gain (dB)' 15 | 16 | plot 'fil-meas.txt' u 1:(20*log10($3/$2)) \ 17 | w p pt 5 lt rgb '#ffbbbb' t 'G(w) (Actual)',\ 18 | 'fil-sim.txt' u 2:(20*log10($5/$3)) \ 19 | w l lt rgb '#ff0000' t 'G(w) (Theory)' 20 | 21 | set xtics 22 | set yrange [-180:180] 23 | set ytics 30 24 | set xlabel 'Frequency (Hz)' 25 | set ylabel 'Phase (deg)' 26 | 27 | plot 'fil-meas.txt' u 1:($4) \ 28 | w p pt 5 lt rgb '#bbbbff' t 'phi(w) (Actual)',\ 29 | 'fil-sim.txt' u 2:(($4-$6)*180/pi) \ 30 | w l lt rgb '#0000ff' t 'phi(w) (Theory)' 31 | 32 | unset multiplot 33 | 34 | -------------------------------------------------------------------------------- /simulations/fil-1.0/fil.spi: -------------------------------------------------------------------------------- 1 | * fil-1.0: chebyshev active bandpass filter. 2 | * 3 | * included models: 4 | .include ../../models/op162.mod 5 | * 6 | * included netlists: 7 | .include fil.net 8 | * 9 | * simulation statements: 10 | .ac dec 500 1 10e6 11 | .tran 10u 22m 2m 10u 12 | * 13 | * wrap-up: 14 | .end 15 | * 16 | -------------------------------------------------------------------------------- /simulations/fil-1.0/proj: -------------------------------------------------------------------------------- 1 | prj=fil 2 | -------------------------------------------------------------------------------- /simulations/ina-1.0/build: -------------------------------------------------------------------------------- 1 | ../../scripts/build -------------------------------------------------------------------------------- /simulations/ina-1.0/clean: -------------------------------------------------------------------------------- 1 | ../../scripts/clean -------------------------------------------------------------------------------- /simulations/ina-1.0/ina.net: -------------------------------------------------------------------------------- 1 | * 2 | * voltage sources: 3 | Vdcpos vpos 0 5 4 | Vdcneg 0 vneg 5 5 | Vinput inpos inneg dc 0 ac 1u sin(0 1u 1k) 6 | * 7 | * input filter section: 8 | XlinA inpos ip1 mmz2012r300a 9 | XlinB inneg in1 mmz2012r300a 10 | RinA ip1 ip2 49.9 11 | RinB in1 in2 49.9 12 | CinA ip2 0 1n 13 | CinB in2 0 1n 14 | Cindiff ip2 in2 10n 15 | XddiffA ip2 in2 sd101a 16 | XddiffB in2 ip2 sd101a 17 | RgndretC ip2 0 1meg 18 | RgndretD in2 0 1meg 19 | * 20 | * instrumentation amplifier: 21 | Xina in2 ip2 vneg 0 out vpos ad8428 22 | Rload out 0 1k 23 | * 24 | -------------------------------------------------------------------------------- /simulations/ina-1.0/ina.nut: -------------------------------------------------------------------------------- 1 | set nobreak=1 2 | set width=1000 3 | setplot ac1 4 | print mag(inpos-inneg),ph(inpos),mag(out),ph(out) > tmp 5 | quit 6 | -------------------------------------------------------------------------------- /simulations/ina-1.0/ina.plt: -------------------------------------------------------------------------------- 1 | set terminal png size 1920,1280 lw 2 2 | set output 'ina.png' 3 | 4 | set tmargin 0 5 | set bmargin 0 6 | set lmargin 12 7 | set rmargin 6 8 | 9 | set multiplot layout 3,1 title 'ina-1.0 response' 10 | 11 | set xrange [100:1e6] 12 | set log x 13 | unset xtics 14 | set ylabel 'Gain (dB)' 15 | 16 | plot 'ina-meas.txt' u 1:(20*log10($3/$2/9.999e-6)) \ 17 | w p pt 5 lt rgb '#ffbbbb' t 'G(w) (Actual)',\ 18 | 'ina-sim.txt' u 2:(20*log10($5/$3)) \ 19 | w l lt rgb '#ff0000' t 'G(w) (Theory)' 20 | 21 | set xtics 22 | set yrange [-180:180] 23 | set ytics 30 24 | set xlabel 'Frequency (Hz)' 25 | set ylabel 'Phase (deg)' 26 | 27 | plot 'ina-meas.txt' u 1:(-abs($4)+180) \ 28 | w p pt 5 lt rgb '#bbbbff' t 'phi(w) (Actual)',\ 29 | 'ina-sim.txt' u 2:(($4-$6)*180/pi) \ 30 | w l lt rgb '#0000ff' t 'phi(w) (Theory)' 31 | 32 | unset multiplot 33 | 34 | -------------------------------------------------------------------------------- /simulations/ina-1.0/ina.spi: -------------------------------------------------------------------------------- 1 | * ina-1.0: low-noise instrumentation preamplifier 2 | * 3 | * included models: 4 | .include ../../models/mmz2012r300a.mod 5 | .include ../../models/sd101a.mod 6 | .include ../../models/ad8428.mod 7 | * 8 | * included netlists: 9 | .include ina.net 10 | * 11 | * simulation statements: 12 | .ac dec 500 1 10e6 13 | .tran 10u 22m 2m 10u 14 | * 15 | * wrap-up: 16 | .end 17 | * 18 | -------------------------------------------------------------------------------- /simulations/ina-1.0/proj: -------------------------------------------------------------------------------- 1 | prj=ina 2 | -------------------------------------------------------------------------------- /simulations/ina-1.1/build: -------------------------------------------------------------------------------- 1 | ../../scripts/build -------------------------------------------------------------------------------- /simulations/ina-1.1/clean: -------------------------------------------------------------------------------- 1 | ../../scripts/clean -------------------------------------------------------------------------------- /simulations/ina-1.1/ina.net: -------------------------------------------------------------------------------- 1 | * 2 | * voltage sources: 3 | Vdcpos vpos 0 5 4 | Vdcneg 0 vneg 5 5 | Vinput inpos inneg dc 0 ac 1u sin(0 1u 1k) 6 | * 7 | * input filter section: 8 | XlinA inpos ip1 mmz2012r300a 9 | XlinB inneg in1 mmz2012r300a 10 | RinA ip1 ip2 49.9 11 | RinB in1 in2 49.9 12 | CinA ip2 0 10n 13 | CinB in2 0 10n 14 | Cindiff ip2 in2 100n 15 | XddiffA ip2 in2 sd101a 16 | XddiffB in2 ip2 sd101a 17 | RgndretC ip2 0 1meg 18 | RgndretD in2 0 1meg 19 | * 20 | * instrumentation amplifier: 21 | Xina in2 ip2 vneg 0 out vpos ad8428 22 | Rload out 0 1k 23 | * 24 | -------------------------------------------------------------------------------- /simulations/ina-1.1/ina.nut: -------------------------------------------------------------------------------- 1 | set nobreak=1 2 | set width=1000 3 | setplot ac1 4 | print mag(inpos-inneg),ph(inpos),mag(out),ph(out) > tmp 5 | quit 6 | -------------------------------------------------------------------------------- /simulations/ina-1.1/ina.plt: -------------------------------------------------------------------------------- 1 | set terminal png size 1920,1280 lw 2 2 | set output 'ina.png' 3 | 4 | set tmargin 0 5 | set bmargin 0 6 | set lmargin 12 7 | set rmargin 6 8 | 9 | set multiplot layout 3,1 title 'ina-1.1 response' 10 | 11 | set xrange [100:1e6] 12 | set log x 13 | unset xtics 14 | set ylabel 'Gain (dB)' 15 | 16 | plot 'ina-meas.txt' u 1:(20*log10($3/$2/9.999e-6)) \ 17 | w p pt 5 lt rgb '#ffbbbb' t 'G(w) (Actual)',\ 18 | 'ina-sim.txt' u 2:(20*log10($5/$3)) \ 19 | w l lt rgb '#ff0000' t 'G(w) (Theory)' 20 | 21 | set xtics 22 | set yrange [-180:180] 23 | set ytics 30 24 | set xlabel 'Frequency (Hz)' 25 | set ylabel 'Phase (deg)' 26 | 27 | plot 'ina-meas.txt' u 1:(-abs($4)+180) \ 28 | w p pt 5 lt rgb '#bbbbff' t 'phi(w) (Actual)',\ 29 | 'ina-sim.txt' u 2:(($4-$6)*180/pi) \ 30 | w l lt rgb '#0000ff' t 'phi(w) (Theory)' 31 | 32 | unset multiplot 33 | 34 | -------------------------------------------------------------------------------- /simulations/ina-1.1/ina.spi: -------------------------------------------------------------------------------- 1 | * ina-1.1: low-noise instrumentation preamplifier 2 | * 3 | * included models: 4 | .include ../../models/mmz2012r300a.mod 5 | .include ../../models/sd101a.mod 6 | .include ../../models/ad8428.mod 7 | * 8 | * included netlists: 9 | .include ina.net 10 | * 11 | * simulation statements: 12 | .ac dec 500 1 10e6 13 | .tran 10u 22m 2m 10u 14 | * 15 | * wrap-up: 16 | .end 17 | * 18 | -------------------------------------------------------------------------------- /simulations/ina-1.1/proj: -------------------------------------------------------------------------------- 1 | prj=ina 2 | -------------------------------------------------------------------------------- /simulations/osc-1.0/build: -------------------------------------------------------------------------------- 1 | ../../scripts/build -------------------------------------------------------------------------------- /simulations/osc-1.0/clean: -------------------------------------------------------------------------------- 1 | ../../scripts/clean -------------------------------------------------------------------------------- /simulations/osc-1.0/osc.net: -------------------------------------------------------------------------------- 1 | * 2 | * voltage sources: 3 | Vdc vpos 0 9 4 | * 5 | * oscillator: 6 | Xop1 voap voan vpos 0 hvout lt1012 7 | * 8 | * positive feedback network: 9 | Rp1 vpos voap 10k 10 | Rp2 voap 0 10k 11 | Rpfb hvout voap 470k 12 | * 13 | * negative feedback sub-network a: 14 | Xd1 hvout na 1n4148 15 | Xd2 na hvout 1n4148 16 | Ra1 na voan 470k 17 | * 18 | * negative feedback sub-network b: 19 | Rb1 hvout nb 33k 20 | Rb2 nb voan 33k 21 | Cb1 nb 0 10n 22 | * 23 | * negative feedback sub-network c: 24 | Cc1 hvout nc 4.7n 25 | Cc2 nc voan 4.7n 26 | Rc1 nc 0 15k 27 | * 28 | * final output voltage divider: 29 | Rdiv1 hvout out 1meg 30 | Rdiv2 out 0 10 31 | * 32 | -------------------------------------------------------------------------------- /simulations/osc-1.0/osc.nut: -------------------------------------------------------------------------------- 1 | set nobreak=1 2 | set width=1000 3 | setplot tran1 4 | print time,mag(out) > tmp 5 | quit 6 | -------------------------------------------------------------------------------- /simulations/osc-1.0/osc.plt: -------------------------------------------------------------------------------- 1 | set terminal png size 1920,1280 lw 2 2 | set output 'osc.png' 3 | 4 | set title 'osc output' 5 | 6 | set xrange [100:10e3] 7 | set yrange [-100:20] 8 | set log x 9 | unset xtics 10 | set ylabel 'Output (dB)' 11 | set xlabel 'Frequency (Hz)' 12 | 13 | plot 'osc-meas.txt' u 1:(20*log10($2)-98) \ 14 | w lp pt 5 lt rgb '#ffbbbb' t 'G(w) (Actual)',\ 15 | 'osc-sim.txt' u 1:2 \ 16 | w l lt rgb '#ff0000' t 'G(w) (Theory)' 17 | 18 | -------------------------------------------------------------------------------- /simulations/osc-1.0/osc.spi: -------------------------------------------------------------------------------- 1 | * osc-1.0: 1khz low-voltage test oscillator 2 | * 3 | * included models: 4 | .include ../../models/lt1012.mod 5 | .include ../../models/1n4148.mod 6 | * 7 | * included netlists: 8 | .include osc.net 9 | * 10 | * simulation statements: 11 | .tran 10u 500m 300m 10u 12 | * 13 | * wrap-up: 14 | .end 15 | * 16 | -------------------------------------------------------------------------------- /simulations/osc-1.0/proj: -------------------------------------------------------------------------------- 1 | prj=osc 2 | -------------------------------------------------------------------------------- /simulations/sink-1.0/build: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | set_start=100 4 | set_end=5000 5 | set_step=500 6 | 7 | rm -f sink-lin.txt 8 | 9 | if [ -e sink-tran.tar.gz ]; then 10 | tar xf sink-tran.tar.gz && rm -f sink-tran.tar.gz 11 | fi 12 | 13 | if [ -e sink-hist.tar.gz ]; then 14 | tar xf sink-hist.tar.gz && rm -f sink-hist.tar.gz 15 | fi 16 | 17 | for setpt in $(seq ${set_start} ${set_step} ${set_end}); do 18 | cat > sink.nut << EOF 19 | set nobreak=1 20 | set width=1000 21 | setplot tran1 22 | print time,mag(sense) > sink-tran-${setpt}.txt 23 | quit 24 | EOF 25 | 26 | cat > sink.m << EOF 27 | x = load('sink-tran-${setpt}.txt'); 28 | t = x(:,1); 29 | v = x(:,2); 30 | [nn,xx] = hist(v,500); 31 | idx = find(xx > 0.002); 32 | xx = xx(idx); 33 | nn = nn(idx); 34 | val = xx(find(nn == max(nn))); 35 | dataout = [xx; nn]'; 36 | save('-ascii','sink-hist-${setpt}.txt','dataout'); 37 | printf('%e %e\n',${setpt}/1000,val/0.5); 38 | EOF 39 | 40 | sed -e "s@%%SETPOINT%%@${setpt}@" sink.spi.in > sink.spi 41 | 42 | if [ ! -e sink-tran-${setpt}.txt -a ! -e sink-hist-${setpt}.txt ]; then 43 | ngspice -b sink.spi -r sink.raw 44 | ngnutmeg sink.raw < sink.nut 45 | 46 | awk '/^[0-9]/{print$2,$3}' sink-tran-${setpt}.txt > tmp && \ 47 | mv tmp sink-tran-${setpt}.txt 48 | fi 49 | 50 | octave -q sink.m >> sink-lin.txt 51 | 52 | rm -f sink.nut sink.m sink.spi sink.raw 53 | done 54 | 55 | gnuplot sink.plt 56 | 57 | tar cf sink-tran.tar sink-tran-*.txt && gzip -f9 sink-tran.tar 58 | tar cf sink-hist.tar sink-hist-*.txt && gzip -f9 sink-hist.tar 59 | 60 | rm -f sink-tran-*.txt sink-hist-*.txt sink-lin.txt 61 | 62 | -------------------------------------------------------------------------------- /simulations/sink-1.0/sink.spi.in: -------------------------------------------------------------------------------- 1 | * opamp-servoed pulsed dc constant current sink 2 | * 3 | * include required spice models 4 | .include ../../models/irlr024n.mod 5 | .include ../../models/ad8591.mod 6 | .include ../../models/ad8541.mod 7 | * 8 | * usb bus voltage, battery voltage and setpoint voltage 9 | Vdc bus 0 dc 5.0 10 | Vin set 0 pulse(0v %%SETPOINT%%mv 20m 1u 1u 10m 20m) 11 | Vbat bat 0 dc 15.0 12 | * 13 | * output load resistor 14 | Rload bat drain 1 15 | * 16 | * opamp input voltage divider, approximates A=0.4 17 | Rdiv1 set div 100k 18 | Rdiv2 div 0 25k 19 | * 20 | * mosfet-buffered opamp current sink subcircuit 21 | Xopa div sense bus 0 opout ad8541 22 | Rgate opout gate 100 23 | Xfet drain gate sense irlr024n 24 | Lsense sense senseB 100n 25 | Rsense senseB 0 0.5 26 | Ccomp opout sense 10n 27 | * 28 | * output analyses 29 | .tran 1u 40m 10m 1u 30 | .ac dec 40 1 10meg 31 | * 32 | * finish up 33 | .end 34 | * 35 | -------------------------------------------------------------------------------- /simulations/sink-2.0/build: -------------------------------------------------------------------------------- 1 | ../../scripts/build -------------------------------------------------------------------------------- /simulations/sink-2.0/clean: -------------------------------------------------------------------------------- 1 | ../../scripts/clean -------------------------------------------------------------------------------- /simulations/sink-2.0/proj: -------------------------------------------------------------------------------- 1 | prj=sink 2 | -------------------------------------------------------------------------------- /simulations/sink-2.0/sink.net: -------------------------------------------------------------------------------- 1 | * 2 | * voltage sources: 3 | Vdc batt 0 12 4 | Vin g 0 pulse(0v 12v 0 10n 10n 10m 100m) 5 | * 6 | Rload batt l 6.0 7 | Lload l d 10m 8 | * 9 | Xfet d g 0 irlr024n 10 | **Dfly d batt mur860 11 | **Cd d 0 1u 12 | * 13 | -------------------------------------------------------------------------------- /simulations/sink-2.0/sink.nut: -------------------------------------------------------------------------------- 1 | set nobreak=1 2 | set width=1000 3 | setplot tran1 4 | print mag(g),mag(batt)-mag(d) > tmp 5 | quit 6 | -------------------------------------------------------------------------------- /simulations/sink-2.0/sink.plt: -------------------------------------------------------------------------------- 1 | set terminal pngcairo size 1920,1280 lw 2 2 | set output 'sink.png' 3 | 4 | set tmargin 0 5 | set bmargin 0 6 | set lmargin 12 7 | set rmargin 6 8 | 9 | set multiplot layout 3,1 title 'sink transient' 10 | 11 | set xrange [200:10e3] 12 | set log x 13 | unset xtics 14 | set ylabel 'Gain (dB)' 15 | 16 | plot 'asc-meas.txt' u 1:(20*log10($3/$2)) \ 17 | w p pt 5 lt rgb '#ffbbbb' t 'G(w) (Actual)',\ 18 | 'asc-sim.txt' u 2:(20*log10($5/$3)) \ 19 | w l lt rgb '#ff0000' t 'G(w) (Theory)' 20 | 21 | set xtics 22 | set yrange [-180:180] 23 | set ytics 30 24 | set xlabel 'Frequency (Hz)' 25 | set ylabel 'Phase (deg)' 26 | 27 | plot 'asc-meas.txt' u 1:($4) \ 28 | w p pt 5 lt rgb '#bbbbff' t 'phi(w) (Actual)',\ 29 | 'asc-sim.txt' u 2:(($4-$6)*180/pi) \ 30 | w l lt rgb '#0000ff' t 'phi(w) (Theory)' 31 | 32 | unset multiplot 33 | 34 | -------------------------------------------------------------------------------- /simulations/sink-2.0/sink.raw: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geekysuavo/pyppm/bbb7e3f5b7eac8cd6dbd61fbf1a65142902b7502/simulations/sink-2.0/sink.raw -------------------------------------------------------------------------------- /simulations/sink-2.0/sink.spi: -------------------------------------------------------------------------------- 1 | * asc-1.0: complete analog signal chain for ppm design. 2 | * 3 | * included models: 4 | .include ../../models/irlr024n.mod 5 | .include ../../models/mur860.mod 6 | * 7 | * included netlists: 8 | .include sink.net 9 | * 10 | * simulation statements: 11 | .tran 10u 200m 2m 10u 12 | * 13 | * wrap-up: 14 | .end 15 | * 16 | -------------------------------------------------------------------------------- /software/cli/Makefile: -------------------------------------------------------------------------------- 1 | 2 | # define the software targets and object filenames. 3 | TARGETS=rst wpp rpp zg ver ft hrft wfp snd 4 | OBJECTS=$(addsuffix .o,$(TARGETS)) 5 | 6 | # include all software-global make rules. 7 | include ../global.mk 8 | 9 | # define a rule to check for required external packages. 10 | packages: sndfile.pc 11 | 12 | # add in sndfile compilation flags. 13 | CFLAGS+= $(call pkg_cflags,sndfile) -DHAVE_SNDFILE 14 | LDFLAGS+= $(call pkg_libs,sndfile) 15 | 16 | # add in verbosity compilation flags. 17 | CFLAGS+= -DPPM_CORE_VERBOSE 18 | 19 | # define a rule to install all command-line tools into the path. 20 | install: 21 | @for target in $(TARGETS); do \ 22 | echo " INSTALL $$target"; \ 23 | $(INSTALL) $$target $(BINDIR)/; \ 24 | done 25 | -------------------------------------------------------------------------------- /software/cli/rpp.c: -------------------------------------------------------------------------------- 1 | 2 | /* rpp.c: source file for the command-line pulprog read routine. 3 | * Copyright (C) 2014 Bradley Worley . 4 | * 5 | * This program is free software; you can redistribute it and/or 6 | * modify it under the terms of the GNU General Public License 7 | * as published by the Free Software Foundation; either version 2 8 | * of the License, or (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program; if not, write to: 17 | * 18 | * Free Software Foundation, Inc. 19 | * 51 Franklin Street, Fifth Floor 20 | * Boston, MA 02110-1301, USA. 21 | */ 22 | 23 | /* include the PPM header. */ 24 | #include "ppm.h" 25 | 26 | /* main: application entry point. */ 27 | int main (int argc, char **argv) { 28 | /* declare required variables. */ 29 | ppm_prog pp; 30 | 31 | /* read the pulse program from the device. */ 32 | if (!ppm_rpp (NULL, &pp)) { 33 | /* output an error. */ 34 | fprintf (stderr, "error: rpp failed\n"); 35 | 36 | /* return an error. */ 37 | return 1; 38 | } 39 | 40 | /* dump the hex contents of the pulse program. */ 41 | ppm_prog_write (stdout, &pp); 42 | 43 | /* return success. */ 44 | return 0; 45 | } 46 | -------------------------------------------------------------------------------- /software/cli/rst.c: -------------------------------------------------------------------------------- 1 | 2 | /* rst.c: source file for the command-line device reset routine. 3 | * Copyright (C) 2014 Bradley Worley . 4 | * 5 | * This program is free software; you can redistribute it and/or 6 | * modify it under the terms of the GNU General Public License 7 | * as published by the Free Software Foundation; either version 2 8 | * of the License, or (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program; if not, write to: 17 | * 18 | * Free Software Foundation, Inc. 19 | * 51 Franklin Street, Fifth Floor 20 | * Boston, MA 02110-1301, USA. 21 | */ 22 | 23 | /* include the PPM header. */ 24 | #include "ppm.h" 25 | 26 | /* main: application entry point. */ 27 | int main (int argc, char **argv) { 28 | /* reset the device. */ 29 | if (!ppm_rst (NULL)) { 30 | /* output an error message. */ 31 | fprintf (stderr, "error: rst failed\n"); 32 | 33 | /* return an error. */ 34 | return 1; 35 | } 36 | 37 | /* return success. */ 38 | return 0; 39 | } 40 | -------------------------------------------------------------------------------- /software/cli/ver.c: -------------------------------------------------------------------------------- 1 | 2 | /* ver.c: source file for the command-line parms read routine. 3 | * Copyright (C) 2014 Bradley Worley . 4 | * 5 | * This program is free software; you can redistribute it and/or 6 | * modify it under the terms of the GNU General Public License 7 | * as published by the Free Software Foundation; either version 2 8 | * of the License, or (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program; if not, write to: 17 | * 18 | * Free Software Foundation, Inc. 19 | * 51 Franklin Street, Fifth Floor 20 | * Boston, MA 02110-1301, USA. 21 | */ 22 | 23 | /* include the PPM header. */ 24 | #include "ppm.h" 25 | 26 | /* main: application entry point. */ 27 | int main (int argc, char **argv) { 28 | /* declare required variables. */ 29 | int ver, rev; 30 | 31 | /* initialize the version values. */ 32 | ver = rev = 0; 33 | 34 | /* read the version information. */ 35 | if (!ppm_ver (NULL, &ver, &rev)) { 36 | /* output an error message. */ 37 | fprintf (stderr, "error: ver failed\n"); 38 | 39 | /* return an error. */ 40 | return 1; 41 | } 42 | 43 | /* return success. */ 44 | return 0; 45 | } 46 | -------------------------------------------------------------------------------- /software/core/Makefile: -------------------------------------------------------------------------------- 1 | 2 | # include all software-global make rules. 3 | include ../global.mk 4 | 5 | -------------------------------------------------------------------------------- /software/core/ppm-fall.h: -------------------------------------------------------------------------------- 1 | 2 | /* ppm-fall.h: header for passing around waterfall-plot data. 3 | * Copyright (C) 2014 Bradley Worley . 4 | * 5 | * This program is free software; you can redistribute it and/or 6 | * modify it under the terms of the GNU General Public License 7 | * as published by the Free Software Foundation; either version 2 8 | * of the License, or (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program; if not, write to: 17 | * 18 | * Free Software Foundation, Inc. 19 | * 51 Franklin Street, Fifth Floor 20 | * Boston, MA 02110-1301, USA. 21 | */ 22 | 23 | /* ensure proper inclusion. */ 24 | #ifndef __PPM_FALL_H__ 25 | #define __PPM_FALL_H__ 26 | 27 | /* include the PPM header. */ 28 | #include "ppm.h" 29 | 30 | /* define a structure for holding waterfall data. */ 31 | typedef struct ppm_fall_t { 32 | /* store the size of the matrix. */ 33 | unsigned int nfreq, ntime; 34 | 35 | /* store the time, frequency, and voltage values. */ 36 | double *t, *f, **v; 37 | } ppm_fall; 38 | 39 | /* function delarations. */ 40 | 41 | int ppm_fall_alloc (ppm_fall *wfall, unsigned int nr, unsigned int nc); 42 | 43 | void ppm_fall_empty (ppm_fall *wfall); 44 | 45 | int ppm_fall_write (ppm_fall *wfall, const char *fname); 46 | 47 | /* ensure proper inclusion. */ 48 | #endif 49 | -------------------------------------------------------------------------------- /software/core/ppm-tune.h: -------------------------------------------------------------------------------- 1 | 2 | /* ppm-tune.h: header for managing capacitive tuning functions. 3 | * Copyright (C) 2014 Bradley Worley . 4 | * 5 | * This program is free software; you can redistribute it and/or 6 | * modify it under the terms of the GNU General Public License 7 | * as published by the Free Software Foundation; either version 2 8 | * of the License, or (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program; if not, write to: 17 | * 18 | * Free Software Foundation, Inc. 19 | * 51 Franklin Street, Fifth Floor 20 | * Boston, MA 02110-1301, USA. 21 | */ 22 | 23 | /* ensure proper inclusion. */ 24 | #ifndef __PPM_TUNE_H__ 25 | #define __PPM_TUNE_H__ 26 | 27 | /* include the PPM header. */ 28 | #include "ppm.h" 29 | 30 | /* function delarations. */ 31 | 32 | double ppm_tune_capacitance (uint16_t wd); 33 | 34 | uint16_t ppm_tune_optimize (double C0); 35 | 36 | /* ensure proper inclusion. */ 37 | #endif 38 | -------------------------------------------------------------------------------- /software/core/ppm.c: -------------------------------------------------------------------------------- 1 | 2 | /* ppm.c: core source file for interfacing to ppm devices. 3 | * Copyright (C) 2014 Bradley Worley . 4 | * 5 | * This program is free software; you can redistribute it and/or 6 | * modify it under the terms of the GNU General Public License 7 | * as published by the Free Software Foundation; either version 2 8 | * of the License, or (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program; if not, write to: 17 | * 18 | * Free Software Foundation, Inc. 19 | * 51 Franklin Street, Fifth Floor 20 | * Boston, MA 02110-1301, USA. 21 | */ 22 | 23 | /* include the PPM header. */ 24 | #include "ppm.h" 25 | 26 | /* debugf_fn: core function to print a failure/debug message. 27 | */ 28 | void debugf_fn (const char *f, const unsigned int l, 29 | const char *format, ...) { 30 | /* declare required variables. */ 31 | va_list vl; 32 | 33 | /* initialize the arguments list. */ 34 | va_start (vl, format); 35 | 36 | /* print the final output string. */ 37 | #ifdef PPM_CORE_VERBOSE 38 | char str[1024]; 39 | vsnprintf (str, 1024, format, vl); 40 | fprintf (stderr, "%s:%u: %s\n", f, l, str); 41 | fflush (stderr); 42 | #endif 43 | 44 | /* de-initialize the arguments list. */ 45 | va_end (vl); 46 | } 47 | 48 | -------------------------------------------------------------------------------- /software/liveft/Makefile: -------------------------------------------------------------------------------- 1 | 2 | # define the software target and object filenames. 3 | TARGETS=liveft 4 | OBJECTS=liveft.o 5 | 6 | # include all software-global make rules. 7 | include ../global.mk 8 | 9 | # define a rule to check for required external packages. 10 | packages: 11 | 12 | # add in opengl compilation flags. 13 | CFLAGS+= 14 | LDFLAGS+= -lglut -lGL 15 | 16 | # define a rule to install all command-line tools into the path. 17 | install: 18 | @for target in $(TARGETS); do \ 19 | echo " INSTALL $$target"; \ 20 | $(INSTALL) $$target $(BINDIR)/; \ 21 | done 22 | -------------------------------------------------------------------------------- /software/napkin/Makefile: -------------------------------------------------------------------------------- 1 | 2 | # define all phony (non-file) target names. 3 | .PHONY: all clean again 4 | 5 | # define the default target. 6 | all: napkin 7 | 8 | # define the compilation and linkage rule. 9 | napkin: napkin.c 10 | @echo " CC napkin.c" 11 | @gcc -lm -o napkin napkin.c 12 | 13 | # define the rule for cleaning the source tree. 14 | clean: 15 | @echo " CLEAN" 16 | @rm -f napkin 17 | 18 | # define the rule for rebuilding the source tree. 19 | again: clean all 20 | 21 | # define the rule to build and run the example input file. 22 | test: all coil-1.0.txt 23 | @echo " TEST" 24 | @./napkin < coil-2.0.txt 25 | 26 | -------------------------------------------------------------------------------- /software/napkin/coil-1.0.txt: -------------------------------------------------------------------------------- 1 | 298.15 # temperature / K 2 | 22 # wire gauge / AWG 3 | 16.8n # wire resistivity / ohm-m 4 | 0.999994 # wire relative magnetic permeability 5 | 5c # coil diameter / m 6 | 10.2c # coil length / m 7 | 632 # turns count 8 | 700 # minimum frequency / Hz 9 | 4k # maximum frequency / Hz 10 | 1.116 # filter bandwidth correction 11 | v # polarization by voltage 12 | 12 # coil voltage / V 13 | 10 # polarization time / s 14 | -------------------------------------------------------------------------------- /software/napkin/coil-2.0.txt: -------------------------------------------------------------------------------- 1 | 298.15 # temperature / K 2 | 18 # wire gauge / AWG 3 | 16.8n # wire resistivity / ohm-m 4 | 0.999994 # wire relative magnetic permeability 5 | 5c # coil diameter / m 6 | 5c # coil length / m 7 | 750 # turns count 8 | 700 # minimum frequency / Hz 9 | 4k # maximum frequency / Hz 10 | 1.116 # filter bandwidth correction 11 | i # polarization by voltage 12 | 2 # coil current / A 13 | 10 # polarization time / s 14 | -------------------------------------------------------------------------------- /software/pulprogs/Makefile: -------------------------------------------------------------------------------- 1 | 2 | all: 3 | @echo "no 'all' target here..." 4 | 5 | clean: 6 | @echo " CLEAN" 7 | @rm -f *.pyc 8 | 9 | -------------------------------------------------------------------------------- /software/pulprogs/__init__.py: -------------------------------------------------------------------------------- 1 | 2 | # import each pulse program sub-modules. 3 | import hard, soft, misc 4 | 5 | -------------------------------------------------------------------------------- /software/pulprogs/hard.py: -------------------------------------------------------------------------------- 1 | 2 | import pyppm 3 | 4 | def single(t = 10, n = 16384, rate = 20): 5 | return [ 6 | [pyppm.RELAY, True], 7 | [pyppm.DEADTIME, 1], 8 | [pyppm.POLARIZE, True], 9 | [pyppm.DELAY, t], 10 | [pyppm.POLARIZE, False], 11 | [pyppm.DEADTIME, 1], 12 | [pyppm.RELAY, False], 13 | [pyppm.DEADTIME, 10], 14 | [pyppm.ACQUIRE, n, rate], 15 | [pyppm.END] 16 | ] 17 | 18 | def double(t = 10, n = 16384, rate = 20): 19 | P = single(t, n, rate) 20 | P.insert(0, [pyppm.ACQUIRE, n, rate]) 21 | return P 22 | 23 | -------------------------------------------------------------------------------- /software/pulprogs/misc.py: -------------------------------------------------------------------------------- 1 | 2 | import math 3 | import pyppm 4 | 5 | def acquire(n = 16384, rate = 20): 6 | return [ 7 | [pyppm.ACQUIRE, n, rate], 8 | [pyppm.END] 9 | ] 10 | 11 | def retune(f = 1000, L = 14.62e-3): 12 | C = 1 / (((2 * math.pi * f) ** 2) * L) 13 | return [ 14 | [pyppm.TUNE, C], 15 | [pyppm.END] 16 | ] 17 | 18 | def detune(): 19 | return [ 20 | [pyppm.TUNE, 0], 21 | [pyppm.END] 22 | ] 23 | 24 | def reshim(v, axis = pyppm.SHIM_Z): 25 | if (axis is not pyppm.SHIM_X and 26 | axis is not pyppm.SHIM_Y and 27 | axis is not pyppm.SHIM_Z): 28 | return [] 29 | 30 | return [ 31 | [axis, v], 32 | [pyppm.END] 33 | ] 34 | 35 | -------------------------------------------------------------------------------- /software/pulprogs/soft.py: -------------------------------------------------------------------------------- 1 | 2 | import pyppm 3 | 4 | # FIXME - not verified to work! 5 | def single(t = 10, n = 16384, rate = 20): 6 | return [ 7 | [pyppm.TX_RISE, 400e-3, 1], 8 | [pyppm.DELAY, t], 9 | [pyppm.TX_FALL, 400e-3, 0], 10 | [pyppm.DEADTIME, 1], 11 | [pyppm.TX_PULSE, 10e-3, 2000, 1], 12 | [pyppm.DEADTIME, 1], 13 | [pyppm.ACQUIRE, n, rate], 14 | [pyppm.END] 15 | ] 16 | 17 | def double(t = 10, n = 16384, rate = 20): 18 | P = single(t, n, rate) 19 | P.insert(0, [pyppm.ACQUIRE, n, rate]) 20 | return P 21 | 22 | -------------------------------------------------------------------------------- /software/py/Makefile: -------------------------------------------------------------------------------- 1 | 2 | # define the python major version to use for distutils compilation. 3 | PYVER=2 4 | PY=python$(PYVER) 5 | 6 | # define the software target and object filenames. 7 | TARGETS= 8 | OBJECTS= 9 | 10 | # include all software-global make rules. 11 | include ../global.mk 12 | 13 | # redefine the default make target to include a distutils step. 14 | all: build 15 | 16 | # redefine the clean target to include a distutils cleaning. 17 | clean: distutils-clean 18 | 19 | # define a rule to clean the distutils tree. 20 | distutils-clean: 21 | @echo " DISTCLEAN" 22 | @rm -rf build 23 | 24 | # define a rule to check for required external packages. 25 | packages: 26 | 27 | # define the rule to build all python code. 28 | build: $(OBJECTS) 29 | @echo " DISTUTILS" 30 | @$(PY) setup.py --quiet build 31 | 32 | # define the rule to install the python module. 33 | install: 34 | @echo " INSTALL" 35 | @$(PY) setup.py --quiet install 36 | 37 | # define the rule to enter into a python sandbox. 38 | sandbox: build 39 | @cd build/lib.* && $(PY); cd ../.. 40 | -------------------------------------------------------------------------------- /software/py/setup.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | 3 | import sys, glob 4 | 5 | from distutils.core import setup, Extension 6 | 7 | pyppm_ext = Extension('pyppm', 8 | sources = ['pyppm.c'], 9 | include_dirs = ['../core'], 10 | extra_objects = glob.glob('*.o') 11 | ) 12 | 13 | setup(name = 'pyppm', 14 | version = '0.0.1', 15 | description = 'Python Proton Precession Magnetometer Interface', 16 | author = 'Bradley Worley', 17 | author_email = 'geekysuavo@gmail.com', 18 | url = 'http://www.geekysuavo.org/', 19 | ext_modules = [pyppm_ext] 20 | ) 21 | 22 | -------------------------------------------------------------------------------- /software/solver/Makefile: -------------------------------------------------------------------------------- 1 | 2 | # define the default rule to compute all calculations. 3 | all: 4 | octave --silent sol.m 5 | octave --silent multisol.m 6 | 7 | # define a rule to clean all computed results. 8 | clean: 9 | @echo " CLEAN" 10 | @rm -f sol-????????.txt 11 | @rm -f multisol-????????.txt 12 | @rm -f multisol-parms-????????.txt 13 | -------------------------------------------------------------------------------- /software/solver/pul.m: -------------------------------------------------------------------------------- 1 | 2 | t0 = 1; 3 | tp = 2.16e-3; 4 | B0 = 40e-6; 5 | B1 = 1e-3; 6 | M0 = [0; 0; B0]; 7 | M0 /= sqrt(dot(M0, M0)); 8 | 9 | opts = odeset( ... 10 | 'RelTol', 1e-4, ... 11 | 'AbsTol', 1e-4, ... 12 | 'InitialStep', 1e-6, ... 13 | 'MaxStep', 1e-1); 14 | 15 | function dMdt = bloch (t, M, t0, tf, B0, B1) 16 | g = 42.57748e6; 17 | tau = 4; 18 | B = field(t, t0, tf, B0, B1); 19 | dMdt = g .* cross(M, B) - (1 / tau) .* (M - [0; 0; 1]); 20 | end 21 | 22 | function B = field (t, t0, tp, B0, B1) 23 | if (isscalar(t)) 24 | vB0 = [0; 0; B0]; 25 | vB1 = [B1; 0; 0]; 26 | if t < t0 27 | B = vB0; 28 | elseif t < t0 + tp 29 | f = B0 * 42.57748e6; 30 | B = vB0 + vB1 * sin(2 * pi * f * (t - t0)); 31 | else 32 | B = vB0; 33 | end 34 | elseif (isvector(t)) 35 | B = zeros(length(t), 3); 36 | for i = 1 : length(t) 37 | B(i,:) = field(t(i), t0, tp, B0, B1)'; 38 | end 39 | else 40 | error('invalid time data type'); 41 | end 42 | end 43 | 44 | [t, M] = ode23(@bloch, [1, 2], M0, opts, t0, tp, B0, B1); 45 | data = [t, M, field(t, t0, tp, B0, B1)]; 46 | 47 | dv = fix(clock()); 48 | dstr = sprintf('pul-%04d%02d%02d.txt', dv(1), dv(2), dv(3)); 49 | save('-ascii', dstr, 'data'); 50 | 51 | -------------------------------------------------------------------------------- /software/solver/sol.m: -------------------------------------------------------------------------------- 1 | 2 | t0 = 1; 3 | tf = 500e-6; % 400e-6; 4 | B0 = 40e-6; 5 | B1 = 1e-3; 6 | M0 = [B1; 0; B0]; 7 | M0 /= sqrt(dot(M0, M0)); 8 | 9 | opts = odeset( ... 10 | 'RelTol', 1e-4, ... 11 | 'AbsTol', 1e-4, ... 12 | 'InitialStep', 1e-6, ... 13 | 'MaxStep', 1e-1); 14 | 15 | function dMdt = bloch (t, M, t0, tf, B0, B1) 16 | g = 42.57748e6; 17 | tau = 4; 18 | B = field(t, t0, tf, B0, B1); 19 | dMdt = g .* cross(M, B) - (1 / tau) .* (M - [0; 0; 1]); 20 | end 21 | 22 | function B = field (t, t0, tf, B0, B1) 23 | if (isscalar(t)) 24 | vB0 = [0; 0; B0]; 25 | vB1 = [B1; 0; 0]; 26 | if t < t0 27 | B = vB0 + vB1; 28 | elseif t < t0 + tf 29 | B = vB0 + vB1 * (1 - (t - t0) / tf); 30 | else 31 | B = vB0; 32 | end 33 | elseif (isvector(t)) 34 | B = zeros(length(t), 3); 35 | for i = 1 : length(t) 36 | B(i,:) = field(t(i), t0, tf, B0, B1)'; 37 | end 38 | else 39 | error('invalid time data type'); 40 | end 41 | end 42 | 43 | [t, M] = ode23(@bloch, [1, 2], M0, opts, t0, tf, B0, B1); 44 | data = [t, M, field(t, t0, tf, B0, B1)]; 45 | 46 | dv = fix(clock()); 47 | dstr = sprintf('sol-%04d%02d%02d.txt', dv(1), dv(2), dv(3)); 48 | save('-ascii', dstr, 'data'); 49 | 50 | -------------------------------------------------------------------------------- /symbols/74/sn74lvc16t245_output-1.sym: -------------------------------------------------------------------------------- 1 | v 20110115 2 2 | L 300 600 800 300 3 0 0 0 -1 -1 3 | T 600 900 5 10 0 0 0 0 1 4 | device=SN74LVC16T245 5 | T 600 1100 5 10 0 0 0 0 1 6 | slot=1 7 | T 600 1300 5 10 0 0 0 0 1 8 | numslots=16 9 | T 600 1500 5 10 0 0 0 0 1 10 | slotdef=1:2,47 11 | T 600 1700 5 10 0 0 0 0 1 12 | slotdef=2:3,46 13 | T 600 1900 5 10 0 0 0 0 1 14 | slotdef=3:5,44 15 | T 600 2100 5 10 0 0 0 0 1 16 | slotdef=4:6,43 17 | T 600 2300 5 10 0 0 0 0 1 18 | slotdef=5:8,41 19 | T 600 2500 5 10 0 0 0 0 1 20 | slotdef=6:9,40 21 | L 800 300 300 0 3 0 0 0 -1 -1 22 | L 300 600 300 300 3 0 0 0 -1 -1 23 | L 300 300 300 0 3 0 0 0 -1 -1 24 | P 300 300 0 300 1 0 1 25 | { 26 | T 200 350 5 8 1 1 0 6 1 27 | pinnumber=1 28 | T 200 250 5 8 0 1 0 8 1 29 | pinseq=1 30 | T 350 300 9 8 0 1 0 0 1 31 | pinlabel=A 32 | T 350 300 5 8 0 1 0 2 1 33 | pintype=in 34 | } 35 | P 1000 300 800 300 1 0 0 36 | { 37 | T 800 350 5 8 1 1 0 0 1 38 | pinnumber=2 39 | T 800 250 5 8 0 1 0 2 1 40 | pinseq=2 41 | T 650 300 9 8 0 1 0 6 1 42 | pinlabel=Y 43 | T 650 300 5 8 0 1 0 8 1 44 | pintype=out 45 | } 46 | T 300 700 8 10 1 1 0 0 1 47 | refdes=U? 48 | T 600 3100 5 10 0 0 0 0 1 49 | footprint=TSSOP48 50 | T 600 2700 5 10 0 0 0 0 1 51 | slotdef=7:11,38 52 | T 600 2900 5 10 0 0 0 0 1 53 | slotdef=8:12,37 54 | T 2100 1700 5 10 0 0 0 0 1 55 | slotdef=10:14,35 56 | T 2100 1900 5 10 0 0 0 0 1 57 | slotdef=11:16,33 58 | T 2100 2100 5 10 0 0 0 0 1 59 | slotdef=12:17,32 60 | T 2100 2300 5 10 0 0 0 0 1 61 | slotdef=13:19,30 62 | T 2100 2500 5 10 0 0 0 0 1 63 | slotdef=14:20,29 64 | T 2100 2700 5 10 0 0 0 0 1 65 | slotdef=15:22,27 66 | T 2100 1500 5 10 0 0 0 0 1 67 | slotdef=9:13,36 68 | T 2100 2900 5 10 0 0 0 0 1 69 | slotdef=16:23,26 70 | -------------------------------------------------------------------------------- /symbols/74/sn74lvc2g14_core-1.sym: -------------------------------------------------------------------------------- 1 | v 20110115 2 2 | B 300 300 1400 1700 3 0 0 0 -1 -1 0 -1 -1 -1 -1 -1 3 | T 400 2100 3 10 1 1 0 0 1 4 | device=SN74LVC2G14 5 | T 400 2300 8 10 1 1 0 0 1 6 | refdes=U? 7 | T 400 3700 8 10 0 0 0 0 1 8 | footprint=SOT26 9 | P 0 1800 300 1800 1 0 0 10 | { 11 | T 205 1845 5 10 1 1 0 6 1 12 | pinnumber=5 13 | T 0 2000 5 10 0 0 0 0 1 14 | pinseq=5 15 | T 355 1795 9 10 1 1 0 1 1 16 | pinlabel=VCC 17 | } 18 | P 0 500 300 500 1 0 0 19 | { 20 | T 205 545 5 10 1 1 0 6 1 21 | pinnumber=2 22 | T 0 700 5 10 0 0 0 0 1 23 | pinseq=2 24 | T 355 495 9 10 1 1 0 1 1 25 | pinlabel=GND 26 | } 27 | -------------------------------------------------------------------------------- /symbols/74/sn74lvc2g14_output-1.sym: -------------------------------------------------------------------------------- 1 | v 20110115 2 2 | L 300 600 800 300 3 0 0 0 -1 -1 3 | T 600 900 5 10 0 0 0 0 1 4 | device=SN74LVC2G14 5 | T 600 1100 5 10 0 0 0 0 1 6 | slot=1 7 | T 600 1300 5 10 0 0 0 0 1 8 | numslots=2 9 | T 600 1500 5 10 0 0 0 0 1 10 | slotdef=1:1,6 11 | T 600 1700 5 10 0 0 0 0 1 12 | slotdef=2:3,4 13 | L 800 300 300 0 3 0 0 0 -1 -1 14 | L 300 600 300 300 3 0 0 0 -1 -1 15 | L 300 300 300 0 3 0 0 0 -1 -1 16 | P 300 300 0 300 1 0 1 17 | { 18 | T 200 350 5 8 1 1 0 6 1 19 | pinnumber=1 20 | T 200 250 5 8 0 1 0 8 1 21 | pinseq=1 22 | T 350 300 9 8 0 1 0 0 1 23 | pinlabel=A 24 | T 350 300 5 8 0 1 0 2 1 25 | pintype=in 26 | } 27 | P 1100 300 900 300 1 0 0 28 | { 29 | T 900 350 5 8 1 1 0 0 1 30 | pinnumber=2 31 | T 900 250 5 8 0 1 0 2 1 32 | pinseq=2 33 | T 750 300 9 8 0 1 0 6 1 34 | pinlabel=Y 35 | T 750 300 5 8 0 1 0 8 1 36 | pintype=out 37 | } 38 | T 300 700 8 10 1 1 0 0 1 39 | refdes=U? 40 | T 600 1900 5 10 0 0 0 0 1 41 | footprint=SOT26 42 | V 850 300 50 3 0 0 0 -1 -1 0 -1 -1 -1 -1 -1 43 | L 350 175 450 175 3 0 0 0 -1 -1 44 | L 450 375 550 375 3 0 0 0 -1 -1 45 | L 450 175 500 375 3 0 0 0 -1 -1 46 | L 400 175 450 375 3 0 0 0 -1 -1 47 | -------------------------------------------------------------------------------- /symbols/74/sn74lvc8t245_output-1.sym: -------------------------------------------------------------------------------- 1 | v 20110115 2 2 | L 300 600 800 300 3 0 0 0 -1 -1 3 | T 600 900 5 10 0 0 0 0 1 4 | device=SN74LVC8T245 5 | T 600 1100 5 10 0 0 0 0 1 6 | slot=1 7 | T 600 1300 5 10 0 0 0 0 1 8 | numslots=8 9 | T 600 1500 5 10 0 0 0 0 1 10 | slotdef=1:3,21 11 | T 600 1700 5 10 0 0 0 0 1 12 | slotdef=2:4,20 13 | T 600 1900 5 10 0 0 0 0 1 14 | slotdef=3:5,19 15 | T 600 2100 5 10 0 0 0 0 1 16 | slotdef=4:6,18 17 | T 600 2300 5 10 0 0 0 0 1 18 | slotdef=5:7,17 19 | T 600 2500 5 10 0 0 0 0 1 20 | slotdef=6:8,16 21 | L 800 300 300 0 3 0 0 0 -1 -1 22 | L 300 600 300 300 3 0 0 0 -1 -1 23 | L 300 300 300 0 3 0 0 0 -1 -1 24 | P 300 300 0 300 1 0 1 25 | { 26 | T 200 350 5 8 1 1 0 6 1 27 | pinnumber=1 28 | T 200 250 5 8 0 1 0 8 1 29 | pinseq=1 30 | T 350 300 9 8 0 1 0 0 1 31 | pinlabel=A 32 | T 350 300 5 8 0 1 0 2 1 33 | pintype=in 34 | } 35 | P 1000 300 800 300 1 0 0 36 | { 37 | T 800 350 5 8 1 1 0 0 1 38 | pinnumber=2 39 | T 800 250 5 8 0 1 0 2 1 40 | pinseq=2 41 | T 650 300 9 8 0 1 0 6 1 42 | pinlabel=Y 43 | T 650 300 5 8 0 1 0 8 1 44 | pintype=out 45 | } 46 | T 300 700 8 10 1 1 0 0 1 47 | refdes=U? 48 | T 600 3100 5 10 0 0 0 0 1 49 | footprint=TSSOP24 50 | T 600 2700 5 10 0 0 0 0 1 51 | slotdef=7:9,15 52 | T 600 2900 5 10 0 0 0 0 1 53 | slotdef=8:10,14 54 | -------------------------------------------------------------------------------- /symbols/README.md: -------------------------------------------------------------------------------- 1 | # pyppm/symbols 2 | 3 | All custom [gEDA gschem](http://www.geda-project.org/) device schematic 4 | symbols are placed in subdirectories here. 5 | 6 | ### Symbol files 7 | 8 | All subdirectories of this location are interpreted to correspond one-to-one 9 | with the subdirectories found in `/path/to/gEDA/sym`. Files in these 10 | subdirectories will be installed into their respective locations in 11 | that tree. For example, `linear/lt3015-1.sym` will be installed to 12 | `/path/to/gEDA/sym/linear/lt3015-1.sym`. 13 | 14 | ### Installation script 15 | 16 | To install the custom symbols into your `gschem` main directory, first edit 17 | the `install` file. Make sure the path given on this line: 18 | 19 | > `GEDADIR=/usr/share/gEDA` 20 | 21 | is correct. Then you can simply run the install script: 22 | 23 | > `./install` 24 | 25 | -------------------------------------------------------------------------------- /symbols/analog/ad5300_sot26-1.sym: -------------------------------------------------------------------------------- 1 | v 20100214 2 2 | P 0 800 300 800 1 0 0 3 | { 4 | T 205 845 5 10 1 1 0 6 1 5 | pinnumber=6 6 | T 0 1000 5 10 0 0 0 0 1 7 | pinseq=6 8 | T 355 795 9 10 1 1 0 1 1 9 | pinlabel=/CS 10 | } 11 | T 2000 2200 9 12 1 0 0 0 1 12 | AD5300 13 | T 400 3500 8 10 0 0 0 0 1 14 | device=AD5300 15 | T 2000 2400 8 10 1 1 180 8 1 16 | refdes=U? 17 | P 2700 1200 3000 1200 1 0 1 18 | { 19 | T 2300 1100 5 10 0 0 0 0 1 20 | pinnumber=1 21 | T 2800 1300 5 10 1 1 0 0 1 22 | pinseq=1 23 | T 2600 1200 9 10 1 1 0 7 1 24 | pinlabel=Vout 25 | } 26 | P 1500 0 1500 300 1 0 0 27 | { 28 | T 1405 50 5 10 1 1 0 6 1 29 | pinnumber=2 30 | T 1400 0 5 10 0 0 90 0 1 31 | pinseq=2 32 | T 1495 400 9 10 1 1 180 4 1 33 | pinlabel=GND 34 | } 35 | T 400 3700 8 10 0 0 0 0 1 36 | footprint=SOT26 37 | P 1500 2400 1500 2100 1 0 0 38 | { 39 | T 1395 2250 5 10 1 1 0 6 1 40 | pinnumber=3 41 | T 1700 2400 5 10 0 0 270 0 1 42 | pinseq=3 43 | T 1495 2000 9 10 1 1 0 5 1 44 | pinlabel=Vcc 45 | } 46 | P 0 1200 300 1200 1 0 0 47 | { 48 | T 205 1245 5 10 1 1 0 6 1 49 | pinnumber=4 50 | T 0 1400 5 10 0 0 0 0 1 51 | pinseq=4 52 | T 355 1195 9 10 1 1 0 1 1 53 | pinlabel=SDATA 54 | } 55 | P 0 1600 300 1600 1 0 0 56 | { 57 | T 205 1645 5 10 1 1 0 6 1 58 | pinnumber=5 59 | T 0 1800 5 10 0 0 0 0 1 60 | pinseq=5 61 | T 355 1595 9 10 1 1 0 1 1 62 | pinlabel=SCLK 63 | } 64 | L 300 2100 300 300 3 0 0 0 -1 -1 65 | L 300 300 2300 300 3 0 0 0 -1 -1 66 | L 2300 300 2700 1200 3 0 0 0 -1 -1 67 | L 2700 1200 2300 2100 3 0 0 0 -1 -1 68 | L 2300 2100 300 2100 3 0 0 0 -1 -1 69 | -------------------------------------------------------------------------------- /symbols/analog/ad5320_sot26-1.sym: -------------------------------------------------------------------------------- 1 | v 20100214 2 2 | P 0 800 300 800 1 0 0 3 | { 4 | T 205 845 5 10 1 1 0 6 1 5 | pinnumber=6 6 | T 0 1000 5 10 0 0 0 0 1 7 | pinseq=6 8 | T 355 795 9 10 1 1 0 1 1 9 | pinlabel=/CS 10 | } 11 | T 2000 2200 9 12 1 0 0 0 1 12 | AD5320 13 | T 400 3500 8 10 0 0 0 0 1 14 | device=AD5320 15 | T 2000 2400 8 10 1 1 180 8 1 16 | refdes=U? 17 | P 2700 1200 3000 1200 1 0 1 18 | { 19 | T 2300 1100 5 10 0 0 0 0 1 20 | pinnumber=1 21 | T 2800 1300 5 10 1 1 0 0 1 22 | pinseq=1 23 | T 2600 1200 9 10 1 1 0 7 1 24 | pinlabel=Vout 25 | } 26 | P 1500 0 1500 300 1 0 0 27 | { 28 | T 1405 50 5 10 1 1 0 6 1 29 | pinnumber=2 30 | T 1400 0 5 10 0 0 90 0 1 31 | pinseq=2 32 | T 1495 400 9 10 1 1 180 4 1 33 | pinlabel=GND 34 | } 35 | T 400 3700 8 10 0 0 0 0 1 36 | footprint=SOT26 37 | P 1500 2400 1500 2100 1 0 0 38 | { 39 | T 1395 2250 5 10 1 1 0 6 1 40 | pinnumber=3 41 | T 1700 2400 5 10 0 0 270 0 1 42 | pinseq=3 43 | T 1495 2000 9 10 1 1 0 5 1 44 | pinlabel=Vcc 45 | } 46 | P 0 1200 300 1200 1 0 0 47 | { 48 | T 205 1245 5 10 1 1 0 6 1 49 | pinnumber=4 50 | T 0 1400 5 10 0 0 0 0 1 51 | pinseq=4 52 | T 355 1195 9 10 1 1 0 1 1 53 | pinlabel=SDATA 54 | } 55 | P 0 1600 300 1600 1 0 0 56 | { 57 | T 205 1645 5 10 1 1 0 6 1 58 | pinnumber=5 59 | T 0 1800 5 10 0 0 0 0 1 60 | pinseq=5 61 | T 355 1595 9 10 1 1 0 1 1 62 | pinlabel=SCLK 63 | } 64 | L 300 2100 300 300 3 0 0 0 -1 -1 65 | L 300 300 2300 300 3 0 0 0 -1 -1 66 | L 2300 300 2700 1200 3 0 0 0 -1 -1 67 | L 2700 1200 2300 2100 3 0 0 0 -1 -1 68 | L 2300 2100 300 2100 3 0 0 0 -1 -1 69 | -------------------------------------------------------------------------------- /symbols/analog/ad5328_output-1.sym: -------------------------------------------------------------------------------- 1 | v 20110115 2 2 | T 600 1100 9 12 1 0 0 0 1 3 | AD5328 4 | T 400 4100 8 10 0 0 0 0 1 5 | device=AD5328 6 | T 600 1300 8 10 1 1 180 8 1 7 | refdes=U? 8 | T 400 4300 8 10 0 0 0 0 1 9 | footprint=TSSOP16 10 | T 400 3900 8 10 0 0 0 0 1 11 | numslots=8 12 | P 1700 600 1400 600 1 0 0 13 | { 14 | T 1495 645 5 10 1 1 0 0 1 15 | pinnumber=4 16 | T 1700 800 5 10 0 0 0 6 1 17 | pinseq=1 18 | T 1245 595 9 10 1 1 0 7 1 19 | pinlabel=OUT 20 | } 21 | L 500 1000 1200 1000 3 0 0 0 -1 -1 22 | L 1200 1000 1400 600 3 0 0 0 -1 -1 23 | L 1400 600 1200 200 3 0 0 0 -1 -1 24 | L 1200 200 500 200 3 0 0 0 -1 -1 25 | L 500 200 500 1000 3 0 0 0 -1 -1 26 | T 400 3700 8 10 0 0 0 0 1 27 | slot=1 28 | T 400 3500 8 10 0 0 0 0 1 29 | slotdef=1:4 30 | T 400 3300 8 10 0 0 0 0 1 31 | slotdef=2:5 32 | T 400 3100 8 10 0 0 0 0 1 33 | slotdef=3:6 34 | T 400 2900 8 10 0 0 0 0 1 35 | slotdef=4:7 36 | T 400 2700 8 10 0 0 0 0 1 37 | slotdef=5:10 38 | T 400 2500 8 10 0 0 0 0 1 39 | slotdef=6:11 40 | T 400 2300 8 10 0 0 0 0 1 41 | slotdef=7:12 42 | T 400 2100 8 10 0 0 0 0 1 43 | slotdef=8:13 44 | -------------------------------------------------------------------------------- /symbols/analog/ad5663_output-1.sym: -------------------------------------------------------------------------------- 1 | v 20110115 2 2 | T 600 1100 9 12 1 0 0 0 1 3 | AD5663 4 | T 400 2500 8 10 0 0 0 0 1 5 | device=AD5663 6 | T 600 1300 8 10 1 1 180 8 1 7 | refdes=U? 8 | T 400 2700 8 10 0 0 0 0 1 9 | footprint=MSOP10 10 | T 400 2300 8 10 0 0 0 0 1 11 | numslots=2 12 | P 1700 600 1400 600 1 0 0 13 | { 14 | T 1495 645 5 10 1 1 0 0 1 15 | pinnumber=1 16 | T 1700 800 5 10 0 0 0 6 1 17 | pinseq=1 18 | T 1245 595 9 10 1 1 0 7 1 19 | pinlabel=OUT 20 | } 21 | L 500 1000 1200 1000 3 0 0 0 -1 -1 22 | L 1200 1000 1400 600 3 0 0 0 -1 -1 23 | L 1400 600 1200 200 3 0 0 0 -1 -1 24 | L 1200 200 500 200 3 0 0 0 -1 -1 25 | L 500 200 500 1000 3 0 0 0 -1 -1 26 | T 400 2100 8 10 0 0 0 0 1 27 | slot=1 28 | T 400 1900 8 10 0 0 0 0 1 29 | slotdef=1:1 30 | T 400 1700 8 10 0 0 0 0 1 31 | slotdef=2:2 32 | -------------------------------------------------------------------------------- /symbols/analog/ad5752_output-1.sym: -------------------------------------------------------------------------------- 1 | v 20110115 2 2 | T 600 1100 9 12 1 0 0 0 1 3 | AD5752 4 | T 400 2500 8 10 0 0 0 0 1 5 | device=AD5752 6 | T 600 1300 8 10 1 1 180 8 1 7 | refdes=U? 8 | T 400 2700 8 10 0 0 0 0 1 9 | footprint=TSSOP24_EP 10 | T 400 2300 8 10 0 0 0 0 1 11 | numslots=2 12 | P 1700 600 1400 600 1 0 0 13 | { 14 | T 1495 645 5 10 1 1 0 0 1 15 | pinnumber=1 16 | T 1700 800 5 10 0 0 0 6 1 17 | pinseq=1 18 | T 1245 595 9 10 1 1 0 7 1 19 | pinlabel=OUT 20 | } 21 | L 500 1000 1200 1000 3 0 0 0 -1 -1 22 | L 1200 1000 1400 600 3 0 0 0 -1 -1 23 | L 1400 600 1200 200 3 0 0 0 -1 -1 24 | L 1200 200 500 200 3 0 0 0 -1 -1 25 | L 500 200 500 1000 3 0 0 0 -1 -1 26 | T 400 2100 8 10 0 0 0 0 1 27 | slot=1 28 | T 400 1900 8 10 0 0 0 0 1 29 | slotdef=1:3 30 | T 400 1700 8 10 0 0 0 0 1 31 | slotdef=2:23 32 | -------------------------------------------------------------------------------- /symbols/analog/ad7680_sot26-1.sym: -------------------------------------------------------------------------------- 1 | v 20100214 2 2 | P 0 800 300 800 1 0 0 3 | { 4 | T 205 845 5 10 1 1 0 6 1 5 | pinnumber=6 6 | T 0 1000 5 10 0 0 0 0 1 7 | pinseq=6 8 | T 355 795 9 10 1 1 0 1 1 9 | pinlabel=/CS 10 | } 11 | T 2000 2200 9 12 1 0 0 0 1 12 | AD7680 13 | T 400 3500 8 10 0 0 0 0 1 14 | device=AD7680 15 | T 2000 2400 8 10 1 1 180 8 1 16 | refdes=U? 17 | P 2700 1200 3000 1200 1 0 1 18 | { 19 | T 2300 1100 5 10 0 0 0 0 1 20 | pinnumber=3 21 | T 2800 1300 5 10 1 1 0 0 1 22 | pinseq=3 23 | T 2600 1200 9 10 1 1 0 7 1 24 | pinlabel=Vin 25 | } 26 | P 1500 0 1500 300 1 0 0 27 | { 28 | T 1405 50 5 10 1 1 0 6 1 29 | pinnumber=2 30 | T 1400 0 5 10 0 0 90 0 1 31 | pinseq=2 32 | T 1495 400 9 10 1 1 180 4 1 33 | pinlabel=GND 34 | } 35 | T 400 3700 8 10 0 0 0 0 1 36 | footprint=SOT26 37 | P 1500 2400 1500 2100 1 0 0 38 | { 39 | T 1395 2250 5 10 1 1 0 6 1 40 | pinnumber=1 41 | T 1700 2400 5 10 0 0 270 0 1 42 | pinseq=1 43 | T 1495 2000 9 10 1 1 0 5 1 44 | pinlabel=Vcc 45 | } 46 | P 0 1200 300 1200 1 0 0 47 | { 48 | T 205 1245 5 10 1 1 0 6 1 49 | pinnumber=5 50 | T 0 1400 5 10 0 0 0 0 1 51 | pinseq=5 52 | T 355 1195 9 10 1 1 0 1 1 53 | pinlabel=SDATA 54 | } 55 | P 0 1600 300 1600 1 0 0 56 | { 57 | T 205 1645 5 10 1 1 0 6 1 58 | pinnumber=4 59 | T 0 1800 5 10 0 0 0 0 1 60 | pinseq=4 61 | T 355 1595 9 10 1 1 0 1 1 62 | pinlabel=SCLK 63 | } 64 | L 300 2100 300 300 3 0 0 0 -1 -1 65 | L 300 300 2300 300 3 0 0 0 -1 -1 66 | L 2300 300 2700 1200 3 0 0 0 -1 -1 67 | L 2700 1200 2300 2100 3 0 0 0 -1 -1 68 | L 2300 2100 300 2100 3 0 0 0 -1 -1 69 | -------------------------------------------------------------------------------- /symbols/analog/ad8541_sot25-1.sym: -------------------------------------------------------------------------------- 1 | v 20100214 2 2 | L 200 800 200 0 3 0 0 0 -1 -1 3 | L 200 800 800 400 3 0 0 0 -1 -1 4 | T 700 800 5 10 0 0 0 0 1 5 | device=OPAMP 6 | L 800 400 200 0 3 0 0 0 -1 -1 7 | L 300 650 300 550 3 0 0 0 -1 -1 8 | L 250 600 350 600 3 0 0 0 -1 -1 9 | L 250 200 350 200 3 0 0 0 -1 -1 10 | P 0 600 200 600 1 0 0 11 | { 12 | T 150 650 5 8 1 1 0 6 1 13 | pinnumber=5 14 | T 150 550 5 8 0 1 0 8 1 15 | pinseq=5 16 | T 250 600 9 8 0 1 0 0 1 17 | pinlabel=in+ 18 | T 250 600 5 8 0 1 0 2 1 19 | pintype=in 20 | } 21 | P 0 200 200 200 1 0 0 22 | { 23 | T 150 250 5 8 1 1 0 6 1 24 | pinnumber=1 25 | T 150 150 5 8 0 1 0 8 1 26 | pinseq=1 27 | T 250 200 9 8 0 1 0 0 1 28 | pinlabel=in- 29 | T 250 200 5 8 0 1 0 2 1 30 | pintype=in 31 | } 32 | P 800 400 1000 400 1 0 1 33 | { 34 | T 900 450 5 8 1 1 0 0 1 35 | pinnumber=3 36 | T 800 350 5 8 0 1 0 2 1 37 | pinseq=3 38 | T 750 400 9 8 0 1 0 6 1 39 | pinlabel=out 40 | T 750 400 5 8 0 1 0 8 1 41 | pintype=out 42 | } 43 | P 500 600 500 800 1 0 1 44 | { 45 | T 550 600 5 8 1 1 0 0 1 46 | pinnumber=2 47 | T 550 600 5 8 0 1 0 2 1 48 | pinseq=2 49 | T 500 600 9 8 0 1 0 5 1 50 | pinlabel=V+ 51 | T 500 550 5 8 0 1 0 5 1 52 | pintype=pwr 53 | } 54 | P 500 200 500 0 1 0 1 55 | { 56 | T 550 100 5 8 1 1 0 0 1 57 | pinnumber=4 58 | T 550 100 5 8 0 1 0 2 1 59 | pinseq=4 60 | T 500 200 9 8 0 1 0 3 1 61 | pinlabel=V- 62 | T 500 300 5 8 0 1 0 3 1 63 | pintype=pwr 64 | } 65 | T 800 800 8 10 1 1 0 0 1 66 | refdes=U? 67 | T 700 1200 5 10 0 0 0 0 1 68 | description=operational amplifier 69 | T 700 1000 5 10 0 0 0 0 1 70 | numslots=0 71 | T 700 1400 5 10 0 0 0 0 1 72 | symversion=0.1 73 | -------------------------------------------------------------------------------- /symbols/analog/ad8597-1.sym: -------------------------------------------------------------------------------- 1 | v 20100214 2 2 | L 200 800 200 0 3 0 0 0 -1 -1 3 | L 200 800 800 400 3 0 0 0 -1 -1 4 | T 700 800 5 10 0 0 0 0 1 5 | device=OPAMP 6 | L 800 400 200 0 3 0 0 0 -1 -1 7 | L 300 650 300 550 3 0 0 0 -1 -1 8 | L 250 600 350 600 3 0 0 0 -1 -1 9 | L 250 200 350 200 3 0 0 0 -1 -1 10 | P 0 600 200 600 1 0 0 11 | { 12 | T 150 650 5 8 1 1 0 6 1 13 | pinnumber=3 14 | T 150 550 5 8 0 1 0 8 1 15 | pinseq=1 16 | T 250 600 9 8 0 1 0 0 1 17 | pinlabel=in+ 18 | T 250 600 5 8 0 1 0 2 1 19 | pintype=in 20 | } 21 | P 0 200 200 200 1 0 0 22 | { 23 | T 150 250 5 8 1 1 0 6 1 24 | pinnumber=2 25 | T 150 150 5 8 0 1 0 8 1 26 | pinseq=2 27 | T 250 200 9 8 0 1 0 0 1 28 | pinlabel=in- 29 | T 250 200 5 8 0 1 0 2 1 30 | pintype=in 31 | } 32 | P 800 400 1000 400 1 0 1 33 | { 34 | T 800 450 5 8 1 1 0 0 1 35 | pinnumber=6 36 | T 800 350 5 8 0 1 0 2 1 37 | pinseq=5 38 | T 750 400 9 8 0 1 0 6 1 39 | pinlabel=out 40 | T 750 400 5 8 0 1 0 8 1 41 | pintype=out 42 | } 43 | P 500 600 500 800 1 0 1 44 | { 45 | T 550 600 5 8 1 1 0 0 1 46 | pinnumber=7 47 | T 550 600 5 8 0 1 0 2 1 48 | pinseq=3 49 | T 500 600 9 8 0 1 0 5 1 50 | pinlabel=V+ 51 | T 500 550 5 8 0 1 0 5 1 52 | pintype=pwr 53 | } 54 | P 500 200 500 0 1 0 1 55 | { 56 | T 550 100 5 8 1 1 0 0 1 57 | pinnumber=4 58 | T 550 100 5 8 0 1 0 2 1 59 | pinseq=4 60 | T 500 200 9 8 0 1 0 3 1 61 | pinlabel=V- 62 | T 500 300 5 8 0 1 0 3 1 63 | pintype=pwr 64 | } 65 | T 800 800 8 10 1 1 0 0 1 66 | refdes=U? 67 | T 700 1200 5 10 0 0 0 0 1 68 | description=operational amplifier 69 | T 700 1000 5 10 0 0 0 0 1 70 | numslots=0 71 | T 700 1400 5 10 0 0 0 0 1 72 | symversion=0.1 73 | -------------------------------------------------------------------------------- /symbols/analog/adr4520-1.sym: -------------------------------------------------------------------------------- 1 | v 20110115 2 2 | B 0 300 1000 1100 3 0 0 0 -1 -1 0 0 -1 -1 -1 -1 3 | T 100 2000 5 10 0 0 0 0 1 4 | device=ADR4520 5 | P 500 1700 500 1400 1 0 0 6 | { 7 | T 550 1500 5 8 1 1 0 0 1 8 | pinnumber=2 9 | T 550 1500 5 8 0 1 0 2 1 10 | pinseq=2 11 | T 500 1200 5 8 0 1 0 5 1 12 | pintype=pwr 13 | T 500 1350 9 8 1 1 0 5 1 14 | pinlabel=Vin 15 | } 16 | P 1000 900 1300 900 1 0 1 17 | { 18 | T 1100 950 5 8 1 1 0 0 1 19 | pinnumber=6 20 | T 1100 850 5 8 0 1 0 2 1 21 | pinseq=6 22 | T 950 900 5 8 0 1 0 8 1 23 | pintype=out 24 | T 950 900 9 8 1 1 0 6 1 25 | pinlabel=Vout 26 | } 27 | P 500 0 500 300 1 0 0 28 | { 29 | T 550 100 5 8 1 1 0 0 1 30 | pinnumber=4 31 | T 550 100 5 8 0 1 0 2 1 32 | pinseq=4 33 | T 500 500 5 8 0 1 0 3 1 34 | pintype=pwr 35 | T 500 350 9 8 1 1 0 3 1 36 | pinlabel=GND 37 | } 38 | T 100 2200 5 10 0 0 0 0 1 39 | footprint=SO8 40 | T 900 1700 8 10 1 1 0 0 1 41 | refdes=U? 42 | T 100 2650 5 10 0 0 0 0 1 43 | description=precision 2.048V voltage reference 44 | T 100 2450 5 10 0 0 0 0 1 45 | numslots=0 46 | T 900 1500 9 10 1 0 0 0 1 47 | ADR4520 48 | -------------------------------------------------------------------------------- /symbols/analog/inductor-dual-1.sym: -------------------------------------------------------------------------------- 1 | v 20110115 2 2 | P 900 0 750 0 1 0 0 3 | { 4 | T 800 50 5 8 0 1 0 0 1 5 | pinnumber=2 6 | T 800 -50 5 8 0 1 0 2 1 7 | pinseq=2 8 | T 700 0 9 8 0 1 0 6 1 9 | pinlabel=2 10 | T 700 0 5 8 0 1 0 8 1 11 | pintype=pas 12 | } 13 | P 0 0 150 0 1 0 0 14 | { 15 | T 100 50 5 8 0 1 0 6 1 16 | pinnumber=1 17 | T 100 -50 5 8 0 1 0 8 1 18 | pinseq=1 19 | T 200 0 9 8 0 1 0 0 1 20 | pinlabel=1 21 | T 200 0 5 8 0 1 0 2 1 22 | pintype=pas 23 | } 24 | A 237 0 75 0 180 3 0 0 0 -1 -1 25 | A 379 0 75 0 180 3 0 0 0 -1 -1 26 | A 521 0 75 0 180 3 0 0 0 -1 -1 27 | A 663 0 75 0 180 3 0 0 0 -1 -1 28 | T 200 400 5 10 0 0 0 0 1 29 | device=INDUCTOR 30 | L 738 0 750 0 3 0 0 0 -1 -1 31 | L 150 0 162 0 3 0 0 0 -1 -1 32 | A 308 0 4 180 180 3 0 0 0 -1 -1 33 | A 450 0 4 180 180 3 0 0 0 -1 -1 34 | A 592 0 4 180 180 3 0 0 0 -1 -1 35 | T 200 200 8 10 1 1 0 0 1 36 | refdes=L? 37 | V 153 71 13 3 0 0 0 -1 -1 1 -1 -1 1 -1 1 38 | T 200 600 5 10 0 0 0 0 1 39 | description=inductor 40 | T 200 1400 5 10 0 0 0 0 1 41 | numslots=2 42 | T 200 1600 5 10 0 0 0 0 1 43 | symversion=0.1 44 | T 200 1200 5 10 0 0 0 0 1 45 | slot=1 46 | T 200 1000 5 10 0 0 0 0 1 47 | slotdef=1:1,2 48 | T 200 800 5 10 0 0 0 0 1 49 | slotdef=2:4,3 50 | -------------------------------------------------------------------------------- /symbols/analog/osc-cb3lv-1.sym: -------------------------------------------------------------------------------- 1 | v 20110115 2 2 | B 300 300 1600 1000 3 0 0 0 -1 -1 0 0 -1 -1 -1 -1 3 | T 1300 1400 5 10 1 1 0 0 1 4 | device=CB3LV 5 | P 700 1600 700 1300 1 0 0 6 | { 7 | T 750 1400 5 8 1 1 0 0 1 8 | pinnumber=4 9 | T 750 1400 5 8 0 1 0 2 1 10 | pinseq=4 11 | T 700 1100 5 8 0 1 0 5 1 12 | pintype=pwr 13 | T 700 1250 9 8 1 1 0 5 1 14 | pinlabel=VCC 15 | } 16 | P 1900 800 2200 800 1 0 1 17 | { 18 | T 2000 850 5 8 1 1 0 0 1 19 | pinnumber=3 20 | T 2000 750 5 8 0 1 0 2 1 21 | pinseq=3 22 | T 1850 800 5 8 0 1 0 8 1 23 | pintype=out 24 | T 1850 800 9 8 1 1 0 7 1 25 | pinlabel=OUT 26 | } 27 | P 700 0 700 300 1 0 0 28 | { 29 | T 750 100 5 8 1 1 0 0 1 30 | pinnumber=2 31 | T 750 100 5 8 0 1 0 2 1 32 | pinseq=2 33 | T 700 500 5 8 0 1 0 3 1 34 | pintype=pwr 35 | T 700 350 9 8 1 1 0 3 1 36 | pinlabel=GND 37 | } 38 | T 100 2200 5 10 0 0 0 0 1 39 | footprint=CB3LV-7x5 40 | T 1300 1600 8 10 1 1 0 0 1 41 | refdes=U? 42 | T 100 2650 5 10 0 0 0 0 1 43 | description=HCMOS/TTL Clock Oscillator 44 | T 100 2450 5 10 0 0 0 0 1 45 | numslots=0 46 | P 300 800 0 800 1 0 1 47 | { 48 | T 205 845 5 8 1 1 0 6 1 49 | pinnumber=1 50 | T 200 750 5 8 0 1 0 8 1 51 | pinseq=1 52 | T 350 800 5 8 0 1 0 2 1 53 | pintype=in 54 | T 355 795 9 8 1 1 0 1 1 55 | pinlabel=EN 56 | } 57 | -------------------------------------------------------------------------------- /symbols/analog/wm8741_left-1.sym: -------------------------------------------------------------------------------- 1 | v 20110115 2 2 | T 1800 2200 5 10 1 1 0 0 1 3 | device=WM8741 4 | T 1800 2400 8 10 1 1 180 8 1 5 | refdes=U? 6 | T 500 2700 8 10 0 0 0 0 1 7 | footprint=TSSOP28 8 | T 500 2500 8 10 0 0 0 0 1 9 | numslots=0 10 | P 2500 700 2200 700 1 0 0 11 | { 12 | T 2295 745 5 10 1 1 0 0 1 13 | pinnumber=16 14 | T 2500 900 5 10 0 0 0 6 1 15 | pinseq=16 16 | T 2045 695 9 10 1 1 0 7 1 17 | pinlabel=L- 18 | T 2500 700 5 10 0 0 0 0 1 19 | pintype=out 20 | } 21 | L 300 1900 2000 1900 3 0 0 0 -1 -1 22 | L 2000 1900 2400 1100 3 0 0 0 -1 -1 23 | L 2400 1100 2000 300 3 0 0 0 -1 -1 24 | L 2000 300 300 300 3 0 0 0 -1 -1 25 | L 300 300 300 1900 3 0 0 0 -1 -1 26 | P 2500 1500 2200 1500 1 0 0 27 | { 28 | T 2295 1545 5 10 1 1 0 0 1 29 | pinnumber=17 30 | T 2500 1700 5 10 0 0 0 6 1 31 | pinseq=17 32 | T 2045 1495 9 10 1 1 0 7 1 33 | pinlabel=L+ 34 | T 2500 1500 5 10 0 0 0 0 1 35 | pintype=out 36 | } 37 | P 800 2200 800 1900 1 0 0 38 | { 39 | T 895 2000 5 10 1 1 0 0 1 40 | pinnumber=20 41 | T 600 2200 5 10 0 0 90 6 1 42 | pinseq=20 43 | T 795 1700 9 10 1 1 0 3 1 44 | pinlabel=AVDDL 45 | T 800 2200 5 10 0 0 90 0 1 46 | pintype=pwr 47 | } 48 | P 800 0 800 300 1 0 0 49 | { 50 | T 905 100 5 10 1 1 0 0 1 51 | pinnumber=19 52 | T 1000 0 5 10 0 0 270 6 1 53 | pinseq=19 54 | T 805 400 9 10 1 1 0 3 1 55 | pinlabel=AGNDL 56 | T 800 0 5 10 0 0 270 0 1 57 | pintype=pwr 58 | } 59 | P 0 1300 300 1300 1 0 0 60 | { 61 | T 205 1345 5 10 1 1 0 6 1 62 | pinnumber=18 63 | T 0 1500 5 10 0 0 0 0 1 64 | pinseq=18 65 | T 355 1295 9 10 1 1 0 0 1 66 | pinlabel=MIDL 67 | T 0 1300 5 10 0 0 0 6 1 68 | pintype=pwr 69 | } 70 | -------------------------------------------------------------------------------- /symbols/analog/wm8741_right-1.sym: -------------------------------------------------------------------------------- 1 | v 20110115 2 2 | T 1800 2200 5 10 1 1 0 0 1 3 | device=WM8741 4 | T 1800 2400 8 10 1 1 180 8 1 5 | refdes=U? 6 | T 500 2700 8 10 0 0 0 0 1 7 | footprint=TSSOP28 8 | T 500 2500 8 10 0 0 0 0 1 9 | numslots=0 10 | P 2500 700 2200 700 1 0 0 11 | { 12 | T 2295 745 5 10 1 1 0 0 1 13 | pinnumber=13 14 | T 2500 900 5 10 0 0 0 6 1 15 | pinseq=13 16 | T 2045 695 9 10 1 1 0 7 1 17 | pinlabel=R- 18 | T 2500 700 5 10 0 0 0 0 1 19 | pintype=out 20 | } 21 | L 300 1900 2000 1900 3 0 0 0 -1 -1 22 | L 2000 1900 2400 1100 3 0 0 0 -1 -1 23 | L 2400 1100 2000 300 3 0 0 0 -1 -1 24 | L 2000 300 300 300 3 0 0 0 -1 -1 25 | L 300 300 300 1900 3 0 0 0 -1 -1 26 | P 2500 1500 2200 1500 1 0 0 27 | { 28 | T 2295 1545 5 10 1 1 0 0 1 29 | pinnumber=12 30 | T 2500 1700 5 10 0 0 0 6 1 31 | pinseq=12 32 | T 2045 1495 9 10 1 1 0 7 1 33 | pinlabel=R+ 34 | T 2500 1500 5 10 0 0 0 0 1 35 | pintype=out 36 | } 37 | P 800 2200 800 1900 1 0 0 38 | { 39 | T 895 2000 5 10 1 1 0 0 1 40 | pinnumber=9 41 | T 600 2200 5 10 0 0 90 6 1 42 | pinseq=9 43 | T 795 1700 9 10 1 1 0 3 1 44 | pinlabel=AVDDR 45 | T 800 2200 5 10 0 0 90 0 1 46 | pintype=pwr 47 | } 48 | P 800 0 800 300 1 0 0 49 | { 50 | T 905 100 5 10 1 1 0 0 1 51 | pinnumber=10 52 | T 1000 0 5 10 0 0 270 6 1 53 | pinseq=10 54 | T 805 400 9 10 1 1 0 3 1 55 | pinlabel=AGNDR 56 | T 800 0 5 10 0 0 270 0 1 57 | pintype=pwr 58 | } 59 | P 0 1300 300 1300 1 0 0 60 | { 61 | T 205 1345 5 10 1 1 0 6 1 62 | pinnumber=11 63 | T 0 1500 5 10 0 0 0 0 1 64 | pinseq=11 65 | T 355 1295 9 10 1 1 0 0 1 66 | pinlabel=MIDR 67 | T 0 1300 5 10 0 0 0 6 1 68 | pintype=pwr 69 | } 70 | -------------------------------------------------------------------------------- /symbols/connector/mini-XL-1.sym: -------------------------------------------------------------------------------- 1 | v 20110115 2 2 | V 800 750 450 3 0 0 0 -1 -1 0 0 -1 -1 -1 -1 3 | T 0 1350 8 10 0 0 0 0 1 4 | device=miniXL 5 | V 800 550 50 3 0 0 0 -1 -1 0 0 -1 -1 -1 -1 6 | P 800 300 800 0 1 0 1 7 | { 8 | T 850 100 5 8 1 1 0 0 1 9 | pinnumber=2 10 | T 850 100 5 8 0 0 0 0 1 11 | pinseq=2 12 | T 850 100 5 8 0 1 0 0 1 13 | pinlabel=2 14 | T 850 100 5 8 0 1 0 0 1 15 | pintype=pas 16 | } 17 | P 1250 850 1550 850 1 0 1 18 | { 19 | T 1400 900 5 8 1 1 0 0 1 20 | pinnumber=3 21 | T 1400 900 5 8 0 0 0 0 1 22 | pinseq=3 23 | T 1400 900 5 8 0 1 0 0 1 24 | pinlabel=3 25 | T 1400 900 5 8 0 1 0 0 1 26 | pintype=pas 27 | } 28 | T 1200 1200 8 10 1 1 0 0 1 29 | refdes=J? 30 | T 0 1000 8 10 0 0 0 0 1 31 | class=IO 32 | T 0 1200 8 10 0 0 0 0 1 33 | pins=2 34 | V 1000 850 50 3 0 0 0 -1 -1 0 0 -1 -1 -1 -1 35 | V 600 850 50 3 0 0 0 -1 -1 0 0 -1 -1 -1 -1 36 | P 350 850 50 850 1 0 1 37 | { 38 | T 255 895 5 8 1 1 0 6 1 39 | pinnumber=1 40 | T 200 800 5 8 0 0 180 0 1 41 | pinseq=1 42 | T 405 845 5 8 0 1 0 0 1 43 | pinlabel=1 44 | T 200 800 5 8 0 1 180 0 1 45 | pintype=pas 46 | } 47 | L 800 500 800 300 3 0 0 0 -1 -1 48 | L 1050 850 1250 850 3 0 0 0 -1 -1 49 | L 550 850 350 850 3 0 0 0 -1 -1 50 | -------------------------------------------------------------------------------- /symbols/connector/trs-1.sym: -------------------------------------------------------------------------------- 1 | v 20110115 2 2 | T 100 500 5 10 0 0 0 0 1 3 | device=TRSJACK 4 | P 900 400 1200 400 1 0 1 5 | { 6 | T 350 250 5 8 1 1 0 0 1 7 | pinnumber=1 8 | T 350 350 5 8 0 0 0 0 1 9 | pinseq=1 10 | T 350 350 5 8 0 1 0 0 1 11 | pinlabel=1 12 | T 350 350 5 8 0 1 0 0 1 13 | pintype=pas 14 | } 15 | P 900 0 1200 0 1 0 1 16 | { 17 | T 50 50 5 8 1 1 0 0 1 18 | pinnumber=3 19 | T 350 -50 5 8 0 0 0 0 1 20 | pinseq=3 21 | T 350 -50 5 8 0 1 0 0 1 22 | pinlabel=3 23 | T 350 -50 5 8 0 1 0 0 1 24 | pintype=pas 25 | } 26 | L 600 400 500 300 3 0 0 0 -1 -1 27 | L 500 300 400 400 3 0 0 0 -1 -1 28 | L 600 400 900 400 3 0 0 0 -1 -1 29 | B 0 0 200 400 3 0 0 0 -1 -1 0 -1 -1 -1 -1 -1 30 | T 0 500 8 10 1 1 0 0 1 31 | refdes=J? 32 | L 200 0 900 0 3 0 0 0 -1 -1 33 | P 900 200 1200 200 1 0 1 34 | { 35 | T 550 50 5 8 1 1 0 0 1 36 | pinnumber=2 37 | T 350 150 5 8 0 0 0 0 1 38 | pinseq=2 39 | T 350 150 5 8 0 1 0 0 1 40 | pinlabel=2 41 | T 350 150 5 8 0 1 0 0 1 42 | pintype=pas 43 | } 44 | L 800 200 700 100 3 0 0 0 -1 -1 45 | L 700 100 600 200 3 0 0 0 -1 -1 46 | L 800 200 900 200 3 0 0 0 -1 -1 47 | -------------------------------------------------------------------------------- /symbols/connector/usb-mini-b-1.sym: -------------------------------------------------------------------------------- 1 | v 20100214 2 2 | P 600 800 900 800 1 0 1 3 | { 4 | T 650 850 5 8 1 1 0 0 1 5 | pinnumber=2 6 | T -550 750 5 8 0 0 0 0 1 7 | pinseq=2 8 | T 550 850 9 8 1 1 180 0 1 9 | pinlabel=D- 10 | T -550 750 5 8 0 1 0 0 1 11 | pintype=pas 12 | } 13 | P 600 500 900 500 1 0 1 14 | { 15 | T 650 550 5 8 1 1 0 0 1 16 | pinnumber=4 17 | T -550 450 5 8 0 0 0 0 1 18 | pinseq=4 19 | T 550 550 9 8 1 1 180 0 1 20 | pinlabel=ID 21 | T -550 450 5 8 0 1 0 0 1 22 | pintype=pas 23 | } 24 | P 600 1400 900 1400 1 0 1 25 | { 26 | T 650 1450 5 8 1 1 0 0 1 27 | pinnumber=1 28 | T -550 1350 5 8 0 0 0 0 1 29 | pinseq=1 30 | T 550 1450 9 8 1 1 180 0 1 31 | pinlabel=VBUS 32 | T -550 1350 5 8 0 1 0 0 1 33 | pintype=pas 34 | } 35 | P 600 1100 900 1100 1 0 1 36 | { 37 | T 650 1150 5 8 1 1 0 0 1 38 | pinnumber=3 39 | T -550 1050 5 8 0 0 0 0 1 40 | pinseq=3 41 | T 550 1150 9 8 1 1 180 0 1 42 | pinlabel=D+ 43 | T -550 1050 5 8 0 1 0 0 1 44 | pintype=pas 45 | } 46 | P 600 200 900 200 1 0 1 47 | { 48 | T 650 250 5 8 1 1 0 0 1 49 | pinnumber=5 50 | T -550 150 5 8 0 0 0 0 1 51 | pinseq=5 52 | T 550 250 9 8 1 1 180 0 1 53 | pinlabel=GND 54 | T -550 150 5 8 0 1 0 0 1 55 | pintype=pas 56 | } 57 | B 0 0 600 1600 3 0 0 0 -1 -1 0 -1 -1 -1 -1 -1 58 | T 100 2500 5 10 0 0 0 0 1 59 | device=USB_MINI_B 60 | T 100 1900 8 10 1 1 0 0 1 61 | refdes=CONN? 62 | -------------------------------------------------------------------------------- /symbols/diode/dual-series-1.sym: -------------------------------------------------------------------------------- 1 | v 20110115 2 2 | L 300 400 300 0 3 0 0 0 -1 -1 3 | L 300 400 600 200 3 0 0 0 -1 -1 4 | T 97 2147 8 10 0 0 0 0 1 5 | device=DIODE 6 | L 600 200 300 0 3 0 0 0 -1 -1 7 | L 600 400 600 0 3 0 0 0 -1 -1 8 | P 0 200 200 200 1 0 0 9 | { 10 | T 205 256 5 8 0 1 0 0 1 11 | pinnumber=1 12 | T 170 286 5 8 0 0 90 0 1 13 | pinseq=1 14 | T -10 81 5 10 0 1 0 0 1 15 | pintype=pas 16 | T 75 288 5 10 0 1 90 0 1 17 | pinlabel=anode 18 | } 19 | P 900 200 700 200 1 0 0 20 | { 21 | T 700 250 5 8 0 1 0 0 1 22 | pinnumber=2 23 | T 730 50 5 8 0 0 0 0 1 24 | pinseq=2 25 | T 798 265 5 10 0 1 0 0 1 26 | pintype=pas 27 | T 931 138 5 10 0 1 0 0 1 28 | pinlabel=cathode 29 | } 30 | L 700 200 600 200 3 0 0 0 -1 -1 31 | L 300 200 200 200 3 0 0 0 -1 -1 32 | T 300 500 8 10 1 1 0 0 1 33 | refdes=D? 34 | T 91 2307 8 10 0 0 0 0 1 35 | footprint=SOT23 36 | T 92 1990 8 10 0 0 0 0 1 37 | numslots=2 38 | T 92 1840 8 10 0 0 0 0 1 39 | slot=1 40 | T 92 1690 8 10 0 0 0 0 1 41 | slotdef=1:1,3 42 | T 92 1540 8 10 0 0 0 0 1 43 | slotdef=2:3,2 44 | -------------------------------------------------------------------------------- /symbols/diode/schottky-dual-series-1.sym: -------------------------------------------------------------------------------- 1 | v 20100214 2 2 | L 300 400 300 0 3 0 0 0 -1 -1 3 | L 300 400 600 200 3 0 0 0 -1 -1 4 | T 97 2147 8 10 0 0 0 0 1 5 | device=DIODE 6 | L 600 200 300 0 3 0 0 0 -1 -1 7 | L 600 400 600 0 3 0 0 0 -1 -1 8 | P 0 200 200 200 1 0 0 9 | { 10 | T 205 256 5 8 0 1 0 0 1 11 | pinnumber=1 12 | T 170 286 5 8 0 0 90 0 1 13 | pinseq=1 14 | T -10 81 5 10 0 1 0 0 1 15 | pintype=pas 16 | T 75 288 5 10 0 1 90 0 1 17 | pinlabel=anode 18 | } 19 | P 900 200 700 200 1 0 0 20 | { 21 | T 700 250 5 8 0 1 0 0 1 22 | pinnumber=2 23 | T 730 50 5 8 0 0 0 0 1 24 | pinseq=2 25 | T 798 265 5 10 0 1 0 0 1 26 | pintype=pas 27 | T 931 138 5 10 0 1 0 0 1 28 | pinlabel=cathode 29 | } 30 | L 700 200 600 200 3 0 0 0 -1 -1 31 | L 300 200 200 200 3 0 0 0 -1 -1 32 | A 650 400 50 0 180 3 0 0 0 -1 -1 33 | A 550 0 50 180 180 3 0 0 0 -1 -1 34 | T 300 500 8 10 1 1 0 0 1 35 | refdes=D? 36 | T 91 2307 8 10 0 0 0 0 1 37 | footprint=SOT23 38 | T 92 1990 8 10 0 0 0 0 1 39 | numslots=2 40 | T 92 1840 8 10 0 0 0 0 1 41 | slot=1 42 | T 92 1690 8 10 0 0 0 0 1 43 | slotdef=1:1,3 44 | T 92 1540 8 10 0 0 0 0 1 45 | slotdef=2:3,2 46 | -------------------------------------------------------------------------------- /symbols/install: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # set this to the path to the gEDA PCB main directory. 4 | GEDADIR=/usr/share/gEDA 5 | 6 | # loop through every directory in the current working directory. 7 | for d in $(find * -type d); do 8 | # move into the currently indexed directory. 9 | pushd ${d} > /dev/null 10 | 11 | # loop through every file in the current working directory. we will assume 12 | # that every file on layer down is a symbol file. 13 | for f in $(find * -type f); do 14 | # install the symbol file into its respective directory. 15 | sudo install -v -m 644 -o root -g root ${f} \ 16 | ${GEDADIR}/sym/${d}/ 17 | done 18 | 19 | # move back to the toplevel directory. 20 | popd > /dev/null 21 | done 22 | 23 | # sync the filesystem with the disks. 24 | sync 25 | 26 | -------------------------------------------------------------------------------- /symbols/linear/lt1012-1.sym: -------------------------------------------------------------------------------- 1 | v 20100214 2 2 | L 200 800 200 0 3 0 0 0 -1 -1 3 | L 200 800 800 400 3 0 0 0 -1 -1 4 | T 700 800 5 10 0 0 0 0 1 5 | device=OPAMP 6 | L 800 400 200 0 3 0 0 0 -1 -1 7 | L 300 650 300 550 3 0 0 0 -1 -1 8 | L 250 600 350 600 3 0 0 0 -1 -1 9 | L 250 200 350 200 3 0 0 0 -1 -1 10 | P 0 600 200 600 1 0 0 11 | { 12 | T 150 650 5 8 1 1 0 6 1 13 | pinnumber=3 14 | T 150 550 5 8 0 1 0 8 1 15 | pinseq=1 16 | T 250 600 9 8 0 1 0 0 1 17 | pinlabel=in+ 18 | T 250 600 5 8 0 1 0 2 1 19 | pintype=in 20 | } 21 | P 0 200 200 200 1 0 0 22 | { 23 | T 150 250 5 8 1 1 0 6 1 24 | pinnumber=2 25 | T 150 150 5 8 0 1 0 8 1 26 | pinseq=2 27 | T 250 200 9 8 0 1 0 0 1 28 | pinlabel=in- 29 | T 250 200 5 8 0 1 0 2 1 30 | pintype=in 31 | } 32 | P 800 400 1000 400 1 0 1 33 | { 34 | T 800 450 5 8 1 1 0 0 1 35 | pinnumber=6 36 | T 800 350 5 8 0 1 0 2 1 37 | pinseq=5 38 | T 750 400 9 8 0 1 0 6 1 39 | pinlabel=out 40 | T 750 400 5 8 0 1 0 8 1 41 | pintype=out 42 | } 43 | P 500 600 500 800 1 0 1 44 | { 45 | T 550 600 5 8 1 1 0 0 1 46 | pinnumber=7 47 | T 550 600 5 8 0 1 0 2 1 48 | pinseq=3 49 | T 500 600 9 8 0 1 0 5 1 50 | pinlabel=V+ 51 | T 500 550 5 8 0 1 0 5 1 52 | pintype=pwr 53 | } 54 | P 500 200 500 0 1 0 1 55 | { 56 | T 550 100 5 8 1 1 0 0 1 57 | pinnumber=4 58 | T 550 100 5 8 0 1 0 2 1 59 | pinseq=4 60 | T 500 200 9 8 0 1 0 3 1 61 | pinlabel=V- 62 | T 500 300 5 8 0 1 0 3 1 63 | pintype=pwr 64 | } 65 | T 800 800 8 10 1 1 0 0 1 66 | refdes=U? 67 | T 700 1200 5 10 0 0 0 0 1 68 | description=operational amplifier 69 | T 700 1000 5 10 0 0 0 0 1 70 | numslots=0 71 | T 700 1400 5 10 0 0 0 0 1 72 | symversion=0.1 73 | -------------------------------------------------------------------------------- /symbols/linear/lt1761es5-1.sym: -------------------------------------------------------------------------------- 1 | v 20110115 2 2 | B 300 300 2400 2700 3 0 0 0 -1 -1 0 -1 -1 -1 -1 -1 3 | P 0 2500 300 2500 1 0 0 4 | { 5 | T 205 2545 5 10 1 1 0 6 1 6 | pinnumber=3 7 | T 0 2700 5 10 0 0 0 0 1 8 | pinseq=3 9 | T 355 2495 9 10 1 1 0 1 1 10 | pinlabel=IN 11 | } 12 | T 1500 1800 9 12 1 0 0 4 1 13 | LT1761-X 14 | T 400 3500 8 10 0 0 0 0 1 15 | device=LT1761 16 | T 2000 3100 8 10 1 1 180 8 1 17 | refdes=U? 18 | P 2700 2500 3000 2500 1 0 1 19 | { 20 | T 2300 2400 5 10 0 0 0 0 1 21 | pinnumber=2 22 | T 2800 2600 5 10 1 1 0 0 1 23 | pinseq=2 24 | T 2600 2500 9 10 1 1 0 7 1 25 | pinlabel=OUT 26 | } 27 | P 1400 0 1400 300 1 0 0 28 | { 29 | T 1305 50 5 10 1 1 0 6 1 30 | pinnumber=4 31 | T 1300 0 5 10 0 0 90 0 1 32 | pinseq=4 33 | T 1395 400 9 10 1 1 180 4 1 34 | pinlabel=GND 35 | } 36 | P 2700 1000 3000 1000 1 0 1 37 | { 38 | T 2300 900 5 10 0 0 0 0 1 39 | pinnumber=1 40 | T 2800 1100 5 10 1 1 0 0 1 41 | pinseq=1 42 | T 2600 1000 9 10 1 1 0 7 1 43 | pinlabel=BYP 44 | } 45 | T 400 3700 8 10 0 0 0 0 1 46 | footprint=SOT25 47 | P 0 1000 300 1000 1 0 0 48 | { 49 | T 205 1045 5 10 1 1 0 6 1 50 | pinnumber=5 51 | T 0 1200 5 10 0 0 0 0 1 52 | pinseq=5 53 | T 355 995 9 10 1 1 0 1 1 54 | pinlabel=/SHDN 55 | } 56 | -------------------------------------------------------------------------------- /symbols/linear/lt1761es5-2.sym: -------------------------------------------------------------------------------- 1 | v 20110115 2 2 | B 300 300 2400 2700 3 0 0 0 -1 -1 0 -1 -1 -1 -1 -1 3 | P 0 2500 300 2500 1 0 0 4 | { 5 | T 205 2545 5 10 1 1 0 6 1 6 | pinnumber=3 7 | T 0 2700 5 10 0 0 0 0 1 8 | pinseq=3 9 | T 355 2495 9 10 1 1 0 1 1 10 | pinlabel=IN 11 | } 12 | T 1500 1800 9 12 1 0 0 4 1 13 | LT1761-SD 14 | T 400 3500 8 10 0 0 0 0 1 15 | device=LT1761 16 | T 2000 3100 8 10 1 1 180 8 1 17 | refdes=U? 18 | P 2700 2500 3000 2500 1 0 1 19 | { 20 | T 2300 2400 5 10 0 0 0 0 1 21 | pinnumber=2 22 | T 2800 2600 5 10 1 1 0 0 1 23 | pinseq=2 24 | T 2600 2500 9 10 1 1 0 7 1 25 | pinlabel=OUT 26 | } 27 | P 1400 0 1400 300 1 0 0 28 | { 29 | T 1305 50 5 10 1 1 0 6 1 30 | pinnumber=4 31 | T 1300 0 5 10 0 0 90 0 1 32 | pinseq=4 33 | T 1395 400 9 10 1 1 180 4 1 34 | pinlabel=GND 35 | } 36 | P 2700 1000 3000 1000 1 0 1 37 | { 38 | T 2300 900 5 10 0 0 0 0 1 39 | pinnumber=1 40 | T 2800 1100 5 10 1 1 0 0 1 41 | pinseq=1 42 | T 2600 1000 9 10 1 1 0 7 1 43 | pinlabel=BYP 44 | } 45 | T 400 3700 8 10 0 0 0 0 1 46 | footprint=SOT25 47 | P 0 1000 300 1000 1 0 0 48 | { 49 | T 205 1045 5 10 1 1 0 6 1 50 | pinnumber=5 51 | T 0 1200 5 10 0 0 0 0 1 52 | pinseq=5 53 | T 355 995 9 10 1 1 0 1 1 54 | pinlabel=/SHDN 55 | } 56 | -------------------------------------------------------------------------------- /symbols/linear/lt1764aeq-1.sym: -------------------------------------------------------------------------------- 1 | v 20110115 2 2 | B 300 300 2400 2700 3 0 0 0 -1 -1 0 -1 -1 -1 -1 -1 3 | P 0 2500 300 2500 1 0 0 4 | { 5 | T 205 2545 5 10 1 1 0 6 1 6 | pinnumber=2 7 | T 0 2700 5 10 0 0 0 0 1 8 | pinseq=2 9 | T 355 2495 9 10 1 1 0 1 1 10 | pinlabel=IN 11 | } 12 | T 1500 1800 9 12 1 0 0 4 1 13 | LT1764AEQ 14 | T 400 3500 8 10 0 0 0 0 1 15 | device=LT1764 16 | T 2000 3100 8 10 1 1 180 8 1 17 | refdes=U? 18 | P 2700 2500 3000 2500 1 0 1 19 | { 20 | T 2300 2400 5 10 0 0 0 0 1 21 | pinnumber=4 22 | T 2800 2600 5 10 1 1 0 0 1 23 | pinseq=4 24 | T 2600 2500 9 10 1 1 0 7 1 25 | pinlabel=OUT 26 | } 27 | P 1400 0 1400 300 1 0 0 28 | { 29 | T 1305 50 5 10 1 1 0 6 1 30 | pinnumber=3 31 | T 1300 0 5 10 0 0 90 0 1 32 | pinseq=3 33 | T 1395 400 9 10 1 1 180 4 1 34 | pinlabel=GND 35 | } 36 | P 2700 1000 3000 1000 1 0 1 37 | { 38 | T 2300 900 5 10 0 0 0 0 1 39 | pinnumber=5 40 | T 2800 1100 5 10 1 1 0 0 1 41 | pinseq=5 42 | T 2600 1000 9 10 1 1 0 7 1 43 | pinlabel=ADJ 44 | } 45 | T 400 3700 8 10 0 0 0 0 1 46 | footprint=LT1764-DDPAK5 47 | P 0 1000 300 1000 1 0 0 48 | { 49 | T 205 1045 5 10 1 1 0 6 1 50 | pinnumber=1 51 | T 0 1200 5 10 0 0 0 0 1 52 | pinseq=1 53 | T 355 995 9 10 1 1 0 1 1 54 | pinlabel=/SHDN 55 | } 56 | P 2000 0 2000 300 1 0 0 57 | { 58 | T 1905 50 5 10 1 1 0 6 1 59 | pinnumber=6 60 | T 1900 0 5 10 0 0 90 0 1 61 | pinseq=6 62 | T 1995 400 9 10 0 1 180 4 1 63 | pinlabel=GND 64 | } 65 | -------------------------------------------------------------------------------- /symbols/linear/lt1964es5-1.sym: -------------------------------------------------------------------------------- 1 | v 20110115 2 2 | B 300 300 2400 2700 3 0 0 0 -1 -1 0 -1 -1 -1 -1 -1 3 | P 0 800 300 800 1 0 0 4 | { 5 | T 205 845 5 10 1 1 0 6 1 6 | pinnumber=4 7 | T 0 1000 5 10 0 0 0 0 1 8 | pinseq=4 9 | T 355 795 9 10 1 1 0 1 1 10 | pinlabel=IN 11 | } 12 | T 1500 1500 9 12 1 0 0 4 1 13 | LT1964-X 14 | T 400 3500 8 10 0 0 0 0 1 15 | device=LT1964 16 | T 2000 3100 8 10 1 1 180 8 1 17 | refdes=U? 18 | P 2700 800 3000 800 1 0 1 19 | { 20 | T 2300 700 5 10 0 0 0 0 1 21 | pinnumber=2 22 | T 2800 900 5 10 1 1 0 0 1 23 | pinseq=2 24 | T 2600 800 9 10 1 1 0 7 1 25 | pinlabel=OUT 26 | } 27 | P 1500 3300 1500 3000 1 0 0 28 | { 29 | T 1450 3095 5 10 1 1 90 0 1 30 | pinnumber=3 31 | T 1600 3300 5 10 0 0 270 0 1 32 | pinseq=3 33 | T 1500 2945 9 10 1 1 90 6 1 34 | pinlabel=GND 35 | } 36 | P 2700 2300 3000 2300 1 0 1 37 | { 38 | T 2300 2200 5 10 0 0 0 0 1 39 | pinnumber=5 40 | T 2800 2400 5 10 1 1 0 0 1 41 | pinseq=5 42 | T 2600 2300 9 10 1 1 0 7 1 43 | pinlabel=BYP 44 | } 45 | T 400 3700 8 10 0 0 0 0 1 46 | footprint=SOT25 47 | P 0 2300 300 2300 1 0 0 48 | { 49 | T 205 2345 5 10 1 1 0 6 1 50 | pinnumber=1 51 | T 0 2500 5 10 0 0 0 0 1 52 | pinseq=1 53 | T 355 2295 9 10 1 1 0 1 1 54 | pinlabel=/SHDN 55 | } 56 | -------------------------------------------------------------------------------- /symbols/linear/lt1964es5-2.sym: -------------------------------------------------------------------------------- 1 | v 20110115 2 2 | B 300 300 2400 2700 3 0 0 0 -1 -1 0 -1 -1 -1 -1 -1 3 | P 0 800 300 800 1 0 0 4 | { 5 | T 205 845 5 10 1 1 0 6 1 6 | pinnumber=4 7 | T 0 1000 5 10 0 0 0 0 1 8 | pinseq=4 9 | T 355 795 9 10 1 1 0 1 1 10 | pinlabel=IN 11 | T 0 800 5 10 0 0 0 0 1 12 | pintype=pwr 13 | } 14 | T 1500 1500 9 12 1 0 0 4 1 15 | LT1964-SD 16 | T 400 3500 8 10 0 0 0 0 1 17 | device=LT1964-SD 18 | T 2000 3100 8 10 1 1 180 8 1 19 | refdes=U? 20 | P 2700 800 3000 800 1 0 1 21 | { 22 | T 2300 700 5 10 0 0 0 0 1 23 | pinnumber=2 24 | T 2800 900 5 10 1 1 0 0 1 25 | pinseq=2 26 | T 2600 800 9 10 1 1 0 7 1 27 | pinlabel=OUT 28 | T 2700 800 5 10 0 0 0 0 1 29 | pintype=pwr 30 | } 31 | P 1500 3300 1500 3000 1 0 0 32 | { 33 | T 1450 3095 5 10 1 1 90 0 1 34 | pinnumber=3 35 | T 1600 3300 5 10 0 0 270 0 1 36 | pinseq=3 37 | T 1500 2945 9 10 1 1 90 6 1 38 | pinlabel=GND 39 | T 1500 3300 5 10 0 0 0 0 1 40 | pintype=pwr 41 | } 42 | P 2700 2300 3000 2300 1 0 1 43 | { 44 | T 2300 2200 5 10 0 0 0 0 1 45 | pinnumber=1 46 | T 2800 2400 5 10 1 1 0 0 1 47 | pinseq=1 48 | T 2600 2300 9 10 1 1 0 7 1 49 | pinlabel=ADJ 50 | T 2700 2300 5 10 0 0 0 0 1 51 | pintype=in 52 | } 53 | T 400 3700 8 10 0 0 0 0 1 54 | footprint=SOT25 55 | P 0 2300 300 2300 1 0 0 56 | { 57 | T 205 2345 5 10 1 1 0 6 1 58 | pinnumber=5 59 | T 0 2500 5 10 0 0 0 0 1 60 | pinseq=5 61 | T 355 2295 9 10 1 1 0 1 1 62 | pinlabel=/SHDN 63 | T 0 2300 5 10 0 0 0 0 1 64 | pintype=in 65 | } 66 | -------------------------------------------------------------------------------- /symbols/linear/lt3015-1.sym: -------------------------------------------------------------------------------- 1 | v 20110115 2 2 | B 300 300 2400 2700 3 0 0 0 -1 -1 0 -1 -1 -1 -1 -1 3 | P 0 1000 300 1000 1 0 0 4 | { 5 | T 205 1045 5 10 1 1 0 6 1 6 | pinnumber=3 7 | T 0 1200 5 10 0 0 0 0 1 8 | pinseq=3 9 | T 355 995 9 10 1 1 0 1 1 10 | pinlabel=IN 11 | } 12 | T 1500 1800 9 12 1 0 0 4 1 13 | LT3015 14 | T 400 3500 8 10 0 0 0 0 1 15 | device=LT1764 16 | T 2200 100 8 10 1 1 180 8 1 17 | refdes=U? 18 | P 2700 1000 3000 1000 1 0 1 19 | { 20 | T 2300 900 5 10 0 0 0 0 1 21 | pinnumber=5 22 | T 2800 1100 5 10 1 1 0 0 1 23 | pinseq=5 24 | T 2600 1000 9 10 1 1 0 7 1 25 | pinlabel=OUT 26 | } 27 | P 1500 3300 1500 3000 1 0 0 28 | { 29 | T 1450 3095 5 10 1 1 90 0 1 30 | pinnumber=2 31 | T 1600 3300 5 10 0 0 270 0 1 32 | pinseq=2 33 | T 1495 2800 9 10 1 1 0 3 1 34 | pinlabel=GND 35 | } 36 | P 2700 2500 3000 2500 1 0 1 37 | { 38 | T 2300 2400 5 10 0 0 0 0 1 39 | pinnumber=4 40 | T 2800 2600 5 10 1 1 0 0 1 41 | pinseq=4 42 | T 2600 2500 9 10 1 1 0 7 1 43 | pinlabel=ADJ 44 | } 45 | T 400 3700 8 10 0 0 0 0 1 46 | footprint=LT1764-DDPAK5 47 | P 0 2500 300 2500 1 0 0 48 | { 49 | T 205 2545 5 10 1 1 0 6 1 50 | pinnumber=1 51 | T 0 2700 5 10 0 0 0 0 1 52 | pinseq=1 53 | T 355 2495 9 10 1 1 0 1 1 54 | pinlabel=/SHDN 55 | } 56 | P 0 1400 300 1400 1 0 0 57 | { 58 | T 205 1445 5 10 1 1 0 6 1 59 | pinnumber=6 60 | T 0 1600 5 10 0 0 0 0 1 61 | pinseq=6 62 | T 355 1395 9 10 0 1 0 1 1 63 | pinlabel=IN 64 | } 65 | -------------------------------------------------------------------------------- /symbols/micro/atmega32u2_portC-1.sym: -------------------------------------------------------------------------------- 1 | v 20110115 2 2 | T 700 500 9 12 1 1 90 0 1 3 | ATmega32U2 4 | T 300 5800 8 10 0 0 0 0 1 5 | description=Low-power AVR 8-bit Microcontroller 6 | T 300 5600 8 10 0 0 0 0 1 7 | footprint=TQFP32_7 8 | T 1400 2500 8 10 1 1 0 6 1 9 | refdes=U? 10 | T 300 6200 8 10 0 0 0 0 1 11 | numslots=0 12 | P 1800 2200 1500 2200 1 0 0 13 | { 14 | T 1600 2250 5 8 1 1 0 0 1 15 | pinnumber=5 16 | T 1600 2350 5 8 0 1 0 2 1 17 | pinseq=5 18 | T 1450 2200 9 8 1 1 0 6 1 19 | pinlabel=PC2 20 | T 1450 2200 5 8 0 1 0 8 1 21 | pintype=io 22 | } 23 | B 400 400 1100 2000 3 0 0 0 -1 -1 0 -1 -1 -1 -1 -1 24 | T 300 6000 8 10 0 0 0 0 1 25 | device=ATmega32U2 26 | T 900 500 9 10 1 1 90 0 1 27 | PORTC 28 | P 1800 1800 1500 1800 1 0 0 29 | { 30 | T 1600 1850 5 8 1 1 0 0 1 31 | pinnumber=26 32 | T 1600 1950 5 8 0 1 0 2 1 33 | pinseq=26 34 | T 1450 1800 9 8 1 1 0 6 1 35 | pinlabel=PC4 36 | T 1450 1800 5 8 0 1 0 8 1 37 | pintype=io 38 | } 39 | P 1800 1400 1500 1400 1 0 0 40 | { 41 | T 1600 1450 5 8 1 1 0 0 1 42 | pinnumber=25 43 | T 1600 1550 5 8 0 1 0 2 1 44 | pinseq=25 45 | T 1450 1400 9 8 1 1 0 6 1 46 | pinlabel=PC5 47 | T 1450 1400 5 8 0 1 0 8 1 48 | pintype=io 49 | } 50 | P 1800 1000 1500 1000 1 0 0 51 | { 52 | T 1600 1050 5 8 1 1 0 0 1 53 | pinnumber=23 54 | T 1600 1150 5 8 0 1 0 2 1 55 | pinseq=23 56 | T 1450 1000 9 8 1 1 0 6 1 57 | pinlabel=PC6 58 | T 1450 1000 5 8 0 1 0 8 1 59 | pintype=io 60 | } 61 | P 1800 600 1500 600 1 0 0 62 | { 63 | T 1600 650 5 8 1 1 0 0 1 64 | pinnumber=22 65 | T 1600 750 5 8 0 1 0 2 1 66 | pinseq=22 67 | T 1450 600 9 8 1 1 0 6 1 68 | pinlabel=PC7 69 | T 1450 600 5 8 0 1 0 8 1 70 | pintype=io 71 | } 72 | -------------------------------------------------------------------------------- /symbols/micro/atmega32u4_portC-1.sym: -------------------------------------------------------------------------------- 1 | v 20110115 2 2 | T 700 500 9 12 1 1 90 0 1 3 | ATmega32U4 4 | T 300 5800 8 10 0 0 0 0 1 5 | description=USB AVR 8-bit Microcontroller 6 | T 300 5600 8 10 0 0 0 0 1 7 | footprint=TQFP44_10 8 | T 1400 2000 8 10 1 1 0 6 1 9 | refdes=U? 10 | T 300 6200 8 10 0 0 0 0 1 11 | numslots=0 12 | B 400 400 1100 1500 3 0 0 0 -1 -1 0 -1 -1 -1 -1 -1 13 | T 300 6000 8 10 0 0 0 0 1 14 | device=ATmega32U4 15 | T 900 500 9 10 1 1 90 0 1 16 | PORTC 17 | P 1800 1000 1500 1000 1 0 0 18 | { 19 | T 1600 1050 5 8 1 1 0 0 1 20 | pinnumber=31 21 | T 1600 1150 5 8 0 1 0 2 1 22 | pinseq=31 23 | T 1450 1000 9 8 1 1 0 6 1 24 | pinlabel=PC6 25 | T 1450 1000 5 8 0 1 0 8 1 26 | pintype=io 27 | } 28 | P 1800 600 1500 600 1 0 0 29 | { 30 | T 1600 650 5 8 1 1 0 0 1 31 | pinnumber=32 32 | T 1600 750 5 8 0 1 0 2 1 33 | pinseq=32 34 | T 1450 600 9 8 1 1 0 6 1 35 | pinlabel=PC7 36 | T 1450 600 5 8 0 1 0 8 1 37 | pintype=io 38 | } 39 | -------------------------------------------------------------------------------- /symbols/national/lm3671-1.sym: -------------------------------------------------------------------------------- 1 | v 20110115 2 2 | B 300 300 2400 1700 3 0 0 0 -1 -1 0 -1 -1 -1 -1 -1 3 | P 0 1500 300 1500 1 0 0 4 | { 5 | T 205 1545 5 10 1 1 0 6 1 6 | pinnumber=3 7 | T 0 1700 5 10 0 0 0 0 1 8 | pinseq=3 9 | T 355 1495 9 10 1 1 0 1 1 10 | pinlabel=IN 11 | T 0 1500 5 10 0 0 0 0 1 12 | pintype=pwr 13 | } 14 | T 2600 2100 9 10 1 1 0 6 1 15 | device=LM3671 16 | T 2600 2300 8 10 1 1 0 6 1 17 | refdes=U? 18 | P 2700 1500 3000 1500 1 0 1 19 | { 20 | T 2300 1400 5 10 0 0 0 0 1 21 | pinnumber=2 22 | T 2800 1600 5 10 1 1 0 0 1 23 | pinseq=2 24 | T 2600 1500 9 10 1 1 0 7 1 25 | pinlabel=SW 26 | T 2700 1500 5 10 0 0 0 0 1 27 | pintype=pwr 28 | } 29 | P 1500 0 1500 300 1 0 0 30 | { 31 | T 1405 50 5 10 1 1 0 6 1 32 | pinnumber=4 33 | T 1400 0 5 10 0 0 90 0 1 34 | pinseq=4 35 | T 1495 400 9 10 1 1 180 4 1 36 | pinlabel=GND 37 | T 1500 0 5 10 0 0 0 0 1 38 | pintype=pwr 39 | } 40 | P 2700 800 3000 800 1 0 1 41 | { 42 | T 2300 700 5 10 0 0 0 0 1 43 | pinnumber=1 44 | T 2800 900 5 10 1 1 0 0 1 45 | pinseq=1 46 | T 2600 800 9 10 1 1 0 7 1 47 | pinlabel=FB 48 | T 2700 800 5 10 0 0 0 0 1 49 | pintype=in 50 | } 51 | T 400 3700 8 10 0 0 0 0 1 52 | footprint=SOT25 53 | P 0 800 300 800 1 0 0 54 | { 55 | T 205 845 5 10 1 1 0 6 1 56 | pinnumber=5 57 | T 0 1000 5 10 0 0 0 0 1 58 | pinseq=5 59 | T 355 795 9 10 1 1 0 1 1 60 | pinlabel=EN 61 | T 0 800 5 10 0 0 0 0 1 62 | pintype=in 63 | } 64 | T 400 3900 8 10 0 0 0 0 1 65 | description=2 MHz, 600 mA Buck Converter 66 | -------------------------------------------------------------------------------- /symbols/opto/hcpl-0201-1.sym: -------------------------------------------------------------------------------- 1 | v 20110115 2 2 | P 0 1200 300 1200 1 0 0 3 | { 4 | T 100 1300 5 8 1 1 0 0 1 5 | pinnumber=2 6 | T 200 1100 5 10 0 0 0 0 1 7 | pinseq=1 8 | T 200 1000 5 10 0 0 0 0 1 9 | pintype=oc 10 | T 400 1200 9 10 1 1 0 1 1 11 | pinlabel=A 12 | } 13 | P 0 800 300 800 1 0 0 14 | { 15 | T 100 900 5 8 1 1 0 0 1 16 | pinnumber=3 17 | T 200 700 5 10 0 0 0 0 1 18 | pinseq=2 19 | T 200 600 5 10 0 0 0 0 1 20 | pintype=oe 21 | T 400 800 9 10 1 1 0 1 1 22 | pinlabel=C 23 | } 24 | P 1700 1000 2000 1000 1 0 1 25 | { 26 | T 1800 1100 5 8 1 1 0 0 1 27 | pinnumber=7 28 | T 2100 1000 5 10 0 0 0 0 1 29 | pinseq=4 30 | T 2100 900 5 10 0 0 0 0 1 31 | pintype=oc 32 | T 1600 1000 9 10 1 1 0 7 1 33 | pinlabel=Vo 34 | } 35 | P 1000 1700 1000 2000 1 0 1 36 | { 37 | T 845 1750 5 8 1 1 0 0 1 38 | pinnumber=8 39 | T 1000 2100 5 10 0 0 90 0 1 40 | pinseq=6 41 | T 1100 2100 5 10 0 0 90 0 1 42 | pintype=pwr 43 | T 995 1600 9 10 1 1 0 5 1 44 | pinlabel=Vcc 45 | } 46 | P 1000 300 1000 0 1 0 1 47 | { 48 | T 855 150 5 8 1 1 0 0 1 49 | pinnumber=5 50 | T 1000 -100 5 10 0 0 270 0 1 51 | pinseq=3 52 | T 900 -100 5 10 0 0 270 0 1 53 | pintype=pwr 54 | T 1005 400 9 10 1 1 0 3 1 55 | pinlabel=GND 56 | } 57 | B 300 300 1400 1400 3 0 0 0 -1 -1 0 -1 -1 -1 -1 -1 58 | T 1500 1900 9 10 1 1 0 0 1 59 | device=HCPL0201 60 | T 300 3700 5 10 0 0 0 0 1 61 | footprint=SO8 62 | T 1500 2100 8 10 1 1 0 0 1 63 | refdes=U? 64 | T 300 3500 5 10 0 0 0 0 1 65 | numslots=0 66 | -------------------------------------------------------------------------------- /symbols/power/gnd-earth-1.sym: -------------------------------------------------------------------------------- 1 | v 20081231 1 2 | P 100 100 100 300 1 0 1 3 | { 4 | T 158 161 5 4 0 1 0 0 1 5 | pinnumber=1 6 | T 158 161 5 4 0 0 0 0 1 7 | pinseq=1 8 | T 158 161 5 4 0 1 0 0 1 9 | pinlabel=1 10 | T 158 161 5 4 0 1 0 0 1 11 | pintype=pwr 12 | } 13 | L 0 100 200 100 3 0 0 0 -1 -1 14 | T 300 50 8 10 0 0 0 0 1 15 | net=EARTH:1 16 | L 200 100 300 0 3 0 0 0 -1 -1 17 | L 100 100 200 0 3 0 0 0 -1 -1 18 | L 0 100 100 0 3 0 0 0 -1 -1 19 | -------------------------------------------------------------------------------- /symbols/power/gnd-tri-1.sym: -------------------------------------------------------------------------------- 1 | v 20110115 2 2 | P 100 100 100 300 1 0 1 3 | { 4 | T 158 161 5 4 0 1 0 0 1 5 | pinnumber=1 6 | T 158 161 5 4 0 0 0 0 1 7 | pinseq=1 8 | T 158 161 5 4 0 1 0 0 1 9 | pinlabel=1 10 | T 158 161 5 4 0 1 0 0 1 11 | pintype=pwr 12 | } 13 | L 0 100 200 100 3 0 0 0 -1 -1 14 | T 300 50 8 10 0 0 0 0 1 15 | net=AGND:1 16 | L 200 100 100 0 3 0 0 0 -1 -1 17 | L 0 100 100 0 3 0 0 0 -1 -1 18 | -------------------------------------------------------------------------------- /symbols/xilinx/xc6slx9-tqg144-jtag-1.sym: -------------------------------------------------------------------------------- 1 | v 20110115 2 2 | T 1700 1500 9 14 1 1 0 4 1 3 | XC6SLX9 4 | T 300 5800 8 10 0 0 0 0 1 5 | description=Spartan-6 LX9 FPGA 6 | T 300 5600 8 10 0 0 0 0 1 7 | footprint=LQFP144_20 8 | T 2700 2200 8 10 1 1 0 6 1 9 | refdes=U? 10 | T 300 6200 8 10 0 0 0 0 1 11 | numslots=0 12 | P 200 1100 500 1100 1 0 0 13 | { 14 | T 400 1150 5 8 1 1 0 6 1 15 | pinnumber=106 16 | T 400 1250 5 8 0 1 0 8 1 17 | pinseq=106 18 | T 550 1100 9 8 1 1 0 0 1 19 | pinlabel=TDO 20 | T 550 1100 5 8 0 1 0 2 1 21 | pintype=io 22 | } 23 | B 500 500 2300 1600 3 0 0 0 -1 -1 0 -1 -1 -1 -1 -1 24 | T 300 6000 8 10 0 0 0 0 1 25 | device=XC6SLX9 26 | P 200 1500 500 1500 1 0 0 27 | { 28 | T 400 1550 5 8 1 1 0 6 1 29 | pinnumber=109 30 | T 400 1650 5 8 0 1 0 8 1 31 | pinseq=109 32 | T 550 1500 9 8 1 1 0 0 1 33 | pinlabel=TCK 34 | T 550 1500 5 8 0 1 0 2 1 35 | pintype=io 36 | } 37 | P 200 700 500 700 1 0 0 38 | { 39 | T 400 750 5 8 1 1 0 6 1 40 | pinnumber=110 41 | T 400 850 5 8 0 1 0 8 1 42 | pinseq=110 43 | T 550 700 9 8 1 1 0 0 1 44 | pinlabel=TDI 45 | T 550 700 5 8 0 1 0 2 1 46 | pintype=io 47 | } 48 | T 1700 1300 9 10 1 1 0 4 1 49 | JTAG 50 | P 200 1900 500 1900 1 0 0 51 | { 52 | T 400 1950 5 8 1 1 0 6 1 53 | pinnumber=107 54 | T 400 2050 5 8 0 1 0 8 1 55 | pinseq=107 56 | T 550 1900 9 8 1 1 0 0 1 57 | pinlabel=TMS 58 | T 550 1900 5 8 0 1 0 2 1 59 | pintype=io 60 | } 61 | --------------------------------------------------------------------------------