allow for private tick counter and special timer frequencies.

This commit is contained in:
Martin Preuss
2025-05-24 17:24:46 +02:00
parent 158cf994c5
commit 3e9aeeed05
3 changed files with 40 additions and 0 deletions

View File

@@ -110,7 +110,11 @@ systemSetupTimer0: ; setup timer for IRQ every 100ms
ldi r16, 78-1
out OCR0A, r16
#ifdef BASETIMER_T841_FAST
ldi r16, 1
#else
ldi r16, 10
#endif
sts baseTimerModuleReloadValue, r16
sts baseTimerModuleTickCounter, r16
.endif

View File

@@ -53,6 +53,8 @@
#define MAIN_WITHOUT_MSG_HANDLING ; we do message handling ourselfes
#define BASETIMER_PRIVATE_TICK_FN ; we use our own system tick function
#define BASETIMER_T841_FAST ; call our tick every 10ms
#define MODULES_CLOCK
;#define MODULES_COM
@@ -90,6 +92,17 @@
.equ VALUE_ID_LEDSIMPLE_TIMING = 0x88
; ***************************************************************************
; data segment
.dseg
t03TickCounter: .byte 1
; ***************************************************************************
; code segment
@@ -148,6 +161,9 @@ firmwareVersion: .db FIRMWARE_VARIANT_TEMP_WINDOW, FIRMWARE_VERSION_MAJOR
; @routine firmwareStart @global
firmwareStart:
cli
clr r16
sts t03TickCounter, r16
rjmp main
; @end
@@ -163,6 +179,22 @@ onSystemStart:
privateTimerTick:
lds r16, t03TickCounter
inc r16
cpi r16, 10
brcs privateTimerTick_store
clr r16
privateTimerTick_store:
sts t03TickCounter, r16
cpi r16, 0
breq privateTimerTick_runSystemTick
; TODO
ret
privateTimerTick_runSystemTick:
rjmp onSystemTimerTick

View File

@@ -92,7 +92,11 @@ BaseTimer_Run:
BaseTimer_Run_loop: ; for every timer tick
push r24
push r25
.ifdef BASETIMER_PRIVATE_TICK_FN
rcall privateTimerTick
.else
rcall onSystemTimerTick
.endif
pop r25
pop r24
sbiw r25:r24, 1