avr: send DS18B20 sensor data.

This commit is contained in:
Martin Preuss
2024-09-12 13:05:27 +02:00
parent f1fe99673b
commit 79f4018341

View File

@@ -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.