diff code_part1/OSTC_code_asm_part1/ms5535.asm @ 344:797e2ac42d24 ScreenDump

MERGE with 1.91 main trunk.
author JeanDo
date Sat, 21 May 2011 14:48:07 +0200
parents 2144f19fa1eb
children f53aa96ff2f4
line wrap: on
line diff
--- a/code_part1/OSTC_code_asm_part1/ms5535.asm	Tue May 17 01:05:04 2011 +0200
+++ b/code_part1/OSTC_code_asm_part1/ms5535.asm	Sat May 21 14:48:07 2011 +0200
@@ -20,6 +20,9 @@
 ; 2005-09-26: Written by Matthias Heinrichs, info@heinrichsweikamp.com
 ; 2008-08-21: MH last updated, with second order compensation.
 ; 2011-01-19: jDG Clean up using true signed arithmetics.
+; 2011-05-19: jDG Avegaring temperature and amb_pressure in private variable,
+;                 Use signed 16bit value for temperature (compat with avg !).
+;
 ; known bugs:
 ; ToDo: 
 
@@ -27,7 +30,7 @@
 ; Expose internal variables, to ease debug:
     global D1, D2
     global C1, C2, C3, C4, C5, C6
-    global xdT, xdT2, OFF, SENS, amb_pressure, temperature
+    global xdT, xdT2, OFF, SENS, amb_pressure_avg, temperature_avg
 
 ;=============================================================================
 calculate_compensation:
@@ -151,20 +154,23 @@
     movlw   .12-.8                      ; a 12bit shift = 1 byte + 4 bits.
     call    isr_shift_C31
 
-    movlw   LOW(.1000)                  ; add 1000, and save into amb_pressure
-    addwf   isr_xC+1,W
-    movwf   amb_pressure+0
+    movlw   LOW(.1000)                  ; add 1000
+    addwf   isr_xC+1,F
     movlw   HIGH(.1000)
-    addwfc  isr_xC+2,W
-    movwf   amb_pressure+1
+    addwfc  isr_xC+2,F
 
 	btfss	simulatormode_active		; are we in simulator mode?
-	bra		calc_pressure_done			; no
+	bra		calc_compensation_2			; no
 
-	movff	sim_pressure+0,amb_pressure+0	; override readings with simulator values
-	movff	sim_pressure+1,amb_pressure+1
+	movff	sim_pressure+0,isr_xC+1	    ; override readings with simulator values
+	movff	sim_pressure+1,isr_xC+2
 	
-calc_pressure_done:
+calc_compensation_2:
+    movf    isr_xC+1,W                  ; Then sum_up to pressure averaging buffer.
+    addwf   amb_pressure_avg+0,F
+    movf    isr_xC+2,W
+    addwfc  amb_pressure_avg+1,F
+
     ; calculate temp = 200 + dT*(C6+100)/2^11
     movlw   LOW(.100)                   ; C6 + 100 --> A
     addwf   C6+0,W
@@ -179,23 +185,16 @@
     movlw   .11-.8                      ; A 12bit shift = 1 byte + 3 bits.
     call    isr_shift_C31
 
-    movlw   LOW(.200)                   ; Add 200, and save into temperature
-    addwf   isr_xC+1,W
-    movwf   temperature+0
+    movlw   LOW(.200)                   ; Add 200
+    addwf   isr_xC+1,F
     movlw   HIGH(.200)
-    addwfc  isr_xC+2,W
-    movwf   temperature+1
+    addwfc  isr_xC+2,F
 
-    bcf     neg_temp
-    bnn     calc_pos_temp               ; Is Temp° negativ ?
-    
-    bsf     neg_temp                    ; Yes: set flag and store -temp
-    comf    temperature+1
-    negf    temperature+0
-    btfsc   STATUS,C
-    incf    temperature+1
+    movf    isr_xC+1,W
+    addwf   temperature_avg+0,F
+    movf    isr_xC+2,W
+    addwfc  temperature_avg+1,F
 
-calc_pos_temp:
 	return			                    ; Fertig mit allem
 
 ;=============================================================================