approaching v0.1 schematic, initial hack on an assembler source for firmware
authorBdale Garbee <bdale@gag.com>
Sat, 18 Apr 2009 22:11:55 +0000 (16:11 -0600)
committerBdale Garbee <bdale@gag.com>
Sat, 18 Apr 2009 22:11:55 +0000 (16:11 -0600)
Datasheets/1599B.pdf [deleted file]
Datasheets/22056b.pdf [deleted file]
Datasheets/enclosure.pdf [new file with mode: 0644]
Datasheets/mcp1825s.pdf [new file with mode: 0644]
Makefile
teleterra.asm [new file with mode: 0644]
teleterra.sch

diff --git a/Datasheets/1599B.pdf b/Datasheets/1599B.pdf
deleted file mode 100644 (file)
index 26050b2..0000000
Binary files a/Datasheets/1599B.pdf and /dev/null differ
diff --git a/Datasheets/22056b.pdf b/Datasheets/22056b.pdf
deleted file mode 100644 (file)
index 53b79b7..0000000
Binary files a/Datasheets/22056b.pdf and /dev/null differ
diff --git a/Datasheets/enclosure.pdf b/Datasheets/enclosure.pdf
new file mode 100644 (file)
index 0000000..26050b2
Binary files /dev/null and b/Datasheets/enclosure.pdf differ
diff --git a/Datasheets/mcp1825s.pdf b/Datasheets/mcp1825s.pdf
new file mode 100644 (file)
index 0000000..53b79b7
Binary files /dev/null and b/Datasheets/mcp1825s.pdf differ
index 05b807d40d0bbb6d6c6a29bb494e846b636dbfa4..61918701fac3b4b90f4b15f72e3675e7a3d7413d 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -1,16 +1,23 @@
 # intentionally want to rebuild drc and bom on every invocation
-all:   drc bom
+all:   hw sw
 
-drc:   telemetrum.sch
-       -gnetlist -g drc2 telemetrum.sch -o telemetrum.drc
+hw:    drc bom 
 
-bom:   telemetrum.sch
-       gnetlist -g bom -o telemetrum.unsorted telemetrum.sch
-       head -n1 telemetrum.unsorted > telemetrum.bom
-       tail -n+2 telemetrum.unsorted | sort >> telemetrum.bom
-       rm -f telemetrum.unsorted
+sw:    teleterra.hex
 
-pcb:   telemetrum.sch project
+teleterra.hex: teleterra.asm
+       gpasm teleterra.asm
+
+drc:   teleterra.sch
+       -gnetlist -g drc2 teleterra.sch -o teleterra.drc
+
+bom:   teleterra.sch
+       gnetlist -g bom -o teleterra.unsorted teleterra.sch
+       head -n1 teleterra.unsorted > teleterra.bom
+       tail -n+2 teleterra.unsorted | sort >> teleterra.bom
+       rm -f teleterra.unsorted
+
+pcb:   teleterra.sch project
        gsch2pcb project
 
 # note that 'gschlas -e foo.sch' will embed all symbols in the schematic, this
@@ -28,11 +35,12 @@ pcb:        telemetrum.sch project
 push:  
        git push --mirror
 
-zip:   telemetrum.back.gbr telemetrum.backmask.gbr telemetrum.fab.gbr telemetrum.front.gbr telemetrum.frontmask.gbr telemetrum.frontpaste.gbr telemetrum.frontsilk.gbr telemetrum.group2.gbr telemetrum.group3.gbr telemetrum.plated-drill.cnc
-       zip telemetrum.zip *.gbr *.cnc
+zip:   teleterra.back.gbr teleterra.backmask.gbr teleterra.fab.gbr teleterra.front.gbr teleterra.frontmask.gbr teleterra.frontpaste.gbr teleterra.frontsilk.gbr teleterra.group2.gbr teleterra.group3.gbr teleterra.plated-drill.cnc
+       zip teleterra.zip *.gbr *.cnc
 
 clean:
-       rm -f *.bom *.drc *.log *~ telemetrum.ps *.gbr *.cnc *bak* *- *.zip 
+       rm -f *.bom *.drc *.log *~ teleterra.ps *.gbr *.cnc *bak* *- *.zip 
        rm -f *.net *.xy *.cmd *.png
        rm -f *.partslist *.new.pcb *.unsorted
+       rm -f *.hex *.cod *.lst
 
