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

[ATmega8][C] Problem z opóźnieniami.

boohoo 05 Paź 2010 18:39 716 2
REKLAMA
  • #1 8586909
    boohoo
    Poziom 12  
    Witam

    Chciałem wykorzystać przerwanie od przepełnienia licznika do generowania opóźnień w układzie. Idea jest taka, żeby w momencie, gdy potrzebujemy opóźnienie przypisać jakiejś zmiennej określoną wartość dekrementowaną z kolei w przerwaniu licznika. Wszystko pięknie, tylko nie chce działać... Kod wygląda następująco.
    Przerwanie:
    ISR(TIMER0_OVF_vect)      
    {                           
     if(deb>0) deb--;
    }

    Pętla główna, pętla while:
    while(1)
     {
    
      if(!(PINC & (1 << SW1)))
        {
        deb=5;    
        while(deb != 0)
         {   
    //      itoa(deb,nmb_to_str,10);
         }
         if(!(PINC & (1 << SW1))) lcd_write_text("tekst");
        }
         
     }


    Tak napisany program nie działa - tekst nie zostaje wypisany na wyświetlaczu. O dziwo (dla amatora jak ja :P ), gdy odkomentuję itoa(deb,nmb_to_str,10);, wszystko działa jak należy. Ma ktoś może pomysł, dlaczego tak się dzieje? Z góry dzięki wszystkim za odpowiedzi.
    Pozdrawiam.

    PS SW1 to przycisk, deb - ów dekrementowana zmienna odpowiedzialna za opóźnienie.
  • REKLAMA
  • Pomocny post
    #2 8587123
    gaskoin
    Poziom 38  
    a _delay_ms i _delay_us Ci nie wystarcza ? Do opóźnień nie trzeba wykorzystywać koniecznie przerwań timera. Można wykorzystać flagi timera (o ile się da, ale wszystko zależy).

    Poza tym, zmienna deb w Twoim programie zapewne nie jest volatile, ale wrzuciłeś nam NIC, także pomoc też nijaka
  • #3 8587177
    boohoo
    Poziom 12  
    gaskoin napisał:
    Poza tym, zmienna deb w Twoim programie zapewne nie jest volatile
    Bingo! Pomogło od ręki :) Wielkie dzięki za pomoc. Oczywiście nie powinienem się za bardzo cieszyć, bo wypadałoby znać ów przydomek, ale to już pogrążam się w lekturze...
    Pozdrawiam :)
REKLAMA