// this is the header file for timer library
#ifndef TIMER_H_INCLUDED
#define TIMER_H_INCLUDED
typedef enum timer_type{
TIMER_0,
TIMER_2,
}timer_type;
typedef enum timer_mode{
NORMAL_MODE,
CTC_MODE,
FAST_PWM_MODE,
PHASE_CORRECT_PWM_MODE
}timer_mode;
//WGM0[2:0] 101 and 111 modules are not supported
typedef enum timer_clock{
CLOCK_1,
CLOCK_8,
CLOCK_64,
CLOCK_256,
CLOCK_1024,
CLOCK_EXT_FALLING_EDGE,
CLOCK_EXT_RISING_EDGE
}timer_clock;
typedef struct timer timer;
void timer_init(void);
timer *timer_open(timer_type);
void timer_set(timer *, timer_mode, timer_clock, uint8_t);
void timer_start(timer *);
void timer_stop(timer *);
void timer_restart(timer *);
void timer_clear(timer *);
void timer_callback();
#endif // TIMER_H_INCLUDED