diff --git a/teleterra.asm b/teleterra.asm
new file mode 100644 (file)
index 0000000..629d42c
--- /dev/null
@@ -0,0 +1,276 @@
+;
+; Firmware for the TeleTerra ground station board for TeleMetrum,
+; see http://altusmetrum.org/TeleTerra for more information.
+;
+; Copyright © 2009 Bdale Garbee <bdale@gag.com>
+;
+; This program is free software; you can redistribute it and/or modify
+; it under the terms of the GNU General Public License as published by
+; the Free Software Foundation; version 2 of the License.
+;
+; This program is distributed in the hope that it will be useful, but
+; WITHOUT ANY WARRANTY; without even the implied warranty of
+; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+; General Public License for more details.
+;
+; You should have received a copy of the GNU General Public License along
+; with this program; if not, write to the Free Software Foundation, Inc.,
+; 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
+;
+;************************************************************ 
+; Processor: PIC16F886 using internal oscillator
+;************************************************************ 
+
+; FIXME - more or less cloned from clock4robert project, not ready for use yet!
+
+        LIST P=18F886, R=DEC   ; Use the PIC18F4550 and decimal system 
+
+#include "p16f886.inc"         ; Include header file 
+
+       __config 0x300001, 0x22
+       __config 0x300003, 0xe
+       __config 0x300006, 0x81
+
+        CBLOCK 0x20          ; Declare variable addresses starting at 0x20
+          Loop1,Loop2,Loop3,Counter
+        ENDC 
+
+; ----------- 
+; Vectors
+; ----------- 
+
+        ORG    0x0800
+       GOTO    Start
+
+       ORG     0x0808
+       CALL    H_PRIO_ISR
+       RETFIE
+
+       ORG     0x0818
+       RETFIE
+
+; ----------- 
+; INITIALIZE 
+; ----------- 
+
+Start
+        CLRF   PORTA           ; Initialize port A 
+        CLRF   PORTD           ; Initialize port D 
+        CLRF   PORTE           ; Initialize port E 
+        CLRF   TRISA           ; All pins port A output 
+        CLRF   TRISD           ; All pins port D output 
+        CLRF   TRISE           ; All pins port E output 
+
+;      CLRF    WDTCON
+
+; -----------
+; Timer0
+; -----------
+
+       CLRF    TMR0H           ; clear timer 0
+       CLRF    TMR0L
+
+;  this works out to about 1.4 seconds per tick
+;      MOVLW   b'10000111'     ; enable 16 bit timer, 256:1 prescaler
+;  this works out to about 350ms per tick
+;      MOVLW   b'10000101'     ; enable 16 bit timer, 64:1 prescaler
+;  this works out to about 10.4ms per tick, or 91.6hz
+;      MOVLW   b'10000000'     ; enable 16 bit timer, 2:1 prescaler
+;  this works out to 5.46ms per tick, 183.32hz
+       MOVLW   b'10001000'     ; enable 16 bit timer, no prescaler
+       MOVWF   T0CON
+
+       BCF     INTCON, TMR0IF  ; clear Timer0 interrupt flag
+       BSF     INTCON, TMR0IE  ; enable Timer0 interrupt 
+       BSF     INTCON, GIE     ; enable interrupts
+
+; ------------------------ 
+; FUNCTION OF PORT A PINS 
+; ------------------------ 
+; 
+;       MOVLW    7 
+;       MOVWF    CMCON         ; Comparators off, all pins digital I/O 
+; 
+; ---------- 
+; MAIN LOOP 
+; ---------- 
+Main   CALL    LpmOn   ; light PM
+       CALL    LamOff
+       CALL    LsaOn   ; light segment A
+       CALL    LsbOn   ; light segment B
+       CALL    LscOn   ; light segment C
+       CALL    LsdOn   ; light segment D
+       CALL    LseOn   ; light segment E
+       CALL    LsfOn   ; light segment F
+       CALL    LsgOn   ; light segment G
+       CALL    LcOn    ; colon on
+       CALL    Drv0On  
+       CALL    Drv1Off  
+       CALL    Drv2Off 
+       CALL    Drv3Off 
+       CALL    delay
+       CALL    LcOff   ; colon off
+       CALL    Drv0Off
+       CALL    Drv1On
+       CALL    Drv2Off 
+       CALL    Drv3Off 
+       CALL    delay
+       CALL    LcOn    ; colon on
+       CALL    LamOn
+       CALL    LpmOff
+       CALL    Drv0Off 
+       CALL    Drv1Off  
+       CALL    Drv2On
+       CALL    Drv3Off 
+       CALL    delay
+       CALL    LcOff   ; colon off
+       CALL    Drv0Off 
+       CALL    Drv1Off  
+       CALL    Drv2Off 
+       CALL    Drv3On
+       CALL    delay
+        GOTO    Main 
+
+; digit select 0
+Drv0On BSF     LATA,2
+       RETURN
+
+Drv0Off        BCF     LATA,2
+       RETURN
+
+; digit select 1
+Drv1On BSF     LATA,3
+       RETURN
+
+Drv1Off        BCF     LATA,3
+       RETURN
+
+; digit select 2
+Drv2On BSF     LATA,4
+       RETURN
+
+Drv2Off        BCF     LATA,4
+       RETURN
+
+; digit select 3
+Drv3On BSF     LATA,5
+       RETURN
+
+Drv3Off        BCF     LATA,5
+       RETURN
+
+; control digit segment A
+LsaOn  BSF     LATD,0
+       RETURN
+
+LsaOff BCF     LATD,0
+       RETURN
+
+; control digit segment B
+LsbOn  BSF     LATD,1
+       RETURN
+
+LsbOff BCF     LATD,1
+       RETURN
+
+; control digit segment C
+LscOn  BSF     LATD,2
+       RETURN
+
+LscOff BCF     LATD,2
+       RETURN
+
+; control digit segment D
+LsdOn  BSF     LATD,3
+       RETURN
+
+LsdOff BCF     LATD,3
+       RETURN
+
+; control digit segment E
+LseOn  BSF     LATD,4
+       RETURN
+
+LseOff BCF     LATD,4
+       RETURN
+
+; control digit segment F
+LsfOn  BSF     LATD,5
+       RETURN
+
+LsfOff BCF     LATD,5
+       RETURN
+
+; control digit segment G
+LsgOn  BSF     LATD,6
+       RETURN
+
+LsgOff BCF     LATD,6
+       RETURN
+
+; control the "AM" LED
+LamOn  BSF     LATE,1
+       RETURN
+
+LamOff BCF     LATE,1
+       RETURN
+
+; control the "PM" LED
+LpmOn  BSF     LATE,2
+       RETURN
+
+LpmOff BCF     LATE,2
+       RETURN
+
+; control the "colon" LED
+LcOn   BSF     LATD,7
+       RETURN
+
+LcOff  BCF     LATD,7
+       RETURN
+
+; control the "alarm" LED
+LaOn   BSF     LATE,0
+       RETURN
+
+LaOff  BCF     LATE,0
+       RETURN
+
+; --------------- 
+; DELAY 0.5 SEC 
+; --------------- 
+; 
+;delay   MOVLW   20 
+delay   MOVLW   10 
+        MOVWF   Loop1 
+Outer   MOVLW   250 
+        MOVWF   Loop2 
+Middle  MOVLW   239 
+        MOVWF   Loop3 
+Inner   NOP 
+        NOP 
+       DECFSZ  Loop3,F
+       GOTO    Inner
+        DECFSZ  Loop2,F 
+        GOTO    Middle
+        DECFSZ  Loop1,F 
+        GOTO    Outer 
+        RETURN 
+
+; --------------- 
+; High priority interrupt service route
+; --------------- 
+H_PRIO_ISR
+       BCF     INTCON, TMR0IF  ; clear Timer0 interrupt flag
+       INCF    Counter,1
+       BTFSC   Counter,6       ; test bit 6
+       GOTO    TurnItOn
+       CALL    LaOff           ; turn alarm LED off
+       GOTO    End_ISR
+TurnItOn
+       CALL    LaOn            ; turn alarm LED on
+End_ISR
+       RETURN
+
+        END
index ba686c4c063e84ee5cee7c6602835e3d01906e38..21a750b3a1310001269cbc539f440d9b9024e59b 100644 (file)
@@ -24,10 +24,10 @@ T 13300 -8600 8 10 0 1 0 0 1
 digikey=MMA7260QT-ND
 T 13300 -8600 8 10 0 1 0 0 1
 digikey=MCP9700-E/TO-ND
