diff options
Diffstat (limited to 'GCC/AVR_Mega0/porthardware.h')
-rw-r--r-- | GCC/AVR_Mega0/porthardware.h | 59 |
1 files changed, 59 insertions, 0 deletions
diff --git a/GCC/AVR_Mega0/porthardware.h b/GCC/AVR_Mega0/porthardware.h index 758d949..05a04ae 100644 --- a/GCC/AVR_Mega0/porthardware.h +++ b/GCC/AVR_Mega0/porthardware.h @@ -55,6 +55,15 @@ TCB0.INTCTRL = TCB_CAPT_bm; \ TCB0.CTRLA = TCB_ENABLE_bm; \ } + + #define TICK_TMR_STOP() TCB0.CTRLA = 0x00; + #define TICK_TMR_START() \ + { \ + TCB0.INTFLAGS = TCB_CAPT_bm; \ + TCB0.CTRLA = TCB_ENABLE_bm; \ + } + #define TICK_TMR_READ() TCB0.CNT + #define TICK_INT_READY() (TCB0.INTCTRL & TCB_CAPT_bm) #elif ( configUSE_TIMER_INSTANCE == 1 ) @@ -68,6 +77,15 @@ TCB1.INTCTRL = TCB_CAPT_bm; \ TCB1.CTRLA = TCB_ENABLE_bm; \ } + + #define TICK_TMR_STOP() TCB1.CTRLA = 0x00; + #define TICK_TMR_START() \ + { \ + TCB1.INTFLAGS = TCB_CAPT_bm; \ + TCB1.CTRLA = TCB_ENABLE_bm; \ + } + #define TICK_TMR_READ() TCB1.CNT + #define TICK_INT_READY() (TCB1.INTCTRL & TCB_CAPT_bm) #elif ( configUSE_TIMER_INSTANCE == 2 ) @@ -81,6 +99,15 @@ TCB2.INTCTRL = TCB_CAPT_bm; \ TCB2.CTRLA = TCB_ENABLE_bm; \ } + + #define TICK_TMR_STOP() TCB2.CTRLA = 0x00; + #define TICK_TMR_START() \ + { \ + TCB2.INTFLAGS = TCB_CAPT_bm; \ + TCB2.CTRLA = TCB_ENABLE_bm; \ + } + #define TICK_TMR_READ() TCB2.CNT + #define TICK_INT_READY() (TCB2.INTCTRL & TCB_CAPT_bm) #elif ( configUSE_TIMER_INSTANCE == 3 ) @@ -94,6 +121,15 @@ TCB3.INTCTRL = TCB_CAPT_bm; \ TCB3.CTRLA = TCB_ENABLE_bm; \ } + + #define TICK_TMR_STOP() TCB3.CTRLA = 0x00; + #define TICK_TMR_START() \ + { \ + TCB3.INTFLAGS = TCB_CAPT_bm; \ + TCB3.CTRLA = TCB_ENABLE_bm; \ + } + #define TICK_TMR_READ() TCB3.CNT + #define TICK_INT_READY() (TCB3.INTCTRL & TCB_CAPT_bm) #elif ( configUSE_TIMER_INSTANCE == 4 ) @@ -119,6 +155,29 @@ #error Invalid timer setting. #endif /* if ( configUSE_TIMER_INSTANCE == 0 ) */ + +#if ( configUSE_TICKLESS_IDLE == 1 ) + +#define LOW_POWER_CLOCK (32768UL) + +#define RTC_TICK_PERIOD_MS ( ( TickType_t ) 1000 / configTICK_RATE_HZ ) +#define RTC_TICKS_TO_COUNTS(tick_cnt) (uint32_t)(((float)(tick_cnt * LOW_POWER_CLOCK)/configTICK_RATE_HZ) - 0.5) +#define RTC_COUNTS_TO_TICKS(counts) (uint32_t)((float)((counts * 1.0) * configTICK_RATE_HZ)/LOW_POWER_CLOCK ) + + +#define RTC_INIT() \ +{ \ + while( RTC.STATUS > 0 ) {; } \ + RTC.PER = 0xFFFF; \ + RTC.CMP = 0x3FFF; \ + RTC.CNT = 0; \ + RTC.INTFLAGS = RTC_OVF_bm | RTC_CMP_bm; \ + RTC.CTRLA = RTC_RUNSTDBY_bm | RTC_PRESCALER_DIV1_gc | RTC_RTCEN_bm ; \ + RTC.INTCTRL = RTC_OVF_bm | RTC_CMP_bm; \ +} + +#endif + /*-----------------------------------------------------------*/ #endif /* PORTHARDWARE_H */ |