avr: added new version of driver for si7021.
This commit is contained in:
@@ -5,6 +5,7 @@
|
||||
<extradist>
|
||||
main.asm
|
||||
main2.asm
|
||||
send.asm
|
||||
</extradist>
|
||||
|
||||
</gwbuild>
|
||||
|
||||
@@ -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
|
||||
|
||||
43
avr/modules/si7021/send.asm
Normal file
43
avr/modules/si7021/send.asm
Normal 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
|
||||
|
||||
|
||||
Reference in New Issue
Block a user