diff --git a/avr/modules/si7021/0BUILD b/avr/modules/si7021/0BUILD index e93f9da..18d01fb 100644 --- a/avr/modules/si7021/0BUILD +++ b/avr/modules/si7021/0BUILD @@ -5,6 +5,7 @@ main.asm main2.asm + send.asm diff --git a/avr/modules/si7021/main2.asm b/avr/modules/si7021/main2.asm index 44ae478..4694912 100644 --- a/avr/modules/si7021/main2.asm +++ b/avr/modules/si7021/main2.asm @@ -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 diff --git a/avr/modules/si7021/send.asm b/avr/modules/si7021/send.asm new file mode 100644 index 0000000..1ca5015 --- /dev/null +++ b/avr/modules/si7021/send.asm @@ -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 + +