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

atmega16l timer0 i watchdog

wilk125 16 Cze 2010 09:23 879 3
REKLAMA
  • #1 8195571
    wilk125
    Poziom 23  
    Witam
    Mam program który używa USART, ponieważ potrzebowałem jeszcze jednego portu UART, dołożyłem softwerowego UARTA i tu zaczeły się problemy z watchdogiem. Ustawienia watchdoga sa takie że robi restert jesli nie bedzie jego zerowania po około 2s, dopóki nie dodałem softwerowego uarta wszytsko było ok, ale po jego dodaniu reset procka nastepuje już po około 950ms. Po analizie kodu softwerowego uarta doszedłem do tego że przestawienie watchdoga nastepuje gdy dokonam inicjalizacji soft_uart, a dokładnie ustawienie
     TCCR0 |= ( 1 << CS01); TCCR0 |= ( 1 << WGM01); 

    i włączenie przerwania od timera
     
       TIMSK}= ( 1 << OCIE0);
    


    jesli wyzeruję bit CS01
    oraz jeszce raz dokonam ustawien watchdoga
    
    WDTCR = (1<<WDE) | (1<<WDP2) | (1<<WDP1)| (1<<WDP0);//
    wdt_reset();*/
    

    to wszystko wraca do normy.
    Moje pytanie dlaczego uruchomienie timera z prescalerem 8 ma wpływ na watchdoga?

    pozdrawiam
    tmek
  • REKLAMA
  • #2 8197140
    Krauser
    Poziom 26  
    Wygląda na to, że nie masz obsługi przerwania albo jest ona przypisana do złego wektora.
  • REKLAMA
  • #3 8199290
    wilk125
    Poziom 23  
    Krauser napisał:
    Wygląda na to, że nie masz obsługi przerwania albo jest ona przypisana do złego wektora.

    ze nie mam obslgi przerwania od timera?
    uart działa wiec obsługa jest dobra

    Proszę poprawić pisownię!
    Robak
  • Pomocny post
    #4 8203815
    Krauser
    Poziom 26  
    Jeśli piszesz w WinAVR i otworzysz plik w asemblerze to zobaczysz, że każde nie używane przerwanie prowadzi do resetu. Nieużywane tzn. nie posiada funkcji obsługi przerwania. Przerwanie takie od np. przepełnienia timera może nastąpić jeśli zostanie odblokowane, ale jak mówisz w tym przypadku to nie to.
    Możesz po prostu wyłączyć watchdoga i upewnić się co do wpływu timera na nastawy watchdoga.
    Inne przyczyny resetu to np. skok poza obszar pamięci programu, funkcje bez powrotu itp. rzadko używane rzeczy. Pewnie nie masz też wstawek asemblerowych, gdzie łatwo coś namieszać.
    Przyczyna sprzętowa - zwarcie pinu z resetem.
REKLAMA