avr: timer table is now consulted every 100ms (instead of every second).

This commit is contained in:
Martin Preuss
2024-09-09 15:49:07 +02:00
parent 1c4d94c5ce
commit a456211438
3 changed files with 23 additions and 65 deletions

View File

@@ -55,7 +55,8 @@
#define MODULES_TIMER #define MODULES_TIMER
#define MODULES_COM #define MODULES_COM
#define MODULES_COM_WITH_ADDR_PROTO #define MODULES_COM_WITH_ADDR_PROTO
#define MODULES_LED ;#define MODULES_LED
#define MODULES_LED_SIMPLE
#define MODULES_TWI_MASTER #define MODULES_TWI_MASTER
;#define MODULES_LCD ;#define MODULES_LCD
#define MODULES_SI7021 #define MODULES_SI7021
@@ -102,11 +103,7 @@
reti ; OC0B reti ; OC0B
reti ; OVF0 reti ; OVF0
reti ; ACI reti ; ACI
#ifdef MODULES_CNY70
rjmp cny70Isr ; ADCC
#else
reti ; ADCC reti ; ADCC
#endif
reti ; ERDY reti ; ERDY
reti ; USI_STR reti ; USI_STR
reti ; USI_OVF reti ; USI_OVF
@@ -223,19 +220,19 @@ timerList:
.dw cproAddresModeTimer, CPRO_Address_OnTimer, 0, 0 ; (no restart) .dw cproAddresModeTimer, CPRO_Address_OnTimer, 0, 0 ; (no restart)
#endif #endif
#ifdef MODULES_STATS #ifdef MODULES_STATS
.dw statsSendTimer, Stats_Timer, TIMER_FLAGS_IF_ADDR, 300 ; every 5m .dw statsSendTimer, Stats_Timer, TIMER_FLAGS_IF_ADDR, 3000 ; every 5m
#endif #endif
#ifdef MODULES_LCD #ifdef MODULES_LCD
.dw sramPeriodicalLcdMark, periodicalLcdMark, 0, 1 ; every sec .dw sramPeriodicalLcdMark, periodicalLcdMark, 0, 10 ; every sec
.dw sramTimerWriteStats, writeStats, 0, 10 .dw sramTimerWriteStats, writeStats, 0, 100
#endif #endif
#ifdef MODULES_SI7021 #ifdef MODULES_SI7021
.dw sramTimerSI7021Measure, SI7021_PeriodicMeasurement, 0, 30 ; every 30s .dw sramTimerSI7021Measure, SI7021_PeriodicMeasurement, 0, 300 ; every 30s
.dw sramTimerSI7021SendTemp, sendTemp, TIMER_FLAGS_IF_ADDR, 60 ; every 60s .dw sramTimerSI7021SendTemp, sendTemp, TIMER_FLAGS_IF_ADDR, 600 ; every 60s
.dw sramTimerSI7021SendHumidity, sendHumidity, TIMER_FLAGS_IF_ADDR, 60 ; every 60s .dw sramTimerSI7021SendHumidity, sendHumidity, TIMER_FLAGS_IF_ADDR, 600 ; every 60s
#endif #endif
#ifdef MODULES_CNY70 #ifdef MODULES_CNY70
.dw sramTimerCny70SendAdc, sendAdc, TIMER_FLAGS_IF_ADDR, 30 ; every 30s .dw sramTimerCny70SendAdc, CNY70_OnTimer, TIMER_FLAGS_IF_ADDR, 50 ; every 5s
#endif #endif
.dw 0 ; end of list .dw 0 ; end of list
@@ -293,20 +290,6 @@ sendTemp_okay:
#ifdef MODULES_CNY70
sendAdc:
rcall CNY70_SendAdc
brcs sendAdc_okay
; set timer to 1s to retry later
ldi xl, LOW(sramTimerCny70SendAdc)
ldi xh, HIGH(sramTimerCny70SendAdc)
rjmp Timer_SetValueTo1s
sendAdc_okay:
ret
#endif
; --------------------------------------------------------------------------- ; ---------------------------------------------------------------------------
; Called every 100ms. Add your routine calls here. No arguments, no results. ; Called every 100ms. Add your routine calls here. No arguments, no results.
@@ -324,10 +307,6 @@ onEvery100ms:
rcall LedSimple_Every100ms rcall LedSimple_Every100ms
#endif #endif
#ifdef MODULES_CNY70
rcall CNY70_Every100ms
#endif
#ifdef MODULES_REED #ifdef MODULES_REED
rcall REED_Every100ms rcall REED_Every100ms
#endif #endif

View File

