//############################################################################################################################################################################################################# #include "SYSTEM.h" #include "config.h" //------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- volatile uint32_t SystemSystickCounter; uint32_t System_GetSysTick(void) { cli(); uint32_t SystemSysTick_Temp = SystemSystickCounter; sei(); return SystemSysTick_Temp; } //------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- uint32_t HAL_GetTick(void) // redefine _weak HAL function For HAL Inits { cli(); uint32_t SystemSysTick_Temp = SystemSystickCounter; sei(); return SystemSysTick_Temp; } //------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- uint32_t System_GetSysTickDifference(uint32_t TimeInstance) { cli(); uint32_t SystemSysTick_Temp = SystemSystickCounter; sei(); if (TimeInstance<=SystemSysTick_Temp ) { return (uint32_t)(SystemSysTick_Temp-TimeInstance); } else { return (uint32_t)(0xFFFFFFFF-TimeInstance+SystemSysTick_Temp); } } //------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- void System_SWReboot(void) { cli(); wdt_enable(WDTO_15MS); while(1); //Dumb reset } //############################################################################################################################################################################################################# //------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- void System_InitSysTick(void) { SystemSystickCounter=0; TCNT0=0xFF-250; // 1 ms TCCR0B=0; // no clock TIMSK0=0; // Overflow Interrupt Disable } //------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ISR(TIMER0_OVF_vect) // 1ms timer0 interrupt { TCNT0=0xFF-250; // 1 ms if (SystemSystickCounter==0xFFFFFFFF) SystemSystickCounter=0; else SystemSystickCounter++; } //------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- void System_SystickTimerStart(void) { SystemSystickCounter=0; TCNT0=0xFF-250; // 1 ms TCCR0B=3; // clkI/O/64 (from prescaller) TIMSK0=1<