From 79f4018341ec13e8de8b0638e2a20c6c00d49b45 Mon Sep 17 00:00:00 2001 From: Martin Preuss Date: Thu, 12 Sep 2024 13:05:27 +0200 Subject: [PATCH] avr: send DS18B20 sensor data. --- avr/devices/n11/n11_main.asm | 39 ++++++++++++++++++++++++------------ 1 file changed, 26 insertions(+), 13 deletions(-) diff --git a/avr/devices/n11/n11_main.asm b/avr/devices/n11/n11_main.asm index 37c5c1e..b72432a 100644 --- a/avr/devices/n11/n11_main.asm +++ b/avr/devices/n11/n11_main.asm @@ -58,13 +58,13 @@ ;#define MODULES_LED #define MODULES_LED_SIMPLE #define MODULES_TWI_MASTER -#define MODULES_OWI_MASTER -#define MODULES_LCD +;#define MODULES_LCD #define LCD_MINIMAL_FONT #define MODULES_SI7021 #define MODULES_STATS ;#define MODULES_CNY70 #define MODULES_REED +#define MODULES_OWI_MASTER #define MODULES_DS18B20 @@ -191,9 +191,9 @@ firmwareStart: rjmp main #ifdef MODULES_LCD - sramTimerWriteStats: .byte 2 + sramTimerWriteStats: .byte 2 #endif -sramTimerEnqueueValues: .byte 2 +sramTimerEnqueueValues: .byte 2 #ifdef MODULES_SI7021 sramTimerSI7021Measure: .byte 2 sramTimerSI7021SendTemp: .byte 2 @@ -207,6 +207,7 @@ sramTimerEnqueueValues: .byte 2 #endif #ifdef MODULES_DS18B20 sramDs18b20Timer: .byte 2 + sramSendDs18b20TempTimer: .byte 2 #endif @@ -240,14 +241,15 @@ timerList: #endif #ifdef MODULES_SI7021 .dw sramTimerSI7021Measure, SI7021_PeriodicMeasurement, 0, 300 ; every 30s - .dw sramTimerSI7021SendTemp, sendTemp, TIMER_FLAGS_IF_ADDR, 600 ; every 60s - .dw sramTimerSI7021SendHumidity, sendHumidity, TIMER_FLAGS_IF_ADDR, 600 ; every 60s + .dw sramTimerSI7021SendTemp, sendSI7021Temp, TIMER_FLAGS_IF_ADDR, 600 ; every 60s + .dw sramTimerSI7021SendHumidity, sendSI7021Humidity, TIMER_FLAGS_IF_ADDR, 600 ; every 60s #endif #ifdef MODULES_CNY70 .dw sramTimerCny70SendAdc, CNY70_OnTimer, TIMER_FLAGS_IF_ADDR, 50 ; every 5s #endif #ifdef MODULES_DS18B20 .dw sramDs18b20Timer, Ds18b20_OnTimer, 0, 300 ; every 30s + .dw sramSendDs18b20TempTimer, sendDs18b20Temp, TIMER_FLAGS_IF_ADDR, 600 ; every 60s #endif .dw 0 ; end of list @@ -280,33 +282,44 @@ writeStats: #endif - #ifdef MODULES_SI7021 -sendHumidity: +sendSI7021Humidity: rcall SI7021_SendHumidity - brcs sendHumidity_okay + brcs sendSI7021Humidity_okay ; set timer to 1s to retry later ldi xl, LOW(sramTimerSI7021SendHumidity) ldi xh, HIGH(sramTimerSI7021SendHumidity) rjmp Timer_SetValueTo1s -sendHumidity_okay: +sendSI7021Humidity_okay: ret -sendTemp: +sendSI7021Temp: rcall SI7021_SendTemp - brcs sendTemp_okay + brcs sendSI7021Temp_okay ; set timer to 1s to retry later ldi xl, LOW(sramTimerSI7021SendTemp) ldi xh, HIGH(sramTimerSI7021SendTemp) rjmp Timer_SetValueTo1s -sendTemp_okay: +sendSI7021Temp_okay: ret #endif +#ifdef MODULES_DS18B20 +sendDs18b20Temp: + rcall Ds18b20_SendTemp + brcs sendDs18b20Temp_okay + ; set timer to 1s to retry later + ldi xl, LOW(sramSendDs18b20TempTimer) + ldi xh, HIGH(sramSendDs18b20TempTimer) + rjmp Timer_SetValueTo1s +sendDs18b20Temp_okay: + ret +#endif + ; --------------------------------------------------------------------------- ; Called every 100ms. Add your routine calls here. No arguments, no results.