Pytanie:
Reset watchdoga ARM
brokenlcd
2010-01-07 03:41:49 UTC
view on stackexchange narkive permalink

Mam płytkę rozwojową MP3, którą wybrałem z Sparkfun, która działa z procesorem ARM LPC2148. Przeglądając kod, widzę funkcję wymuszającą reset watchdoga. Moje pytanie brzmi, jak dowiedzieć się, jakie wartości podać do rejestru watchdog? Przejrzałem arkusz danych LPC2148 i nie mogłem tego rozgryźć. Nie chcę tylko używać kodu innych ludzi, chcę zrozumieć, dlaczego zrobili to, co zrobili i jak zorientowali się, co zrobić.

Trzy odpowiedzi:
#1
+5
Leon Heller
2010-01-07 06:07:05 UTC
view on stackexchange narkive permalink

Oto kod, którego używam dla LPC2148:

WDTC = 0x00000FFF; // bardzo krótki limit czasu

WDMOD = 0x03; // watchdog resetuje procesor

WDFEED = 0xAA; // uruchom watchdog

WDFEED = 0x55;

0xAA i 0x55 są często używane w tego rodzaju kodzie, który ma duży wpływ na aplikację, ponieważ jest mało prawdopodobne, aby wystąpiły podczas normalnego wykonywania kodu. - Leon Heller
#2
+4
Malkocoglu
2010-01-07 16:05:42 UTC
view on stackexchange narkive permalink

Z arkusza danych LPC23XX, powinno być takie samo dla LPC2148 ::

Rejestr sekwencji kanałów Watchdog. Zapisanie 0xAA, po którym następuje 0x55 w tym rejestrze, powoduje ponowne załadowanie licznika czasu Watchdog wartością zawartą w WDTC.

#3
+3
akohlsmith
2010-07-21 01:58:55 UTC
view on stackexchange narkive permalink

Wygląda na to, że próbujesz wymusić reset watchdoga, a nie powstrzymywać go przed zresetowaniem. Osiąga się to przez zacięcie: podanie watchdoga 0xaa, po którym następuje wartość INNA niż 0x55. Przykład:

  WDFEED = 0xAA; / * Prawidłowy posuw ... * / WDFEED = 0x00; / * ... Ups, natychmiastowy reset! * /  


To pytanie i odpowiedź zostało automatycznie przetłumaczone z języka angielskiego.Oryginalna treść jest dostępna na stackexchange, za co dziękujemy za licencję cc by-sa 2.0, w ramach której jest rozpowszechniana.
Loading...