Доброго времени суток. В простом примере не получается вызвать прерывание от компаратора. Процесс моделирую в протеусе. Знаю что протеус сам по себе не надежный, но все-же думаю причина не в нем, а в коде ниже, но правда не могу найти где эта «собака» зарыта. Прошу подсказать.
СХЕМА http://s019.radikal.ru/i632/1609/34/6cfdca3a21de.jpg
Из особенностей: подключен ИОН и сравнивается с внешним напряжением через делитель. Но момент сравнения игнорируется прерыванием компаратора и не игнорируется коммандой PORTB = (ACSR&(1<<ACO));
#define F_CPU 1000000L
#include <avr/io.h>
#include <avr/interrupt.h>
#include <util/delay.h>
unsigned char a = 0;
ISR(ANA_COMP_vect){
a = 1; // НЕ СРАБАТЫВАЕТ
}
int main(void) {
DDRD = 0b01000000;
PORTD = 0b00000000;
DDRC = 255;
PORTC = 255;
DDRB=0xFF;
ACSR |= (0<<ACD) | (1<<ACBG) | (1<<ACIE) | (0<<ACIS0) | (0<<ACIS1) | (0<<ACIC);
sei();
//a = 1;
while(1) {
if (a){ // НЕ СРАБАТЫВАЕТ
_delay_ms(50);
PORTC = 0;
_delay_ms(50);
PORTC = 255;
}
PORTB = (ACSR&(1<<ACO));
}
}