@@ -91,11 +91,7 @@
reti ; OC0B reti ; OC0B
reti ; OVF0 reti ; OVF0
reti ; ACI reti ; ACI
#ifdef MODULES_CNY70
rjmp cny70Isr ; ADCC
#else
reti ; ADCC reti ; ADCC
#endif
reti ; ERDY reti ; ERDY
reti ; USI_STR reti ; USI_STR
reti ; USI_OVF reti ; USI_OVF
@@ -213,19 +209,19 @@ timerList:
.dw cproAddresModeTimer, CPRO_Address_OnTimer, 0, 0 ; (no restart) .dw cproAddresModeTimer, CPRO_Address_OnTimer, 0, 0 ; (no restart)
#endif #endif
#ifdef MODULES_STATS #ifdef MODULES_STATS
.dw statsSendTimer, Stats_Timer, TIMER_FLAGS_IF_ADDR, 300 ; every 5m .dw statsSendTimer, Stats_Timer, TIMER_FLAGS_IF_ADDR, 3000 ; every 5m
#endif #endif
#ifdef MODULES_LCD #ifdef MODULES_LCD
.dw sramPeriodicalLcdMark, periodicalLcdMark, 0, 1 ; every sec .dw sramPeriodicalLcdMark, periodicalLcdMark, 0, 10 ; every sec
.dw sramTimerWriteStats, writeStats, 0, 10 .dw sramTimerWriteStats, writeStats, 0, 100
#endif #endif
#ifdef MODULES_SI7021 #ifdef MODULES_SI7021
.dw sramTimerSI7021Measure, SI7021_PeriodicMeasurement, 0, 30 ; every 30s .dw sramTimerSI7021Measure, SI7021_PeriodicMeasurement, 0, 300 ; every 30s
.dw sramTimerSI7021SendTemp, sendTemp, TIMER_FLAGS_IF_ADDR, 60 ; every 60s .dw sramTimerSI7021SendTemp, sendTemp, TIMER_FLAGS_IF_ADDR, 600 ; every 60s
.dw sramTimerSI7021SendHumidity, sendHumidity, TIMER_FLAGS_IF_ADDR, 60 ; every 60s .dw sramTimerSI7021SendHumidity, sendHumidity, TIMER_FLAGS_IF_ADDR, 600 ; every 60s
#endif #endif
#ifdef MODULES_CNY70 #ifdef MODULES_CNY70
.dw sramTimerCny70SendAdc, sendAdc, TIMER_FLAGS_IF_ADDR, 30 ; every 30s .dw sramTimerCny70SendAdc, CNY70_OnTimer, TIMER_FLAGS_IF_ADDR, 50 ; every 5s
#endif #endif
.dw 0 ; end of list .dw 0 ; end of list
@@ -283,20 +279,6 @@ sendTemp_okay:
#ifdef MODULES_CNY70
sendAdc:
rcall CNY70_SendAdc
brcs sendAdc_okay
; set timer to 1s to retry later
ldi xl, LOW(sramTimerCny70SendAdc)
ldi xh, HIGH(sramTimerCny70SendAdc)
rjmp Timer_SetValueTo1s
sendAdc_okay:
ret
#endif
; --------------------------------------------------------------------------- ; ---------------------------------------------------------------------------
; Called every 100ms. Add your routine calls here. No arguments, no results. ; Called every 100ms. Add your routine calls here. No arguments, no results.
@@ -315,10 +297,6 @@ onEvery100ms:
#endif #endif
#ifdef MODULES_CNY70
rcall CNY70_Every100ms
#endif
#ifdef MODULES_REED #ifdef MODULES_REED
rcall REED_Every100ms rcall REED_Every100ms
#endif #endif

View File

@@ -122,6 +122,7 @@ Timer_Run:
Timer_Run_loop: ; for every occurred 100ms irq Timer_Run_loop: ; for every occurred 100ms irq
push r24 push r24
push r25 push r25
rcall timerRunTimers
rcall onEvery100ms rcall onEvery100ms
pop r25 pop r25
pop r24 pop r24
@@ -134,11 +135,11 @@ Timer_Run_loop: ; for every occurred 100ms irq
Timer_Run_SecondElapsed: Timer_Run_SecondElapsed:
clr r16 clr r16
sts timerModuleTickCounter, r16 sts timerModuleTickCounter, r16
push r24 ; push r24
push r25 ; push r25
rcall timerRunTimers ; rcall timerRunTimers
pop r25 ; pop r25
pop r24 ; pop r24
Timer_Run_loop_end: Timer_Run_loop_end:
sbiw r25:r24, 1 sbiw r25:r24, 1
brne Timer_Run_loop brne Timer_Run_loop
@@ -185,7 +186,7 @@ Timer_SetValue:
Timer_SetValueTo1s: Timer_SetValueTo1s:
push r16 push r16
push r17 push r17
ldi r16, 1 ldi r16, 10
clr r17 clr r17
rcall Timer_SetValue rcall Timer_SetValue
pop r17 pop r17