-C 58600 54800 1 0 0 PIC16F882.sym
+C 58600 54800 1 0 0 PIC16F886.sym
 {
 T 64300 60900 5 10 1 1 0 0 1
-refdes=U?
+refdes=U1
 T 64000 57800 5 10 0 0 0 0 1
 device=PIC16F886
 T 64000 57500 5 10 0 0 0 0 1
@@ -42,215 +42,199 @@ N 65400 56600 65000 56600 4
 C 65200 57000 1 0 0 3.3V-plus-1.sym
 N 65400 57000 65000 57000 4
 N 65600 58600 65000 58600 4
-C 66600 61300 1 0 0 conn-6.sym
-{
-T 66955 63595 5 10 1 1 0 0 1
-refdes=J11
-}
-N 58400 60200 58400 63400 4
-N 58400 63400 66600 63400 4
-C 66000 63000 1 0 0 3.3V-plus-1.sym
-N 66600 63000 66200 63000 4
-C 66100 62300 1 0 0 gnd-1.sym
-N 66200 62600 66600 62600 4
-N 66600 62200 65200 62200 4
-N 65200 62200 65200 60200 4
+C 62900 62300 1 90 0 conn-6.sym
+{
+T 60545 62805 5 10 1 1 180 0 1
+refdes=J1
+}
+C 60600 61400 1 0 0 3.3V-plus-1.sym
+C 61500 61300 1 0 0 gnd-1.sym
+N 61600 61600 61600 62300 4
+N 65200 61400 65200 60200 4
 N 65200 60200 65000 60200 4
-N 66600 61800 65400 61800 4
-N 65400 61800 65400 59800 4
+N 65400 61600 65400 59800 4
 N 65400 59800 65000 59800 4
-N 66600 61400 65600 61400 4
-N 65600 58600 65600 61400 4
-C 69100 54900 1 0 0 conn-4.sym
+N 65600 58600 65600 61800 4
+C 67400 54900 1 0 0 conn-4.sym
 {
-T 69400 56500 5 10 1 1 0 0 1
-refdes=J?
+T 67700 56500 5 10 1 1 0 0 1
+refdes=J3
 }
 C 62100 51500 1 0 0 conn-4.sym
 {
 T 62400 53100 5 10 1 1 0 0 1
-refdes=J?
+refdes=J2
 }
-C 55900 65800 1 0 0 switch-pushbutton-no-1.sym
+C 68800 57800 1 0 0 switch-pushbutton-no-1.sym
 {
-T 56300 66100 5 10 1 1 0 0 1
-refdes=S?
-T 56300 66400 5 10 0 0 0 0 1
+T 68900 57500 5 10 1 1 0 0 1
+refdes=S2
+T 69200 58400 5 10 0 0 0 0 1
 device=SWITCH_PUSHBUTTON_NO
 }
-C 56000 67100 1 0 0 switch-spst-1.sym
+C 67600 57400 1 0 0 switch-spst-1.sym
 {
-T 56400 67800 5 10 0 0 0 0 1
+T 68000 58100 5 10 0 0 0 0 1
 device=SPST
-T 56300 67400 5 10 1 1 0 0 1
-refdes=S?
+T 67500 57100 5 10 1 1 0 0 1
+refdes=S3
 }
-C 56900 54300 1 0 0 led.sym
+C 53600 58100 1 0 1 led.sym
 {
-T 56800 54900 5 10 0 0 0 0 1
+T 53700 58700 5 10 0 0 0 6 1
 device=LED
-T 56850 54300 5 10 0 1 0 0 1
+T 53650 58100 5 10 0 1 0 6 1
 footprint=1206
+T 53300 57900 5 10 1 1 0 0 1
+refdes=D1
 }
-C 56900 53300 1 0 0 led.sym
+C 55300 57700 1 0 1 led.sym
 {
-T 56850 53600 5 10 1 1 0 0 1
+T 55250 57500 5 10 1 1 0 6 1
 refdes=D2
-T 56800 53900 5 10 0 0 0 0 1
+T 55400 58300 5 10 0 0 0 6 1
 device=LED
-T 56850 53300 5 10 0 1 0 0 1
+T 55350 57700 5 10 0 1 0 6 1
 footprint=1206
 }
-C 56900 52300 1 0 0 led.sym
+C 53600 56900 1 0 1 led.sym
 {
-T 56850 52600 5 10 1 1 0 0 1
+T 53550 56700 5 10 1 1 0 6 1
 refdes=D3
-T 56800 52900 5 10 0 0 0 0 1
+T 53700 57500 5 10 0 0 0 6 1
 device=LED
-T 56850 52300 5 10 0 1 0 0 1
+T 53650 56900 5 10 0 1 0 6 1
 footprint=1206
 }
-C 56900 51300 1 0 0 led.sym
+C 55300 56500 1 0 1 led.sym
 {
-T 56850 51600 5 10 1 1 0 0 1
+T 55250 56300 5 10 1 1 0 6 1
 refdes=D4
-T 56800 51900 5 10 0 0 0 0 1
+T 55400 57100 5 10 0 0 0 6 1
 device=LED
-T 56850 51300 5 10 0 1 0 0 1
+T 55350 56500 5 10 0 1 0 6 1
 footprint=1206
 }
-N 69100 55800 67800 55800 4
-N 69100 55000 67800 55000 4
+N 67400 55800 66100 55800 4
+N 67400 55000 66100 55000 4
 {
-T 67800 55100 5 10 1 1 0 0 1
+T 66100 55100 5 10 1 1 0 0 1
 netname=v_lipo
 }
-C 68700 55100 1 0 0 gnd-1.sym
-N 69100 55400 68800 55400 4
-T 70000 55600 9 10 1 0 0 0 1
+C 67000 55100 1 0 0 gnd-1.sym
+N 67400 55400 67100 55400 4
+T 68300 55600 9 10 1 0 0 0 1
 GPS
-N 65000 55800 67500 55800 4
+N 65000 55800 65800 55800 4
 {
-T 68100 56300 5 10 1 1 0 0 1
+T 66400 56300 5 10 1 1 0 0 1
 netname=serial_tx
 }
-N 67500 55800 67500 56200 4
-N 67500 56200 69100 56200 4
-N 65000 56200 67200 56200 4
+N 65800 55800 65800 56200 4
+N 65800 56200 67400 56200 4
+N 65000 56200 65500 56200 4
 {
-T 68100 55900 5 10 1 1 0 0 1
+T 66400 55900 5 10 1 1 0 0 1
 netname=serial_rx
 }
-N 67200 56200 67200 56000 4
-N 67200 56000 67800 56000 4
-N 67800 56000 67800 55800 4
-C 56000 54300 1 0 0 resistor.sym
+N 65500 56200 65500 56000 4
+N 65500 56000 66100 56000 4
+N 66100 56000 66100 55800 4
+C 54500 58100 1 0 1 resistor.sym
 {
-T 56300 54700 5 10 0 0 0 0 1
+T 54200 58500 5 10 0 0 0 6 1
 device=RESISTOR
-T 55995 54300 5 10 0 1 0 0 1
+T 54505 58100 5 10 0 1 0 6 1
 footprint=1206
-T 56200 54600 5 10 1 1 0 0 1
+T 54000 57900 5 10 1 1 0 6 1
 refdes=R3
 }
-C 56000 53300 1 0 0 resistor.sym
+C 56200 57700 1 0 1 resistor.sym
 {
-T 56300 53700 5 10 0 0 0 0 1
+T 55900 58100 5 10 0 0 0 6 1
 device=RESISTOR
-T 56200 53600 5 10 1 1 0 0 1
+T 55700 57500 5 10 1 1 0 6 1
 refdes=R4
-T 55995 53300 5 10 0 1 0 0 1
+T 56205 57700 5 10 0 1 0 6 1
 footprint=1206
 }
-C 56000 52300 1 0 0 resistor.sym
+C 54500 56900 1 0 1 resistor.sym
 {
-T 56300 52700 5 10 0 0 0 0 1
+T 54200 57300 5 10 0 0 0 6 1
 device=RESISTOR
-T 56200 52600 5 10 1 1 0 0 1
+T 54000 56700 5 10 1 1 0 6 1
 refdes=R5
-T 55995 52300 5 10 0 1 0 0 1
+T 54505 56900 5 10 0 1 0 6 1
 footprint=1206
 }
-C 56000 51300 1 0 0 resistor.sym
+C 56200 56500 1 0 1 resistor.sym
 {
-T 56300 51700 5 10 0 0 0 0 1
+T 55900 56900 5 10 0 0 0 6 1
 device=RESISTOR
-T 56200 51600 5 10 1 1 0 0 1
+T 55700 56300 5 10 1 1 0 6 1
 refdes=R6
-T 55995 51300 5 10 0 1 0 0 1
+T 56205 56500 5 10 0 1 0 6 1
 footprint=1206
 }
-N 55500 65800 55900 65800 4
-N 55500 67100 56000 67100 4
-T 56200 65500 9 10 1 0 0 0 1
+T 69300 57500 9 10 1 0 0 0 1
 mode
-T 56000 66800 9 10 1 0 0 0 1
+T 68000 57100 9 10 1 0 0 0 1
 safe/arm
-N 56900 65800 58300 65800 4
-{
-T 57500 65900 5 10 1 1 0 0 1
-netname=sw_mode
-}
-N 56800 67100 58300 67100 4
-{
-T 57600 67200 5 10 1 1 0 0 1
-netname=sw_arm
-}
 T 62900 52200 9 10 1 0 0 0 1
 I2C
 C 61700 51700 1 0 0 gnd-1.sym
 N 62100 52000 61800 52000 4
-C 59500 70100 1 0 0 LCDmodule.sym
+C 66900 62500 1 0 0 LCDmodule.sym
 {
-T 65900 71000 5 10 1 1 0 6 1
+T 73300 63400 5 10 1 1 0 6 1
 refdes=X1
-T 59500 71150 5 10 0 0 0 0 1
+T 66900 63550 5 10 0 0 0 0 1
 device=20x4 LCD Module
-T 59500 71350 5 10 0 0 0 0 1
+T 66900 63750 5 10 0 0 0 0 1
 footprint=none
-T 59500 71750 5 10 0 0 0 0 1
+T 66900 64150 5 10 0 0 0 0 1
 symversion=0.1
-T 59500 70100 5 10 0 0 0 0 1
+T 66900 62500 5 10 0 0 0 0 1
 digikey=NHD-0420H1Z-FL-GBW-3V3-ND
 }
-C 59600 69800 1 0 0 gnd-1.sym
-C 58700 69900 1 0 0 3.3V-plus-1.sym
-N 58900 69900 58900 69500 4
-N 58900 69500 60100 69500 4
-N 60100 69500 60100 70100 4
-C 65600 65900 1 0 0 gnd-1.sym
-C 59800 68600 1 270 0 resistor-variable-1.sym
+C 67000 62200 1 0 0 gnd-1.sym
+C 66100 62300 1 0 0 3.3V-plus-1.sym
+N 66300 62300 66300 61900 4
+N 66300 61900 67500 61900 4
+N 67500 61900 67500 62500 4
+C 73000 57700 1 0 0 gnd-1.sym
+C 67200 61000 1 270 0 resistor-variable-1.sym
 {
-T 60700 67800 5 10 0 0 270 0 1
+T 68100 60200 5 10 0 0 270 0 1
 device=VARIABLE_RESISTOR
-T 59400 68200 5 10 1 1 0 0 1
+T 66800 60600 5 10 1 1 0 0 1
 refdes=R1
-T 59400 67900 5 10 1 1 0 0 1
+T 66800 60300 5 10 1 1 0 0 1
 value=10k
 }
-C 59800 67400 1 0 0 gnd-1.sym
-N 59900 68600 59900 69500 4
-N 60500 70100 60500 68100 4
-N 60500 68100 60400 68100 4
+C 67200 59800 1 0 0 gnd-1.sym
+N 67300 61000 67300 61900 4
+N 67900 62500 67900 60500 4
+N 67900 60500 67800 60500 4
 N 58600 60200 58400 60200 4
-N 63700 70100 63700 68500 4
+N 71100 62500 71100 60900 4
 {
-T 63600 68500 5 10 1 1 90 0 1
+T 71000 60900 5 10 1 1 90 0 1
 netname=lcd_d4
 }
-N 64100 70100 64100 68500 4
+N 71500 62500 71500 60900 4
 {
-T 64000 68500 5 10 1 1 90 0 1
+T 71400 60900 5 10 1 1 90 0 1
 netname=lcd_d5
 }
-N 64500 70100 64500 68500 4
+N 71900 62500 71900 60900 4
 {
-T 64400 68500 5 10 1 1 90 0 1
+T 71800 60900 5 10 1 1 90 0 1
 netname=lcd_d6
 }
-N 64900 70100 64900 68500 4
+N 72300 62500 72300 60900 4
 {
-T 64800 68500 5 10 1 1 90 0 1
+T 72200 60900 5 10 1 1 90 0 1
 netname=lcd_d7
 }
 N 58600 59800 57000 59800 4
@@ -273,34 +257,34 @@ N 58600 59000 57000 59000 4
 T 57000 59100 5 10 1 1 0 0 1
 netname=lcd_d6
 }
