#include <avr/io.h>
#include <util/delay.h>
void timer_init(void)
{
DDRB |= (1 << PB1);
TCCR1A |= (1 << WGM11) | (1 << COM1A1);
TCCR1B |= (1 << WGM13) | (1 << WGM12) | (1 << CS11);
ICR1 = 39999;
}
void set_angle(uint16_t angle)
{
uint16_t pulse = 1000 + (angle * 1000) / 180;
OCR1A = (pulse * (ICR1 + 1)) / 20000;
}
int main(void)
{
timer_init();
while(1)
{
set_angle(0);
_delay_ms(1000);
set_angle(90);
_delay_ms(1000);
set_angle(180);
_delay_ms(1000);
}
return 0;
}