annotate code_part1/OSTC_code_asm_part1/sleepmode.asm @ 842:454ef5c2e6aa default tip

Bugfix: Auto-SP did not show >9m for some 2C hardware versions in German language firmware Make year settings until 2040 possible (This is likely the final release for this model)
author heinrichsweikamp
date Sat, 29 Nov 2025 14:11:07 +0100
parents 2a0e5d884fc3
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
815
2a0e5d884fc3 BUGFIX: Fix licence in German
heinrichsweikamp
parents: 813
diff changeset
1 ; OSTC Mk.2, 2N and 2C - diving computer code
807
c50296c3059e BUGFIX: Divetime had unwanted "." behind the minutes
heinrichsweikamp
parents: 774
diff changeset
2 ; Copyright (C) 2015 HeinrichsWeikamp GbR
0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
3 ; This program is free software: you can redistribute it and/or modify
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
4 ; it under the terms of the GNU General Public License as published by
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
5 ; the Free Software Foundation, either version 3 of the License, or
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
6 ; (at your option) any later version.
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
7 ; This program is distributed in the hope that it will be useful,
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
8 ; but WITHOUT ANY WARRANTY; without even the implied warranty of
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
9 ; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
10 ; GNU General Public License for more details.
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
11 ; You should have received a copy of the GNU General Public License
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
12 ; along with this program. If not, see <http://www.gnu.org/licenses/>.
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
13 ; Routines for sleepmode
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
14 ; written by: Matthias Heinrichs, info@heinrichsweikamp.com
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
15 ; written: 050520
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
16 ; last updated: 090507
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
17 ; known bugs:
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
18 ; ToDo:
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
19 sleeploop: ; enter sleepmode!
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
20 ; first check if the 16 hash char are=0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
21 lfsr FSR2, char_O_hash
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
22 movlw d'16'
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
23 movwf temp1
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
24 sleeploop1:
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
25 tstfsz POSTINC2 ; Test hash values
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
26 bra sleeploop2 ; At least one char is not zero -> Do not build hash
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
27 decfsz temp1,F
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
28 bra sleeploop1
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
29 ; build hash (about 90sek @ 16MHz)
681
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents: 647
diff changeset
30 call DISP_ClearScreen ; clear
0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
31 DISPLAYTEXT .1 ; "Building MD2 hash"
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
32 DISPLAYTEXT .2 ; "Please wait..."
116
14a074e1a375 Split C code, and use direct linking.
JeanDo
parents: 21
diff changeset
33 call deco_hash ; calculate MD2 hash
0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
34 movlb b'00000001' ; Back to Bank1
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
35 sleeploop2:
681
6e456a6398e0 Hardware4 support
heinrichsweikamp
parents: 647
diff changeset
36 call DISP_DisplayOff ; display off
0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
37 call disable_rs232 ; disable UART module
626
bab5a9fc1b10 restore last used customview in dive- and surface-mode
heinrichsweikamp
parents: 497
diff changeset
38
bab5a9fc1b10 restore last used customview in dive- and surface-mode
heinrichsweikamp
parents: 497
diff changeset
39 ; Save surface mode custom view
bab5a9fc1b10 restore last used customview in dive- and surface-mode
heinrichsweikamp
parents: 497
diff changeset
40 movff menupos3,EEDATA ; Copy to EEDATA
bab5a9fc1b10 restore last used customview in dive- and surface-mode
heinrichsweikamp
parents: 497
diff changeset
41 write_int_eeprom d'93' ; Write last selected customview surface mode into EEPROM
bab5a9fc1b10 restore last used customview in dive- and surface-mode
heinrichsweikamp
parents: 497
diff changeset
42
0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
43 clrf divemins+0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
44 clrf divemins+1
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
45 bcf TRISB,6
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
46 bcf TRISB,7
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
47 bcf PORTB,6
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
48 bcf PORTB,7 ; Disable UART
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
49 sleeploop_loop:
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
50 btfsc oneminupdate ; one minute in sleep?
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
51 rcall onemin_sleep ; do oneminute tasks, e.g. calculate desaturation
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
52
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
53 btfsc onesecupdate ; one second in sleep?
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
54 rcall onesec_sleep ; check switches, check pressure sensor, etc.
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
55
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
56 btfss sleepmode ; wake up? (This bit will be set in other routines)
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
57 goto restart ; yes
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
58 nop
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
59 sleep ; Sleep until Timer1 will wake up the device
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
60 nop
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
61 bra sleeploop_loop ; do loop until someting happens
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
62
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
63
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
64 onemin_sleep:
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
65 call get_battery_voltage ; get battery voltage
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
66 btfsc enter_error_sleep ; Enter Fatal Error Routine?
813
c87b9f2fb2f6 wakeup from deep sleep mode automatically upon USB connect
heinrichsweikamp
parents: 807
diff changeset
67 goto fatal_error_sleep ; Yes (In Sleepmode_vxx.asm!)
0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
68
354
cec312042b94 Fix sub16 neg detect (related to bug #44)
JeanDo
parents: 341
diff changeset
69 ;---- adjust airpressure compensation any 15 minutes
0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
70 incf divemins+1,F ; counts to 14...
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
71 movlw d'14'
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
72 cpfsgt divemins+1
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
73 bra onemin_sleep2 ; 15 minutes not done!
354
cec312042b94 Fix sub16 neg detect (related to bug #44)
JeanDo
parents: 341
diff changeset
74 clrf divemins+1 ; reset counter
0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
75
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
76 rcall pressuretest_sleep_fast ; Gets pressure without averaging (faster!)
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
77
357
562f1bc79f3c Bugfix: Wake-up into divemode with 1.91alpha
Heinrichsweikamp
parents: 341
diff changeset
78 SAFE_2BYTE_COPY amb_pressure_avg, amb_pressure ; copy for compatibility
562f1bc79f3c Bugfix: Wake-up into divemode with 1.91alpha
Heinrichsweikamp
parents: 341
diff changeset
79
0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
80 call check_temp_extrema ; Check for temperature extremas
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
81
116
14a074e1a375 Split C code, and use direct linking.
JeanDo
parents: 21
diff changeset
82 call deco_calc_CNS_decrease_15min ; compute CNS decay in sleep only
0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
83 movlb b'00000001'
354
cec312042b94 Fix sub16 neg detect (related to bug #44)
JeanDo
parents: 341
diff changeset
84
0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
85 movff last_surfpressure_15min+0,last_surfpressure_30min+0 ; save older airpressure
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
86 movff last_surfpressure_15min+1,last_surfpressure_30min+1 ; save older airpressure
341
2144f19fa1eb BUGFIX protect against ISR changing pressure/temperature while reading it.
JeanDo
parents: 297
diff changeset
87 SAFE_2BYTE_COPY amb_pressure, last_surfpressure_15min ; save new airpressure
0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
88
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
89 GETCUSTOM15 d'7' ; loads max_sufpressure into lo, hi
398
ab962c4b19d6 Fixing issue 50, correct "Bar" to "bar" in texts and comments
heinrichsweikamp
parents: 361
diff changeset
90 movff lo,sub_a+0 ; max. "allowed" airpressure in mbar
0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
91 movff hi,sub_a+1
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
92 movff last_surfpressure_15min+0,sub_b+0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
93 movff last_surfpressure_15min+1,sub_b+1
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
94 call sub16 ; sub_c = sub_a - sub_b
354
cec312042b94 Fix sub16 neg detect (related to bug #44)
JeanDo
parents: 341
diff changeset
95 btfss neg_flag ; Is 1080mbar < amb_pressure ?
cec312042b94 Fix sub16 neg detect (related to bug #44)
JeanDo
parents: 341
diff changeset
96 bra onemin_sleep2 ; NO: current airpressure is lower then "allowed" airpressure, ok!
cec312042b94 Fix sub16 neg detect (related to bug #44)
JeanDo
parents: 341
diff changeset
97
cec312042b94 Fix sub16 neg detect (related to bug #44)
JeanDo
parents: 341
diff changeset
98 ; not ok! Overwrite with max. "allowed" airpressure
0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
99 GETCUSTOM15 d'7' ; loads max_sufpressure into lo, hi
398
ab962c4b19d6 Fixing issue 50, correct "Bar" to "bar" in texts and comments
heinrichsweikamp
parents: 361
diff changeset
100 movff lo,last_surfpressure_15min+0 ; max. "allowed" airpressure in mbar
ab962c4b19d6 Fixing issue 50, correct "Bar" to "bar" in texts and comments
heinrichsweikamp
parents: 361
diff changeset
101 movff hi,last_surfpressure_15min+1 ; max. "allowed" airpressure in mbar
0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
102
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
103 onemin_sleep2:
341
2144f19fa1eb BUGFIX protect against ISR changing pressure/temperature while reading it.
JeanDo
parents: 297
diff changeset
104 SAFE_2BYTE_COPY amb_pressure, int_I_pres_respiration ; LOW copy pressure to deco routine
0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
105 GETCUSTOM8 d'11' ; Saturation multiplier %
251
f0cba9cff25c Still hunting for bb13...
JeanDo
parents: 213
diff changeset
106 movff WREG,char_I_saturation_multiplier
0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
107 GETCUSTOM8 d'12' ; Desaturation multiplier %
251
f0cba9cff25c Still hunting for bb13...
JeanDo
parents: 213
diff changeset
108 movff WREG,char_I_desaturation_multiplier
116
14a074e1a375 Split C code, and use direct linking.
JeanDo
parents: 21
diff changeset
109 call deco_calc_wo_deco_step_1_min ; "calc_tissue_sleep"
0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
110 movlb b'00000001' ; RAM Bank1 selected
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
111
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
112 bcf oneminupdate ; all done
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
113 return
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
114
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
115 onesec_sleep:
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
116 call test_charger ; charger on?
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
117
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
118 btfss nofly_active
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
119 bra onesec_sleep_nonofly
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
120
21
73014f788032 1.60 stable rc1
heinrichsweikamp
parents: 18
diff changeset
121 bsf LED_blue ; Set nofly LED
0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
122
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
123 nop
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
124 sleep
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
125 nop
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
126
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
127 onesec_sleep_nonofly:
21
73014f788032 1.60 stable rc1
heinrichsweikamp
parents: 18
diff changeset
128 bcf LED_blue ; Clear nofly LED
0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
129 incf divemins+0,F ; counts to #test_pressure_in_sleep (5)
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
130 movlw d'5'
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
131 cpfsgt divemins+0 ; here: temp variable
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
132 bra onesec_sleep1 ; #test_pressure_in_sleep not done yet
354
cec312042b94 Fix sub16 neg detect (related to bug #44)
JeanDo
parents: 341
diff changeset
133 clrf divemins+0
cec312042b94 Fix sub16 neg detect (related to bug #44)
JeanDo
parents: 341
diff changeset
134
0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
135 rcall pressuretest_sleep_fast ; Gets pressure without averaging (faster!)
421
af2894e5cda4 copy from amb_pressure_avg to amb_pressure for compatibility
heinrichsweikamp
parents: 398
diff changeset
136 SAFE_2BYTE_COPY amb_pressure_avg, amb_pressure ; copy for compatibility
0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
137
361
88660a400338 Updated 64K logbook to changeset 360.
JeanDo
parents: 357 354
diff changeset
138 ; compare current ambient pressure with threshold CF6==1160mbar.
0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
139 GETCUSTOM15 d'6' ; loads pressure threshold into lo,hi
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
140 movff lo,sub_a+0 ; power on if ambient pressure is greater threshold
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
141 movff hi,sub_a+1
361
88660a400338 Updated 64K logbook to changeset 360.
JeanDo
parents: 357 354
diff changeset
142 SAFE_2BYTE_COPY amb_pressure_avg, sub_b
88660a400338 Updated 64K logbook to changeset 360.
JeanDo
parents: 357 354
diff changeset
143 call sub16 ; Is (1160mbar - averaged(amb_pressure)) < 0 ?
0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
144 bsf sleepmode
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
145 btfsc neg_flag ; Wake up from Sleep?
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
146 bcf sleepmode ; amb_pressure>pressure_offset_divemode: wake up!
354
cec312042b94 Fix sub16 neg detect (related to bug #44)
JeanDo
parents: 341
diff changeset
147
0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
148 onesec_sleep1:
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
149 bcf onesecupdate ; all done.
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
150 btfsc switch_left
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
151 bra onesec_sleep1a
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
152 btfsc switch_right
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
153 bra onesec_sleep1a
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
154 ; No button pressed
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
155 bcf INTCON,INT0IF ; Clear flag
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
156 bcf INTCON3,INT1IF ; Clear flag
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
157 bcf switch_right
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
158 bcf switch_left
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
159 bcf T0CON,TMR0ON ; Stop Timer 0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
160 return
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
161 onesec_sleep1a: ; At least one button pressed....
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
162 bcf INTCON,INT0IF ; Clear flag
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
163 bcf INTCON3,INT1IF ; Clear flag
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
164 bcf switch_right
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
165 bcf switch_left
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
166 bcf T0CON,TMR0ON ; Stop Timer 0
354
cec312042b94 Fix sub16 neg detect (related to bug #44)
JeanDo
parents: 341
diff changeset
167 bcf sleepmode ; wake up!
125
2907b42c195b Altimeter:
JeanDo
parents: 116
diff changeset
168
213
d19445e0cb2f BUGFIX Altimeter reset when exiting sleep mode (bug#&6).
JeanDo
parents: 153
diff changeset
169 ; Restart altimeter averaging, so next averaging starts right over...
d19445e0cb2f BUGFIX Altimeter reset when exiting sleep mode (bug#&6).
JeanDo
parents: 153
diff changeset
170 call altimeter_restart
125
2907b42c195b Altimeter:
JeanDo
parents: 116
diff changeset
171
0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
172 return
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
173
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
174 pressuretest_sleep_fast: ; Get pressure without averaging (Faster to save some power in sleep mode)
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
175 call get_temperature_start ; and start temperature integration (73,5us)
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
176 sleep
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
177 nop
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
178 sleep
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
179 nop
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
180 sleep ; Wait at least 35ms (every 16.5ms Timer1 wakeup)
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
181 call get_temperature_value ; State 1: Get temperature
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
182 call get_pressure_start ; Start pressure integration.
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
183 sleep
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
184 nop
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
185 sleep
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
186 nop
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
187 sleep ; Wait at least 35ms (every 16.5ms Timer1 wakeup)
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
188 call get_pressure_value ; State2: Get pressure (51us)
703
39e02673db4c some cleanup
heinrichsweikamp
parents: 681
diff changeset
189 clrf temperature_avg+0
39e02673db4c some cleanup
heinrichsweikamp
parents: 681
diff changeset
190 clrf temperature_avg+1
357
562f1bc79f3c Bugfix: Wake-up into divemode with 1.91alpha
Heinrichsweikamp
parents: 341
diff changeset
191 clrf amb_pressure_avg+0
562f1bc79f3c Bugfix: Wake-up into divemode with 1.91alpha
Heinrichsweikamp
parents: 341
diff changeset
192 clrf amb_pressure_avg+1 ; clear for sleep routine
0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
193 call calculate_compensation ; calculate temperature compensated pressure (233us)
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
194 return
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
195
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
196 fatal_error_sleep:
774
fac7710ab84e auto wake-up from no-battery state
heinrichsweikamp
parents: 714
diff changeset
197 call DISP_DisplayOff ; display off
fac7710ab84e auto wake-up from no-battery state
heinrichsweikamp
parents: 714
diff changeset
198 call disable_rs232 ; disable UART module
fac7710ab84e auto wake-up from no-battery state
heinrichsweikamp
parents: 714
diff changeset
199
fac7710ab84e auto wake-up from no-battery state
heinrichsweikamp
parents: 714
diff changeset
200 bcf TRISB,6
fac7710ab84e auto wake-up from no-battery state
heinrichsweikamp
parents: 714
diff changeset
201 bcf TRISB,7
fac7710ab84e auto wake-up from no-battery state
heinrichsweikamp
parents: 714
diff changeset
202 bcf PORTB,6
fac7710ab84e auto wake-up from no-battery state
heinrichsweikamp
parents: 714
diff changeset
203 bcf PORTB,7 ; Disable UART
fac7710ab84e auto wake-up from no-battery state
heinrichsweikamp
parents: 714
diff changeset
204 fatal_error_sleep_loop:
0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
205 movff fatal_error_code,temp4
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
206 movlw d'15'
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
207 movwf temp1
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
208 fatal_error_sleep_loop1:
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
209 sleep
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
210 nop
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
211 decfsz temp1,F
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
212 bra fatal_error_sleep_loop1
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
213 fatal_error_sleep_loop2:
774
fac7710ab84e auto wake-up from no-battery state
heinrichsweikamp
parents: 714
diff changeset
214 call get_battery_voltage ; get battery voltage
fac7710ab84e auto wake-up from no-battery state
heinrichsweikamp
parents: 714
diff changeset
215 btfss enter_error_sleep ; REALLY enter Fatal Error Routine?
fac7710ab84e auto wake-up from no-battery state
heinrichsweikamp
parents: 714
diff changeset
216 goto restart ; No
813
c87b9f2fb2f6 wakeup from deep sleep mode automatically upon USB connect
heinrichsweikamp
parents: 807
diff changeset
217
c87b9f2fb2f6 wakeup from deep sleep mode automatically upon USB connect
heinrichsweikamp
parents: 807
diff changeset
218 btfss CHRG_IN ; If CHRG_IN=0 -> CC active
c87b9f2fb2f6 wakeup from deep sleep mode automatically upon USB connect
heinrichsweikamp
parents: 807
diff changeset
219 goto restart ; wake up
c87b9f2fb2f6 wakeup from deep sleep mode automatically upon USB connect
heinrichsweikamp
parents: 807
diff changeset
220
21
73014f788032 1.60 stable rc1
heinrichsweikamp
parents: 18
diff changeset
221 bsf LED_red
0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
222 clrwdt
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
223 WAIT10US d'5'
21
73014f788032 1.60 stable rc1
heinrichsweikamp
parents: 18
diff changeset
224 bcf LED_red
0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
225 sleep
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
226 nop
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
227 decfsz temp4,F
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
228 bra fatal_error_sleep_loop2
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
229 bra fatal_error_sleep_loop