-T 60200 67400 9 10 1 0 0 0 2
+T 67600 59800 9 10 1 0 0 0 2
    LCD
 contrast
-C 65800 67000 1 90 0 resistor.sym
+C 73200 59200 1 90 0 resistor.sym
 {
-T 65400 67300 5 10 0 0 90 0 1
+T 72800 59500 5 10 0 0 90 0 1
 device=RESISTOR
-T 66200 67700 5 10 1 1 180 0 1
+T 73600 59900 5 10 1 1 180 0 1
 refdes=R2
-T 65800 66995 5 10 0 1 90 0 1
+T 73200 59195 5 10 0 1 90 0 1
 footprint=1206
-T 66200 67300 5 10 1 1 180 0 1
+T 73600 59500 5 10 1 1 180 0 1
 value=27
 }
-C 66200 69400 1 0 0 3.3V-plus-1.sym
-N 60900 70100 60900 68500 4
+C 73600 61800 1 0 0 3.3V-plus-1.sym
+N 68300 62500 68300 60900 4
 {
-T 60800 68500 5 10 1 1 90 0 1
+T 68200 60900 5 10 1 1 90 0 1
 netname=lcd_rs
 }
-N 61300 70100 61300 68500 4
+N 68700 62500 68700 60900 4
 {
-T 61200 68500 5 10 1 1 90 0 1
+T 68600 60900 5 10 1 1 90 0 1
 netname=lcd_rw
 }
