Witam, jestem początkujący w programowaniu AVR więc proszę o wyrozumiałość.
Mój problem polega na tym, że próbuje wywołać przerwanie (INT0) przez przecięcie wiązki światło w czujniku optycznym, pochodzącym z drukarki. W procedurze przerwania ma być umieszczona sekwencja migania diodami LED. Napisałem krótki kod aby sprawdzić czy skonfigurowanie przerwanie działa poprawnie... Niestety przecięcie wiązki światła nie powoduje skoku do procedury przerwania. W czym problem?
Mój problem polega na tym, że próbuje wywołać przerwanie (INT0) przez przecięcie wiązki światło w czujniku optycznym, pochodzącym z drukarki. W procedurze przerwania ma być umieszczona sekwencja migania diodami LED. Napisałem krótki kod aby sprawdzić czy skonfigurowanie przerwanie działa poprawnie... Niestety przecięcie wiązki światła nie powoduje skoku do procedury przerwania. W czym problem?
#include <avr/io.h>
#include <avr/interrupt.h>
#include <avr/delay.h>
ISR(INT0_vect)
{
PORTA |= (1<<PORTA4);
_delay_ms(500);
PORTA &= ~(1<<PORTA4);
}
int main(void)
{
DDRA=0xff;
DDRD &= ~(1<<PORTD2);
PORTD &= ~(1<<PORTD2);
MCUCR = (MCUCR & (~(3<<ISC00))) | (1<<ISC00);
GICR |= (1<<INT0);
sei();
while(1)
{
PORTA |= (1<<PORTA1);
_delay_ms(500);
PORTA &= ~(1<<PORTA1);
_delay_ms(500);
}
}