Napotkałem dziwny problem. Spróbuję to dość jasno opisać.
W procedurze uruchamiam timer0. Następnie po uruchomieniu program wpada w pętle :
zmienna flaga zadeklarowana jako globalna (na samym szczycie kodu po define'ach) zerowana jest w procedurze obsługi przerwania timer0.
Oczywiscie po tym program powinien wyskoczyć z pętli ale tak się nie dzieje!
Pytanie dlaczego zmienne (nie tylko ta ale również inne np zmienne licznikowe lub zmienne na których wykonuję operacje w procedurze obsługi przerwania timera) nie są absolutnie widoczne z punktu patrzenia procedury ? Co trzeba zrobić aby były widoczne?
Podany przykład jest w formie urposzczonej zeby nie wklejac całego kody i tłumaczyć co do czego. Jedno wiem, procedura sie uruchmaia, timer sie uruchamia , przerwanie jest obsługiwane ale zmienne modyfikowane w procedurze obsługi timera nie są widoczne później w procedurze !
W procedurze uruchamiam timer0. Następnie po uruchomieniu program wpada w pętle :
flaga=1;
timer0_on;
while(flaga)
{
}
zmienna flaga zadeklarowana jako globalna (na samym szczycie kodu po define'ach) zerowana jest w procedurze obsługi przerwania timer0.
Oczywiscie po tym program powinien wyskoczyć z pętli ale tak się nie dzieje!
Pytanie dlaczego zmienne (nie tylko ta ale również inne np zmienne licznikowe lub zmienne na których wykonuję operacje w procedurze obsługi przerwania timera) nie są absolutnie widoczne z punktu patrzenia procedury ? Co trzeba zrobić aby były widoczne?
Podany przykład jest w formie urposzczonej zeby nie wklejac całego kody i tłumaczyć co do czego. Jedno wiem, procedura sie uruchmaia, timer sie uruchamia , przerwanie jest obsługiwane ale zmienne modyfikowane w procedurze obsługi timera nie są widoczne później w procedurze !