-N 61700 70100 61700 68500 4
+N 69100 62500 69100 60900 4
 {
-T 61600 68500 5 10 1 1 90 0 1
+T 69000 60900 5 10 1 1 90 0 1
 netname=lcd_e
 }
 N 58600 56200 57000 56200 4
@@ -318,107 +302,86 @@ N 58600 55400 57000 55400 4
 T 57000 55500 5 10 1 1 0 0 1
 netname=lcd_e
 }
-C 57400 50900 1 0 0 gnd-1.sym
-N 57500 51200 57500 54400 4
-N 57500 54400 57300 54400 4
-N 57500 53400 57300 53400 4
-N 57500 52400 57300 52400 4
-N 57500 51400 57300 51400 4
-N 65000 57400 67200 57400 4
+C 53100 56100 1 0 1 gnd-1.sym
+N 53000 58200 53200 58200 4
+N 53000 57800 54900 57800 4
+N 53000 57000 53200 57000 4
+N 53000 56600 54900 56600 4
+N 65000 57400 67600 57400 4
 {
 T 66500 57500 5 10 1 1 0 0 1
 netname=sw_arm
 }
-N 65000 57800 67200 57800 4
+N 65000 57800 68800 57800 4
 {
 T 66400 57900 5 10 1 1 0 0 1
 netname=sw_mode
 }
