diff code_part1/OSTC_code_asm_part1/surfmode.asm @ 482:8e1fb9cdd62a

lock sensor for surfacemode until value is stable
author heinrichsweikamp
date Thu, 13 Oct 2011 08:37:26 +0200
parents c083f5b9168c
children c7b663939737
line wrap: on
line diff
--- a/code_part1/OSTC_code_asm_part1/surfmode.asm	Thu Oct 13 08:20:58 2011 +0200
+++ b/code_part1/OSTC_code_asm_part1/surfmode.asm	Thu Oct 13 08:37:26 2011 +0200
@@ -24,7 +24,8 @@
 
 surfloop:
 ; Boot tasks for all modes
-	call	restart_set_modes_and_flags	; Sets decomode flags
+	bcf		s_unlock_after_sleep			; Lock sensor results
+	call	restart_set_modes_and_flags		; Sets decomode flags
 	clrf	lo
 	movff	lo,char_I_const_ppO2			; reset to standard mode, OSTC assumes Air breathing at the surface!
 
@@ -71,7 +72,7 @@
 	bcf		premenu						; clear premenu flag
 	bcf		menubit						; clear menu flag
 	clrf	timer1int_counter2			; reset state counter
-	bcf		pressure_refresh
+	bcf		pressure_refresh			; Start new sensor run
 	clrf	last_pressure+0
 	clrf	last_pressure+1
 	clrf	last_temperature+0
@@ -126,7 +127,6 @@
 	call	PLED_clock					; update clock
 	call	test_charger				; check if charger IC is active
 	call	timeout_surfmode			; check timeout 
-	call	get_battery_voltage			; get battery voltage
 	call	update_batt_voltage			; display battery voltage
 	call	timeout_premenu				; timeout premenu
 	call	set_leds_surfmode			; Sets Warning and No-Fly LEDs
@@ -143,25 +143,27 @@
 	call	test_switches_surfmode		; check switches
 
 ; Sensor tasks for all modes
-	btfsc	pressure_refresh			; new pressure available?
+	btfss	pressure_refresh			; new pressure available?
+	bra		surfloop_loop2a				; no
+
+	btfss	s_unlock_after_sleep		; sensor results locked?
+	bra		surfloop_loop3				; Yes, ignore
+
+; New sensor value available
 	call	update_surf_press			; display surface pressure
-	btfsc	pressure_refresh			; new temperature available?
 	call	PLED_temp_surfmode			; Displays temperature
-	btfsc	pressure_refresh			; new pressure available?
 	call	set_dive_modes				; tests if depth>threshold
-	
-	; jDG TESTS =========================
-	btfss	pressure_refresh			; new pressure available?
-	bra     surfloop_loop3
 	call    altimeter_calc
     movf    menupos3,W                  ; Get customview status.
     bnz     surfloop_loop3              ; Already used ?
     call    altimeter_display
+	call	get_battery_voltage			; get battery voltage
+
 surfloop_loop3:
-	; jDG TESTS =========================
-
+	bsf		s_unlock_after_sleep		; unlock sensor results
 	bcf		pressure_refresh			; until new pressure is available
 
+surfloop_loop2a:
 ; One minute tasks for all modes
 	btfsc	oneminupdate				; do every minute tasks
 	call	update_surfloop60			; yes, e.g. update time and date