Не срабатывает прерывание ANA_COMP_vect
Вроде банальный код но не работает
Помогите пожааалуйста
Вот код:
Код: Выделить всё
#define F_CPU 8000000UL
#include <avr/io.h>
#include <avr/interrupt.h>
ISR(ANA_COMP_vect)
{
PORTB &= 0b11111011;
}
int main(void)
{
DDRB = 0b00000100; //на выход 3 пин
PORTB = 0b11111100; //два пина компоратора отключаем от подтягивающего резистора
ACSR = 0b00001000; //разрешаем прерывание, срабатывает по любому изменению
sei();
while(1)
{
}
}При этом в main делал считывание бита ACI
Код: Выделить всё
while(1)
{
if(ACSR&(1<<ACI))
{
PORTB &= 0b11111011;
}
else
{
PORTB |= 0b00000100;
}
}
Код: Выделить всё
while(1)
{
if(ACSR&(1<<ACO))
{
PORTB &= 0b11111011;
}
else
{
PORTB |= 0b00000100;
}
}ACO включает при переводе в нижнее положение резистора и выключает при переводе в вернее
а
ACI включает диод при первом переходе - т.е. флаг прерывания выставляется, но сам обработчик не срабатывает.