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 ldi r16, 78-1
out OCR0A, r16 out OCR0A, r16
#ifdef BASETIMER_T841_FAST
ldi r16, 1
#else
ldi r16, 10 ldi r16, 10
#endif
sts baseTimerModuleReloadValue, r16 sts baseTimerModuleReloadValue, r16
sts baseTimerModuleTickCounter, r16 sts baseTimerModuleTickCounter, r16
.endif .endif

View File

@@ -53,6 +53,8 @@
#define MAIN_WITHOUT_MSG_HANDLING ; we do message handling ourselfes #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_CLOCK
;#define MODULES_COM ;#define MODULES_COM
@@ -90,6 +92,17 @@
.equ VALUE_ID_LEDSIMPLE_TIMING = 0x88 .equ VALUE_ID_LEDSIMPLE_TIMING = 0x88
; ***************************************************************************
; data segment
.dseg
t03TickCounter: .byte 1
; *************************************************************************** ; ***************************************************************************
; code segment ; code segment
@@ -148,6 +161,9 @@ firmwareVersion: .db FIRMWARE_VARIANT_TEMP_WINDOW, FIRMWARE_VERSION_MAJOR
; @routine firmwareStart @global ; @routine firmwareStart @global
firmwareStart: firmwareStart:
cli
clr r16
sts t03TickCounter, r16
rjmp main rjmp main
; @end ; @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 BaseTimer_Run_loop: ; for every timer tick
push r24 push r24
push r25 push r25
.ifdef BASETIMER_PRIVATE_TICK_FN
rcall privateTimerTick
.else
rcall onSystemTimerTick rcall onSystemTimerTick
.endif
pop r25 pop r25
pop r24 pop r24
sbiw r25:r24, 1 sbiw r25:r24, 1