-N 65000 59000 67200 59000 4
+N 65000 59000 67600 59000 4
 {
 T 66000 59100 5 10 1 1 0 0 1
 netname=sw_backlight
 }
-C 55900 64600 1 0 0 switch-pushbutton-no-1.sym
+C 67600 59000 1 0 0 switch-pushbutton-no-1.sym
 {
-T 56300 64900 5 10 1 1 0 0 1
-refdes=S?
-T 56300 65200 5 10 0 0 0 0 1
+T 67700 58700 5 10 1 1 0 0 1
+refdes=S1
+T 68000 59600 5 10 0 0 0 0 1
 device=SWITCH_PUSHBUTTON_NO
 }
-C 55400 64100 1 0 0 gnd-1.sym
-N 55500 67100 55500 64400 4
-N 55500 64600 55900 64600 4
-N 56900 64600 58300 64600 4
-{
-T 57200 64700 5 10 1 1 0 0 1
-netname=sw_backlight
-}
-T 56100 64300 9 10 1 0 0 0 1
+C 69900 56900 1 0 0 gnd-1.sym
+T 68100 58700 9 10 1 0 0 0 1
 backlight
-N 58600 56600 55800 56600 4
-N 55800 56600 55800 54400 4
-N 55800 54400 56000 54400 4
-N 58600 57000 55500 57000 4
-N 55500 57000 55500 53400 4
-N 55500 53400 56000 53400 4
-N 58600 57800 55200 57800 4
-N 55200 57800 55200 52400 4
-N 55200 52400 56000 52400 4
-N 58600 58200 54900 58200 4
-N 54900 58200 54900 51400 4
-N 54900 51400 56000 51400 4
-N 65000 58200 67200 58200 4
+N 58600 56600 56200 56600 4
+N 58600 57000 54500 57000 4
+N 58600 57800 56200 57800 4
+N 58600 58200 54500 58200 4
+N 65000 58200 71000 58200 4
 {
 T 65900 58300 5 10 1 1 0 0 1
 netname=pwm_backlight
 }
