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

Amega16 sprawdzanie flag reset

panbosman 19 Sty 2012 11:17 1347 5
REKLAMA
  • #1 10418041
    panbosman
    Poziom 12  
    Cytat:
    Aby korzystać z flag resetu do rozróżniania poszczególnych warunków wystąpienia resetu, użytkownik powinien odczytać i dopiero później resetować MCUCSR najwcześniej jak tylko to możliwe w programie. Jeżeli rejestr ten
    jest wyzerowany nim zajdzie inny reset, źródło resetu może zostać ustalone poprzez sprawdzanie flag reset.


    Atmega sterująca piecem co resetuje się. Czasem raz na dzień, czasami kilka razy na godzinę. Nie jest to związane ze sterowaniem silników itd, sprawdzałem to.
    Szukając w necie znalazłem kolka stron, gdzie były takie stwierdzenia jak ten cytat.
    Pytanie: Odczytać MCUCSR mam po resecie Atmegi? Zapisuje sobie ona przyczynę resetu, czy jak? Jak ustawić te flagi by je potem sprawdzić?
  • REKLAMA
  • #2 10418151
    excray
    Poziom 41  
    Nie. Po prostu jako pierwszą czynność w programie (oczywiście po ustawieniu stosu o ile piszesz w asm) odczytaj rejestr MCUCSR i wyświetl/zapisz sobie stan 5 najmłodszych bitów. Następnie korzystając z datasheet możesz sprawdzić co wywołało reset.
    Na ten przykład:
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod

    Procedury zostały wymyślone ale z opisu możesz domyślić się ich działania. I teraz jeśli po takim resecie na ekranie wyświetli Ci się 4 czyli 0b00000100 to znaczy że reset wywołał Brown-out detector czyli napięcie zasilające musiało się zmienić i wyjść poza dopuszczalny zakres.
  • REKLAMA
  • #3 10418260
    panbosman
    Poziom 12  
    Po odłączeniu zasilania i włączeniu procka też odczytam co spowodowało reset?
    Czy tylko wtedy kiedy nie zostanie odłączone napięcie.

    Druga sprawa. Skoro ma być reset np. BORF: flaga resetu przy obniżonym napięciu sieci, to czy można wcześniej zapisać do EEproma jakieś ważne dane?
  • REKLAMA
  • Pomocny post
    #4 10418275
    Mundi1970
    Poziom 24  
    Przy odłączeniu i włączeniu ustawi bit PORF (Power-On Reset), a resztę skasuje.
    Amega16 sprawdzanie flag reset
  • REKLAMA
  • Pomocny post
    #5 10418331
    excray
    Poziom 41  
    panbosman napisał:
    Druga sprawa. Skoro ma być reset np. BORF: flaga resetu przy obniżonym napięciu sieci, to czy można wcześniej zapisać do EEproma jakieś ważne dane?

    Zdecydowanie nie należy nic zapisywać do EEPROM przy obniżonym napięciu. Poza tym BOD nie wystawia żadnej flagi przerwania którą mógłbyś wykorzystać. On po prostu resetuje układ o ile jest włączony a następnie ustawia flagę BORF w MCUCSR. Jeśli chcesz wykrywać zaniki/spadki napięcia to musisz to zrobić programowo - ADC i cykliczny pomiar Vcc. Zresztą jak wspomniałem nie należy nic zapisywać do EEPROM przy obniżonym napięciu.
  • #6 10418400
    panbosman
    Poziom 12  
    Dziękuję za odpowiedzi. Dla mnie sprawa jest jasna.
REKLAMA