TovarishAleksey писал(а):мне даже не ясно с чего начать.
начни с таймера))
режим 14 (быстрая шим)
WGM13=1, WGM12=1, WGM11=1, WGM10=0
записываем...
TCCR1A = (1 << WGM11);
TCCR1B = (1 << WGM13) | (1 << WGM12);
начало положено))
сейчас таймер остановлен... а чтоб запустить надо включить делитель...
CS12, CS11, CS10
записываем...
TCCR1A = (1 << WGM11);
TCCR1B = (1 << WGM13) | (1 << WGM12) | (1 << CS10);
таймер завёлся)) с частотой кварца 16МГц
1/16МГц = 62,5нс - один такт таймера.

сколько у нас трока ?
31,77мкс
сколько это тактов ?
31,77мкс / 62,5нс = 508,32 тактов
записываем... 508 тактов
ICR1H=1; //регистр захвата - верхний предел счета
ICR1L=252; //регистр захвата - верхний предел счета
или так... не знаю как ардуина лучше понимает))
ICR1H=0x01; //регистр захвата - верхний предел счета 508 тактов
ICR1L=0xFC; //регистр захвата - верхний предел счета 508 тактов
теперь таймер работает с частотой строк...
Добавлено after 35 minutes 5 seconds:
сколько длительность импульса ?
3,77мкс
сколько это тактов ?
3,77мкс / 62,5нс = 60,32 тактов
записываем... 60 тактов
регистр для вывода b1...
OCR1AH=0;
OCR1AL=60;
или так... не знаю как ардуина лучше понимает))
OCR1AH=0x00; //регистр ШИМ 60 тактов
OCR1AL=0x3C; //регистр ШИМ 60 тактов
начальное значение... сбрасываем в ноль))
TCNT1H=0x00;
TCNT1L=0x00;
TCCR1A = (1 << WGM11);
TCCR1B = (1 << WGM13) | (1 << WGM12) | (1 << CS10);
ICR1H=0x01; //регистр захвата - верхний предел счета 508 тактов
ICR1L=0xFC; //регистр захвата - верхний предел счета 508 тактов
OCR1AH=0x00; //регистр ШИМ 60 тактов
OCR1AL=0x3C; //регистр ШИМ 60 тактов
TCNT1H=0x00;
TCNT1L=0x00;
уже лучше))

настраиваем форму сигнала на выводе b1... обычная или инверсная... у нас инверсная...
Добавлено after 16 minutes 33 seconds:
вроде это...
COM1A1, COM1A0, COM1B1, COM1B0
записываем...
TCCR1A = (1 << COM1A1) | (1 << COM1A0) | (1 << WGM11);
осталось настроить сам пин на ардуине... PB1 на выход...
итого:
TCCR1A = (1 << COM1A1) | (1 << COM1A0) | (1 << WGM11);
TCCR1B = (1 << WGM13) | (1 << WGM12) | (1 << CS10);
ICR1H=0x01; //регистр захвата - верхний предел счета 508 тактов
ICR1L=0xFC; //регистр захвата - верхний предел счета 508 тактов
OCR1AH=0x00; //регистр ШИМ 60 тактов
OCR1AL=0x3C; //регистр ШИМ 60 тактов
TCNT1H=0x00; // начальное значение таймера
TCNT1L=0x00; // начальное значение таймера
на пине PB1 должны получить сигнал строчной развертки для VGA...
если мы ничего не перепутали))