-C 65200 67000 1 270 0 FDN335N.sym
+C 72600 58800 1 270 0 FDN335N.sym
 {
-T 65100 67300 5 10 0 0 270 0 1
+T 72500 59100 5 10 0 0 270 0 1
 device=PMOS_TRANSISTOR
-T 65000 66900 5 10 1 1 0 0 1
+T 72400 58700 5 10 1 1 0 0 1
 refdes=Q1
-T 65963 66583 5 10 1 1 0 0 1
+T 73363 58383 5 10 1 1 0 0 1
 device=FD335N
-T 65170 67005 5 10 0 1 270 0 1
+T 72570 58805 5 10 0 1 270 0 1
 footprint=SuperSOT3
 }
-C 63700 66300 1 0 0 resistor.sym
+C 71100 58100 1 0 0 resistor.sym
 {
-T 64000 66700 5 10 0 0 0 0 1
+T 71400 58500 5 10 0 0 0 0 1
 device=RESISTOR
-T 63800 66600 5 10 1 1 0 0 1
-refdes=R?
-T 63695 66300 5 10 0 1 0 0 1
+T 71200 58400 5 10 1 1 0 0 1
+refdes=R7
+T 71095 58100 5 10 0 1 0 0 1
 footprint=1206
-T 64200 66600 5 10 1 1 0 0 1
+T 71600 58400 5 10 1 1 0 0 1
 value=100
 }
-C 63700 65400 1 90 0 resistor.sym
+C 71100 57200 1 90 0 resistor.sym
 {
-T 63300 65700 5 10 0 0 90 0 1
+T 70700 57500 5 10 0 0 90 0 1
 device=RESISTOR
-T 64000 66100 5 10 1 1 180 0 1
-refdes=R?
-T 63700 65395 5 10 0 1 90 0 1
+T 71400 57900 5 10 1 1 180 0 1
+refdes=R8
+T 71100 57195 5 10 0 1 90 0 1
 footprint=1206
-T 63800 65600 5 10 1 1 0 0 1
+T 71200 57400 5 10 1 1 0 0 1
 value=10k
 }
-N 65300 70100 65300 69200 4
-N 65700 67900 65700 70100 4
-N 65200 66400 64600 66400 4
-N 63700 66400 61800 66400 4
-{
-T 61800 66500 5 10 1 1 0 0 1
-netname=pwm_backlight
-}
-N 63600 66400 63600 66300 4
-C 63500 65100 1 0 0 gnd-1.sym
-N 65300 69200 66400 69200 4
-N 66400 69200 66400 69400 4
-T 67600 62300 9 10 1 0 0 0 1
+N 72700 62500 72700 61600 4
+N 73100 60100 73100 62500 4
+N 72600 58200 72000 58200 4
+N 71000 58200 71000 58100 4
+C 70900 56900 1 0 0 gnd-1.sym
+N 72700 61600 73800 61600 4
+N 73800 61600 73800 61800 4
+T 61600 63100 9 10 1 0 0 0 1
 ICSP
 N 60800 52800 62100 52800 4
 {
@@ -437,44 +400,77 @@ T 61100 52500 5 10 1 1 0 0 1
 netname=i2c_clock
 }
 N 62100 51600 62000 51600 4
