Попробовал на втором таймере
Код
#include <avr/io.h>
#include <avr/interrupt.h>
ISR(TIMER2_COMP_vect)
{
if(PINA & 0x01)
{
PORTA &= ~0x01;
OCR2 = 0x90;
}
else
{
PORTA |= 0x01;
OCR2 = 0x0C;
}
//TCNT0=0x00;
}
int main(void)
{
DDRA = 0x01;
// Делитель на 1024 (8МГц / 1024 = 7,8125КГц = 128 мкс)
// CTC режим
TCCR2=0x0F;
TCNT2=0x00;
OCR2=0x0C;
TIMSK=0x80;
// Разрешаем прерывания глобально
sei();
while(1)
;
return 0;
}
, верх импульса - 33 мс, низ - 1,65 мс.
Вопросов два:
1. Код вроде как правильный?
2. Если нужно сделать генератор с варьируемым коэффициент заполнения и с одинаковым периодом, есть код проще моего?
Спасибо.
ПС:
Цитата(Xenia @ Oct 3 2013, 19:51)

Да и в даташите OCR0 вообще не вижу. Откеда вы его взяли?
В моем даташите есть ( Rev. 2466T–AVR–07/10), если интересно могу прислать.
Сообщение отредактировал e-leks - Oct 3 2013, 18:33