annotate src/start.asm @ 628:cd58f7fc86db

3.05 stable work
author heinrichsweikamp
date Thu, 19 Sep 2019 12:01:29 +0200
parents c40025d8e750
children 237931377539
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
heinrichsweikamp
parents:
diff changeset
1 ;=============================================================================
heinrichsweikamp
parents:
diff changeset
2 ;
628
cd58f7fc86db 3.05 stable work
heinrichsweikamp
parents: 623
diff changeset
3 ; File start.asm combined next generation V3.04.3
0
heinrichsweikamp
parents:
diff changeset
4 ;
heinrichsweikamp
parents:
diff changeset
5 ; Startup subroutines
heinrichsweikamp
parents:
diff changeset
6 ;
heinrichsweikamp
parents:
diff changeset
7 ; Copyright (c) 2011, JD Gascuel, HeinrichsWeikamp, all right reserved.
heinrichsweikamp
parents:
diff changeset
8 ;=============================================================================
heinrichsweikamp
parents:
diff changeset
9 ; HISTORY
heinrichsweikamp
parents:
diff changeset
10 ; 2011-08-06 : [mH] moving from OSTC code
heinrichsweikamp
parents:
diff changeset
11
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 592
diff changeset
12 #include "hwos.inc" ; mandatory header
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 562
diff changeset
13 #include "ms5541.inc"
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 592
diff changeset
14 #include "shared_definitions.h" ; mailbox from/to p2_deco.c
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 562
diff changeset
15 #include "eeprom_rs232.inc"
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 562
diff changeset
16 #include "math.inc"
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 562
diff changeset
17 #include "tft.inc"
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 562
diff changeset
18 #include "surfmode.inc"
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 562
diff changeset
19 #include "wait.inc"
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 562
diff changeset
20 #include "rtc.inc"
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 562
diff changeset
21 #include "external_flash.inc"
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 562
diff changeset
22 #include "strings.inc"
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 562
diff changeset
23 #include "tft_outputs.inc"
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 562
diff changeset
24 #include "adc_lightsensor.inc"
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 562
diff changeset
25 #include "i2c.inc"
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
26 #include "divemode.inc"
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
27 #include "rx_ops.inc"
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
28
0
heinrichsweikamp
parents:
diff changeset
29
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 562
diff changeset
30 extern init_ostc
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 562
diff changeset
31 extern option_restore_all
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
32 extern backup_flash_page
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 562
diff changeset
33 extern restore_decodata_from_eeprom
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 562
diff changeset
34 extern oPressureAdjust
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 562
diff changeset
35 extern option_reset
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 562
diff changeset
36 extern option_save
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 562
diff changeset
37 extern option_save_all
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 562
diff changeset
38 extern option_check_all
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 562
diff changeset
39 extern do_new_battery_select
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
40 extern get_battery_data
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 562
diff changeset
41 extern use_old_prior_209
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 592
diff changeset
42 extern get_first_gas_to_WREG
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
43
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
44 IFDEF _ccr_pscr
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 592
diff changeset
45 extern option_cleanup_oCCRMode_pSCR
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 592
diff changeset
46 extern option_cleanup_oCCRMode_CCR
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
47 extern get_first_dil_to_WREG
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
48 ENDIF
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 592
diff changeset
49
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 592
diff changeset
50 IFDEF _rx_functions
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 592
diff changeset
51 extern option_cleanup_oTrMode_CCR
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 592
diff changeset
52 extern option_cleanup_oTrMode_no_CCR
628
cd58f7fc86db 3.05 stable work
heinrichsweikamp
parents: 623
diff changeset
53 ENDIF
cd58f7fc86db 3.05 stable work
heinrichsweikamp
parents: 623
diff changeset
54
cd58f7fc86db 3.05 stable work
heinrichsweikamp
parents: 623
diff changeset
55 IFDEF _rx_update
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
56 extern rx_firmware_new_major
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
57 extern rx_firmware_new_minor
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 592
diff changeset
58 ENDIF
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 592
diff changeset
59
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
60 ;-----------------------------------------------------------------------------
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
61
0
heinrichsweikamp
parents:
diff changeset
62
heinrichsweikamp
parents:
diff changeset
63 ;=============================================================================
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 592
diff changeset
64 ; Reset Vector: entry point on device wake-up and hard reset
0
heinrichsweikamp
parents:
diff changeset
65 ;
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
66 reset_v CODE 0x00000
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
67 goto 0x1FF00 ; jump to bootloader
0
heinrichsweikamp
parents:
diff changeset
68
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
69 start_v CODE 0x00004 ; jump to application (cold-)start
0
heinrichsweikamp
parents:
diff changeset
70 goto start
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 562
diff changeset
71
0
heinrichsweikamp
parents:
diff changeset
72 ;=============================================================================
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 562
diff changeset
73
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
74 boot CODE
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 592
diff changeset
75
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 592
diff changeset
76 ;=============================================================================
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
77 ; Entry point after cold start
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
78 ;
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 562
diff changeset
79 global start
0
heinrichsweikamp
parents:
diff changeset
80 start:
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
81 ; clear RAM banks 0-14
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
82 lfsr FSR0,0x000 ; load start address into FSR0
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
83 movlw 0x0F ; load end address into WREG (actually its high byte)
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
84 start_clear_rambank:
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
85 clrf POSTINC0 ; clear memory location and increment FSR0
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
86 cpfseq FSR0H ; has FSR0 reached begin of bank 15, i.e. banks 0-14 done?
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
87 bra start_clear_rambank ; NO - loop
0
heinrichsweikamp
parents:
diff changeset
88
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
89 ; initialize hardware (ports, timers, interrupts, etc.)
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
90 call init_ostc ; also selects bank common and sets CPU to normal speed
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
91
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
92 ; flag that later restart origins from a cold start
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
93 bsf cold_start
0
heinrichsweikamp
parents:
diff changeset
94
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
95 ; initialize averaging for analog buttons
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
96 movlw .16 ; set averaging span
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
97 movff WREG,analog_counter ; write to counter
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
98
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
99 ; get button type from bootloader info
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 562
diff changeset
100 bsf analog_switches
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 562
diff changeset
101 movlw 0x7C
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 562
diff changeset
102 movwf TBLPTRL
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 562
diff changeset
103 movlw 0xF7
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 562
diff changeset
104 movwf TBLPTRH
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 562
diff changeset
105 movlw 0x01
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 562
diff changeset
106 movwf TBLPTRU
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
107 TBLRD*+ ; read configuration byte
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
108 movlw 0x07 ; coding for analog buttons
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
109 cpfseq TABLAT ; equal?
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
110 bcf analog_switches ; NO - no analog buttons
475
237afdfb4918 2.12 release candidate...
heinrichsweikamp
parents: 474
diff changeset
111
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
112 ; get screen type (2) from bootloader info
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
113 bsf screen_type2
628
cd58f7fc86db 3.05 stable work
heinrichsweikamp
parents: 623
diff changeset
114 bsf screen_type3
614
a32212cd5ea9 work on new battery menu
heinrichsweikamp
parents: 612
diff changeset
115 movlw 0x80
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
116 movwf TBLPTRL ; only low byte adjustment needed, high and upper are still at 0x01F7xx
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
117 TBLRD*+ ; read configuration byte
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
118 movlw 0x83 ; coding for screen type 2
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
119 cpfseq TABLAT ; equal?
628
cd58f7fc86db 3.05 stable work
heinrichsweikamp
parents: 623
diff changeset
120 bcf screen_type2 ; NO - not screen type 2
cd58f7fc86db 3.05 stable work
heinrichsweikamp
parents: 623
diff changeset
121 movlw 0x84 ; coding for screen type 3
cd58f7fc86db 3.05 stable work
heinrichsweikamp
parents: 623
diff changeset
122 cpfseq TABLAT ; equal?
cd58f7fc86db 3.05 stable work
heinrichsweikamp
parents: 623
diff changeset
123 bcf screen_type3 ; NO - not screen type 3
608
d866684249bd work on 2.99 stable
heinrichsweikamp
parents: 604
diff changeset
124
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
125 ; get button polarity from configuration data (EEPROM)
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 562
diff changeset
126 movlw LOW .897
475
237afdfb4918 2.12 release candidate...
heinrichsweikamp
parents: 474
diff changeset
127 movwf EEADR
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 562
diff changeset
128 movlw HIGH .897
475
237afdfb4918 2.12 release candidate...
heinrichsweikamp
parents: 474
diff changeset
129 movwf EEADRH
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 592
diff changeset
130 call read_eeprom ; EEDATA into EEPROM @ EEADR
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 592
diff changeset
131 clrf EEADRH ; reset EEADRH
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 592
diff changeset
132 movff EEDATA,button_polarity ; 0xFF (both normal), 0x00 (both inverted), 0x01 (left inverted only), 0x02 (right inverted only)
475
237afdfb4918 2.12 release candidate...
heinrichsweikamp
parents: 474
diff changeset
133
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
134 ; initialize pressure sensor calibration
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 562
diff changeset
135 call get_calibration_data ; get calibration data from pressure sensor
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 562
diff changeset
136 call TFT_DisplayOff ; turn off display
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
137
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
138 ; wait for calibration data to take effect
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
139 bsf LEDr ; turn on red LED
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 562
diff changeset
140
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
141 ; first pass, will not have valid temperature yet
628
cd58f7fc86db 3.05 stable work
heinrichsweikamp
parents: 623
diff changeset
142 call wait_1s
cd58f7fc86db 3.05 stable work
heinrichsweikamp
parents: 623
diff changeset
143 call wait_1s
cd58f7fc86db 3.05 stable work
heinrichsweikamp
parents: 623
diff changeset
144 ; bcf trigger_pres_update ; make sure ISR pressure update confirmation is not older than from now on
cd58f7fc86db 3.05 stable work
heinrichsweikamp
parents: 623
diff changeset
145 ; btfss trigger_pres_update ; has the ISR confirmed a pressure update?
cd58f7fc86db 3.05 stable work
heinrichsweikamp
parents: 623
diff changeset
146 ; bra $-2 ; NO - not yet, loop waiting for the ISR to kick in
0
heinrichsweikamp
parents:
diff changeset
147
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
148 ; second pass - complete sensor initialization
628
cd58f7fc86db 3.05 stable work
heinrichsweikamp
parents: 623
diff changeset
149 call wait_1s
cd58f7fc86db 3.05 stable work
heinrichsweikamp
parents: 623
diff changeset
150 call wait_1s
cd58f7fc86db 3.05 stable work
heinrichsweikamp
parents: 623
diff changeset
151 ; bcf trigger_pres_update ; make sure ISR pressure update confirmation is not older than from now on
cd58f7fc86db 3.05 stable work
heinrichsweikamp
parents: 623
diff changeset
152 ; btfss trigger_pres_update ; has the ISR confirmed a pressure update?
cd58f7fc86db 3.05 stable work
heinrichsweikamp
parents: 623
diff changeset
153 ; bra $-2 ; NO - not yet, loop waiting for the ISR to kick in
0
heinrichsweikamp
parents:
diff changeset
154
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
155 ; sensor calibration completed, first valid pressure value is available
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
156 bcf LEDr ; turn off red LED again
0
heinrichsweikamp
parents:
diff changeset
157
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
158 ; load surface pressure into ISR
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
159 ; initially needs to be done twice in order to shift the current absolute pressure through the
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
160 ; 15 minutes sampling buffer into the reference buffer from where it is loaded by the ISR
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
161 rcall sample_surface_pressure ; 1st pass
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
162 rcall sample_surface_pressure ; 2nd pass
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
163 btfsc update_surface_pressure ; has the ISR confirmed loading of the surface pressure?
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
164 bra $-2 ; NO - not yet, loop until ISR has confirmed loading
560
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 545
diff changeset
165
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
166 ; reset all tissue pressures to surface pressure equilibrium state by default
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
167 call deco_clear_tissue ; (C-code)
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
168 banksel common
0
heinrichsweikamp
parents:
diff changeset
169
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
170 ; restore tissue pressures from EEPROM (if available)
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 562
diff changeset
171 movlw HIGH .512 ; =2
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
172 movwf EEADRH ; set EEPROM address, high byte
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 562
diff changeset
173 read_int_eeprom .0
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 562
diff changeset
174 clrf EEADRH
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
175 movlw 0xAA ; coding for tissue pressures available
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
176 cpfseq EEDATA ; tissue pressures available?
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
177 bra start_1 ; NO - no tissue pressures available
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
178 call restore_decodata_from_eeprom ; YES - reload tissue pressures from EEPROM
133
939f1e83c4c2 BUGFIX: Surface interval was not displayed correctly in some cases
heinrichsweikamp
parents: 113
diff changeset
179
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
180 start_1:
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
181 bsf reset_surface_interval ; request ISR to reset the surface interval timer
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 562
diff changeset
182
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
183 ; call rtc_init ; initialize the real time clock (will reset to firmware creation date)
0
heinrichsweikamp
parents:
diff changeset
184
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
185 ; check for power-on reset
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 592
diff changeset
186 btfsc RCON,POR ; was this a power-on reset?
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
187 call use_old_prior_209 ; NO - migrate the last battery status from firmware 2.09 or earlier
464
0491a84fd0b8 CHANGE: Easier to understand "New Battery" menu (OSTC model dependent)
heinrichsweikamp
parents: 463
diff changeset
188
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
189 bcf use_old_batt_flag ; default to no reload of last battery data
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 592
diff changeset
190 btfsc RCON,POR ; was this a power-on reset?
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
191 bsf use_old_batt_flag ; NO - reload last battery data
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
192
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 592
diff changeset
193 call lt2942_get_status ; check for gauge IC
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 562
diff changeset
194 btfss battery_gauge_available ; cR or 2 hardware?
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
195 bra start_check_new_firmware ; NO - skip next
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
196 movlw .30 ; YES - load default button sensitivity
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
197 movff WREG,opt_cR_button_right ; - set default for left button
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
198 movff WREG,opt_cR_button_left ; - set default for right button
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
199 call piezo_config ; - configure buttons, 1st pass
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
200 call piezo_config ; - configure buttons, 2nd pass
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 592
diff changeset
201
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
202 start_check_new_firmware:
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
203 call TFT_boot ; initialize TFT (includes clear screen & backlight switch-off)
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 592
diff changeset
204
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
205 ; show heinrichsweikamp logo
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 592
diff changeset
206 WIN_TOP .40
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 592
diff changeset
207 WIN_LEFT .10
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
208 TFT_WRITE_PROM_IMAGE_BY_ADDR hw_logo_block
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 592
diff changeset
209
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
210 ; check if a new firmware was loaded, if yes reset option oPressureAdjust
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
211 movlw d'1' ; set EEPROM address to 0x101
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
212 movwf EEADR ; = 0x001
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
213 movwf EEADRH ; = 0x101
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
214 call read_eeprom ; read current version, major
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
215 movff EEDATA,lo ; store major in lo
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
216 incf EEADR,F ; set EEPROM address to 0x102
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
217 call read_eeprom ; read current version, minor
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
218 movff EEDATA,hi ; store minor in hi
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 592
diff changeset
219 clrf EEADRH ; reset EEADRH
0
heinrichsweikamp
parents:
diff changeset
220
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
221 movlw softwareversion_x ; get current major version
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
222 cpfseq lo ; compare with stored version, equal?
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
223 bra start_check_new_firmware_new ; NO - reset some options and store new version in EEPROM
0
heinrichsweikamp
parents:
diff changeset
224
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
225 movlw softwareversion_y ; get current minor version
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
226 cpfseq hi ; compare with stored version, equal?
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
227 bra start_check_new_firmware_new ; NO - reset some options and store new version in EEPROM
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
228 bra start_check_new_firmware_old ; YES - both equal, do not reset options
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 562
diff changeset
229
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
230 start_check_new_firmware_new:
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
231 ; new firmware version detected
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
232 call show_fw_mesg_update ; show firmware update message
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
233
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 562
diff changeset
234 ; place "after-update reset" here...
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
235 lfsr FSR0,oPressureAdjust ; memory address of option data
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 592
diff changeset
236 call option_reset ; reset oPressureAdjust to factory default
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
237 lfsr FSR0,oPressureAdjust ; memory address of option data
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
238 call option_save ; save reseted value of oPressureAdjust in EEPROM
93
5e1ef9bf32ec clear pressure sensor compensation upon update
heinrichsweikamp
parents: 52
diff changeset
239
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
240 ; store current version in EEPROM
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
241 movlw d'1' ; set EEPROM address to 0x101
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
242 movwf EEADR ; = 0x001
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
243 movwf EEADRH ; = 0x101
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
244 movlw softwareversion_x ; get version, major number
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
245 movwf EEDATA ; prepare write
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
246 call write_eeprom ; execute write
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
247 incf EEADR,F ; set EEPROM address to 0x102
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
248 movlw softwareversion_y ; get version, minor number
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
249 movwf EEDATA ; prepare write
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
250 call write_eeprom ; execute write
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 592
diff changeset
251 clrf EEADRH ; reset EEADRH
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
252 bra start_check_new_firmware_common ;
0
heinrichsweikamp
parents:
diff changeset
253
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
254 start_check_new_firmware_old:
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
255 call show_fw_mesg_kept ; show firmware is kept message
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
256
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
257 start_check_new_firmware_common:
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
258 call TFT_Display_FadeIn ; display resulting screen
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
259 call backup_flash_page ; back-up the first 128 bytes from program flash memory to EEPROM
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
260
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
261 ; pause 5 seconds
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
262 movlw .5 ; load loop counter
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
263 start_check_new_firmware_wait:
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
264 call wait_1s ; wait <= 1 second
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
265 decfsz WREG,W ; decrement loop counter, did it became zero?
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
266 bra start_check_new_firmware_wait ; NO - loop
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
267 ;bra restart ; YES - proceed with restart
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 592
diff changeset
268
0
heinrichsweikamp
parents:
diff changeset
269
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
270 ;=============================================================================
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
271 ; Entry point after warm start
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
272 ;
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
273 ; called on leaving sleep mode, surface menu, communication mode, and
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
274 ; when a start of a dive is detected in all modes except surface mode.
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
275 ;
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 562
diff changeset
276 global restart
0
heinrichsweikamp
parents:
diff changeset
277 restart:
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
278 banksel common ; for safety purpose only
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
279 clrf STKPTR ; clear return addresses stack
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 562
diff changeset
280 clrf CCP1CON ; stop PWM
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 592
diff changeset
281 bcf PORTC,2 ; pull PWM out to GND
276
e4cb495aed3d Increase byte timeout in PC download mode, faster response to "Exit" in main menu
heinrichsweikamp
parents: 275
diff changeset
282
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
283 call request_speed_normal ; request CPU speed change to normal speed (for safety only)
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
284
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
285 ; manage the option settings
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
286 btfsc surfmode_menu ; was restart entered by return from surface menu or comm mode?
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 592
diff changeset
287 call option_save_all ; YES - save all settings into EEPROM
21
79b2084fd75a Reset options to default if they are not within the allowed min/max values
heinrichsweikamp
parents: 16
diff changeset
288
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
289 btfss surfmode_menu ; was restart entered by return from surface menu or comm mode?
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
290 call option_restore_all ; NO - load all settings from EEPROM
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
291
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
292 call option_check_all ; check all options and repair them if not within their min/max boundaries
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
293
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
294 btfsc option_repaired ; errors found & repaired during options check?
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
295 call option_save_all ; YES - save corrected settings into EEPROM
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
296
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
297 ; clear flag groups
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
298 clrf HW_descriptor ; hardware - OSTC model descriptor
628
cd58f7fc86db 3.05 stable work
heinrichsweikamp
parents: 623
diff changeset
299 clrf HW_flags_state1 ; hardware - states
cd58f7fc86db 3.05 stable work
heinrichsweikamp
parents: 623
diff changeset
300 ; ; do not clear HW_flags_state2 !
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
301 clrf DM_flags_sensor ; hardware - O2 sensors
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
302
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
303 clrf OS_flags_ISR1 ; operating system - ISR control 1
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
304 clrf OS_flags_ISR2 ; operating system - ISR control 2
23
e402813343b6 new option to switch samplingrate between 10s and 2s
heinrichsweikamp
parents: 21
diff changeset
305
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
306 clrf eventbase ; event triggers generated by ISR
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
307
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
308 clrf DM_flags_deco ; dive deco modes
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
309
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
310 clrf MS_flags_control ; menu system - control
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
311 clrf MS_flags_imprint ; menu system - data imprinting
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 592
diff changeset
312
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
313 clrf CVT_flags1 ; convert and display functions
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
314 clrf CVT_flags2 ; convert and display functions
23
e402813343b6 new option to switch samplingrate between 10s and 2s
heinrichsweikamp
parents: 21
diff changeset
315
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
316 ; TFT will be dimming soon, ignore ambient sensor
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
317 bsf tft_is_dimming
236
e2ea74646127 configure hardware_flag byte
heinrichsweikamp
parents: 235
diff changeset
318
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
319 ; configure the OSTC model descriptor (stored in HW_descriptor)
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 592
diff changeset
320 bcf tft_power ; inverted, here needed for I2C_probe_OSTC_rx, to wake-up RX circuity
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
321 bsf ambient_sensor ; set ambient light sensor as available by default
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
322 bsf optical_input ; set optical input as available by default
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 562
diff changeset
323
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 592
diff changeset
324 call lt2942_get_status ; check for gauge IC
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
325 btfss battery_gauge_available ; OSTC 2, cR or TR?
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 592
diff changeset
326 bra restart2 ; NO
236
e2ea74646127 configure hardware_flag byte
heinrichsweikamp
parents: 235
diff changeset
327
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
328 ; OSTC 2, cR or TR
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
329 call lt2942_init ; initialize battery gauge IC
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
330 bcf optical_input ; OSTC 2, cR and TR do not have an optical input
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
331
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
332 banksel ANCON0 ; ANCON0 is outside access RAM
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 592
diff changeset
333 bcf ANCON0,7 ; AN7 digital input
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
334 banksel common ; back to bank common
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 592
diff changeset
335 bcf lightsen_power ; power-down ambient light sensor
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
336 bcf ambient_sensor ; no ambient light sensor by default
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 562
diff changeset
337 nop
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
338 btfss PORTF,2 ; ambient light sensor available?
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 592
diff changeset
339 bsf ambient_sensor ; YES
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
340 banksel ANCON0 ; ANCON0 is outside access RAM
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 592
diff changeset
341 bsf ANCON0,7 ; AN7 analog again
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
342 banksel common ; back to bank common
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 592
diff changeset
343 bsf lightsen_power ; power-up ambient light sensor again
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 562
diff changeset
344
243
ee81f46714cb auto-select correct settings menu
heinrichsweikamp
parents: 236
diff changeset
345 restart2:
628
cd58f7fc86db 3.05 stable work
heinrichsweikamp
parents: 623
diff changeset
346 IFNDEF _hwos_sport
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
347 btfsc vusb_in ; USB power detected?
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
348 bra restart3 ; YES
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
349 bcf PORTE,0 ; start comm
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
350 WAITMS d'5' ; wait 5 ms
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
351 btfss vusb_in ; USB power detected?
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
352 bra restart3 ; NO
628
cd58f7fc86db 3.05 stable work
heinrichsweikamp
parents: 623
diff changeset
353 ENDIF
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
354 bsf ble_available ; YES - BLE available
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 562
diff changeset
355
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 562
diff changeset
356 restart3:
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
357 bsf PORTE,0 ; stop comm
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 592
diff changeset
358 btfsc ble_available ; BLE available?
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 592
diff changeset
359 bra restart4 ; YES - can't be a cR
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 592
diff changeset
360 btfss battery_gauge_available ; rechargeable?
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 592
diff changeset
361 bra restart4 ; NO - can't be a cR
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 592
diff changeset
362 bsf analog_o2_input ; set flag for analog
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 562
diff changeset
363
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 592
diff changeset
364 restart4:
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
365 bsf lv_core ; default to low voltage core
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
366 movlw 0x80 ; point to 0x1F780
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
367 movwf TBLPTRL
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
368 movlw 0xF7
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
369 movwf TBLPTRH
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
370 movlw 0x01
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
371 movwf TBLPTRU
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
372 TBLRD*+ ; read from 0x1F780
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
373 movlw 0x83 ; coding for low voltage core, part 1
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
374 cpfseq TABLAT ; equal?
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
375 bra restart4a ; NO - no low voltage core then
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
376 movlw 0x81 ; point to 0x1F781
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
377 movwf TBLPTRL
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
378 TBLRD*+ ; read from 0x1F781
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
379 movlw 0x94 ; coding for low voltage core, part 2
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
380 cpfseq TABLAT ; equal?
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
381 restart4a:
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
382 bcf lv_core ; NO - no low voltage core then
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
383
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
384
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 592
diff changeset
385 IFDEF _rx_functions
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
386
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
387 ; set TR functions as deactivated by default
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
388 bcf tr_functions_activated ; clear flag
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
389
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
390 ; search for TR module
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
391 WAITMS .200 ; wait 200 ms while RX module boots up
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
392 call I2C_probe_OSTC_rx ; check for RX module and set ostc_rx_present flag if found
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
393 btfss ostc_rx_present ; RX module detected?
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
394 bra restart5 ; NO
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
395
628
cd58f7fc86db 3.05 stable work
heinrichsweikamp
parents: 623
diff changeset
396 IFDEF _rx_update
cd58f7fc86db 3.05 stable work
heinrichsweikamp
parents: 623
diff changeset
397
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
398 ; check if TR module firmware is up to date
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
399 movff rx_firmware_cur_major,hi ; copy current firmware on RX module to bank common, major
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
400 movff rx_firmware_cur_minor,lo ; copy current firmware on RX module to bank common, minor
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
401 call rx_firmware_new_major ; get latest firmware version into WREG, major
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
402 cpfseq hi ; equal to current firmware on RX module, major ?
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
403 bra restart4b ; NO - update
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
404 call rx_firmware_new_minor ; YES - get latest firmware version into WREG, minor
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
405 cpfseq lo ; - equal to current firmware on RX module, minor ?
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
406 bra restart4b ; NO - update TR module
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
407 bra restart4e ; YES - no need to update
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 592
diff changeset
408
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
409 restart4b:
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
410 ; print TR module update message
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
411 call TFT_boot ; initialize TFT (includes clear screen & backlight switch-off)
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
412 WIN_TOP .40 ; show heinrichsweikamp logo
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
413 WIN_LEFT .10
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
414 TFT_WRITE_PROM_IMAGE_BY_ADDR hw_logo_block
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
415 WIN_SMALL .10,.130
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
416 STRCAT_PRINT "Updating TR Module..." ; print update message
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
417 call TFT_Display_FadeIn ; display screen
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
418 WIN_SMALL .10,.160
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
419 STRCAT "TR Update " ; prepare result message
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
420
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
421 ; update firmware in RX module
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
422 call I2C_sleep_compass ; stop compass
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
423 call update_tr_module ; update TR module
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 562
diff changeset
424
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
425 WIN_SMALL .10,.160 ; set next output position
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
426 STRCAT "Update " ; common part of result message
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
427 btfss ostc_rx_present ; data transfer successful and TR module up & running again?
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
428 bra restart4c ; NO
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
429 STRCAT "to " ; YES - print success message
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
430 call TFT_print_firmware_rx ; - print installed version
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
431 STRCAT_PRINT " done" ; - complete result message
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
432 bra restart4d ; - show message for a while
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
433
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
434 restart4c:
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
435 STRCAT_PRINT "failed" ; complete result message - failure
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
436
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
437 restart4d:
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
438 call wait_1s ; wait (up to) 1 second
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
439 call wait_1s ; wait (another full) 1 second
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
440 call wait_1s ; wait (another full) 1 second
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
441
628
cd58f7fc86db 3.05 stable work
heinrichsweikamp
parents: 623
diff changeset
442 ENDIF ; _rx_update
cd58f7fc86db 3.05 stable work
heinrichsweikamp
parents: 623
diff changeset
443
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
444 restart4e:
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
445 btfss ostc_rx_present ; TR module up & running?
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 592
diff changeset
446 bra restart5 ; NO
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
447 movff opt_TR_mode,WREG ; YES - get TR mode
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
448 tstfsz WREG ; - TR mode <> off ?
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
449 bsf tr_functions_activated ; YES - set TR functions as activated
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 592
diff changeset
450
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
451 ENDIF ; _rx_functions
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
452
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 592
diff changeset
453
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 592
diff changeset
454 restart5:
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
455 ; manage hardware
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
456 btfss analog_o2_input ; OSTC with analog input?
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
457 bsf TRISB,3 ; NO - shut down power supply for S8 bulkhead
0
heinrichsweikamp
parents:
diff changeset
458
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
459 btfss battery_gauge_available ; OSTC with gauge IC?
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
460 bsf TRISG,0 ; NO
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
461
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 562
diff changeset
462 call ext_flash_disable_protection ; disable write protection for external flash
464
0491a84fd0b8 CHANGE: Easier to understand "New Battery" menu (OSTC model dependent)
heinrichsweikamp
parents: 463
diff changeset
463
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
464 btfsc use_old_batt_flag ; shall reload last battery data?
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
465 call get_battery_data ; YES - get last battery data
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
466
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
467 ; set screen orientation
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
468 bcf flip_screen ; set default screen orientation
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
469 TSTOSC opt_flip_screen ; shall show screen outputs upside down? (=1: flip the screen)
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
470 bsf flip_screen ; YES - set upside-down orientation
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 562
diff changeset
471
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
472 ; check if high-altitude mode is applicable
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
473 bcf high_altitude_mode ; disable high altitude mode by default
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
474 MOVII pressure_abs_ref, sub_a ; copy last surface pressure to sub_a
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
475 MOVLI high_altitude_threshold+1,sub_b ; copy high-altitude threshold (880 mbar) + 1 to sub_a
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
476 call cmpU16 ; sub_a - sub_b = pressure_abs_ref - (high_altitude_threshold + 1)
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
477 btfsc neg_flag ; result negative (absolute pressure <= 880 mbar) ?
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
478 bsf high_altitude_mode ; YES - enable high altitude mode
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
479
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
480 ; check if there was a cold start, if yes do initial computation of further deco data
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
481 btfss cold_start ; did a cold start?
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
482 bra restart6 ; NO
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
483 bcf cold_start ; YES - clear flag
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
484 call deco_calc_dive_interval_1min ; - calculate tissues for 1 minute at surface conditions (C-code)
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
485 call deco_calc_desaturation_time ; - calculate desaturation and no-fly/no-altitude time (C-code)
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
486 banksel common ; - back to bank common
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
487
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
488 restart6:
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
489 ; the dive mode flag can not be set right after cold start, must have been in surface mode before
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
490 btfsc divemode ; shall enter dive mode?
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
491 goto diveloop ; YES
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 562
diff changeset
492
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 562
diff changeset
493 btfsc RCON,POR ; was this a power-on reset?
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
494 goto surfloop ; NO - enter surface mode
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
495 bsf RCON,POR ; YES - acknowledge detection and re-arm detector
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
496 goto do_new_battery_select ; - prompt for battery selection, will proceed to surface mode
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
497
0
heinrichsweikamp
parents:
diff changeset
498
heinrichsweikamp
parents:
diff changeset
499 ;=============================================================================
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
500 ; Setup all flags and parameters for dive mode and simulator computations
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
501 ;
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
502 ; called from divemode.asm, menu_tree.asm and surfmode.asm
0
heinrichsweikamp
parents:
diff changeset
503 ;
heinrichsweikamp
parents:
diff changeset
504 global restart_set_modes_and_flags
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
505 restart_set_modes_and_flags:
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
506 call option_restore_all ; restore all options settings from EEPROM
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
507
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
508 IFDEF _external_sensor
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
509 call disable_ir_s8 ; switch off IR/S8 digital interface by default
628
cd58f7fc86db 3.05 stable work
heinrichsweikamp
parents: 623
diff changeset
510 WAITMS d'100' ; Some delay to power down S8-HUD properly
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
511 ENDIF
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
512 ; setup sampling rate
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
513 movlw .2 ; default to 2 seconds
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
514 movwf sampling_rate ; write setting
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
515 TSTOSS opt_sampling_rate ; check option: 1= 10s, 0= 2s
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
516 bra restart_set_modes_and_flags1 ; 0 - 2 seconds selected, done
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
517 movlw .10 ; 1 - change to 10 seconds
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
518 movwf sampling_rate ; - write setting
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 562
diff changeset
519
24
f51caad821b4 save logbook recording interval
heinrichsweikamp
parents: 23
diff changeset
520 restart_set_modes_and_flags1:
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
521 clrf DM_flags_deco ; clear all deco mode flags
0
heinrichsweikamp
parents:
diff changeset
522
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
523 ; initialize active_gas and active_dil for surface mode pressure display
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 592
diff changeset
524 call get_first_gas_to_WREG
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 592
diff changeset
525 movwf active_gas
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
526
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
527 IFDEF _ccr_pscr
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 592
diff changeset
528 call get_first_dil_to_WREG
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 592
diff changeset
529 movwf active_dil
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
530 ENDIF
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 562
diff changeset
531
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
532 ; configure saturation / desaturation safety factors
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
533 movff opt_sat_multiplier_gf, char_I_saturation_multiplier ; use factors for GF mode by default
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
534 movff opt_desat_multiplier_gf,char_I_desaturation_multiplier ; ...
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
535 TSTOSC char_I_deco_model ; get deco model ZH-L16-GF (1) selected?
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
536 bra restart_set_modes_and_flags2 ; YES - keep them
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
537 movff opt_sat_multiplier_non_gf, char_I_saturation_multiplier ; NO - overwrite them with non-GF factors
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
538 movff opt_desat_multiplier_non_gf,char_I_desaturation_multiplier ; - ...
0
heinrichsweikamp
parents:
diff changeset
539
heinrichsweikamp
parents:
diff changeset
540 restart_set_modes_and_flags2:
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
541 ; configure GF settings, GF high is needed for color-coding the current GF (supersaturation) factor
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
542 movff opt_GF_low, char_I_GF_Low_percentage
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
543 movff opt_GF_high,char_I_GF_High_percentage
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 562
diff changeset
544
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
545 movff opt_dive_mode,lo ; get dive mode: 0= OC, 1= CCR, 2= gauge, 3= apnea, 4= pSCR
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
546 tstfsz lo ; OC?
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
547 bra restart_set_modes_and_flags3 ; NO
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
548 bsf FLAG_oc_mode ; YES - set OC flag
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 592
diff changeset
549 IFDEF _rx_functions
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
550 call option_cleanup_oTrMode_no_CCR ; - revert TR mode from 'CCR Dil+O2' to 'on'
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 592
diff changeset
551 ENDIF
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
552 return ; - done
0
heinrichsweikamp
parents:
diff changeset
553
heinrichsweikamp
parents:
diff changeset
554 restart_set_modes_and_flags3:
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
555 decfsz lo,F ; CCR mode?
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
556 bra restart_set_modes_and_flags4 ; NO
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
557 IFDEF _ccr_pscr
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
558 bsf FLAG_ccr_mode ; YES - set CCR flag
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
559 call option_cleanup_oCCRMode_CCR ; - revert CCR mode 'Sensor' to 'fixed SP' if no sensor interface available
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 592
diff changeset
560 IFDEF _rx_functions
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
561 call option_cleanup_oTrMode_CCR ; - revert TR mode from 'ind.double' to 'on'
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
562 ENDIF ; _rx_functions
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
563 IFDEF _external_sensor
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
564 call enable_ir_s8 ; - enable IR/S8 digital interface
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
565 ENDIF ; _external_sensor
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
566 ENDIF ; _ccr_pscr
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
567 return ; - done
0
heinrichsweikamp
parents:
diff changeset
568
heinrichsweikamp
parents:
diff changeset
569 restart_set_modes_and_flags4:
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
570 decfsz lo,F ; Gauge mode?
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
571 bra restart_set_modes_and_flags5 ; NO
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
572 bsf FLAG_gauge_mode ; YES - set gauge flag
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 592
diff changeset
573 IFDEF _rx_functions
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
574 call option_cleanup_oTrMode_no_CCR ; - revert TR mode from 'CCR Dil+O2' to 'on'
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 592
diff changeset
575 ENDIF
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
576 return ; - done
0
heinrichsweikamp
parents:
diff changeset
577
480
ad8acade5567 NEW: PSCR mode (Passive semi-closed rebreather)
heinrichsweikamp
parents: 475
diff changeset
578 restart_set_modes_and_flags5:
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
579 decfsz lo,F ; Apnea mode?
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
580 bra restart_set_modes_and_flags6 ; NO
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
581 bsf FLAG_apnoe_mode ; YES - set apnea flag
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
582 movlw samplingrate_apnoe ; get apnoe sampling rate
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
583 movwf sampling_rate ; overwrite user-selected 2/10 seconds setting with apnoe default
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 592
diff changeset
584 IFDEF _rx_functions
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
585 call option_cleanup_oTrMode_no_CCR ; - revert TR mode from 'CCR Dil+O2' to 'on'
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 592
diff changeset
586 ENDIF
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
587 return ; - done
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
588
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
589 restart_set_modes_and_flags6:
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
590 ; pSCR mode then
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
591 IFDEF _ccr_pscr
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
592 bsf FLAG_pscr_mode ; - set pSCR mode flag
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
593 call option_cleanup_oCCRMode_pSCR ; - revert AutoSP to calculated SP, additionally revert Sensor to fixed SP if no sensor interface available
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
594 IFDEF _rx_functions
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
595 call option_cleanup_oTrMode_no_CCR ; - revert TR mode from 'CCR Dil+O2' to 'on'
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
596 ENDIF ; _rx_functions
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
597 IFDEF _external_sensor
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
598 call enable_ir_s8 ; - enable IR/S8 digital interface
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
599 ENDIF ; _external_sensor
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
600 ENDIF ; _ccr_pscr
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
601 return ; - done
560
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 545
diff changeset
602
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 562
diff changeset
603
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
604 ;=============================================================================
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
605 ; Sample and store the current surface pressure, update ISR and deco engine
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
606 ; with the surface pressure sampled on last invocation.
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
607 ;
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
608 global sample_surface_pressure
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
609 sample_surface_pressure:
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
610 ; make sure the ISR does not read the surface pressure reference buffer while it is updated
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
611 bcf update_surface_pressure ; cancel any pending load request
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
612
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
613 ; propagate the surface pressure sampled on last invocation to the reference pressure buffer
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
614 MOVII pressure_abs_sampled,pressure_abs_ref
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
615
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
616 ; update surface pressure in the ISR
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
617 bsf update_surface_pressure ; request ISR to update its surface pressure
410
d3087a8ed7e1 BUGFIX: Fix rare issue after battery change (OSTC3 did not start properly)
heinrichsweikamp
parents: 375
diff changeset
618
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
619 ; update surface pressure in the deco engine
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
620 MOVII pressure_abs_ref,int_I_pres_surface
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
621
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
622 ; sample current absolute pressure (ISR-safe 2 byte copy)
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
623 SMOVII pressure_abs,pressure_abs_sampled
410
d3087a8ed7e1 BUGFIX: Fix rare issue after battery change (OSTC3 did not start properly)
heinrichsweikamp
parents: 375
diff changeset
624
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
625 ; limit sampled pressure to max allowed surface pressure
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
626 MOVLI max_surfpressure, sub_a ; load upper limit into sub_a
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
627 MOVII pressure_abs_sampled,sub_b ; copy sampled pressure to sub_b
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
628 call cmpU16 ; sub_a - sub_b = max_surfpressure - pressure_abs_sampled
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
629 btfss neg_flag ; sampled pressure > max_surfpressure ?
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
630 return ; NO - below limit, done
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
631 MOVII sub_a,pressure_abs_sampled ; YES - limit to max_surfpressure (still stored in sub_a)
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
632 return ; - done
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 615
diff changeset
633
410
d3087a8ed7e1 BUGFIX: Fix rare issue after battery change (OSTC3 did not start properly)
heinrichsweikamp
parents: 375
diff changeset
634
0
heinrichsweikamp
parents:
diff changeset
635 END