21#include <avr/interrupt.h>
24#include "px_async_tmr.h"
31#define ASYNC_TMR_INT_DISABLE() PX_BIT_SET_LO(TIMSK0, OCIE0)
32#define ASYNC_TMR_INT_ENABLE() PX_BIT_SET_HI(TIMSK0, OCIE0)
33#define ASYNC_TMR_INT_IS_ENABLED() PX_BIT_IS_HI(TIMSK0, OCIE0)
34#define ASYNC_TMR_INT TIMER0_COMP_vect
40#define ASYNC_TMR_INT_DISABLE() PX_BIT_SET_LO(TIMSK2, OCIE2A)
41#define ASYNC_TMR_INT_ENABLE() PX_BIT_SET_HI(TIMSK2, OCIE2A)
42#define ASYNC_TMR_INT_IS_ENABLED() PX_BIT_IS_HI(TIMSK2, OCIE2A)
43#define ASYNC_TMR_INT TIMER2_COMPA_vect
47#error "Unsupported AVR"
68 TCCR0 = (0 << WGM00) | (1 << WGM01) | (1 << CS02) | (1 << CS01) | (1 << CS00);
72 OCR0 = (uint16_t)(((F_RTC / 1024) * PX_RTC_PERIOD_MS) / 1000) - 1;
74 while(ASSR & ((1 << TCN0UB) | (1 << OCR0UB) | (1 << TCR0UB))) {;}
82 TCCR2A = (0 << WGM20) | (1 << WGM21);
83 TCCR2B = (0 << WGM22) | (1 << CS22) | (1 << CS21) | (1 << CS20);
89 while(ASSR & ((1 << TCN2UB) | (1 << OCR2AUB) | (1 << TCR2AUB))) {;}
92#error "Unsupported AVR"
96 ASYNC_TMR_INT_ENABLE();
101 ASYNC_TMR_INT_ENABLE();
106 bool int_is_enabled = ASYNC_TMR_INT_IS_ENABLED();
108 ASYNC_TMR_INT_DISABLE();
110 return int_is_enabled;
void px_async_tmr_int_enable(void)
Enable TMRx interrupt.
#define ASYNC_TMR_CFG_ON_TICK()
Define handler function to call when timeout interrupt occurs.
bool px_async_tmr_int_disable(void)
Disable TMRx interrupt.
#define ASYNC_TMR_CFG_PERIOD_MS
Define timeout period.
void px_async_tmr_init(void)
Initalises TMRx to use an external 32768 Hz crystal.
#define PX_BIT_SET_HI(var, bit)
Set a bit (1)