Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/FreeRTOS/FreeRTOS-Kernel-Partner-Supported-Ports.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'GCC/AVR_Mega0/porthardware.h')
-rw-r--r--GCC/AVR_Mega0/porthardware.h59
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 */