Quantcast
Channel: Linux.org.ru: Форум
Viewing all articles
Browse latest Browse all 109788

ATMEGA8 не вызывается прерывание

$
0
0

Доброго времени суток. В простом примере не получается вызвать прерывание от компаратора. Процесс моделирую в протеусе. Знаю что протеус сам по себе не надежный, но все-же думаю причина не в нем, а в коде ниже, но правда не могу найти где эта «собака» зарыта. Прошу подсказать.

СХЕМА 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));
	}
}

 


Viewing all articles
Browse latest Browse all 109788

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>