; *************************************************************************** ; copyright : (C) 2023 by Martin Preuss ; email : martin@libchipcard.de ; ; *************************************************************************** ; * This file is part of the project "AqHome". * ; * Please see toplevel file COPYING of that project for license details. * ; *************************************************************************** ; *************************************************************************** ; defs .equ TIMER_FLAGS_IF_ADDR = 1 ; *************************************************************************** ; data .dseg timerModuleData: timerModuleTickCounter: .byte 1 timerTicksSinceLastRun: .byte 2 timerModuleCounterSecs: .byte 4 timerInterrupts: .byte 2 timerModuleData_end: ; *************************************************************************** ; code .cseg TIMER_BEGIN: ; --------------------------------------------------------------------------- ; Timer_Init ; ; IN: ; - nothing ; OUT: ; - nothing ; USED: r16, r17, x Timer_Init: ; setup timer for IRQ every 100ms ; reset data in SDRAM ldi xh, HIGH(timerModuleData) ldi xl, LOW(timerModuleData) ldi r16, 0 ldi r17, (timerModuleData_end-timerModuleData) rcall Utils_FillSram ; CTC mode (WGM2:0=2, OCR0A=value, OCF0A Flag =1, -> IRQ_OC0A ; CMP-A interrupt about every 100ms ldi r16, (1<