Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

[C][atmega16] "widoczność" zmiennej poza przerwani

Yoshi_80 22 Wrz 2008 13:12 1026 4
  • #1 22 Wrz 2008 13:12
    Yoshi_80
    Poziom 21  

    Napotkałem dziwny problem. Spróbuję to dość jasno opisać.

    W procedurze uruchamiam timer0. Następnie po uruchomieniu program wpada w pętle :


    Code:

    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 !

    0 4
  • #3 22 Wrz 2008 13:18
    Yoshi_80
    Poziom 21  

    THX mogłbyś dokładniej jestem dość zielony w C , gdzie zastosować te zaklęcie ? Przy deklaracji ?

    0
  • #5 22 Wrz 2008 13:25
    Yoshi_80
    Poziom 21  

    Oki działa , masz u mnie browara :)

    0