Mercurial > public > mk2
annotate code_part1/OSTC_code_asm_part1/temp_extrema.asm @ 788:9eba1eb8ca38
BUGFIX: False bailout flag in logbook
author | heinrichsweikamp |
---|---|
date | Mon, 11 Aug 2014 12:18:48 +0200 |
parents | 39e02673db4c |
children | c50296c3059e |
rev | line source |
---|---|
0 | 1 |
2 ; OSTC - diving computer code | |
3 ; Copyright (C) 2008 HeinrichsWeikamp GbR | |
4 | |
5 ; This program is free software: you can redistribute it and/or modify | |
6 ; it under the terms of the GNU General Public License as published by | |
7 ; the Free Software Foundation, either version 3 of the License, or | |
8 ; (at your option) any later version. | |
9 | |
10 ; This program is distributed in the hope that it will be useful, | |
11 ; but WITHOUT ANY WARRANTY; without even the implied warranty of | |
12 ; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
13 ; GNU General Public License for more details. | |
14 | |
15 ; You should have received a copy of the GNU General Public License | |
16 ; along with this program. If not, see <http://www.gnu.org/licenses/>. | |
17 | |
18 | |
19 ; takes care of the temperature extrema routine | |
20 ; written by: Matthias Heinrichs, info@heinrichsweikamp.com | |
21 ; written: 05/15/08 | |
22 ; last updated: 05/15/08 | |
23 ; known bugs: | |
24 ; ToDo: | |
25 | |
26 check_temp_extrema: ; called once every minute from Sleeploop, Surfloop and Diveloop | |
703 | 27 clrf EEADRH |
0 | 28 read_int_eeprom d'54' ; get lowest temperature so far |
29 movff EEDATA,sub_b+0 | |
30 read_int_eeprom d'55' | |
31 movff EEDATA,sub_b+1 | |
341
2144f19fa1eb
BUGFIX protect against ISR changing pressure/temperature while reading it.
JeanDo
parents:
0
diff
changeset
|
32 SAFE_2BYTE_COPY temperature,sub_a |
0 | 33 call sub16 ; sub_c = sub_a - sub_b |
34 btfss neg_flag ; new lowest temperature ? | |
35 bra check_temp_extrema_high | |
36 ; Yes, store new value together with the date | |
341
2144f19fa1eb
BUGFIX protect against ISR changing pressure/temperature while reading it.
JeanDo
parents:
0
diff
changeset
|
37 movff sub_a+0,EEDATA |
0 | 38 write_int_eeprom d'54' |
341
2144f19fa1eb
BUGFIX protect against ISR changing pressure/temperature while reading it.
JeanDo
parents:
0
diff
changeset
|
39 movff sub_a+1,EEDATA |
0 | 40 write_int_eeprom d'55' |
41 movff month,EEDATA | |
42 write_int_eeprom d'56' | |
43 movff day,EEDATA | |
44 write_int_eeprom d'57' | |
45 movff year,EEDATA | |
46 write_int_eeprom d'58' | |
341
2144f19fa1eb
BUGFIX protect against ISR changing pressure/temperature while reading it.
JeanDo
parents:
0
diff
changeset
|
47 |
0 | 48 ; Now check high extrema |
49 check_temp_extrema_high: | |
50 read_int_eeprom d'59' ; get highest temperature so far | |
51 movff EEDATA,sub_b+0 | |
52 read_int_eeprom d'60' | |
53 movff EEDATA,sub_b+1 | |
341
2144f19fa1eb
BUGFIX protect against ISR changing pressure/temperature while reading it.
JeanDo
parents:
0
diff
changeset
|
54 SAFE_2BYTE_COPY temperature,sub_a |
0 | 55 call sub16 ; sub_c = sub_a - sub_b |
56 btfsc neg_flag ; new highest temperature ? | |
57 return ; no, quit! | |
341
2144f19fa1eb
BUGFIX protect against ISR changing pressure/temperature while reading it.
JeanDo
parents:
0
diff
changeset
|
58 |
0 | 59 ; Yes, store new value together with the date |
341
2144f19fa1eb
BUGFIX protect against ISR changing pressure/temperature while reading it.
JeanDo
parents:
0
diff
changeset
|
60 movff sub_a+0,EEDATA |
0 | 61 write_int_eeprom d'59' |
341
2144f19fa1eb
BUGFIX protect against ISR changing pressure/temperature while reading it.
JeanDo
parents:
0
diff
changeset
|
62 movff sub_a+1,EEDATA |
0 | 63 write_int_eeprom d'60' |
64 movff month,EEDATA | |
65 write_int_eeprom d'61' | |
66 movff day,EEDATA | |
67 write_int_eeprom d'62' | |
68 movff year,EEDATA | |
69 write_int_eeprom d'63' | |
70 return |