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

BASCOM, WATCHDOG, Zawieszanie Atmega 328p

arktik1 08 Wrz 2011 19:51 4236 16
REKLAMA
  • #1 9908190
    arktik1
    Poziom 27  
    Witam.
    Napisałem kawałek programu odpowiadający za reset Uc przez Watchdog:
    
    Disable Interrupts
    Config Watchdog = 16
    Start Watchdog 
    

    I Uc się nie resetuje, zawiesza się, trzeba "wcisnąć" RESET z pinu.
    Nie rozumiem co jest nie tak, przecież to prosty układ.
  • REKLAMA
  • #2 9908786
    Fredy
    Poziom 27  
    włącz przerwania. Czyli zamiast disable interupts daj eneble interupts. W tym procku o ile się nie mylę watchdog też jest przerwaniem .
  • #3 9910345
    arktik1
    Poziom 27  
    Nic się nie zmieniło.
    Ogólnie jest tak, że gdy włączy się Watchdog to program przestaje działać i na wyświetlaczu pojawiają się przypadkowe znaki, tak jak by resetował .
    W każdym razie reset trwa za krótko.
    Dodam jeszcze że do Uc jest wgrany MKBootloader i przedstawiam FUSE:
    BASCOM, WATCHDOG, Zawieszanie Atmega 328p
  • REKLAMA
  • #4 9910702
    Fredy
    Poziom 27  
    Co to znaczy że reset trwa za krótko? Skoro jak twierdzisz układ resetuje się po włączeniu watchdoga to w czym problem? Co ma jeszcze zrobić oprócz resetu? Ma zaśpiewać?
    Zwiększ preskaler z 16 na maxa tzn na 1024 i zobacz co się zmieni.
  • #5 9911374
    arktik1
    Poziom 27  
    Jeśli resetował by prawidłowo to program wgrany do Uc powinien startować od początku.
    Dzieje się tak tylko kiedy zostanie naciśnięty reset PIN.
    Gdy układ zresetuje WATCHDOG to program nie startuje od początku, tylko widać przypadkowe znaki na wyświetlaczu.
    Dopiero po resecie z pinu wszystko wraca do normy.
  • #6 9913402
    arktik1
    Poziom 27  
    Dobra, skoro nie ma rozwiązania, to poradziłem sobie w inny sposób.
    Podłączyłem do PINu RESET fototranzystor i do wolnego portu diodę LED.
    Programowo ustawiam stan niski na porcie, zapala się led i resetuje Uc.
    Jednym słowem programowe resetowanie wspomagane sprzętowym :D.
    Działa prawidłowo, sprawę Watchdoga na razie zostawię w spokoju.
  • #7 10349225
    arktik1
    Poziom 27  
    No dobrze, muszę wrócić do tematu.
    Ten sam kawałek programu, czyli:
    
    Disable Interrupts
    Config Watchdog = 16
    Start Watchdog 
    

    Atmega 8 resetuje bez problemu, Uc zaczyna startować od początku.
    Atmega 328p nie resetuje, powoduje zawieszenie Uc.
    Może mi ktoś wyjaśnić o co tu chodzi?
  • REKLAMA
  • #8 10349404
    Jaca
    Poziom 31  
    1. Jaką masz wersję BASCOM'a ?
    2. Jak ustawiłeś fusebit'y w M328P oraz M8 ?
    3. Używasz bootloader'a ?
  • REKLAMA
  • #9 10349819
    Fredy
    Poziom 27  
    A tak dla ciekawości zastąp te 3 polecenia takimi:

    wdr
    Wdtcsr = &H1B
    Wdtcsr = &H0B
  • #10 10354420
    arktik1
    Poziom 27  
    W FUSE nie ma włączonego WATCHDOGA, jest potrzebny tylko do resetu przy programowaniu.
    Tak używam BOOTLOADERa.
  • #13 10357984
    arktik1
    Poziom 27  
    No dobrze.
    Rozumiem że jest to ustawianie bitów WATCHDOGA.
    Nie rozumiem z kąt wzięte jest to: &H1B - &H0B.
  • #14 10358221
    Mundi1970
    Poziom 24  
    Takie informacje znajdziesz w PDF do Atmegi 328 na stronie 55.
  • Pomocny post
    #15 10358499
    Fredy
    Poziom 27  
    A czy to też nie działa :


    Config Watchdog = 16
    Start Watchdog
    Disable Interrupts

    być może Bascom odblokowuje przerwania w starcie watchdoga?
REKLAMA