void setup() {
init_timer();
volatile char *ddrb = 0x24;
*ddrb = 0x02; // set pin 9 as pwm
}
void loop() {
OCR1A = 1040; // 0 degree (Duty cycle = 2.6 %)
delay(2000);
OCR1A = 2800; // 90 degree (Duty cycle = 7 %)
delay(2000);
OCR1A = 4800; // 180 degree (Duty cycle = 12 %)
delay(2000);
}
void init_timer(){
volatile char *Timer1_TCCR1A = 0x80;
volatile char *Timer1_TCCR1B = 0x81;
volatile short *Timer1_TCNT1 = 0x84;
volatile short *Timer1_ICR1A = 0x86;
volatile short *Timer1_OCR1A = 0x88;
*Timer1_TCCR1A = 0x82;
*Timer1_TCCR1B = 0x1a;
*Timer1_ICR1A = 39999;
}