From 31a10b2c7015c536c29ddeedafeeb852e2c8d342 Mon Sep 17 00:00:00 2001 From: Martin Preuss Date: Sun, 22 Jan 2023 01:05:39 +0100 Subject: [PATCH] timer: Added callbacks for every 10s and every minute. --- avr/timer.asm | 29 ++++++++++++++++++++++++++++- 1 file changed, 28 insertions(+), 1 deletion(-) diff --git a/avr/timer.asm b/avr/timer.asm index 106b35f..2eb86be 100644 --- a/avr/timer.asm +++ b/avr/timer.asm @@ -17,7 +17,8 @@ timerModuleData: timerModuleTickCounter: .byte 1 ; only low byte used timerModuleFlags: .byte 1 - +timerModuleCounter10s: .byte 1 +timerModuleCounter1m: .byte 1 timerModuleCounterSecs: .byte 4 timerModuleData_end: @@ -110,9 +111,35 @@ Timer_Run_l1: mov r16, r17 andi r16, TIMER_FLAGS_1S breq Timer_Run_l2 + ; another 1s passed, invoke callback, check for 10s and 1m push r17 rcall onEverySecond pop r17 + ; 1s + lds r16, timerModuleCounter10s + inc r16 + sts timerModuleCounter10s, r16 + cpi r16, 10 + brcs Timer_Run_check1m + clr r16 + sts timerModuleCounter10s, r16 + push r17 + rcall onEvery10s + pop r17 + +Timer_Run_check1m: + ; 1m + lds r16, timerModuleCounter1m + inc r16 + sts timerModuleCounter1m, r16 + cpi r16, 60 + brcs Timer_Run_l2 + clr r16 + sts timerModuleCounter1m, r16 + push r17 + rcall onEveryMinute + pop r17 + Timer_Run_l2: sec tst r17