Mercurial > public > hwos_code
annotate src/eeprom_rs232.asm @ 629:237931377539
3.07 stable release
| author | heinrichsweikamp |
|---|---|
| date | Fri, 29 Nov 2019 18:48:11 +0100 |
| parents | cd58f7fc86db |
| children | 185ba2f91f59 |
| rev | line source |
|---|---|
| 0 | 1 ;============================================================================= |
| 2 ; | |
| 629 | 3 ; File eeprom_rs232.asm combined next generation V3.06.2 |
| 0 | 4 ; |
| 5 ; Internal EEPROM, RS232 | |
| 6 ; | |
| 7 ; Copyright (c) 2011, JD Gascuel, HeinrichsWeikamp, all right reserved. | |
| 8 ;============================================================================= | |
| 9 ; HISTORY | |
| 10 ; 2011-08-06 : [mH] moving from OSTC code | |
| 11 | |
| 275 | 12 #include "hwos.inc" |
| 0 | 13 #include "wait.inc" |
| 582 | 14 #include "shared_definitions.h" |
| 15 #include "rtc.inc" | |
| 16 | |
| 623 | 17 extern lt2942_charge_done |
| 18 | |
| 19 ;----------------------------------------------------------------------------- | |
| 20 ; Macros | |
| 21 | |
| 582 | 22 write_int_eeprom macro eeprom_address |
| 23 movlw eeprom_address | |
| 24 call write_int_eeprom_1 | |
| 25 endm | |
| 26 | |
| 27 read_int_eeprom macro eeprom_address | |
| 28 movlw eeprom_address | |
| 29 call read_int_eeprom_1 | |
| 30 endm | |
| 31 | |
| 623 | 32 ;----------------------------------------------------------------------------- |
| 33 ; Reserved memory locations in EEPROM | |
| 34 | |
| 35 eeprom code 0xF00000+0x10 ; skip SERIAL number - it should not be overwritten | |
| 582 | 36 |
| 37 global eeprom_serial_save | |
| 38 global eeprom_opt_backup | |
| 39 | |
| 40 eeprom_serial_save res 2 | |
| 41 eeprom_opt_backup res 0x3E | |
| 0 | 42 |
| 623 | 43 ;----------------------------------------------------------------------------- |
| 44 | |
| 45 ee_rs232 CODE | |
| 46 | |
| 0 | 47 ;============================================================================= |
| 48 | |
| 582 | 49 global write_int_eeprom_1 |
| 0 | 50 write_int_eeprom_1: |
| 51 movwf EEADR | |
| 604 | 52 bra write_eeprom ; writes and "returns" after write |
| 582 | 53 |
| 0 | 54 |
| 623 | 55 global read_int_eeprom_1 |
| 0 | 56 read_int_eeprom_1: |
| 57 movwf EEADR | |
| 604 | 58 bra read_eeprom ; reads and "returns" after write |
| 0 | 59 |
| 60 ;============================================================================= | |
| 623 | 61 ; read from internal EEPROM |
| 62 ; | |
| 604 | 63 ; Input: EEADRH:EEADR = EEPROM address |
| 64 ; Output: EEDATA | |
| 65 ; Trashed: NONE | |
| 623 | 66 ; |
| 0 | 67 global read_eeprom |
| 582 | 68 read_eeprom: |
| 0 | 69 bcf EECON1,EEPGD |
| 70 bcf EECON1,CFGS | |
| 71 bsf EECON1,RD | |
| 72 return | |
| 73 | |
| 604 | 74 ;============================================================================= |
| 623 | 75 ; write into internal EEPROM |
| 76 ; | |
| 604 | 77 ; Input: EEADRH:EEADR = EEPROM address |
| 78 ; EEDATA = byte to write | |
| 79 ; Trashed: WREG | |
| 623 | 80 ; |
| 604 | 81 global write_eeprom |
| 82 write_eeprom: | |
| 83 bcf EECON1,EEPGD | |
| 84 bcf EECON1,CFGS | |
| 85 bsf EECON1,WREN | |
| 86 | |
| 87 bcf INTCON,GIE ; disable interrupts for the next 5 instructions | |
| 88 movlw 0x55 | |
| 89 movwf EECON2 | |
| 90 movlw 0xAA | |
| 91 movwf EECON2 | |
| 92 bsf EECON1,WR | |
| 93 | |
| 94 write_eep2: | |
| 95 btfsc EECON1,WR | |
| 96 bra write_eep2 ; wait about 4ms... | |
| 97 bcf EECON1,WREN | |
| 628 | 98 bsf INTCON,GIE ; ...but the flag for the ISR routines were still set, so they will interrupt now! |
| 604 | 99 return |
| 100 | |
| 623 | 101 ;============================================================================= |
| 102 | |
| 582 | 103 global disable_ir_s8 |
| 104 disable_ir_s8: | |
| 623 | 105 banksel TXSTA2 ; select bank for IO register access |
| 582 | 106 clrf TXSTA2 |
| 107 clrf RCSTA2 | |
| 623 | 108 banksel common ; back to bank common |
| 629 | 109 bcf PIE3,RC2IE ; disable RC2 INT |
| 110 bcf ir_power ; IR off | |
| 111 bcf mcp_power ; power-down instrumentation amp | |
| 112 bsf s8_npower ; power-down S8 digital interface | |
| 113 bcf s8_digital_avail ; digital S8 interface not available | |
| 0 | 114 return |
| 115 | |
| 116 | |
| 582 | 117 global enable_ir_s8 |
|
187
669b5d00706d
CHANGE: Longer timeout (4 min) for calibration menu
heinrichsweikamp
parents:
151
diff
changeset
|
118 enable_ir_s8: |
| 623 | 119 ;initialize serial port2 (TRISG2) |
| 120 btfsc analog_o2_input ; do we have an analog input? | |
| 121 bra enable_s8 ; YES - search for S8 digital input | |
| 122 ; NO - start IR digital input | |
| 123 banksel BAUDCON2 ; - select bank for IO register access | |
| 124 movlw b'00100000' ; - BRG16=0, inverted for IR | |
| 113 | 125 movwf BAUDCON2 |
| 623 | 126 movlw b'00100000' ; - BRGH=0, SYNC=0 |
| 582 | 127 movwf TXSTA2 |
| 623 | 128 movlw .102 ; - SPBRGH:SPBRG = .102 : 2403 BAUD @ 16 MHz |
| 582 | 129 movwf SPBRG2 |
| 623 | 130 clrf SPBRGH2 |
| 582 | 131 movlw b'10010000' |
| 132 movwf RCSTA2 | |
| 623 | 133 banksel common ; - back to bank common |
| 134 bsf ir_power ; - power-up IR | |
| 629 | 135 btfss ir_power ; - power-up confirmed? |
| 136 bra $-6 ; NO - loop and wait | |
| 137 bsf PIE3,RC2IE ; - enable RC2 INT | |
| 138 return ; - done | |
| 0 | 139 |
| 113 | 140 enable_s8: |
| 629 | 141 banksel TXSTA2 ; select bank for IO register access |
| 582 | 142 clrf TXSTA2 |
| 143 clrf RCSTA2 | |
| 623 | 144 banksel common ; back to bank common |
| 628 | 145 ; Check for Digital/Analog |
| 146 bsf s8_npower ; power-down S8 HUD | |
| 147 WAITMS d'2' ; very short delay | |
| 148 bsf mcp_power ; power-up instrumentation amp | |
| 149 btfss mcp_power | |
| 150 bra $-4 | |
| 113 | 151 |
| 582 | 152 ; It may be digital, check for voltage when isolator is powered |
| 604 | 153 bcf s8_npower ; power S8 HUD |
| 623 | 154 WAITMS d'1' ; wait 1 ms |
| 582 | 155 btfsc PORTG,2 ; RX2=1? |
| 604 | 156 bra enable_s8_2 ; YES - digital |
| 623 | 157 WAITMS d'30' ; NO - wait 30 ms |
| 158 btfsc PORTG,2 ; - RX2=1? | |
| 159 bra enable_s8_2 ; YES - digital | |
| 160 ;bra enable_s8_analog ; NO - not found, set to analog (fail-safe) | |
| 113 | 161 |
| 162 enable_s8_analog: | |
| 623 | 163 ; S8 analog interface |
| 604 | 164 bsf s8_npower ; power-down S8 HUD |
| 623 | 165 bcf s8_digital_avail ; digital S8 interface not available |
| 582 | 166 return |
| 113 | 167 |
| 623 | 168 enable_s8_2: ; configure S8 digital interface |
| 169 banksel BAUDCON2 ; select bank for IO register access | |
| 170 movlw b'00000000' ; BRG16=0, normal for S8 | |
| 113 | 171 movwf BAUDCON2 |
| 582 | 172 movlw b'00100000' ; BRGH=0, SYNC=0 |
| 173 movwf TXSTA2 | |
| 604 | 174 movlw .25 ; SPBRGH:SPBRG = .25 : 9615 BAUD @ 16 MHz |
| 582 | 175 movwf SPBRG2 |
| 176 movlw b'10010000' | |
| 177 movwf RCSTA2 | |
| 623 | 178 banksel common ; back to bank common |
| 179 bsf s8_digital_avail ; digital S8 interface available | |
| 582 | 180 return |
| 113 | 181 |
| 0 | 182 ;============================================================================= |
| 582 | 183 |
| 0 | 184 global enable_rs232 |
| 185 enable_rs232: | |
| 623 | 186 call request_speed_normal ; request CPU speed change to normal speed |
| 187 enable_rs232_1: | |
| 188 btfss speed_is_normal ; speed = normal? | |
| 189 bra enable_rs232_1 ; NO - wait for ISR to adjust speed | |
| 190 bcf PORTE,0 ; start comm | |
| 628 | 191 bsf PORTJ,2 ; /Reset (for very old OSTC sport) |
| 623 | 192 ;initialize serial port1 (TRISC6/7) |
| 582 | 193 movlw b'00100100' ; BRGH=1, SYNC=0 |
| 194 movwf TXSTA1 | |
| 195 movlw b'10010000' | |
| 196 movwf RCSTA1 | |
| 0 | 197 return |
| 198 | |
| 582 | 199 |
| 0 | 200 global disable_rs232 |
| 201 disable_rs232: | |
| 202 clrf RCSTA1 | |
| 582 | 203 clrf TXSTA1 ; UART disable |
| 204 bcf PORTC,6 ; TX hard to GND | |
| 623 | 205 bsf PORTE,0 ; stop comm |
| 628 | 206 bcf PORTJ,2 ; /Reset (for very old OSTC sport) |
| 0 | 207 return |
| 208 | |
| 582 | 209 |
| 0 | 210 global rs232_wait_tx |
| 211 rs232_wait_tx: | |
| 623 | 212 btfss TXSTA1,TRMT ; RS232 busy? |
| 604 | 213 bra rs232_wait_tx ; YES - wait... |
| 582 | 214 |
| 215 btfss ble_available ; ble available? | |
| 604 | 216 return ; NO - done |
| 582 | 217 |
| 604 | 218 btfsc NRTS ; wait for Bluetooth module |
| 219 bra rs232_wait_tx ; YES - wait... | |
| 220 return ; done | |
|
344
1e342e433839
CHANGE: GF and aGF high range increased to 45-110%
heinrichsweikamp
parents:
276
diff
changeset
|
221 |
| 0 | 222 |
| 582 | 223 global rs232_wait_tx2 |
| 113 | 224 rs232_wait_tx2: |
| 623 | 225 banksel TXSTA2 ; select bank for IO register access |
| 226 rs232_wait_tx2_loop: | |
| 604 | 227 btfss TXSTA2,TRMT ; RS232 busy? |
| 623 | 228 bra rs232_wait_tx2_loop ; YES - wait... |
| 229 banksel common ; back to bank common | |
| 604 | 230 return ; done |
| 113 | 231 |
| 623 | 232 |
| 0 | 233 global rs232_get_byte |
| 234 rs232_get_byte: | |
| 623 | 235 bcf rs232_rx_timeout ; clear timeout flag |
| 236 ; set timeout timer to approx. 400 ms: | |
| 237 clrf uart_timeout_timer+0 ; set low byte of timeout timer to 0 | |
| 238 clrf uart_timeout_timer+1 ; set high byte of timeout timer to 0 | |
| 239 ; set upper byte of timeout timer to 10 without using WREG: | |
| 240 clrf uart_timeout_timer+2 ; first clear to 0, then... | |
| 241 bsf uart_timeout_timer+2,1 ; set bit 1 (value 2), | |
| 242 bsf uart_timeout_timer+2,3 ; and bit 3 (value 8). | |
| 243 | |
| 244 rs232_get_byte_loop: | |
| 245 btfsc PIR1,RCIF ; received a data byte? | |
| 246 return ; YES - done | |
| 247 decfsz uart_timeout_timer+0,F ; NO - decrement low byte of timer, became zero? | |
| 248 bra rs232_get_byte_loop ; NO - loop | |
| 249 decfsz uart_timeout_timer+1,F ; YES - decrement high byte of timer, became zero? | |
| 250 bra rs232_get_byte_loop ; NO - loop | |
| 251 decfsz uart_timeout_timer+2,F ; YES - decrement upper byte of timer, became zero? | |
| 252 bra rs232_get_byte_loop ; NO - loop | |
| 253 bsf rs232_rx_timeout ; YES - set timeout flag | |
| 254 bcf RCSTA1,CREN ; - clear receiver status | |
| 255 bsf RCSTA1,CREN ; - ... | |
| 256 return ; - and return anyway | |
| 582 | 257 |
| 258 ;============================================================================= | |
| 259 | |
| 260 global do_logoffset_common_write | |
| 261 do_logoffset_common_write: | |
| 623 | 262 movff lo,EEDATA |
| 582 | 263 write_int_eeprom 0x0D |
| 264 movff hi,EEDATA | |
| 265 write_int_eeprom 0x0E | |
| 266 return | |
| 267 | |
| 268 global do_logoffset_common_read | |
| 269 do_logoffset_common_read: | |
| 270 clrf EEADRH | |
| 271 read_int_eeprom 0x0D | |
| 272 movff EEDATA,lo | |
| 273 read_int_eeprom 0x0E | |
| 623 | 274 movff EEDATA,hi |
| 582 | 275 return |
| 276 | |
| 623 | 277 ;============================================================================= |
| 582 | 278 |
| 279 global update_battery_registers | |
| 280 update_battery_registers: | |
| 623 | 281 ; save battery gauge to EEPROM 0x07-0x0C |
| 282 bsf block_battery_gauge ; suspend ISR from accessing the battery gauge | |
| 582 | 283 clrf EEADRH |
| 284 movff battery_gauge+0,EEDATA | |
| 285 write_int_eeprom 0x07 | |
| 286 movff battery_gauge+1,EEDATA | |
| 287 write_int_eeprom 0x08 | |
| 288 movff battery_gauge+2,EEDATA | |
| 289 write_int_eeprom 0x09 | |
| 290 movff battery_gauge+3,EEDATA | |
| 291 write_int_eeprom 0x0A | |
| 292 movff battery_gauge+4,EEDATA | |
| 293 write_int_eeprom 0x0B | |
| 294 movff battery_gauge+5,EEDATA | |
| 295 write_int_eeprom 0x0C | |
| 623 | 296 movff battery_type,EEDATA ; =0:1.5V, =1:3.6V Saft, =2:LiIon 3.7V/0.8Ah, =3:LiIon 3.7V/3.1Ah, =4: LiIon 3.7V/2.3Ah |
| 582 | 297 write_int_eeprom 0x0F |
| 623 | 298 bcf block_battery_gauge ; allow ISR to access the battery gauge again |
| 582 | 299 return |
| 300 | |
| 301 | |
| 623 | 302 global retrieve_battery_registers |
| 303 retrieve_battery_registers: | |
| 304 ; retrieve battery gauge from EEPROM 0x07-0x0C | |
| 305 bsf block_battery_gauge ; suspend ISR from accessing the battery gauge | |
| 306 clrf EEADRH | |
| 307 read_int_eeprom 0x07 | |
| 308 movff EEDATA,battery_gauge+0 | |
| 309 read_int_eeprom 0x08 | |
| 310 movff EEDATA,battery_gauge+1 | |
| 311 read_int_eeprom 0x09 | |
| 312 movff EEDATA,battery_gauge+2 | |
| 313 read_int_eeprom 0x0A | |
| 314 movff EEDATA,battery_gauge+3 | |
| 315 read_int_eeprom 0x0B | |
| 316 movff EEDATA,battery_gauge+4 | |
| 317 read_int_eeprom 0x0C | |
| 318 movff EEDATA,battery_gauge+5 | |
| 319 read_int_eeprom 0x0F | |
| 320 movff EEDATA,battery_type ; =0:1.5V, =1:3,6V Saft, =2:LiIon 3,7V/0.8Ah, =3:LiIon 3,7V/3.1Ah, =4: LiIon 3,7V/2.3Ah | |
| 321 bcf block_battery_gauge ; allow ISR to access the battery gauge again | |
| 322 return | |
| 323 | |
| 324 ;============================================================================= | |
| 325 | |
| 582 | 326 global vault_decodata_into_eeprom |
| 327 vault_decodata_into_eeprom: | |
| 328 ; Vault in EEPROM 512...1023 | |
| 329 ; Write 0xAA at 512 to indicate valid data in vault | |
| 330 ; Store last time/date | |
| 331 ; Store 0x700 to 0x780 (pres_tissue_N2 and pres_tissue_He) | |
| 332 movlw HIGH .512 ; =2 | |
| 629 | 333 movwf EEADRH ; set EEPROM address, high byte |
| 623 | 334 |
| 335 ; indicate valid data in vault | |
| 582 | 336 movlw 0xAA |
| 337 movwf EEDATA | |
| 338 write_int_eeprom .0 | |
| 623 | 339 |
| 340 ; store date/time | |
| 341 SMOVSS rtc_year,rtc_latched_year ; ISR-safe 6 byte copy of date and time | |
| 342 movff rtc_latched_year+0,EEDATA | |
| 582 | 343 write_int_eeprom .1 |
| 623 | 344 movff rtc_latched_year+1,EEDATA |
| 582 | 345 write_int_eeprom .2 |
| 623 | 346 movff rtc_latched_year+2,EEDATA |
| 582 | 347 write_int_eeprom .3 |
| 623 | 348 movff rtc_latched_year+3,EEDATA |
| 582 | 349 write_int_eeprom .4 |
| 623 | 350 movff rtc_latched_year+4,EEDATA |
| 582 | 351 write_int_eeprom .5 |
| 623 | 352 movff rtc_latched_year+5,EEDATA |
| 582 | 353 write_int_eeprom .6 |
| 354 | |
| 623 | 355 movff int_O_CNS_current+0,EEDATA ; get current CNS, low byte |
| 356 write_int_eeprom .7 ; store value | |
| 357 movff int_O_CNS_current+1,EEDATA ; get current CNS, high byte | |
| 358 write_int_eeprom .8 ; store value | |
| 359 | |
| 360 movff int_O_desaturation_time+0,EEDATA; get desaturation time, low byte | |
| 361 write_int_eeprom .9 ; store value | |
| 362 movff int_O_desaturation_time+1,EEDATA; get desaturation time, high byte | |
| 363 write_int_eeprom .10 ; store value | |
| 364 | |
| 629 | 365 SMOVII surface_interval_mins,mpr ; ISR-safe copy of surface interval |
| 623 | 366 movff mpr+0,EEDATA ; get surface interval, low byte |
| 367 write_int_eeprom .11 ; store value | |
| 368 movff mpr+1,EEDATA ; get surface interval, high byte | |
| 369 write_int_eeprom .12 ; store value | |
| 370 | |
| 371 movff int_O_lead_supersat+0,EEDATA ; get leading tissue's supersaturation, value is limited to 255 so only the lower byte is used for the value | |
| 582 | 372 write_int_eeprom .13 |
| 0 | 373 |
| 623 | 374 movff int_O_nofly_time+0,EEDATA ; get time, low byte |
| 375 write_int_eeprom .14 ; store value | |
| 376 movff int_O_nofly_time+1,EEDATA ; get time, high byte | |
| 377 write_int_eeprom .15 ; store value | |
| 378 | |
| 379 ; tissue data from 16 to 144 | |
| 582 | 380 movlw .16 |
| 381 movwf EEADR | |
| 623 | 382 movlw .128 ; 2 * 16 floats = 2*16*4 byte = 128 byte |
| 582 | 383 movwf lo |
| 623 | 384 lfsr FSR1,0x700 ; pres_tissue_N2+0 |
| 582 | 385 vault_decodata_into_eeprom2: |
| 386 movff POSTINC1,EEDATA | |
| 387 call write_eeprom ; EEDATA into EEPROM@EEADR | |
| 388 incf EEADR,F | |
| 604 | 389 decfsz lo,F ; all done? |
| 623 | 390 bra vault_decodata_into_eeprom2 ; NO - loop |
| 391 clrf EEADRH ; YES - reset EEPROM pointer | |
| 392 return ; - done | |
| 393 | |
| 582 | 394 |
| 395 global restore_decodata_from_eeprom | |
| 396 restore_decodata_from_eeprom: | |
| 397 movlw LOW .512 ; =0 | |
| 629 | 398 movwf EEADR ; set EEPROM address, low byte |
| 582 | 399 movlw HIGH .512 ; =2 |
| 629 | 400 movwf EEADRH ; set EEPROM address, high byte |
| 582 | 401 |
| 623 | 402 ; restore date and time |
| 582 | 403 read_int_eeprom .1 |
| 623 | 404 movff EEDATA,rtc_latched_year |
| 582 | 405 read_int_eeprom .2 |
| 623 | 406 movff EEDATA,rtc_latched_month |
| 582 | 407 read_int_eeprom .3 |
| 623 | 408 movff EEDATA,rtc_latched_day |
| 582 | 409 read_int_eeprom .4 |
| 623 | 410 movff EEDATA,rtc_latched_hour |
| 582 | 411 read_int_eeprom .5 |
| 623 | 412 movff EEDATA,rtc_latched_mins |
| 582 | 413 read_int_eeprom .6 |
| 623 | 414 movff EEDATA,rtc_latched_secs |
| 415 call rtc_set_rtc ; write time and date to RTC module | |
| 416 | |
| 417 read_int_eeprom .7 ; read CNS%, low byte | |
| 418 movff EEDATA,int_O_CNS_current+0 ; restore value | |
| 419 read_int_eeprom .8 ; read CNS%, high byte | |
| 420 movff EEDATA,int_O_CNS_current+1 ; restore value | |
| 582 | 421 |
| 623 | 422 read_int_eeprom .9 ; read desaturation time, low byte |
| 423 movff EEDATA,int_O_desaturation_time+0; restore value | |
| 424 read_int_eeprom .10 ; read desaturation time, high byte | |
| 425 movff EEDATA,int_O_desaturation_time+1; restore value | |
| 582 | 426 |
| 623 | 427 read_int_eeprom .11 ; read surface interval, low byte |
| 428 movff EEDATA,mpr+0 ; cache value in mpr | |
| 429 read_int_eeprom .12 ; read surface interval, high byte | |
| 430 movff EEDATA,mpr+1 ; cache value in mpr | |
| 629 | 431 SMOVII mpr,surface_interval_mins ; ISR-safe copy-back of surface interval |
| 623 | 432 |
| 433 read_int_eeprom .13 ; read leading tissue's supersaturation | |
| 434 movff EEDATA,int_O_lead_supersat+0 ; restore value | |
| 435 | |
| 436 read_int_eeprom .14 ; read no-fly/no-altitude time, low byte | |
| 437 movff EEDATA,int_O_nofly_time+0 ; restore value | |
| 438 read_int_eeprom .15 ; read no-fly/no-altitude time, high byte | |
| 439 movff EEDATA,int_O_nofly_time+1 ; restore value | |
| 440 | |
| 441 ; tissue data from 16 to 144 | |
| 582 | 442 movlw .16 |
| 443 movwf EEADR | |
| 623 | 444 movlw .128 ; 2 * 16 floats = 2*16*4 byte = 128 byte |
| 582 | 445 movwf lo |
| 623 | 446 lfsr FSR1,0x700 ; pres_tissue_N2+0 |
| 582 | 447 restore_decodata_from_eeprom2: |
| 448 call read_eeprom ; EEPROM@EEADR into EEDATA | |
| 449 movff EEDATA,POSTINC1 | |
| 450 incf EEADR,F | |
| 604 | 451 decfsz lo,F ; all done? |
| 623 | 452 bra restore_decodata_from_eeprom2 ; NO - loop |
| 629 | 453 clrf EEADRH ; YES - revert EEPROM high address pointer to default |
| 454 return ; - done | |
| 582 | 455 |
| 623 | 456 ;============================================================================= |
| 582 | 457 |
| 623 | 458 global reset_battery_pointer ; called from comm and menu tree |
| 582 | 459 global reset_battery_internal_only |
| 623 | 460 reset_battery_pointer: ; reset battery pointer 0x07-0x0C and battery gauge |
| 461 btfsc battery_gauge_available ; something to reset? | |
| 462 call lt2942_charge_done ; YES - reset accumulating registers to 0xFFFF | |
| 582 | 463 reset_battery_internal_only: |
| 464 clrf EEADRH | |
| 604 | 465 clrf EEDATA ; delete to zero |
| 582 | 466 write_int_eeprom 0x07 |
| 467 write_int_eeprom 0x08 | |
| 468 write_int_eeprom 0x09 | |
| 469 write_int_eeprom 0x0A | |
| 470 write_int_eeprom 0x0B | |
| 471 write_int_eeprom 0x0C | |
| 623 | 472 |
| 473 bsf block_battery_gauge ; suspend ISR from accessing the battery gauge | |
| 474 banksel battery_gauge ; select bank ISR data | |
| 475 clrf battery_gauge+0 ; null the battery gauge | |
| 582 | 476 clrf battery_gauge+1 |
| 477 clrf battery_gauge+2 | |
| 478 clrf battery_gauge+3 | |
| 479 clrf battery_gauge+4 | |
| 480 clrf battery_gauge+5 | |
| 623 | 481 banksel common ; back to bank common |
| 482 bcf block_battery_gauge ; allow ISR to access the battery gauge again | |
| 483 | |
| 582 | 484 movlw .100 |
| 623 | 485 movwf batt_percent ; set battery level to 100% |
| 582 | 486 return |
| 487 | |
| 623 | 488 ;============================================================================= |
| 582 | 489 |
| 490 global eeprom_reset_logbook_pointers | |
| 491 eeprom_reset_logbook_pointers: | |
| 604 | 492 clrf EEADRH ; make sure to select EEPROM bank 0 |
| 582 | 493 clrf EEDATA |
| 494 write_int_eeprom .4 | |
| 495 write_int_eeprom .5 | |
| 496 write_int_eeprom .6 | |
| 604 | 497 write_int_eeprom .2 ; also delete total dive counter |
| 582 | 498 write_int_eeprom .3 |
| 499 write_int_eeprom .16 | |
| 604 | 500 write_int_eeprom .17 ; ...and the backup counter, too |
| 582 | 501 return |
| 502 | |
| 623 | 503 ;============================================================================= |
| 504 | |
| 582 | 505 END |
