Не могу понять, что происходит с ATMega 8515 при использовании таймера и компаратора.
Проблема заключается в том, что прерывание на векторе компаратора происходит только после первого переполнении таймера, то есть:
1. Проходит первый раз, не запуская прерывание
2. Перепполняется, устнавливается в 0
3. Далее все норм, прерывание срабатывает.
Среда разработки Atmel Studio. Проверяю в Proteus.
Исходный код:
Код: Выделить всё
#include <avr/io.h>
#include <avr/interrupt.h>
ISR (TIMER0_COMP_vect)
{
PORTA ^= (1 << 0);
}
int main(void)
{
// Configure PORT [A]
DDRA = 0xFF;
PORTA = 0x00;
// Configure PORT [C]
DDRC = 0xFF;
PORTC = 0x00;
// Configure timers
OCR0 = 0b10000000;
TCNT0 = 0x00;
TCCR0 |= (1 << CS01) | (1 << CS02);
TIMSK |= (1 << OCIE0);
SREG |= (1 << 7);
while(1)
{
PORTC = TCNT0;
}
}

