12 #include <avr/pgmspace.h> 13 #include <avr/interrupt.h> 19 #define SYSTEM_MILLISECONDS_TO_RTC_CYCLES(x) \ 20 ( (uint16_t) ( (double) F_RTC * x / 1E3 + 0.5) ) 22 #define SYSTEM_TICK_WIDTH 7 23 #define SYSTEM_TICK_PERIOD (1<<7) 24 #define SYSTEM_TICK_MS (SYSTEM_TICK_PERIOD) 25 #define SYSTEM_TICK_FREQ (1000 / SYSTEM_TICK_PERIOD) 27 #define SYSTEM_SMODE_PSAVE SLEEP_SMODE_PSAVE_gc 28 #define SYSTEM_SMODE_IDLE SLEEP_SMODE_IDLE_gc 31 #define SYSTEM_TICK_REGISTER (*((volatile uint16_t*) &GPIORE)) 33 void SystemInit(
void);
34 void SystemReset(
void);
35 void SystemEnterBootloader(
void);
36 void SystemStartUSBClock(
void);
37 void SystemStopUSBClock(
void);
38 void SystemInterruptInit(
void);
39 INLINE
bool SystemTick100ms(
void);
41 INLINE
bool SystemTick100ms(
void) {
42 if (RTC.INTFLAGS & RTC_COMPIF_bm) {
43 while (RTC.STATUS & RTC_SYNCBUSY_bm)
46 RTC.INTFLAGS = RTC_COMPIF_bm;
53 INLINE
void SystemTickClearFlag(
void) {
54 while (RTC.STATUS & RTC_SYNCBUSY_bm)
57 RTC.INTFLAGS = RTC_COMPIF_bm;
60 INLINE uint16_t SystemGetSysTick(
void) {
61 return SYSTEM_TICK_REGISTER | RTC.CNT;