Материал из Automata.
#include <stdint.h>
#include <avr/io.h>
#include <avr/interrupt.h>
//главная функция;
int main (void)
{
DDRB = 0xff;//порт В настраиваем на выход;
PORTB = 0x00;//отправляем на выводы логический "0";
DDRD = 0xff;//порт D настраиваем на выход;
PORTD = 0x00;//отправляем на выводы логический "0";
//10-bit Phase Correct PWM, устанавливается логический "0" на выводе OC1A при совпадениии TCNT1 с OCR1A и
//логическая "1" на OC1A при достижении TCNT1 своего масимума, задаем предделитель = 256;
TCCR1A = _BV(COM1A1) | _BV(WGM11) | _BV(WGM10);
TCCR1B = _BV(CS12);
//1023 ~ 5.0v;
//767 ~ 3.75v;
OCR1A = 768;
}