Mercurial > public > mk2
annotate code_part1/OSTC_code_asm_part1/temp_extrema.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 |
| rev | line source |
|---|---|
| 0 | 1 |
| 815 | 2 ; OSTC Mk.2, 2N and 2C - diving computer code |
|
807
c50296c3059e
BUGFIX: Divetime had unwanted "." behind the minutes
heinrichsweikamp
parents:
703
diff
changeset
|
3 ; Copyright (C) 2015 HeinrichsWeikamp GbR |
| 0 | 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 |
