logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

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

Yoshi_80 22 Wrz 2008 13:12 1197 4
REKLAMA
  • #1 5559689
    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 :


    
    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 !
  • REKLAMA
  • REKLAMA
  • #3 5559705
    Yoshi_80
    Poziom 21  
    THX mogłbyś dokładniej jestem dość zielony w C , gdzie zastosować te zaklęcie ? Przy deklaracji ?
  • REKLAMA
  • #5 5559726
    Yoshi_80
    Poziom 21  
    Oki działa , masz u mnie browara :)
REKLAMA