Widziałem teraz dwa przypadki z dsPIC 30F4013, w których kontroler resetuje się z powodu niezdefiniowanej pułapki. Dlaczego te pułapki były podnoszone przede wszystkim, wciąż pozostaje tajemnicą, ale to nie jest moje bezpośrednie pytanie. Zaczynam myśleć, że dobrą praktyką programistyczną jest zawsze definiowanie wszystkich pułapek, nawet jeśli pułapki nigdy nie powinny wystąpić, więc otrzymuję przynajmniej wyraźny komunikat o błędzie zamiast losowego resetowania. Czy to standardowa praktyka, o której nie wiem? Czy należy wziąć pod uwagę wady tej praktyki?
microcontroller
interrupts
reset
firmware
best-practice
Stephen Collings
źródło
źródło
Odpowiedzi:
Moja nieformalna zasada brzmi:
Jednak nawet bez tej reguły arkusz danych wyraźnie odpowiada na twoje pytanie:
( Źródło , sekcja 8.3, pierwsza uwaga)
Ponieważ nie możesz maskować pułapek, musisz sobie z nimi poradzić. Jeśli nie chcesz zajmować się pułapką w określony sposób, odpowiednią metodą jest wykonanie
RESET
instrukcji.źródło
Tak, to dobry pomysł - jedynym minusem jest nieco większy rozmiar kodu i musisz zdecydować, co zrobić z pułapką (wyemitować komunikat na porcie szeregowym? Włączyć lampkę „FAILED”? Dyskretnie uruchomić ponownie itp. )
źródło