Witam.
Próbuję uczyć się C na Atmedze 8 i mam problem z obsługą przerwania. Kod wygląda następująco (z resztą pisany na podstawie kursu z EdW):
To co jest wpisane w obsłudze przerwania od timera0 nie ma większego sensu ale powinno zmieniać coś na porcie B a nie zmienia.
Symulowałem program w AVR Studio. Program ustawia wyjścia i czeka, timer liczy, przepełnia się, wystawia flagę, program skacze pod adres tam gdzie zgodnie z dokumentacją jest wektor obsługi przerwania ale dalej nic się nie dzieje. Czemu wykonanie funkcji nie przynosi rezultatu? Z góry dzięki za podpowiedź
Próbuję uczyć się C na Atmedze 8 i mam problem z obsługą przerwania. Kod wygląda następująco (z resztą pisany na podstawie kursu z EdW):
#include <c:\WinAVR-20090313\avr\include\avr\io.h>
#include <c:\WinAVR-20090313\avr\include\avr\interrupt.h>
#define F_CPU = 1000000
int volatile wyjscia;
int indeks;
int main (void) {
// koniguracja i definicje
// włączenie przerwań
sei();
// ustawienie pinów 0-3 portu B jako wyjścia
DDRB=(1<<DDB0)|(1<<DDB1)|(1<<DDB2)|(1<<DDB3);
// konfiguracja licznika
TCCR0 = 1<<CS01|1<<CS00;
TIMSK = 1<<TOIE0;
wyjscia = 1;
PORTB =wyjscia;
indeks = 1;
// koniec inicjacji
for(;;) {}
return 0;
}
signal(SIG_OVERFLOW0)
{
wyjscia = 7;
PORTB = wyjscia;
}
To co jest wpisane w obsłudze przerwania od timera0 nie ma większego sensu ale powinno zmieniać coś na porcie B a nie zmienia.
Symulowałem program w AVR Studio. Program ustawia wyjścia i czeka, timer liczy, przepełnia się, wystawia flagę, program skacze pod adres tam gdzie zgodnie z dokumentacją jest wektor obsługi przerwania ale dalej nic się nie dzieje. Czemu wykonanie funkcji nie przynosi rezultatu? Z góry dzięki za podpowiedź