-N 62000 51600 62000 51000 4
-N 62000 51000 69200 51000 4
-N 67800 51000 67800 55000 4
-C 69200 50400 1 0 0 lm7805-1.sym
-{
-T 70800 51700 5 10 0 0 0 0 1
-device=3.3V LDO
-T 70600 51400 5 10 1 1 0 6 1
-refdes=U?
-T 69200 50400 5 10 0 0 0 0 1
-digikey=MCP1825S-3302E/AB-ND
-T 69200 50400 5 10 0 0 0 0 1
-footprint=TO-220
-}
-C 69900 50100 1 0 0 gnd-1.sym
-C 71100 49800 1 0 0 gnd-1.sym
-C 68700 49800 1 0 0 gnd-1.sym
-C 71400 50100 1 90 0 capacitor.sym
-{
-T 70700 50300 5 10 0 0 90 0 1
+N 62000 51600 62000 51200 4
+N 62000 51200 66100 51200 4
+N 66100 51200 66100 55000 4
+C 68200 52500 1 0 0 gnd-1.sym
+C 69700 52200 1 0 0 gnd-1.sym
+C 66500 52200 1 0 0 gnd-1.sym
+C 70000 52500 1 90 0 capacitor.sym
+{
+T 69300 52700 5 10 0 0 90 0 1
 device=CAPACITOR
-T 70900 50300 5 10 1 1 90 0 1
-refdes=C?
-T 70500 50300 5 10 0 0 90 0 1
+T 70300 53200 5 10 1 1 180 0 1
+refdes=C2
+T 69100 52700 5 10 0 0 90 0 1
 symversion=0.1
-T 71400 50095 5 10 0 1 90 0 1
+T 70000 52495 5 10 0 1 90 0 1
 footprint=1206
+T 70000 52500 5 10 1 1 0 0 1
+value=1uF
 }
-C 69000 50100 1 90 0 capacitor.sym
+C 66800 52500 1 90 0 capacitor.sym
 {
-T 68300 50300 5 10 0 0 90 0 1
+T 66100 52700 5 10 0 0 90 0 1
+device=CAPACITOR
+T 67100 53200 5 10 1 1 180 0 1
+refdes=C1
+T 65900 52700 5 10 0 0 90 0 1
+symversion=0.1
+T 66800 52495 5 10 0 1 90 0 1
+footprint=1206
+T 66800 52600 5 10 1 1 0 0 1
+value=4.7uF
+}
+N 69100 53400 71200 53400 4
+C 71000 53400 1 0 0 3.3V-plus-1.sym
+N 68400 57400 70000 57400 4
+N 69800 57800 70000 57800 4
+N 58400 60200 58400 62000 4
+N 58400 62000 60800 62000 4
+N 60800 62000 60800 62300 4
+N 61200 62300 61200 61200 4
+N 61200 61200 60800 61200 4
+N 60800 61200 60800 61400 4
+N 62000 62300 62000 61400 4
+N 62000 61400 65200 61400 4
+N 62400 62300 62400 61600 4
+N 62400 61600 65400 61600 4
+N 62800 62300 62800 61800 4
+N 62800 61800 65600 61800 4
+N 68600 59000 70000 59000 4
+N 70000 57200 70000 59000 4
+N 67500 53400 66100 53400 4
+N 53000 58200 53000 56400 4
+C 67500 52800 1 0 0 MCP1825S.sym
+{
+T 69100 54100 5 10 0 0 0 0 1
+device=MCP1825S
+T 68900 53800 5 10 1 1 0 6 1
+refdes=U2
+}
+N 73100 58800 73100 59200 4
+C 70900 52200 1 0 0 gnd-1.sym
+C 71200 52500 1 90 0 capacitor.sym
+{
+T 70500 52700 5 10 0 0 90 0 1
 device=CAPACITOR
-T 68500 50300 5 10 1 1 90 0 1
-refdes=C?
-T 68100 50300 5 10 0 0 90 0 1
+T 71500 53200 5 10 1 1 180 0 1
+refdes=C3
+T 70300 52700 5 10 0 0 90 0 1
 symversion=0.1
-T 69000 50095 5 10 0 1 90 0 1
+T 71200 52495 5 10 0 1 90 0 1
 footprint=1206
+T 71200 52500 5 10 1 1 0 0 1
+value=0.1uF
 }
-N 70800 51000 71800 51000 4
-C 71600 51000 1 0 0 3.3V-plus-1.sym