Skocz do zawartości

[AVR C] Przerwania a zmienne


janzbycho

Pomocna odpowiedź

Witam!

Schemat myślowy jest prosty: zmienna globalna "a" jest flagą przyjmującą wartość 1 po wystąpieniu przerwania zewnętrznego. Wartość flagi "a" jest cały czas sprawdzana w funkcji głównej i gdy przyjmuje wartość jeden wykonywana jest kolejna akcja, w tym przypadku w ramach testu zmienia się PORTC. Program oczywiście nie działa, a dokładniej zmienna a nie ulega zmianie.

Wytłumaczcie mi co jest złego w moim rozumowaniu i jak inaczej rozwiązać opisany problem?

int a = 0;

SIGNAL(SIG_INTERRUPT0) 
{
   a=1;	
}

int main(void)
{
DDRC = 0xFF; 
PORTC = 0xFF;

DDRD &= ~(1<<PD2);
PORTD |= (1<<PD2);

   MCUCR |= (1<<ISC00); //konfiguracja przerwania INT0
   GICR |= 1<<INT0; //wlaczenie przerwania INT0

   sei(); 

while(1)
{
	if(a==1)
	{
	PORTC = 0x09;
	}
}
}
Link do komentarza
Share on other sites

Bądź aktywny - zaloguj się lub utwórz konto!

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto w ~20 sekund!

Zarejestruj nowe konto, to proste!

Zarejestruj się »

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się »
×
×
  • Utwórz nowe...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.