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

[atmega32] Jak skonfigurować watchdog w asm dla ATmega32 na 2s? Ustawianie bitów krok po kroku

spewak 05 Cze 2012 19:56 1346 5
  • #1 10971117
    spewak
    Poziom 10  
    Mam malutki problemik z jednym z moich układów otóż watchdog tak jakby nie zawsze resetował procka i pomimo że jest włączony, program się po prostu zatrzymuje. W jednym z tematów widziałem że komus pomogła "bezpośrednia" konfiguracja tj. ustawianie bitów.
    Chciałbym, wiedziec jak ustawic watchdoga na 2 s, uruchomic, zatrzymać i zresetować. Próbowałem nawet sam coś wydumać patrząc w note niestety moja wiedza na temat asm jest równa 0. Miło by było gdyby ew ktoś wytłumaczył w jaki sposób obliczył choc jedna z tych wartości, opierając się o dane z noty katalogowej.
  • Pomocny post
    #2 10971995
    LordBlick
    VIP Zasłużony dla elektroda
    Nie wiem jakiego kompilatora asm używasz, to co przedstawiam, używam na AVRasm2, który obsługuje preprocesor C oraz mam wygenerowane pliki nagłówkowe C Atmela narzędziem xmlconvert.exe
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod
    Kod: text
    Zaloguj się, aby zobaczyć kod
  • #3 10978816
    spewak
    Poziom 10  
    Co prawda wiele mi to nie pomogło, ale to chyba dlatego że nie napisałem że program jest w bascomie udało mi się natomiast ustalić dlaczego procek raz sie resetuje raz nie. Otóż jak ustawie watchdoga na 1024 to wszystko pięknie działa czyli wpuszczony w pustą pętlę zawsze się resetuje ale jak ustawie 2048 (max dla atmega32) to juz sie nie resetuje czyli po prostu nie działa. Jak ustawić watchdoga na 2 s nie korzystając z funkcji bascomowej??

    Pozdrawiam
  • #4 10979178
    LordBlick
    VIP Zasłużony dla elektroda
    spewak napisał:
    nie napisałem że program jest w bascomie
    To dlaczego jest w temacie "asm", czyli popularny skrót od "asembler" ?
    spewak napisał:
    Jak ustawić watchdoga na 2 s nie korzystając z funkcji bascomowej??
    Bez względu na język programowania - zgodnie z notą katalogową. Jeśli nic tobie nie mówią nazwy bitów i rejestrów, to oznacza, że jeszcze tam nie zaglądałeś. Jak to można zrobić w asemblerze, przytoczyłem wyżej, a nagroda jest dla dociekliwych. ;)
  • #5 11402449
    spewak
    Poziom 10  
    chciałem zrobić wstawkę asemblerową dla watchdoga ale to już nie istotne bo nauczyłem się ustawiać poszczególne bity w rejestrach i rozumiem że to wystarczy... ale problem istnieje

    przesiadłem się na atmega1284p tu jest watchdog do 8 s no i dla 8 nie działa 4,2 i 1s również nie działa, działa dla 0,5 i mniej - dlaczego???


    dla 0,5 s
    wdr
    Wdtcsr = &B00011101
    Wdtcsr = &B00001101
    - to działa


    dla 1s
    wdr
    Wdtcsr = &B00011110
    Wdtcsr = &B00001110

    to już nie działa

    i nie pomagają bajery typu $initmicro, w ogóle nic nie pomaga kod jest długi, rejestry ustawiaja się prawidłowo bo w czasie programu są odczytywane. Próbowałem włączyc wdton ale wtedy procek cały czas się resetuje i nie da sie ustawić timera watchdoga. Środowisko - BASCOM :).

    fusebity : FF D7 FF
    rezonator kwarcowy 8000000

    dziś rano coś mi przyszło do głowy bo w całym programie jest zaszytych duzo resetów czy to możliwe że licznik watchdoga resetuje się gdzieś np. w procedurze obsługującej RTC albo zliczającej sekundy?? Chodzi o przerwania timera.
  • #6 11404236
    Konto nie istnieje
    Poziom 1  
REKLAMA