annotate code_part1/OSTC_code_asm_part1/interface.asm @ 555:43296991c283

BUGFIX: CF55 (gas switch delay) should not add fake stops when null.
author JeanDo
date Mon, 13 Feb 2012 00:18:13 +0100
parents c512a868937c
children fbd5e2b75a63
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
2 ; OSTC - diving computer code
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
3 ; Copyright (C) 2008 HeinrichsWeikamp GbR
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
4
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
5 ; This program is free software: you can redistribute it and/or modify
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
6 ; it under the terms of the GNU General Public License as published by
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
7 ; the Free Software Foundation, either version 3 of the License, or
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
8 ; (at your option) any later version.
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
9
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
10 ; This program is distributed in the hope that it will be useful,
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
11 ; but WITHOUT ANY WARRANTY; without even the implied warranty of
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
12 ; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
13 ; GNU General Public License for more details.
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
14
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
15 ; You should have received a copy of the GNU General Public License
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
16 ; along with this program. If not, see <http://www.gnu.org/licenses/>.
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
17
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
18
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
19 ; Interface, Downloader, MD2 Hash send routine
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
20 ; written by: Matthias Heinrichs, info@heinrichsweikamp.com
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
21 ; written: 10/30/05
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
22 ; last updated: 12/27/07
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
23 ; known bugs:
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
24 ; ToDo:
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
25
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
26 uart_store_tissues:
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
27 bcf uart_store_tissue_data ; Clear flag
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
28 bcf PIE1,RCIE ; No Interrupt for UART
21
73014f788032 1.60 stable rc1
heinrichsweikamp
parents: 0
diff changeset
29 bsf LED_blue
0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
30 call simulator_save_tissue_data ; store and set flag for automatic restore
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
31 movlw 'k' ; send echo
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
32 movwf TXREG ; When done
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
33 call rs232_wait_tx ; wait for UART
21
73014f788032 1.60 stable rc1
heinrichsweikamp
parents: 0
diff changeset
34 bcf LED_blue
0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
35 bsf PIE1,RCIE ; Interrupt for RS232
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
36 goto surfloop_loop ; return to surface loop
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
37
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
38 ; reset Decodata
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
39 reset_decodata:
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
40 bcf uart_reset_decodata ; clear flag
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
41 bcf PIE1,RCIE ; No Interrupt for UART
21
73014f788032 1.60 stable rc1
heinrichsweikamp
parents: 0
diff changeset
42 bsf LED_blue
0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
43
116
14a074e1a375 Split C code, and use direct linking.
JeanDo
parents: 21
diff changeset
44 call deco_clear_tissue ; Reset Decodata
0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
45 movlb b'00000001' ; select ram bank 1
116
14a074e1a375 Split C code, and use direct linking.
JeanDo
parents: 21
diff changeset
46 call deco_calc_desaturation_time ; calculate desaturation time
0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
47 movlb b'00000001' ; select ram bank 1
116
14a074e1a375 Split C code, and use direct linking.
JeanDo
parents: 21
diff changeset
48 call deco_clear_CNS_fraction ; clear CNS
0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
49 movlb b'00000001' ; select ram bank 1
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
50
229
85ea09d3b9d8 Nofly should not be reset after dive simulation (bug BB18).
JeanDo
parents: 116
diff changeset
51 clrf nofly_time+0 ; Clear nofly time
0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
52 clrf nofly_time+1 ; Clear nofly time
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
53
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
54 movlw 'h' ; send echo
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
55 movwf TXREG ; When done
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
56 call rs232_wait_tx ; wait for UART
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
57
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
58 bsf oneminupdate ; set flag, so display will be updated at once
21
73014f788032 1.60 stable rc1
heinrichsweikamp
parents: 0
diff changeset
59 bcf LED_blue
0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
60 bsf PIE1,RCIE ; Interrupt for RS232
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
61 goto surfloop_loop ; return to surface loop
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
62
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
63 ; send internal EEPROM BANK 0 via the UART
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
64 send_int_eeprom_b0:
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
65 bcf uart_send_int_eeprom ; clear flag
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
66 bcf PIE1,RCIE ; No Interrupt for UART
21
73014f788032 1.60 stable rc1
heinrichsweikamp
parents: 0
diff changeset
67 bsf LED_blue
73014f788032 1.60 stable rc1
heinrichsweikamp
parents: 0
diff changeset
68
0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
69 clrf EEADRH ; Point to Bank0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
70 rcall send_internal_eeprom1 ; sends complete 1st. page of internal EEPROM
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
71
21
73014f788032 1.60 stable rc1
heinrichsweikamp
parents: 0
diff changeset
72 bcf LED_blue
0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
73 bsf PIE1,RCIE ; Interrupt for RS232
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
74 goto surfloop_loop ; return to surface loop
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
75
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
76 ; send internal EEPROM BANK 1 via the UART
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
77 send_int_eeprom_b1:
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
78 bcf uart_send_int_eeprom2 ; clear flag
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
79 bcf PIE1,RCIE ; No Interrupt for UART
21
73014f788032 1.60 stable rc1
heinrichsweikamp
parents: 0
diff changeset
80 bsf LED_blue
73014f788032 1.60 stable rc1
heinrichsweikamp
parents: 0
diff changeset
81
0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
82
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
83 movlw d'1'
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
84 movwf EEADRH ; Point to Bank1
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
85 rcall send_internal_eeprom1 ; sends complete 2nd page of internal EEPROM
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
86 clrf EEADRH ; Point to Bank0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
87
21
73014f788032 1.60 stable rc1
heinrichsweikamp
parents: 0
diff changeset
88 bcf LED_blue
0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
89 bsf PIE1,RCIE ; Interrupt for RS232
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
90 goto surfloop_loop ; return to surface loop
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
91
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
92
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
93 ; Send firmware version and 16bytes MD2 hash via the UART
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
94 send_md2_hash:
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
95 bcf uart_send_hash ; clear flag
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
96 bcf PIE1,RCIE ; No Interrupt for UART
21
73014f788032 1.60 stable rc1
heinrichsweikamp
parents: 0
diff changeset
97 bsf LED_blue
0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
98
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
99 call rs232_wait_tx ; wait for UART
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
100 movlw softwareversion_x ; Softwareversion
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
101 movwf TXREG
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
102 call rs232_wait_tx ; wait for UART
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
103 movlw softwareversion_y ; Softwareversion
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
104 movwf TXREG
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
105
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
106 lfsr FSR2, char_O_hash
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
107 movlw d'16'
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
108 movwf temp1
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
109 send_md2_hash2:
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
110 call rs232_wait_tx ; wait for UART
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
111 movff POSTINC2,TXREG ; copy hash byte to TXREG
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
112 decfsz temp1,F
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
113 bra send_md2_hash2 ; loop 16 times
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
114
21
73014f788032 1.60 stable rc1
heinrichsweikamp
parents: 0
diff changeset
115 bcf LED_blue
0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
116 bsf PIE1,RCIE ; Interrupt for RS232
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
117 goto surfloop_loop ; return to surface loop
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
118
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
119
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
120 ; Sends first 256Byte from internal and first 32KB from external EEPROM using the UART module
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
121 menu_interface:
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
122 bcf dump_external_eeprom ; clear flag
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
123 bcf PIE1,RCIE ; No Interrupt for UART
21
73014f788032 1.60 stable rc1
heinrichsweikamp
parents: 0
diff changeset
124 bsf LED_blue
0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
125 call PLED_ClearScreen
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
126 call PLED_topline_box
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
127 WIN_INVERT .1 ; Init new Wordprocessor
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
128 DISPLAYTEXT .15 ; "Interface"
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
129 WIN_INVERT .0 ; Init new Wordprocessor
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
130
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
131 movlw d'5'
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
132 movwf uart1_temp
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
133 menu_interface1:
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
134 movlw 0xAA ; Startbytes
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
135 movwf TXREG
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
136 call rs232_wait_tx ; wait for UART
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
137 decfsz uart1_temp
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
138 bra menu_interface1
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
139 movlw 0x55 ; finish preamble
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
140 movwf TXREG
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
141
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
142 DISPLAYTEXT .16 ; "Start"
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
143
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
144 call get_free_EEPROM_location ;
376
ed26990716fe first gas does not reset change depth, display fix with multigas dives in logbook
heinrichsweikamp
parents: 351
diff changeset
145
0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
146 movlw d'1' ; increase
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
147 addwf eeprom_address+0,F
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
148 movlw d'0'
455
c512a868937c last work for 2.0: Fixing 32kB boundary read for logbook
heinrichsweikamp
parents: 376
diff changeset
149 addwfc eeprom_address+1,F
0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
150
376
ed26990716fe first gas does not reset change depth, display fix with multigas dives in logbook
heinrichsweikamp
parents: 351
diff changeset
151 ;For debug only
ed26990716fe first gas does not reset change depth, display fix with multigas dives in logbook
heinrichsweikamp
parents: 351
diff changeset
152 ;clrf eeprom_address+0,F
ed26990716fe first gas does not reset change depth, display fix with multigas dives in logbook
heinrichsweikamp
parents: 351
diff changeset
153 ;clrf eeprom_address+1,F
ed26990716fe first gas does not reset change depth, display fix with multigas dives in logbook
heinrichsweikamp
parents: 351
diff changeset
154
0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
155 DISPLAYTEXT .17 ; "Data"
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
156
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
157 rcall send_internal_eeprom1 ; sends complete 1st. page of internal EEPROM
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
158
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
159 call rs232_wait_tx ; wait for UART
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
160 movff batt_voltage+0,TXREG ; Battery
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
161
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
162 call rs232_wait_tx ; wait for UART
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
163 movff batt_voltage+1,TXREG ; Battery
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
164
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
165 call rs232_wait_tx ; wait for UART
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
166 movlw softwareversion_x ; Softwareversion
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
167 movwf TXREG
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
168
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
169 call rs232_wait_tx ; wait for UART
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
170 movlw softwareversion_y ; Softwareversion
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
171 movwf TXREG
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
172
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
173 DISPLAYTEXT .18 ; "Header"
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
174
351
5c186a72cb5d Debugging the new logbook format, 64kB download routine
heinrichsweikamp
parents: 350
diff changeset
175 setf uart1_temp ; low address counter
5c186a72cb5d Debugging the new logbook format, 64kB download routine
heinrichsweikamp
parents: 350
diff changeset
176 setf uart2_temp ; high address counter
0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
177
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
178 menu_interface3:
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
179 bsf SSPCON2,SEN ; Start condition
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
180 call WaitMSSP
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
181
351
5c186a72cb5d Debugging the new logbook format, 64kB download routine
heinrichsweikamp
parents: 350
diff changeset
182 movlw b'10101110' ; Bit0=0: WRITE, Bit0=1: READ, BLOCK2
5c186a72cb5d Debugging the new logbook format, 64kB download routine
heinrichsweikamp
parents: 350
diff changeset
183 btfss eeprom_address+1,7 ; Access Block2?
5c186a72cb5d Debugging the new logbook format, 64kB download routine
heinrichsweikamp
parents: 350
diff changeset
184 movlw b'10100110' ; No, -> Bit0=0: WRITE, Bit0=1: READ, BLOCK1
0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
185 movwf SSPBUF ; control byte
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
186 call WaitMSSP
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
187 btfsc SSPCON2,ACKSTAT
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
188 bra menu_interface3 ; No Ack, try again!
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
189
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
190 movff eeprom_address+1,SSPBUF ; High Address byte
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
191 call WaitMSSP
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
192 call I2C_WaitforACK
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
193 movff eeprom_address+0,SSPBUF ; Low Address byte
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
194 call WaitMSSP
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
195 call I2C_WaitforACK
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
196 bsf SSPCON2,RSEN ; Start condition
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
197 call WaitMSSP
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
198
351
5c186a72cb5d Debugging the new logbook format, 64kB download routine
heinrichsweikamp
parents: 350
diff changeset
199 movlw b'10101111' ; Bit0=0: WRITE, Bit0=1: READ, BLOCK2
5c186a72cb5d Debugging the new logbook format, 64kB download routine
heinrichsweikamp
parents: 350
diff changeset
200 btfss eeprom_address+1,7 ; Access Block2?
5c186a72cb5d Debugging the new logbook format, 64kB download routine
heinrichsweikamp
parents: 350
diff changeset
201 movlw b'10100111' ; No, -> Bit0=0: WRITE, Bit0=1: READ, BLOCK1
5c186a72cb5d Debugging the new logbook format, 64kB download routine
heinrichsweikamp
parents: 350
diff changeset
202
0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
203 movwf SSPBUF ; control byte
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
204 call WaitMSSP
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
205 call I2C_WaitforACK
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
206
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
207 DISPLAYTEXT .19 ; "Profile"
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
208
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
209 menu_interface2:
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
210 call rs232_wait_tx ; wait for UART
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
211
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
212 movlw d'1'
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
213 addwf uart1_temp,F
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
214 movlw d'0'
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
215 addwfc uart2_temp,F
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
216
351
5c186a72cb5d Debugging the new logbook format, 64kB download routine
heinrichsweikamp
parents: 350
diff changeset
217 ; Slow but safe...
5c186a72cb5d Debugging the new logbook format, 64kB download routine
heinrichsweikamp
parents: 350
diff changeset
218 call I2CREAD2 ; same as I2CREAD but with automatic address increase
350
7250ca7c8d24 64kByte logbook (Still incompatible to existing PC software)
heinrichsweikamp
parents: 229
diff changeset
219 movff SSPBUF, TXREG
7250ca7c8d24 64kByte logbook (Still incompatible to existing PC software)
heinrichsweikamp
parents: 229
diff changeset
220
351
5c186a72cb5d Debugging the new logbook format, 64kB download routine
heinrichsweikamp
parents: 350
diff changeset
221 movlw 0xFF
5c186a72cb5d Debugging the new logbook format, 64kB download routine
heinrichsweikamp
parents: 350
diff changeset
222 cpfseq uart2_temp ;=0xFFFF?
5c186a72cb5d Debugging the new logbook format, 64kB download routine
heinrichsweikamp
parents: 350
diff changeset
223 bra menu_interface2 ; No, continue
5c186a72cb5d Debugging the new logbook format, 64kB download routine
heinrichsweikamp
parents: 350
diff changeset
224 cpfseq uart1_temp ;=0xFFFF?
5c186a72cb5d Debugging the new logbook format, 64kB download routine
heinrichsweikamp
parents: 350
diff changeset
225 bra menu_interface2 ; No, continue
350
7250ca7c8d24 64kByte logbook (Still incompatible to existing PC software)
heinrichsweikamp
parents: 229
diff changeset
226
0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
227 DISPLAYTEXT .20 ; Done.
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
228
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
229 WAITMS d'250'
21
73014f788032 1.60 stable rc1
heinrichsweikamp
parents: 0
diff changeset
230 bcf LED_blue
0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
231 bsf PIE1,RCIE ; Interrupt for RS232
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
232 goto surfloop ; back to surfacemode
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
233
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
234 send_internal_eeprom1:
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
235 clrf uart1_temp ; Send the total of 256bytes
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
236 clrf EEADR ; Send bytes 0-255 from internal EEPROM
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
237 send_internal_eeprom2:
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
238 call read_eeprom ; read byte
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
239 movff EEDATA,TXREG ; send byte
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
240 incf EEADR,F ; increase pointer
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
241 call rs232_wait_tx ; wait for UART
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
242 decfsz uart1_temp,F ; until limit reached
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
243 bra send_internal_eeprom2
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
244 return