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

[ATtiny2313][Bascom] Odczytywanie źródła resetu (watchdog)

LED5W 24 Wrz 2010 22:49 4191 22
REKLAMA
  • #1 8547356
    LED5W
    Poziom 34  
    Witam
    Mam problem z odczytaniem źródła resetu, a konkretnie tylko resetu od watchdoga. Napisałem specjalnie prosty program:
    Cls : Cursor Off
    Dim Count As Word
    Start Watchdog
    Lcd Mcusr                 'pokaż źródło resetu
    Mcusr = 0
    
    Do
       'Pokaż, że uC nie został jeszcze zresetowany
       Incr Count
       Locate 2 , 1 : Lcd Count
       Waitms 500
       Loop

    Jeżeli zresetuję µC przez pin reset lub przez odłączenie zasilania to otrzymuję odpowiednią liczbę, a jeżeli nic nie zrobię i zadziała watchdog to otrzymuję 0.
    W czym jest problem?
  • REKLAMA
  • #2 8547412
    alien_audio
    Poziom 21  
    musisz najpierw dać:
    Config Watchdog = 1024
  • #3 8547696
    LED5W
    Poziom 34  
    Dlaczego? To nic nie daje poza skróceniem czasu.
  • #4 8548173
    janbernat
    Poziom 38  
    A spróbuj dać Start Watchdog PO Lcd Mcusr.
  • REKLAMA
  • #5 8548866
    LED5W
    Poziom 34  
    Nic to nie daje. :(
  • #6 8549439
    janbernat
    Poziom 38  
    To jeszcze $NOINIT na początku.
    Bo normalnie jest- i wyłącza watchdoga.
  • REKLAMA
  • #7 8550050
    LED5W
    Poziom 34  
    Dopisałem, ale jak mam teraz inicjalizować procesor?
    Wkleiłem wstawkę asm z helpa (dopisując przed ; ', bo bascom nie akceptuje ; jako komentarza). Mam błąd 60 - duplicate label _basicstart i _clearram. Proszę o pomoc, bo asm nie znam.

    Dodano po 5 [godziny] 31 [minuty]:

    Wiem już dlaczego był ten błąd. Doczytałem w helpie, że ta dyrektywa nie usuwa całej inicjalizacji, tylko:
    Cytat:
    Różnica polega na tym, że brak jest tu konfiguracji procedur obsługi przerwań.

    (c) Zbigniew Gibek, 2002-2005 (c) MCS Electronics, 1999-2005

    Choć wydaje mi się, że jeszcze coś się usuwa, bo nawet LCD się nie inicjalizuje. Ale watchdog dalej jest (tzn. wg. helpa).
  • Pomocny post
    #8 8581208
    janbernat
    Poziom 38  
    Jakoś czarno to widzę- nawet jak jest $noinit to i tak kasuje watchdoga.
    W Bascomie.
    Może jakoś zrobić swoje $noinit_1 swoje.
    Ale jak- to nie wiem.
    Wystarczyło by usunąć polecenia kasowania watchdoga.
  • #9 8583425
    Krauser
    Poziom 26  
    Może pomyśl o przesiadce na C (WinAVR) tam zrobisz to prościej i bez mieszania do tego assemblera.
  • #10 8583696
    LED5W
    Poziom 34  
    janbernat napisał:
    Może jakoś zrobić swoje $noinit_1 swoje.
    Ale jak- to nie wiem.
    No, chyba tego się nie da usunąć (chyba, że w edytorze "ręcznego programatora")... :(

    C będę się uczył, muszę sobie jakiś programator współpracujący z AVR Studio złożyć. ;) Ale nie będę tutaj ot robił. :P
  • REKLAMA
  • Pomocny post
    #11 8584314
    Jaca
    Poziom 31  
    Rozwiązanie:

    Dim Mcureg As Byte
    Dim Watchdog_flag As Byte
    
    Mcureg = Peek(0)
    If Mcureg.wdrf = 1 Then                                 ' Czy uruchomienie wywołał WATCHDOG ?
       Watchdog_flag = 1
    End If
    
  • #12 8586311
    LED5W
    Poziom 34  
    Człowieku, jesteś genialny. :D
    Dzięki.
    Mógłbyś jeszcze napisać skąd się to wzięło, tzn. skąd wiesz, że w R0 jest wartość MCUSR?
  • Pomocny post
    #13 8586399
    Jaca
    Poziom 31  
    LED5W napisał:
    Człowieku, jesteś genialny. :D
    Dzięki.
    Mógłbyś jeszcze napisać skąd się to wzięło, tzn. skąd wiesz, że w R0 jest wartość MCUSR?


    :) ...z dokumentacji BASCOM'a 1.12.0.0 (Config Watchdog - na samym końcu strony) bo sam niedawno tego szukałem
  • #14 8586625
    Krauser
    Poziom 26  
    Jest jeszcze coś takiego jak $INITMICRO
  • #15 8603496
    LED5W
    Poziom 34  
    No tak, dlaczego a w takich sytuacjach nie porównuję polskiego helpa z ang.? :P

    Krauser napisał:
    Jest jeszcze coś takiego jak $INITMICRO
    Jakoś mi to średnio działa, jak mi się będzie nudzić to się tym głębiej zainteresuję. :P Ale jakby Ci się chciało to daj działający kod. ;)
  • #16 8603538
    Freddy
    Poziom 43  
    Jaca napisał:
    LED5W napisał:
    Człowieku, jesteś genialny. :D
    Dzięki.
    Mógłbyś jeszcze napisać skąd się to wzięło, tzn. skąd wiesz, że w R0 jest wartość MCUSR?


    :) ...z dokumentacji BASCOM'a 1.12.0.0 (Config Watchdog - na samym końcu strony) bo sam niedawno tego szukałem

    Ciekawe skąd takiego Bascoma wziąłeś ? Producent wypuścił dopiero wersję 1.11.9.8 :)
  • #17 8613691
    pagask
    Poziom 12  
    demo tak, jest tylko 1.11.9.8, ale pełna wersja dla zarejestrowanych userów jest już 1.12.0.0 i to chyba ze 3 miesiące
    ...

    w ich dziale download help w pdfie też jest już do wersji 1.12.0.0 (sądząc po dacie helpa to ta wersja jest dostępna od 10 sierpnia)
  • #18 8613810
    Freddy
    Poziom 43  
    pagask napisał:
    demo tak, jest tylko 1.11.9.8, ale pełna wersja dla zarejestrowanych userów jest już 1.12.0.0 i to chyba ze 3 miesiące
    ...

    w ich dziale download help w pdfie też jest już do wersji 1.12.0.0 (sądząc po dacie helpa to ta wersja jest dostępna od 10 sierpnia)

    Ciekawe, bo na stronie www.mcselec.com w "News" jako ostatnio wypuszczona pełna wersja jest właśnie 1.11.9.8 i wcale się nie chwalą nową wersją 1.12.0.0. Twoja wersja 1.12.0.0 jest mocno podejrzana.
  • #19 8617759
    Jaca
    Poziom 31  
    Freddy, mogę Ci powiedzieć, że wersja 1.12.0.0 już jest stara. Dostępna jest już wersja 2.0.0.0 do ściągnięcia dla zarejestrowanych użytkowników.
  • #20 8618045
    Freddy
    Poziom 43  
    Jaca napisał:
    Freddy, mogę Ci powiedzieć, że wersja 1.12.0.0 już jest stara. Dostępna jest już wersja 2.0.0.0 do ściągnięcia dla zarejestrowanych użytkowników.

    OK, ciekawe tylko dlaczego sie tym nie chwalą.
  • #22 8691692
    Freddy
    Poziom 43  
    Kurcze faktycznie, dawno nie zaglądałem na ich stronę :) Tylko czemu mi sie upgrade nie zrobił ?
  • #23 9363547
    LED5W
    Poziom 34  
    Temat zamykam.
REKLAMA