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

Watchdog w ATmega324 nie uruchamia resetu - jak to naprawić?

maxiu25 22 Mar 2015 09:02 1059 7
  • #1 14550591
    maxiu25
    Poziom 16  
    Witam
    Mam problem z uruchomieniem watchdog'a w atmedze324. Procesor nie uruchamia resetu.
    Ten program powinien wypisywać cyfry przez około 2 sekundy potem powinien się zresetować.
    Proszę o pomoc.

    Kod: text
    Zaloguj się, aby zobaczyć kod
  • #2 14550651
    szczywronek
    Poziom 28  
    Na początek użyj znaczników syntax i pozmieniaj magiczne numerki na nazwy bitów. Np.:
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod

    Włączenie watchdog'a wymaga dwóch operacji wykonanych w ściśle określonym czasie -> masz pewność, że przerwanie nie wystąpi pomiędzy nimi?

    Jakiego środowiska używasz? Może warto byłoby ułatwić sobie życie: avr/wdt.h
  • #3 14550701
    maxiu25
    Poziom 16  
    Zainicjalizowałem watchdog'a przed pętla while
    WDTCSR=0x39;
    WDTCSR=0x29;
    codevisionavr
  • #4 14550725
    szczywronek
    Poziom 28  
    Rozumiem, że znaczników Syntax w poście jednak nie będzie :?: To raczej nie zwiększy zainteresowania tematem ;)

    maxiu25 napisał:
    Zainicjalizowałem watchdog'a przed pętla while
    No i? Ponawiam pytanie: czy masz pewność, że pomiędzy dwiema operacjami włączającymi wdt nie wystąpi przerwanie?

    Swoją drogą nawet gdyby włączenie wdt zadziałało, to jest ustawiony na 8s a nie na 2s.
  • #5 14550878
    maxiu25
    Poziom 16  
    Sprawdzę to juto rano. Wyłączę przerwania przed inicjalizacją.
    Na dwie sekundy mam ustawiony w atmega32 odpalam wotchdoga identycznie i działa bez problemu.
  • Pomocny post
    #6 14551037
    Fredy
    Poziom 27  
    Problem masz gdzieś indziej.

    W kompilatorze Codevision funkcja systemowa delay ma wewnątrz kasowanie watchdoga.
    Spróbuj zamienić ją na pętlę while(1); a powineś zuważyć efekt zadziałania watchdoga.
  • #8 14553748
    maxiu25
    Poziom 16  
    Sprawdziłem układ i jest trochę lepiej.
    Po inicjalizacji i zastosowaniu własnego opóźnienia procesor zatrzymuje się.
    Watchdog resetuje procesor ale procesor nie zaczyna pracy od nowa.
    Kod: text
    Zaloguj się, aby zobaczyć kod



    ACSR muszę inicjalizować po WDCSR i wszystko działa dzieki za pomoc
REKLAMA