12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667 |
- #pragma once
- #ifndef RTOS_H
- #define RTOS_H
- #include <avr/io.h>
- #define MAX_TASKS 10
- #define TIMER_HZ 1000
- #define TIMER_PRESCALER 64
- #define TIMER_CNT (0x100 - (F_CPU / TIMER_PRESCALER / TIMER_HZ))
- #define TIMER_TCCR TCCR0
- #define TIMER_TCNT TCNT0
- #define TIMER_TIMSK TIMSK
- #define TIMER_CSB (1<<CS02)
- #define TIMER_INT (1<<TOIE0)
- #define TIMER_OVF_VECT TIMER0_OVF_vect
- typedef struct task
- {
- void (*pFunc) (void);
- uint16_t delay;
- uint16_t period;
- uint8_t run;
- } task;
- void RTOS_Init (void);
- void RTOS_SetTask (void (*taskFunc)(void), uint16_t taskDelay, uint16_t taskPeriod);
- void RTOS_DeleteTask (void (*taskFunc)(void));
- void RTOS_DispatchTask (void);
- void RTOS_Timer (void);
- void tdelay_ms(uint16_t msek);
- inline void tdelay_us(uint16_t usek) {
- TCNT1 = 0;
- while (TCNT1 < usek) {};
- }
- #endif
|