9 #include <util/atomic.h>
10 #include <avr/interrupt.h>
15 #define VANZTASK 6 //anzahl definierter prozesse
17 #define F_CPU 16000000ul
19 #define eRTKHZ 1000 //system tick rate
20 #define TIMERPREDIV 64ul //verteiler timer clock
21 #define TIMERPRELOAD ( F_CPU/( TIMERPREDIV*eRTKHZ ) )
23 #if (TIMERPRELOAD>254)
24 #error eRTK:Systematischer 8 Bit Overflow Fehler im SYSTIMER !
27 #define ERTKDEBUG //gibt ein paar mehr infos zum debugging
29 #define eRTK_STARTUP_MS 0 //solange geben wir allen tasks zusammen zum hochlauf bis wir overload pruefen
30 #define eRTK_MAX_OVERLOAD 0 //und dies ist die max. erlaubte zahl an overload phasen bevor deadbeef() aufgerufen wird
32 #define ERTK_STACKSIZE 256
37 #define sbi(port,nr) (port|=_BV(nr))
38 #define cbi(port,nr) (port&=~_BV(nr))
41 #define oIDLE(a) { ( a ) ? sbi( PORTE, PE2 ) : cbi( PORTE, PE2 ); sbi( DDRE, PE2 ); }
42 #define oIDLEfast(a) { ( a ) ? sbi( PORTE, PE2 ) : cbi( PORTE, PE2 ); }
46 #define oIDLEfast(a) asm volatile ( "nop\n nop\n" );
68 void ( *task )( uint16_t param0,
void *param1 );
void eRTK_SetSuspended(uint8_t tid)
uint16_t eRTK_GetTimer16(void)
void eRTK_Sleep_ms(uint16_t ms)
void eRTK_wefet(uint8_t timeout)
void eRTK_timer_init(void)
void deadbeef(tsys reason)
void __attribute__((naked)) eRTK_scheduler(void)
void eRTK_WaitUntil(uint8_t then)
uint8_t eRTK_GetTimer8(void)
const t_eRTK_tcb rom_tcb[VANZTASK]
void eRTK_get_sema(uint8_t semaid)
uint8_t eRTK_GetTid(void)
void eRTK_SetReady(uint8_t tid)