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

[Rozwiązano] [XMEGA] Jak działa rejestr RST.STATUS przy różnych typach resetu?

karbiuch 10 Kwi 2018 16:50 729 6
  • #1 17160150
    karbiuch
    Poziom 6  
    Witam,

    Zauważyłem, że xmegi ładnie pokazują status resetu. Dla pewności wole się dopytać. Jeżeli urządzenie jest stale podłączone do zasilania i monitoruje je za pomocą np. rs232 to po wystąpieniu BOD flaga RST.STATUS przyjmie wartość np. 0x04? Natomiast jeżeli wystąpi inny reset to rejestr ten zostanie zaktualizowany o dodatkową wartość np. 0x02? W takim wypadku RST.STATUS będzie wskazywał = 0x06? Czyli rozumiem, że zanim Atmega się zresetuje to zapisuje informację o resecie gdzieś w swoich peryferiach i przechowuje ją do czasu aż odłączę ją od zasilania? Czyli w teoria jeżeli umiałbym kasować RST.STATUS to przy podłączonej ciągle do zasilania atmedze mógłbym wykrywać wybrany reset? Dobrze rozumiem po co ten rejestr został stworzony?
  • Pomocny post
    #3 17160369
    Konto nie istnieje
    Konto nie istnieje  
  • #5 17160616
    karbiuch
    Poziom 6  
    Dzięki za rozjaśnienie. Poprzeglądałem pliki źródłowe. Napisałem sobie funkcje, która rozpoznaje rodzaj błędów - działa. Natomiast jak wyzerować ten rejestr RST.STATUS?

    próbowałem wyzerować rejestr tak:
    a) RST.STATUS = RST_PORF_bm | RST_EXTRF_bm | RST_BORF_bm | RST_WDRF_bm | RST_PDIRF_bm | RST_SRF_bm | RST_SDRF_bm;
    b) RST.STATUS = 0x0;

    bez skutku. Rejestr nadal pamięta stare błędy. Chciałem zrobić zliczanie ile razy zresetowałem programowo procesor. Jednak flaga resetu ciągle ma tą sama wartość. Przez to mogę rozpoznać reset, ale nie mogę ich zliczać. Jak wyzerować RST.STATUS ?

    Fajne te xmegi :)
  • Pomocny post
    #6 17160634
    Konto nie istnieje
    Konto nie istnieje  
  • Pomocny post
    #7 17160730
    tmf
    VIP Zasłużony dla elektroda
    @karbiuch Według noty bity te kasuje się poprzez zapis na odpowiadającej im pozycji wartości 1. Czyli twój zapis a) jest poprawny. Sprawdź czy błąd nie wynika z czegoś innego.
REKLAMA