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

Watchdog AVR328P nie wybudza układu po spadku prądu - co robić?

IndyPoint 20 Mar 2014 09:04 738 1
REKLAMA
  • #1 13423861
    IndyPoint
    Poziom 11  
    Mam problem z wathdog – nie wybudza.
    Krotki program na AVR Atmego328P zdaje się pracowac poprawnie, bo prad na 4sekundy spada z 6mA do 2,5mA by znowu wzrosnac.

    Kod: C / C++
    Zaloguj się, aby zobaczyć kod




    Natomiast tem sam program wstawiony w strukturę docelowa już się nie budzi (może zawiesza):


    Kod: C / C++
    Zaloguj się, aby zobaczyć kod

    Jak zamiennie stosuje zamiast entersleep - delay układ pracuje poprawnie ale nie wiadomo czemu delay (może tu jest przyczyna) 1sekunda to nie 1000 tylko 16000.
    Nie wiem z czego to wynika czy z zastosowania kwarcu 4MHz?
    Fusebity mam ustawione poprawnie dla tego kwarcu:
    LOW: FD, HIGH: DA, i EXT: FD
    Zna ktos może odpowiedz i może pomoc?
  • REKLAMA
  • #2 13424756
    arek944
    Poziom 11  
    Dlaczego w przerwaniu robisz coś takiego, jak odliczanie czasu? Poza tym, masz gdzieś w programie zadeklarowane
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod
    dla tych funkcji delay?
    Jeśli chcesz, żeby watchdog wybudzał Twój układ ze stanu oszczędności energii:

    :arrow: pełna dokumentacja
    Zapoznaj się z tymi rozdziałami:
    • 10. Power Management and Sleep Modes - tam masz opisane z jakich stanów wybudza WDT i jak dany stan oszczędności energii aktywować,
    • 11.8 Watchdog Timer - natomiast tam jest opis jak działa Watchdog i jak się do niego odezwać.

    Zrób sobie funkcję, która po wciśnięciu przycisku przestawi Twoją 328 w tryb Power-Down, następnie w przerwaniu od WDT zrób 2 rzeczy - wyłącz WDT i zmień stan na Idle
    Jeśli nie wyłączysz stróża lub nie odroczysz jego działania, to Ci będzie resetował mikrokontroler.
REKLAMA