avr: added new version of driver for si7021.

This commit is contained in:
Martin Preuss
2025-04-29 00:37:01 +02:00
parent c1a67a36ef
commit fa65bc53b5
3 changed files with 51 additions and 7 deletions

View File

@@ -5,6 +5,7 @@
<extradist>
main.asm
main2.asm
send.asm
</extradist>
</gwbuild>

View File

@@ -104,14 +104,14 @@ SI7021_MeasureTemp:
sbrs r17, SI7021_FLAGS_PRESENT_BIT ; investigate PRESENT BIT
rjmp SI7021_MeasureTemp_error ; jmp if PRESENT bit clear
push r17
rcall si7021MeasureHumidity
rcall si7021MeasureTemp
pop r17
brcc SI7021_MeasureTemp_error
ori r17, SI7021_FLAGS_TEMP_VALID
sts si7021Flags, r17
rcall si7021CalcHumidity
sts si7021LastHumidity, r18
sts si7021LastHumidity+1, r19
rcall si7021CalcTemp
sts si7021LastTemp, r18
sts si7021LastTemp+1, r19
SI7021_MeasureTemp_done:
pop r15
out SREG, r15
@@ -139,9 +139,9 @@ SI7021_MeasureHumidity:
brcc SI7021_MeasureHumidity_error
ori r17, SI7021_FLAGS_HUM_VALID
sts si7021Flags, r17
rcall si7021CalcTemp ; calculate temp*100 from sensor value
sts si7021LastTemp, r18
sts si7021LastTemp+1, r19
rcall si7021CalcHumidity ;
sts si7021LastHumidity, r18
sts si7021LastHumidity+1, r19
SI7021_MeasureHumidity_done:
pop r15
out SREG, r15

View File

@@ -0,0 +1,43 @@
; ***************************************************************************
; copyright : (C) 2025 by Martin Preuss
; email : martin@libchipcard.de
;
; ***************************************************************************
; * This file is part of the project "AqHome". *
; * Please see toplevel file COPYING of that project for license details. *
; ***************************************************************************
.cseg
; ---------------------------------------------------------------------------
; @routine SI7021_SendTemperature
SI7021_SendTemperature:
ldi r16, SI7021_VALUE_TEMP
rcall SI7021_GetValue
brcc SI7021_SendTemperature_end
ldi r17, VALUE_ID_SI7021_TEMP ; VALUE ID
ldi r22, AQHOME_VALUETYPE_TEMP ; VALUE TYPE
rcall Main_SendValue
SI7021_SendTemperature_end:
ret
; @end
; ---------------------------------------------------------------------------
; @routine SI7021_SendHumidity
SI7021_SendHumidity:
ldi r16, SI7021_VALUE_HUMIDITY
rcall SI7021_GetValue
brcc SI7021_SendHumidity_end
ldi r17, VALUE_ID_SI7021_HUM ; VALUE ID
ldi r22, AQHOME_VALUETYPE_HUMIDITY ; VALUE TYPE
rcall Main_SendValue
SI7021_SendHumidity_end:
ret
; @end