annotate src/start.asm @ 580:1ab93aca7fa9

2.97 work...
author heinrichsweikamp
date Wed, 21 Feb 2018 19:30:28 +0100
parents 8b7ea27ea1fa
children b455b31ce022
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
heinrichsweikamp
parents:
diff changeset
1 ;=============================================================================
heinrichsweikamp
parents:
diff changeset
2 ;
560
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 545
diff changeset
3 ; File start.asm REFACTORED VERSION V2.95a1
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
275
653a3ab08062 rename into hwOS
heinrichsweikamp
parents: 267
diff changeset
12 #include "hwos.inc" ; Mandatory header
0
heinrichsweikamp
parents:
diff changeset
13 #include "ms5541.inc"
heinrichsweikamp
parents:
diff changeset
14 #include "isr.inc"
heinrichsweikamp
parents:
diff changeset
15 #include "shared_definitions.h" ; Mailbox from/to p2_deco.c
heinrichsweikamp
parents:
diff changeset
16 #include "eeprom_rs232.inc"
heinrichsweikamp
parents:
diff changeset
17 #include "math.inc"
heinrichsweikamp
parents:
diff changeset
18 #include "tft.inc"
heinrichsweikamp
parents:
diff changeset
19 #include "surfmode.inc"
heinrichsweikamp
parents:
diff changeset
20 #include "wait.inc"
heinrichsweikamp
parents:
diff changeset
21 #include "rtc.inc"
heinrichsweikamp
parents:
diff changeset
22 #include "external_flash.inc"
heinrichsweikamp
parents:
diff changeset
23 #include "convert.inc"
heinrichsweikamp
parents:
diff changeset
24 #include "strings.inc"
heinrichsweikamp
parents:
diff changeset
25 #include "tft_outputs.inc"
113
heinrichsweikamp
parents: 93
diff changeset
26 #include "adc_lightsensor.inc"
heinrichsweikamp
parents: 93
diff changeset
27 #include "i2c.inc"
0
heinrichsweikamp
parents:
diff changeset
28
275
653a3ab08062 rename into hwOS
heinrichsweikamp
parents: 267
diff changeset
29 extern init_ostc
0
heinrichsweikamp
parents:
diff changeset
30 extern option_restore_all
heinrichsweikamp
parents:
diff changeset
31
heinrichsweikamp
parents:
diff changeset
32 ;=============================================================================
heinrichsweikamp
parents:
diff changeset
33 ; Reset vector: What to do on device wake-up and hard reset.
heinrichsweikamp
parents:
diff changeset
34 ;
heinrichsweikamp
parents:
diff changeset
35 reset_v code 0x00000
heinrichsweikamp
parents:
diff changeset
36 ; goto start
560
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 545
diff changeset
37 goto 0x1FF00 ; Bootloader
0
heinrichsweikamp
parents:
diff changeset
38
heinrichsweikamp
parents:
diff changeset
39 ORG 0x00004 ; Needed for second-level bootloader
heinrichsweikamp
parents:
diff changeset
40 goto start
heinrichsweikamp
parents:
diff changeset
41 ;=============================================================================
heinrichsweikamp
parents:
diff changeset
42 boot CODE
heinrichsweikamp
parents:
diff changeset
43 global start
heinrichsweikamp
parents:
diff changeset
44
heinrichsweikamp
parents:
diff changeset
45 start:
heinrichsweikamp
parents:
diff changeset
46 lfsr FSR0,0x000 ; Clear rambank 0-14
heinrichsweikamp
parents:
diff changeset
47 clear_rambank:
heinrichsweikamp
parents:
diff changeset
48 clrf POSTINC0
heinrichsweikamp
parents:
diff changeset
49 movlw 0x0F
heinrichsweikamp
parents:
diff changeset
50 cpfseq FSR0H ; Bank 14 done?
heinrichsweikamp
parents:
diff changeset
51 bra clear_rambank ; clear...
heinrichsweikamp
parents:
diff changeset
52
275
653a3ab08062 rename into hwOS
heinrichsweikamp
parents: 267
diff changeset
53 call init_ostc
0
heinrichsweikamp
parents:
diff changeset
54
449
heinrichsweikamp
parents: 446
diff changeset
55 ; Get button type from Bootloader-Info
560
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 545
diff changeset
56 movlw .16
474
2880aa1264f5 Fix new battery menu on Power-on reset
heinrichsweikamp
parents: 472
diff changeset
57 movff WREG,analog_counter ; init averaging
449
heinrichsweikamp
parents: 446
diff changeset
58 bsf analog_switches
heinrichsweikamp
parents: 446
diff changeset
59 movlw 0x7C
heinrichsweikamp
parents: 446
diff changeset
60 movwf TBLPTRL
heinrichsweikamp
parents: 446
diff changeset
61 movlw 0xF7
heinrichsweikamp
parents: 446
diff changeset
62 movwf TBLPTRH
heinrichsweikamp
parents: 446
diff changeset
63 movlw 0x01
heinrichsweikamp
parents: 446
diff changeset
64 movwf TBLPTRU
560
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 545
diff changeset
65 TBLRD*+ ; Reads 0x07 for analog buttons
449
heinrichsweikamp
parents: 446
diff changeset
66 movlw 0x07
heinrichsweikamp
parents: 446
diff changeset
67 cpfseq TABLAT
heinrichsweikamp
parents: 446
diff changeset
68 bcf analog_switches
475
237afdfb4918 2.12 release candidate...
heinrichsweikamp
parents: 474
diff changeset
69
237afdfb4918 2.12 release candidate...
heinrichsweikamp
parents: 474
diff changeset
70 ; read button polarity
237afdfb4918 2.12 release candidate...
heinrichsweikamp
parents: 474
diff changeset
71 movlw LOW .897
237afdfb4918 2.12 release candidate...
heinrichsweikamp
parents: 474
diff changeset
72 movwf EEADR
237afdfb4918 2.12 release candidate...
heinrichsweikamp
parents: 474
diff changeset
73 movlw HIGH .897
237afdfb4918 2.12 release candidate...
heinrichsweikamp
parents: 474
diff changeset
74 movwf EEADRH
560
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 545
diff changeset
75 call read_eeprom ; EEDATA into EEPROM@EEADR
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 545
diff changeset
76 clrf EEADRH ; Reset EEADRH
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 545
diff changeset
77 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
78
0
heinrichsweikamp
parents:
diff changeset
79 ; Air pressure compensation after reset
heinrichsweikamp
parents:
diff changeset
80 call get_calibration_data ; Get calibration data from pressure sensor
heinrichsweikamp
parents:
diff changeset
81 banksel common ; get_calibration_data uses isr_backup
heinrichsweikamp
parents:
diff changeset
82
560
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 545
diff changeset
83 call TFT_DisplayOff ; display off
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 545
diff changeset
84 bsf LEDr ; Status LED
463
2c58631d5229 minor cleanups
heinrichsweikamp
parents: 457
diff changeset
85 bcf pressure_refresh
0
heinrichsweikamp
parents:
diff changeset
86 ; First pass will not have valid temperature!
heinrichsweikamp
parents:
diff changeset
87 btfss pressure_refresh ; Air pressure compensation
heinrichsweikamp
parents:
diff changeset
88 bra $-2
441
360acdcda0d7 +BUGFIX: Compatibility with "hwOS Config" fixed
heinrichsweikamp
parents: 429
diff changeset
89 ; Second pass
0
heinrichsweikamp
parents:
diff changeset
90 bcf pressure_refresh
heinrichsweikamp
parents:
diff changeset
91 btfss pressure_refresh ; Air pressure compensation
heinrichsweikamp
parents:
diff changeset
92 bra $-2
441
360acdcda0d7 +BUGFIX: Compatibility with "hwOS Config" fixed
heinrichsweikamp
parents: 429
diff changeset
93 bcf LEDr
360acdcda0d7 +BUGFIX: Compatibility with "hwOS Config" fixed
heinrichsweikamp
parents: 429
diff changeset
94
0
heinrichsweikamp
parents:
diff changeset
95 clrf rel_pressure+0
heinrichsweikamp
parents:
diff changeset
96 clrf rel_pressure+1
heinrichsweikamp
parents:
diff changeset
97 clrf surface_interval+0
heinrichsweikamp
parents:
diff changeset
98 clrf surface_interval+1
heinrichsweikamp
parents:
diff changeset
99
heinrichsweikamp
parents:
diff changeset
100 SAFE_2BYTE_COPY amb_pressure, last_surfpressure
heinrichsweikamp
parents:
diff changeset
101
heinrichsweikamp
parents:
diff changeset
102 movlw LOW max_surfpressure
heinrichsweikamp
parents:
diff changeset
103 movff WREG,sub_a+0 ; max. "allowed" airpressure in mbar
heinrichsweikamp
parents:
diff changeset
104 movlw HIGH max_surfpressure
heinrichsweikamp
parents:
diff changeset
105 movff WREG,sub_a+1 ; max. "allowed" airpressure in mbar
heinrichsweikamp
parents:
diff changeset
106 movff last_surfpressure+0,sub_b+0
heinrichsweikamp
parents:
diff changeset
107 movff last_surfpressure+1,sub_b+1
560
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 545
diff changeset
108 call subU16 ; sub_c = sub_a - sub_b
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 545
diff changeset
109 btfss neg_flag ; Is 1080mbar < amb_pressure ?
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 545
diff changeset
110 bra start_copy_pressure ; NO: current airpressure is lower then "allowed" airpressure, ok!
0
heinrichsweikamp
parents:
diff changeset
111
heinrichsweikamp
parents:
diff changeset
112 ; not ok! Overwrite with max. "allowed" airpressure
heinrichsweikamp
parents:
diff changeset
113 movlw LOW max_surfpressure
heinrichsweikamp
parents:
diff changeset
114 movff WREG,last_surfpressure+0 ; max. "allowed" airpressure in mbar
heinrichsweikamp
parents:
diff changeset
115 movlw HIGH max_surfpressure
heinrichsweikamp
parents:
diff changeset
116 movff WREG,last_surfpressure+1 ; max. "allowed" airpressure in mbar
heinrichsweikamp
parents:
diff changeset
117
heinrichsweikamp
parents:
diff changeset
118 start_copy_pressure:
heinrichsweikamp
parents:
diff changeset
119 movff last_surfpressure+0,last_surfpressure_15min+0
heinrichsweikamp
parents:
diff changeset
120 movff last_surfpressure+1,last_surfpressure_15min+1
heinrichsweikamp
parents:
diff changeset
121 movff last_surfpressure+0,last_surfpressure_30min+0
560
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 545
diff changeset
122 movff last_surfpressure+1,last_surfpressure_30min+1 ; resets all airpressure registers
0
heinrichsweikamp
parents:
diff changeset
123
heinrichsweikamp
parents:
diff changeset
124 ; reset deco data for surface mode
560
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 545
diff changeset
125 movlw .21 ; 21%
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 545
diff changeset
126 movff WREG,char_I_O2_ratio ; ... oxygen
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 545
diff changeset
127 movlw .0 ; 0%
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 545
diff changeset
128 movff WREG,char_I_He_ratio ; ... helium
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 545
diff changeset
129
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 545
diff changeset
130 ; initialize GF high (needed by deco engine for color-coding the GF value)
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 545
diff changeset
131 movff opt_GF_high,char_I_GF_High_percentage
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 545
diff changeset
132
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 545
diff changeset
133 SAFE_2BYTE_COPY amb_pressure,int_I_pres_respiration ; breathing at surface
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 545
diff changeset
134 movff int_I_pres_respiration+0,int_I_pres_surface+0 ; surface pressue
0
heinrichsweikamp
parents:
diff changeset
135 movff int_I_pres_respiration+1,int_I_pres_surface+1
heinrichsweikamp
parents:
diff changeset
136
560
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 545
diff changeset
137 extern deco_setup
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 545
diff changeset
138 call deco_setup ; set up all model parameters.
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 545
diff changeset
139 call deco_clear_tissue ; Set all tissues to Pamb * N2_ratio (C-Code)
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 545
diff changeset
140 banksel common ; back to bank 1, needed after every return from C code
133
939f1e83c4c2 BUGFIX: Surface interval was not displayed correctly in some cases
heinrichsweikamp
parents: 113
diff changeset
141
939f1e83c4c2 BUGFIX: Surface interval was not displayed correctly in some cases
heinrichsweikamp
parents: 113
diff changeset
142 call rtc_init ; init clock
939f1e83c4c2 BUGFIX: Surface interval was not displayed correctly in some cases
heinrichsweikamp
parents: 113
diff changeset
143
560
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 545
diff changeset
144 movlw HIGH .512 ; =2
133
939f1e83c4c2 BUGFIX: Surface interval was not displayed correctly in some cases
heinrichsweikamp
parents: 113
diff changeset
145 movwf EEADRH
939f1e83c4c2 BUGFIX: Surface interval was not displayed correctly in some cases
heinrichsweikamp
parents: 113
diff changeset
146 read_int_eeprom .0
939f1e83c4c2 BUGFIX: Surface interval was not displayed correctly in some cases
heinrichsweikamp
parents: 113
diff changeset
147 clrf EEADRH
939f1e83c4c2 BUGFIX: Surface interval was not displayed correctly in some cases
heinrichsweikamp
parents: 113
diff changeset
148 movlw 0xAA
560
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 545
diff changeset
149 cpfseq EEDATA ; =0xAA
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 545
diff changeset
150 bra no_deco_restore ; No
133
939f1e83c4c2 BUGFIX: Surface interval was not displayed correctly in some cases
heinrichsweikamp
parents: 113
diff changeset
151
939f1e83c4c2 BUGFIX: Surface interval was not displayed correctly in some cases
heinrichsweikamp
parents: 113
diff changeset
152 extern restore_decodata_from_eeprom
939f1e83c4c2 BUGFIX: Surface interval was not displayed correctly in some cases
heinrichsweikamp
parents: 113
diff changeset
153 call restore_decodata_from_eeprom ; Reload deco data and date/time from eeprom
939f1e83c4c2 BUGFIX: Surface interval was not displayed correctly in some cases
heinrichsweikamp
parents: 113
diff changeset
154
939f1e83c4c2 BUGFIX: Surface interval was not displayed correctly in some cases
heinrichsweikamp
parents: 113
diff changeset
155 no_deco_restore:
560
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 545
diff changeset
156 call deco_calc_wo_deco_step_1_min ; calculate deco in surface mode
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 545
diff changeset
157 call deco_calc_desaturation_time ; calculate desaturation and no-fly time
133
939f1e83c4c2 BUGFIX: Surface interval was not displayed correctly in some cases
heinrichsweikamp
parents: 113
diff changeset
158 banksel common
560
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 545
diff changeset
159
0
heinrichsweikamp
parents:
diff changeset
160 bcf menubit ; clear menu flag
215
8636efc5c6c5 ignore battery menu for cr
heinrichsweikamp
parents: 207
diff changeset
161
0
heinrichsweikamp
parents:
diff changeset
162 ; Check for Power-on reset here
464
0491a84fd0b8 CHANGE: Easier to understand "New Battery" menu (OSTC model dependent)
heinrichsweikamp
parents: 463
diff changeset
163 extern use_old_prior_209
215
8636efc5c6c5 ignore battery menu for cr
heinrichsweikamp
parents: 207
diff changeset
164 ; *****************************************************************************
8636efc5c6c5 ignore battery menu for cr
heinrichsweikamp
parents: 207
diff changeset
165 ; "new_battery_menu" and "use_old_batteries" 'goto' back to "power_on_return"
8636efc5c6c5 ignore battery menu for cr
heinrichsweikamp
parents: 207
diff changeset
166 ; *****************************************************************************
0
heinrichsweikamp
parents:
diff changeset
167
457
b4417044a042 recover old battery status prior 2.09
heinrichsweikamp
parents: 449
diff changeset
168 ; Try to migrate the old battery status from firmware 2.09 or earlier..
560
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 545
diff changeset
169 btfsc RCON,POR ; Was this a power-on reset?
472
4fdf6886004b CHANGE: Show warnings either in Customview (If active) _or_ next to warning sign
heinrichsweikamp
parents: 464
diff changeset
170 call use_old_prior_209 ; No
464
0491a84fd0b8 CHANGE: Easier to understand "New Battery" menu (OSTC model dependent)
heinrichsweikamp
parents: 463
diff changeset
171
0491a84fd0b8 CHANGE: Easier to understand "New Battery" menu (OSTC model dependent)
heinrichsweikamp
parents: 463
diff changeset
172 bcf use_old_batt_flag
560
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 545
diff changeset
173 btfsc RCON,POR ; Was this a power-on reset?
464
0491a84fd0b8 CHANGE: Easier to understand "New Battery" menu (OSTC model dependent)
heinrichsweikamp
parents: 463
diff changeset
174 bsf use_old_batt_flag ; No
0491a84fd0b8 CHANGE: Easier to understand "New Battery" menu (OSTC model dependent)
heinrichsweikamp
parents: 463
diff changeset
175
215
8636efc5c6c5 ignore battery menu for cr
heinrichsweikamp
parents: 207
diff changeset
176 call lt2942_get_status ; Check for gauge IC
449
heinrichsweikamp
parents: 446
diff changeset
177 btfss battery_gauge_available ; cR or 2 hardware?
560
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 545
diff changeset
178 bra power_on_return2 ; no
215
8636efc5c6c5 ignore battery menu for cr
heinrichsweikamp
parents: 207
diff changeset
179
375
a9e35c1327aa 1.88 release, BUGFIX: Start with Sensor use from sleep (cR only), CHANGE: Apply button settings when button menu is closed, NEW: Reset button settings on a magnet reset (cR and OSTC 2)
heinrichsweikamp
parents: 359
diff changeset
180 movlw .30
a9e35c1327aa 1.88 release, BUGFIX: Start with Sensor use from sleep (cR only), CHANGE: Apply button settings when button menu is closed, NEW: Reset button settings on a magnet reset (cR and OSTC 2)
heinrichsweikamp
parents: 359
diff changeset
181 movff WREG,opt_cR_button_right
a9e35c1327aa 1.88 release, BUGFIX: Start with Sensor use from sleep (cR only), CHANGE: Apply button settings when button menu is closed, NEW: Reset button settings on a magnet reset (cR and OSTC 2)
heinrichsweikamp
parents: 359
diff changeset
182 movff WREG,opt_cR_button_left ; Reset on power-on reset
a9e35c1327aa 1.88 release, BUGFIX: Start with Sensor use from sleep (cR only), CHANGE: Apply button settings when button menu is closed, NEW: Reset button settings on a magnet reset (cR and OSTC 2)
heinrichsweikamp
parents: 359
diff changeset
183 call piezo_config ; Yes, configure buttons
416
4389fe9673b2 NEW: Support for new logbook memory chip (minor hardware change)
heinrichsweikamp
parents: 410
diff changeset
184 call piezo_config ; Yes, configure buttons (2 times)
0
heinrichsweikamp
parents:
diff changeset
185
416
4389fe9673b2 NEW: Support for new logbook memory chip (minor hardware change)
heinrichsweikamp
parents: 410
diff changeset
186 power_on_return2:
0
heinrichsweikamp
parents:
diff changeset
187 ; check firmware and reset Custom Functions after an update
heinrichsweikamp
parents:
diff changeset
188 movlw d'1'
281
eb758a5b44eb BUGFIX: Fix download issue for dives made with 1.80 firmware
heinrichsweikamp
parents: 276
diff changeset
189 movwf EEADR ; =1
eb758a5b44eb BUGFIX: Fix download issue for dives made with 1.80 firmware
heinrichsweikamp
parents: 276
diff changeset
190 movwf EEADRH ; =1
0
heinrichsweikamp
parents:
diff changeset
191 call read_eeprom ; read current version x
heinrichsweikamp
parents:
diff changeset
192 movff EEDATA,temp1
heinrichsweikamp
parents:
diff changeset
193 incf EEADR,F ; set to 0x102
heinrichsweikamp
parents:
diff changeset
194 call read_eeprom ; read current version y
heinrichsweikamp
parents:
diff changeset
195 movff EEDATA,temp2
heinrichsweikamp
parents:
diff changeset
196 clrf EEADRH ; Reset EEADRH
heinrichsweikamp
parents:
diff changeset
197
443
heinrichsweikamp
parents: 441
diff changeset
198 movlw softwareversion_x
heinrichsweikamp
parents: 441
diff changeset
199 cpfseq temp1 ; compare version x
0
heinrichsweikamp
parents:
diff changeset
200 bra check_firmware_new ; is not equal -> reset CF and store new version in EEPROM
heinrichsweikamp
parents:
diff changeset
201
heinrichsweikamp
parents:
diff changeset
202 movlw softwareversion_y
heinrichsweikamp
parents:
diff changeset
203 cpfseq temp2 ; compare version y
heinrichsweikamp
parents:
diff changeset
204 bra check_firmware_new ; is not equal -> reset CF and store new version in EEPROM
heinrichsweikamp
parents:
diff changeset
205 bra restart ; x and y are equal -> do not reset cf
heinrichsweikamp
parents:
diff changeset
206
heinrichsweikamp
parents:
diff changeset
207 check_firmware_new:
heinrichsweikamp
parents:
diff changeset
208 call TFT_boot ; Initialize TFT (includes clear screen)
heinrichsweikamp
parents:
diff changeset
209 clrf CCPR1L ; Backlight off
heinrichsweikamp
parents:
diff changeset
210 WIN_TOP .50
heinrichsweikamp
parents:
diff changeset
211 WIN_LEFT .10
heinrichsweikamp
parents:
diff changeset
212 movlw LOW 0x1E000
heinrichsweikamp
parents:
diff changeset
213 movwf TBLPTRL
heinrichsweikamp
parents:
diff changeset
214 movlw HIGH 0x1E000
heinrichsweikamp
parents:
diff changeset
215 movwf TBLPTRH
heinrichsweikamp
parents:
diff changeset
216 movlw UPPER 0x1E000
heinrichsweikamp
parents:
diff changeset
217 movwf TBLPTRU
heinrichsweikamp
parents:
diff changeset
218 extern color_image
heinrichsweikamp
parents:
diff changeset
219 call color_image ; Show logo
heinrichsweikamp
parents:
diff changeset
220 call TFT_standard_color
heinrichsweikamp
parents:
diff changeset
221 WIN_SMALL .10,.100
427
ceb1b7329dce add code for new compass chip
heinrichsweikamp
parents: 416
diff changeset
222 STRCPY_PRINT "Update successful!" ; Hard coded since language switch does not work here
0
heinrichsweikamp
parents:
diff changeset
223 WIN_SMALL .10,.140
427
ceb1b7329dce add code for new compass chip
heinrichsweikamp
parents: 416
diff changeset
224 STRCPY "New Firmware: "
0
heinrichsweikamp
parents:
diff changeset
225 movlw softwareversion_x
heinrichsweikamp
parents:
diff changeset
226 movwf lo
heinrichsweikamp
parents:
diff changeset
227 bsf leftbind
heinrichsweikamp
parents:
diff changeset
228 output_8
heinrichsweikamp
parents:
diff changeset
229 PUTC "."
heinrichsweikamp
parents:
diff changeset
230 movlw softwareversion_y
heinrichsweikamp
parents:
diff changeset
231 movwf lo
45
76dfe320e6ec 1.01 beta start
heinrichsweikamp
parents: 24
diff changeset
232 output_99x
0
heinrichsweikamp
parents:
diff changeset
233 bcf leftbind
560
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 545
diff changeset
234 STRCAT_PRINT "" ; Print second row
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 545
diff changeset
235 call TFT_Display_FadeIn ; Display resulting surface screen.
0
heinrichsweikamp
parents:
diff changeset
236
heinrichsweikamp
parents:
diff changeset
237 ; place "after-update reset" here...
93
5e1ef9bf32ec clear pressure sensor compensation upon update
heinrichsweikamp
parents: 52
diff changeset
238
5e1ef9bf32ec clear pressure sensor compensation upon update
heinrichsweikamp
parents: 52
diff changeset
239 extern oPressureAdjust, option_reset, option_save
5e1ef9bf32ec clear pressure sensor compensation upon update
heinrichsweikamp
parents: 52
diff changeset
240 lfsr FSR0,oPressureAdjust
5e1ef9bf32ec clear pressure sensor compensation upon update
heinrichsweikamp
parents: 52
diff changeset
241 call option_reset ; Reset FSR0 option to factory default.
5e1ef9bf32ec clear pressure sensor compensation upon update
heinrichsweikamp
parents: 52
diff changeset
242 lfsr FSR0,oPressureAdjust
5e1ef9bf32ec clear pressure sensor compensation upon update
heinrichsweikamp
parents: 52
diff changeset
243 call option_save ; Save in EEPROM
5e1ef9bf32ec clear pressure sensor compensation upon update
heinrichsweikamp
parents: 52
diff changeset
244
410
d3087a8ed7e1 BUGFIX: Fix rare issue after battery change (OSTC3 did not start properly)
heinrichsweikamp
parents: 375
diff changeset
245 rcall backup_flash_page ; backup the first 128bytes from flash to EEPROM
d3087a8ed7e1 BUGFIX: Fix rare issue after battery change (OSTC3 did not start properly)
heinrichsweikamp
parents: 375
diff changeset
246
0
heinrichsweikamp
parents:
diff changeset
247 movlw d'1' ; store current version in EEPROM
281
eb758a5b44eb BUGFIX: Fix download issue for dives made with 1.80 firmware
heinrichsweikamp
parents: 276
diff changeset
248 movwf EEADR ; =1
eb758a5b44eb BUGFIX: Fix download issue for dives made with 1.80 firmware
heinrichsweikamp
parents: 276
diff changeset
249 movwf EEADRH ; =1
0
heinrichsweikamp
parents:
diff changeset
250 movlw softwareversion_x
heinrichsweikamp
parents:
diff changeset
251 movwf EEDATA
heinrichsweikamp
parents:
diff changeset
252 call write_eeprom ; write version x
heinrichsweikamp
parents:
diff changeset
253 incf EEADR,F ; set to 0x102
heinrichsweikamp
parents:
diff changeset
254 movlw softwareversion_y
heinrichsweikamp
parents:
diff changeset
255 movwf EEDATA
heinrichsweikamp
parents:
diff changeset
256 call write_eeprom ; write version y
heinrichsweikamp
parents:
diff changeset
257 clrf EEADRH ; Reset EEADRH
heinrichsweikamp
parents:
diff changeset
258
heinrichsweikamp
parents:
diff changeset
259 movlw .7
heinrichsweikamp
parents:
diff changeset
260 movwf lo
heinrichsweikamp
parents:
diff changeset
261 check_firmware_new2:
heinrichsweikamp
parents:
diff changeset
262 ; Wait 1 second
heinrichsweikamp
parents:
diff changeset
263 bcf onesecupdate
heinrichsweikamp
parents:
diff changeset
264 btfss onesecupdate
heinrichsweikamp
parents:
diff changeset
265 bra $-2
heinrichsweikamp
parents:
diff changeset
266 decfsz lo,F ; Wait 10 seconds...
heinrichsweikamp
parents:
diff changeset
267 bra check_firmware_new2
heinrichsweikamp
parents:
diff changeset
268
heinrichsweikamp
parents:
diff changeset
269 global restart
heinrichsweikamp
parents:
diff changeset
270 restart:
heinrichsweikamp
parents:
diff changeset
271 clrf STKPTR ; Never return from here
276
e4cb495aed3d Increase byte timeout in PC download mode, faster response to "Exit" in main menu
heinrichsweikamp
parents: 275
diff changeset
272 clrf CCP1CON ; stop PWM
e4cb495aed3d Increase byte timeout in PC download mode, faster response to "Exit" in main menu
heinrichsweikamp
parents: 275
diff changeset
273 bcf PORTC,2 ; Pull PWM out to GND
e4cb495aed3d Increase byte timeout in PC download mode, faster response to "Exit" in main menu
heinrichsweikamp
parents: 275
diff changeset
274
21
79b2084fd75a Reset options to default if they are not within the allowed min/max values
heinrichsweikamp
parents: 16
diff changeset
275 extern option_save_all, option_check_all
79b2084fd75a Reset options to default if they are not within the allowed min/max values
heinrichsweikamp
parents: 16
diff changeset
276
0
heinrichsweikamp
parents:
diff changeset
277 btfsc menubit ; Return from Menu/COMM mode or timeout?
heinrichsweikamp
parents:
diff changeset
278 call option_save_all ; Yes, save all settings into EEPROM
heinrichsweikamp
parents:
diff changeset
279
429
4b93354b7738 hardware_flag handling
heinrichsweikamp
parents: 427
diff changeset
280 call option_restore_all ; Restore everything from EEPROM into RAM
23
e402813343b6 new option to switch samplingrate between 10s and 2s
heinrichsweikamp
parents: 21
diff changeset
281 call option_check_all ; Check all options (and reset if not within their min/max boundaries)
560
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 545
diff changeset
282 call option_save_all ; Save all settings into EEPROM after they have been checked
23
e402813343b6 new option to switch samplingrate between 10s and 2s
heinrichsweikamp
parents: 21
diff changeset
283
429
4b93354b7738 hardware_flag handling
heinrichsweikamp
parents: 427
diff changeset
284 clrf flag1 ; clear all flags
4b93354b7738 hardware_flag handling
heinrichsweikamp
parents: 427
diff changeset
285 clrf flag2
4b93354b7738 hardware_flag handling
heinrichsweikamp
parents: 427
diff changeset
286 clrf flag3
4b93354b7738 hardware_flag handling
heinrichsweikamp
parents: 427
diff changeset
287 clrf flag4
4b93354b7738 hardware_flag handling
heinrichsweikamp
parents: 427
diff changeset
288 clrf flag5
4b93354b7738 hardware_flag handling
heinrichsweikamp
parents: 427
diff changeset
289 clrf flag6
0
heinrichsweikamp
parents:
diff changeset
290 clrf flag7
heinrichsweikamp
parents:
diff changeset
291 clrf flag8
429
4b93354b7738 hardware_flag handling
heinrichsweikamp
parents: 427
diff changeset
292 clrf flag9
4b93354b7738 hardware_flag handling
heinrichsweikamp
parents: 427
diff changeset
293 clrf flag10
267
f64afa14ef07 BUGFIX: Analog sensors were ignored in 1.76
heinrichsweikamp
parents: 255
diff changeset
294 ; Do not clear flag11 (Sensor calibration and charger status)
480
ad8acade5567 NEW: PSCR mode (Passive semi-closed rebreather)
heinrichsweikamp
parents: 475
diff changeset
295 clrf flag12
560
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 545
diff changeset
296 ; Do not clear flag13 (Important hardware flags)
480
ad8acade5567 NEW: PSCR mode (Passive semi-closed rebreather)
heinrichsweikamp
parents: 475
diff changeset
297 clrf flag14
ad8acade5567 NEW: PSCR mode (Passive semi-closed rebreather)
heinrichsweikamp
parents: 475
diff changeset
298 clrf hardware_flag ; hardware descriptor flag
449
heinrichsweikamp
parents: 446
diff changeset
299 bsf tft_is_dimming ; TFT is dimming up (soon), ignore ambient sensor!
23
e402813343b6 new option to switch samplingrate between 10s and 2s
heinrichsweikamp
parents: 21
diff changeset
300
236
e2ea74646127 configure hardware_flag byte
heinrichsweikamp
parents: 235
diff changeset
301 ; configure hardware_flag byte
e2ea74646127 configure hardware_flag byte
heinrichsweikamp
parents: 235
diff changeset
302
429
4b93354b7738 hardware_flag handling
heinrichsweikamp
parents: 427
diff changeset
303 bsf ambient_sensor ; Set flag
4b93354b7738 hardware_flag handling
heinrichsweikamp
parents: 427
diff changeset
304 bsf optical_input ; Set flag
236
e2ea74646127 configure hardware_flag byte
heinrichsweikamp
parents: 235
diff changeset
305
113
heinrichsweikamp
parents: 93
diff changeset
306 call lt2942_get_status ; Check for gauge IC
560
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 545
diff changeset
307 btfss battery_gauge_available ; cR/2 hardware?
236
e2ea74646127 configure hardware_flag byte
heinrichsweikamp
parents: 235
diff changeset
308 bra restart2 ; No
e2ea74646127 configure hardware_flag byte
heinrichsweikamp
parents: 235
diff changeset
309
113
heinrichsweikamp
parents: 93
diff changeset
310 call lt2942_init ; Yes, init battery gauge IC
429
4b93354b7738 hardware_flag handling
heinrichsweikamp
parents: 427
diff changeset
311 bcf optical_input ; Clear flag
4b93354b7738 hardware_flag handling
heinrichsweikamp
parents: 427
diff changeset
312
441
360acdcda0d7 +BUGFIX: Compatibility with "hwOS Config" fixed
heinrichsweikamp
parents: 429
diff changeset
313 banksel 0xF16
560
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 545
diff changeset
314 bcf ANCON0,7 ; AN7 Digital input
441
360acdcda0d7 +BUGFIX: Compatibility with "hwOS Config" fixed
heinrichsweikamp
parents: 429
diff changeset
315 banksel common
560
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 545
diff changeset
316 bcf lightsen_power ; Power-down ambient light sensor
236
e2ea74646127 configure hardware_flag byte
heinrichsweikamp
parents: 235
diff changeset
317 bcf ambient_sensor ; Clear flag
441
360acdcda0d7 +BUGFIX: Compatibility with "hwOS Config" fixed
heinrichsweikamp
parents: 429
diff changeset
318 nop
560
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 545
diff changeset
319 btfss PORTF,2 ; Light sensor available?
429
4b93354b7738 hardware_flag handling
heinrichsweikamp
parents: 427
diff changeset
320 bsf ambient_sensor ; Yes.
441
360acdcda0d7 +BUGFIX: Compatibility with "hwOS Config" fixed
heinrichsweikamp
parents: 429
diff changeset
321 banksel 0xF16
560
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 545
diff changeset
322 bsf ANCON0,7 ; AN7 Analog again
441
360acdcda0d7 +BUGFIX: Compatibility with "hwOS Config" fixed
heinrichsweikamp
parents: 429
diff changeset
323 banksel common
560
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 545
diff changeset
324 bsf lightsen_power ; Power-up ambient light sensor again
429
4b93354b7738 hardware_flag handling
heinrichsweikamp
parents: 427
diff changeset
325
243
ee81f46714cb auto-select correct settings menu
heinrichsweikamp
parents: 236
diff changeset
326 restart2:
ee81f46714cb auto-select correct settings menu
heinrichsweikamp
parents: 236
diff changeset
327 btfsc vusb_in
ee81f46714cb auto-select correct settings menu
heinrichsweikamp
parents: 236
diff changeset
328 bra restart3 ; USB (and powered on)
ee81f46714cb auto-select correct settings menu
heinrichsweikamp
parents: 236
diff changeset
329 bcf PORTE,0 ; Start comms
ee81f46714cb auto-select correct settings menu
heinrichsweikamp
parents: 236
diff changeset
330 WAITMS d'1'
ee81f46714cb auto-select correct settings menu
heinrichsweikamp
parents: 236
diff changeset
331 btfss vusb_in
ee81f46714cb auto-select correct settings menu
heinrichsweikamp
parents: 236
diff changeset
332 bra restart3 ; USB (and powered off)
ee81f46714cb auto-select correct settings menu
heinrichsweikamp
parents: 236
diff changeset
333 bsf ble_available ; ble available
ee81f46714cb auto-select correct settings menu
heinrichsweikamp
parents: 236
diff changeset
334 restart3:
ee81f46714cb auto-select correct settings menu
heinrichsweikamp
parents: 236
diff changeset
335 bsf PORTE,0 ; Stop comms
248
afe73e1a0181 support hardware_flag for all possible hardware combinations
heinrichsweikamp
parents: 243
diff changeset
336 btfsc ble_available ; ble available?
afe73e1a0181 support hardware_flag for all possible hardware combinations
heinrichsweikamp
parents: 243
diff changeset
337 bra restart4 ; Yes, can't be a cR
449
heinrichsweikamp
parents: 446
diff changeset
338 btfss battery_gauge_available ; Rechargeable
248
afe73e1a0181 support hardware_flag for all possible hardware combinations
heinrichsweikamp
parents: 243
diff changeset
339 bra restart4 ; No, can't be a cR
afe73e1a0181 support hardware_flag for all possible hardware combinations
heinrichsweikamp
parents: 243
diff changeset
340 bsf analog_o2_input ; Set flag for analog
249
94bf757690cf ignore sensor for non-sensor hardware
heinrichsweikamp
parents: 248
diff changeset
341 restart4:
94bf757690cf ignore sensor for non-sensor hardware
heinrichsweikamp
parents: 248
diff changeset
342 ; The hardware_flag is now:
94bf757690cf ignore sensor for non-sensor hardware
heinrichsweikamp
parents: 248
diff changeset
343 ; 3: 0x0A
94bf757690cf ignore sensor for non-sensor hardware
heinrichsweikamp
parents: 248
diff changeset
344 ; cR: 0x05
94bf757690cf ignore sensor for non-sensor hardware
heinrichsweikamp
parents: 248
diff changeset
345 ; 2 with BLE: 0x11
94bf757690cf ignore sensor for non-sensor hardware
heinrichsweikamp
parents: 248
diff changeset
346 ; 3 with BLE: 0x1A
429
4b93354b7738 hardware_flag handling
heinrichsweikamp
parents: 427
diff changeset
347 ; 2 with ambient: 0x13
113
heinrichsweikamp
parents: 93
diff changeset
348
0
heinrichsweikamp
parents:
diff changeset
349 ; Select high altitude (Fly) mode?
heinrichsweikamp
parents:
diff changeset
350 movff last_surfpressure_30min+0,sub_b+0
heinrichsweikamp
parents:
diff changeset
351 movff last_surfpressure_30min+1,sub_b+1
heinrichsweikamp
parents:
diff changeset
352 movlw HIGH high_altitude_threshold
heinrichsweikamp
parents:
diff changeset
353 movwf sub_a+1
heinrichsweikamp
parents:
diff changeset
354 movlw LOW high_altitude_threshold ; Hard-wired 880mbar
heinrichsweikamp
parents:
diff changeset
355 movwf sub_a+0
heinrichsweikamp
parents:
diff changeset
356 call subU16 ; sub_c = sub_a - sub_b
heinrichsweikamp
parents:
diff changeset
357 btfss neg_flag ; Result negative (Ambient>880mbar)?
heinrichsweikamp
parents:
diff changeset
358 bsf high_altitude_mode ; No, Set Flag!
heinrichsweikamp
parents:
diff changeset
359
236
e2ea74646127 configure hardware_flag byte
heinrichsweikamp
parents: 235
diff changeset
360 btfss analog_o2_input
165
9b82239fa062 testing consumption
heinrichsweikamp
parents: 155
diff changeset
361 bsf TRISB,3
449
heinrichsweikamp
parents: 446
diff changeset
362 btfss battery_gauge_available
165
9b82239fa062 testing consumption
heinrichsweikamp
parents: 155
diff changeset
363 bsf TRISG,0
0
heinrichsweikamp
parents:
diff changeset
364 call ext_flash_disable_protection ; Disable write protection for external flash
heinrichsweikamp
parents:
diff changeset
365
155
5f71e31bd5b3 CHANGE: Re-arranged Settings Menu, add 180? rotate to menu
heinrichsweikamp
parents: 154
diff changeset
366 bsf flip_screen ; Flip 180°
5f71e31bd5b3 CHANGE: Re-arranged Settings Menu, add 180? rotate to menu
heinrichsweikamp
parents: 154
diff changeset
367 TSTOSS opt_flip_screen ; =1: Flip the screen
5f71e31bd5b3 CHANGE: Re-arranged Settings Menu, add 180? rotate to menu
heinrichsweikamp
parents: 154
diff changeset
368 bcf flip_screen ; Normal orientation
151
5cb177f0948a work on flip screen...
heinrichsweikamp
parents: 147
diff changeset
369
560
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 545
diff changeset
370 btfsc use_old_batt_flag ; =1: load old battery information after power-on reset
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 545
diff changeset
371 goto use_old_batteries ; Returns to "surfloop"!
464
0491a84fd0b8 CHANGE: Easier to understand "New Battery" menu (OSTC model dependent)
heinrichsweikamp
parents: 463
diff changeset
372
560
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 545
diff changeset
373 btfsc RCON,POR ; Was this a power-on reset?
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 545
diff changeset
374 goto surfloop ; Jump to Surfaceloop!
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 545
diff changeset
375 bsf RCON,POR ; Set bit for next detection
464
0491a84fd0b8 CHANGE: Easier to understand "New Battery" menu (OSTC model dependent)
heinrichsweikamp
parents: 463
diff changeset
376 ; Things to do after a power-on reset
0491a84fd0b8 CHANGE: Easier to understand "New Battery" menu (OSTC model dependent)
heinrichsweikamp
parents: 463
diff changeset
377 extern new_battery_menu,use_old_batteries
560
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 545
diff changeset
378 goto new_battery_menu ; Returns to "surfloop"!
0
heinrichsweikamp
parents:
diff changeset
379
heinrichsweikamp
parents:
diff changeset
380 ;=============================================================================
heinrichsweikamp
parents:
diff changeset
381 ; Setup all flags and parameters for divemode and simulator computations.
heinrichsweikamp
parents:
diff changeset
382 ;
heinrichsweikamp
parents:
diff changeset
383 global restart_set_modes_and_flags
heinrichsweikamp
parents:
diff changeset
384 restart_set_modes_and_flags: ; "Call"ed from divemode, as well!
heinrichsweikamp
parents:
diff changeset
385 call option_restore_all ; Restore everything from EEPROM
24
f51caad821b4 save logbook recording interval
heinrichsweikamp
parents: 23
diff changeset
386
f51caad821b4 save logbook recording interval
heinrichsweikamp
parents: 23
diff changeset
387 ; Setup sampling rate
f51caad821b4 save logbook recording interval
heinrichsweikamp
parents: 23
diff changeset
388 movlw .2
f51caad821b4 save logbook recording interval
heinrichsweikamp
parents: 23
diff changeset
389 movwf samplingrate
f51caad821b4 save logbook recording interval
heinrichsweikamp
parents: 23
diff changeset
390 TSTOSS opt_sampling_rate ; =1: 10s, =0: 2s
f51caad821b4 save logbook recording interval
heinrichsweikamp
parents: 23
diff changeset
391 bra restart_set_modes_and_flags1
f51caad821b4 save logbook recording interval
heinrichsweikamp
parents: 23
diff changeset
392 movlw .10
f51caad821b4 save logbook recording interval
heinrichsweikamp
parents: 23
diff changeset
393 movwf samplingrate
f51caad821b4 save logbook recording interval
heinrichsweikamp
parents: 23
diff changeset
394 restart_set_modes_and_flags1:
560
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 545
diff changeset
395 bcf twosecupdate ; to have divemode routines in sync
562
8b7ea27ea1fa seperate desat and sat multipliers for GF and Non-GF modes. Set to 100/100 as default in GF mode
heinrichsweikamp
parents: 561
diff changeset
396
545
7e6df19264b6 BUGFIX: Simulator in CC mode
heinrichsweikamp
parents: 480
diff changeset
397 bcf FLAG_apnoe_mode
560
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 545
diff changeset
398 bcf FLAG_ccr_mode ; =1: CCR mode (Fixed ppO2 or Sensor) active
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 545
diff changeset
399 bcf FLAG_gauge_mode ; =1: In Gauge mode
545
7e6df19264b6 BUGFIX: Simulator in CC mode
heinrichsweikamp
parents: 480
diff changeset
400 bcf FLAG_pscr_mode
560
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 545
diff changeset
401 call disable_ir_s8 ; IR off
0
heinrichsweikamp
parents:
diff changeset
402
562
8b7ea27ea1fa seperate desat and sat multipliers for GF and Non-GF modes. Set to 100/100 as default in GF mode
heinrichsweikamp
parents: 561
diff changeset
403 ; Setup char_I_saturation_multiplier and char_I_desaturation_multiplier
8b7ea27ea1fa seperate desat and sat multipliers for GF and Non-GF modes. Set to 100/100 as default in GF mode
heinrichsweikamp
parents: 561
diff changeset
404 movff opt_sat_multiplier_gf,char_I_saturation_multiplier
8b7ea27ea1fa seperate desat and sat multipliers for GF and Non-GF modes. Set to 100/100 as default in GF mode
heinrichsweikamp
parents: 561
diff changeset
405 movff opt_desat_multiplier_gf,char_I_desaturation_multiplier
8b7ea27ea1fa seperate desat and sat multipliers for GF and Non-GF modes. Set to 100/100 as default in GF mode
heinrichsweikamp
parents: 561
diff changeset
406 movff char_I_deco_model,lo ; 0 = ZH-L16, 1 = ZH-L16-GF
8b7ea27ea1fa seperate desat and sat multipliers for GF and Non-GF modes. Set to 100/100 as default in GF mode
heinrichsweikamp
parents: 561
diff changeset
407 tstfsz lo
8b7ea27ea1fa seperate desat and sat multipliers for GF and Non-GF modes. Set to 100/100 as default in GF mode
heinrichsweikamp
parents: 561
diff changeset
408 bra restart_set_modes_and_flags1b
8b7ea27ea1fa seperate desat and sat multipliers for GF and Non-GF modes. Set to 100/100 as default in GF mode
heinrichsweikamp
parents: 561
diff changeset
409 movff opt_sat_multiplier_non_gf,char_I_saturation_multiplier
8b7ea27ea1fa seperate desat and sat multipliers for GF and Non-GF modes. Set to 100/100 as default in GF mode
heinrichsweikamp
parents: 561
diff changeset
410 movff opt_desat_multiplier_non_gf,char_I_desaturation_multiplier
8b7ea27ea1fa seperate desat and sat multipliers for GF and Non-GF modes. Set to 100/100 as default in GF mode
heinrichsweikamp
parents: 561
diff changeset
411
8b7ea27ea1fa seperate desat and sat multipliers for GF and Non-GF modes. Set to 100/100 as default in GF mode
heinrichsweikamp
parents: 561
diff changeset
412 restart_set_modes_and_flags1b:
545
7e6df19264b6 BUGFIX: Simulator in CC mode
heinrichsweikamp
parents: 480
diff changeset
413 movff opt_dive_mode,lo ; 0=OC, 1=CC, 2=Gauge, 3=Apnea, 4=PSCR
0
heinrichsweikamp
parents:
diff changeset
414 tstfsz lo
heinrichsweikamp
parents:
diff changeset
415 bra restart_set_modes_and_flags2
heinrichsweikamp
parents:
diff changeset
416 ; OC Mode
560
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 545
diff changeset
417
0
heinrichsweikamp
parents:
diff changeset
418 return
heinrichsweikamp
parents:
diff changeset
419
heinrichsweikamp
parents:
diff changeset
420 restart_set_modes_and_flags2:
heinrichsweikamp
parents:
diff changeset
421 decfsz lo,F
heinrichsweikamp
parents:
diff changeset
422 bra restart_set_modes_and_flags3
heinrichsweikamp
parents:
diff changeset
423 ; CC Mode
359
2be48ccfa9de make AUTO SP available on OSTC2 hardware
heinrichsweikamp
parents: 338
diff changeset
424 btfsc analog_o2_input ; cR?
2be48ccfa9de make AUTO SP available on OSTC2 hardware
heinrichsweikamp
parents: 338
diff changeset
425 bra restart_set_modes_and_flags2b ; Yes, skip mode check
2be48ccfa9de make AUTO SP available on OSTC2 hardware
heinrichsweikamp
parents: 338
diff changeset
426 btfsc optical_input ; 3
2be48ccfa9de make AUTO SP available on OSTC2 hardware
heinrichsweikamp
parents: 338
diff changeset
427 bra restart_set_modes_and_flags2b ; Yes, skip mode check
2be48ccfa9de make AUTO SP available on OSTC2 hardware
heinrichsweikamp
parents: 338
diff changeset
428 ; Make sure Sensor is not selected
2be48ccfa9de make AUTO SP available on OSTC2 hardware
heinrichsweikamp
parents: 338
diff changeset
429 ; opt_ccr_mode must be <> 1 (=0: Fixed SP, =1: Sensor, =2: Auto SP)
2be48ccfa9de make AUTO SP available on OSTC2 hardware
heinrichsweikamp
parents: 338
diff changeset
430 banksel opt_ccr_mode
2be48ccfa9de make AUTO SP available on OSTC2 hardware
heinrichsweikamp
parents: 338
diff changeset
431 movlw .1
2be48ccfa9de make AUTO SP available on OSTC2 hardware
heinrichsweikamp
parents: 338
diff changeset
432 cpfseq opt_ccr_mode ; = Sensor?
2be48ccfa9de make AUTO SP available on OSTC2 hardware
heinrichsweikamp
parents: 338
diff changeset
433 bra restart_set_modes_and_flags2b ; No
2be48ccfa9de make AUTO SP available on OSTC2 hardware
heinrichsweikamp
parents: 338
diff changeset
434 clrf opt_ccr_mode ; Yes, reset to Fixed SP
2be48ccfa9de make AUTO SP available on OSTC2 hardware
heinrichsweikamp
parents: 338
diff changeset
435 restart_set_modes_and_flags2b:
2be48ccfa9de make AUTO SP available on OSTC2 hardware
heinrichsweikamp
parents: 338
diff changeset
436 banksel common
560
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 545
diff changeset
437 bsf FLAG_ccr_mode ; =1: CCR mode (Fixed SP, Auto SP or Sensor) active
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 545
diff changeset
438 call enable_ir_s8 ; Enable IR/S8-Port
0
heinrichsweikamp
parents:
diff changeset
439 return
heinrichsweikamp
parents:
diff changeset
440
heinrichsweikamp
parents:
diff changeset
441 restart_set_modes_and_flags3:
heinrichsweikamp
parents:
diff changeset
442 decfsz lo,F
heinrichsweikamp
parents:
diff changeset
443 bra restart_set_modes_and_flags4
heinrichsweikamp
parents:
diff changeset
444 ; Gauge Mode
560
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 545
diff changeset
445 bsf FLAG_gauge_mode ; =1: In Gauge mode
0
heinrichsweikamp
parents:
diff changeset
446 return
heinrichsweikamp
parents:
diff changeset
447
heinrichsweikamp
parents:
diff changeset
448 restart_set_modes_and_flags4:
480
ad8acade5567 NEW: PSCR mode (Passive semi-closed rebreather)
heinrichsweikamp
parents: 475
diff changeset
449 decfsz lo,F
ad8acade5567 NEW: PSCR mode (Passive semi-closed rebreather)
heinrichsweikamp
parents: 475
diff changeset
450 bra restart_set_modes_and_flags5
0
heinrichsweikamp
parents:
diff changeset
451 ; Apnea Mode
480
ad8acade5567 NEW: PSCR mode (Passive semi-closed rebreather)
heinrichsweikamp
parents: 475
diff changeset
452 bsf FLAG_apnoe_mode
560
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 545
diff changeset
453 return ; start in Surfacemode
0
heinrichsweikamp
parents:
diff changeset
454
480
ad8acade5567 NEW: PSCR mode (Passive semi-closed rebreather)
heinrichsweikamp
parents: 475
diff changeset
455 restart_set_modes_and_flags5:
560
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 545
diff changeset
456 ; PSCR Mode
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 545
diff changeset
457 btfsc analog_o2_input ; cR?
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 545
diff changeset
458 bra restart_set_modes_and_flags5b ; Yes, skip mode check
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 545
diff changeset
459 btfsc optical_input ; 3
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 545
diff changeset
460 bra restart_set_modes_and_flags5b ; Yes, skip mode check
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 545
diff changeset
461
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 545
diff changeset
462 ; Make sure Sensor is not selected
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 545
diff changeset
463 ; opt_ccr_mode must be <> 1 (=0: calculated ppO2, =1: Sensor, =2: Auto SP - not valid in pSCR, too)
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 545
diff changeset
464 banksel opt_ccr_mode
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 545
diff changeset
465 movlw .1
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 545
diff changeset
466 cpfseq opt_ccr_mode ; = Sensor?
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 545
diff changeset
467 bra restart_set_modes_and_flags5b ; No
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 545
diff changeset
468 clrf opt_ccr_mode ; Yes, reset to calculated ppO2
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 545
diff changeset
469
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 545
diff changeset
470 restart_set_modes_and_flags5b:
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 545
diff changeset
471 banksel opt_ccr_mode
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 545
diff changeset
472 bcf opt_ccr_mode,1 ; in pSCR mode only calculated or Sensor, not 2 = Auto SP allowed
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 545
diff changeset
473 banksel common
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 545
diff changeset
474 bsf FLAG_pscr_mode
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 545
diff changeset
475 return ; start in Surfacemode
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 545
diff changeset
476
480
ad8acade5567 NEW: PSCR mode (Passive semi-closed rebreather)
heinrichsweikamp
parents: 475
diff changeset
477
410
d3087a8ed7e1 BUGFIX: Fix rare issue after battery change (OSTC3 did not start properly)
heinrichsweikamp
parents: 375
diff changeset
478 backup_flash_page: ; backup the first 128bytes from flash to EEPROM
d3087a8ed7e1 BUGFIX: Fix rare issue after battery change (OSTC3 did not start properly)
heinrichsweikamp
parents: 375
diff changeset
479 ; Start address in internal flash
d3087a8ed7e1 BUGFIX: Fix rare issue after battery change (OSTC3 did not start properly)
heinrichsweikamp
parents: 375
diff changeset
480 movlw 0x00
d3087a8ed7e1 BUGFIX: Fix rare issue after battery change (OSTC3 did not start properly)
heinrichsweikamp
parents: 375
diff changeset
481 movwf TBLPTRL
d3087a8ed7e1 BUGFIX: Fix rare issue after battery change (OSTC3 did not start properly)
heinrichsweikamp
parents: 375
diff changeset
482 movwf TBLPTRH
d3087a8ed7e1 BUGFIX: Fix rare issue after battery change (OSTC3 did not start properly)
heinrichsweikamp
parents: 375
diff changeset
483 movwf TBLPTRU
d3087a8ed7e1 BUGFIX: Fix rare issue after battery change (OSTC3 did not start properly)
heinrichsweikamp
parents: 375
diff changeset
484
d3087a8ed7e1 BUGFIX: Fix rare issue after battery change (OSTC3 did not start properly)
heinrichsweikamp
parents: 375
diff changeset
485 movlw .128
560
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 545
diff changeset
486 movwf lo ; Byte counter
410
d3087a8ed7e1 BUGFIX: Fix rare issue after battery change (OSTC3 did not start properly)
heinrichsweikamp
parents: 375
diff changeset
487 clrf EEADR
d3087a8ed7e1 BUGFIX: Fix rare issue after battery change (OSTC3 did not start properly)
heinrichsweikamp
parents: 375
diff changeset
488 movlw .3
560
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 545
diff changeset
489 movwf EEADRH ; Setup backup address
410
d3087a8ed7e1 BUGFIX: Fix rare issue after battery change (OSTC3 did not start properly)
heinrichsweikamp
parents: 375
diff changeset
490
560
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 545
diff changeset
491 TBLRD*- ; Dummy read to be in 128 byte block
410
d3087a8ed7e1 BUGFIX: Fix rare issue after battery change (OSTC3 did not start properly)
heinrichsweikamp
parents: 375
diff changeset
492 backup_flash_loop:
560
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 545
diff changeset
493 tblrd+* ; Table Read with Pre-Increment
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 545
diff changeset
494 movff TABLAT,EEDATA ; put 1 byte
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 545
diff changeset
495 call write_eeprom ; save it in EEPROM
410
d3087a8ed7e1 BUGFIX: Fix rare issue after battery change (OSTC3 did not start properly)
heinrichsweikamp
parents: 375
diff changeset
496 incf EEADR,F
560
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 545
diff changeset
497 decfsz lo,F ; 128byte done?
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 545
diff changeset
498 bra backup_flash_loop ; No
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 545
diff changeset
499 clrf EEADRH ; Reset EEADRH
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 545
diff changeset
500 return ; Done.
410
d3087a8ed7e1 BUGFIX: Fix rare issue after battery change (OSTC3 did not start properly)
heinrichsweikamp
parents: 375
diff changeset
501
0
heinrichsweikamp
parents:
diff changeset
502 END