Moin!
Ich zweifel solangsam an meiner Intelligenz. Ich versuche auf einem
AT91SAM7X256 den Watchdog zu konfigurieren. Ich habe schon verschiedene
Wege ausprobiert:
1 | AT91C_BASE_WDTC->WDTC_WDMR = AT91F_WDTGetPeriod(1000) | //Watchdog Counter Value
|
2 | (AT91F_WDTGetPeriod(1000) << 16) | //Watchdog Delta Value
|
3 | AT91C_WDTC_WDRSTEN | //A Watchdog fault triggers a Watchdog reset
|
4 | AT91C_WDTC_WDRPROC; //A Watchdog fault activates the processor reset
|
1 | AT91C_BASE_WDTC->WDTC_WDMR = 250 | //Watchdog Counter Value
|
2 | (250 << 16) | //Watchdog Delta Value
|
3 | AT91C_WDTC_WDRSTEN | //A Watchdog fault triggers a Watchdog reset
|
4 | AT91C_WDTC_WDRPROC; //A Watchdog fault activates the processor reset
|
usw.
Allerdings startet dann der ARM nicht mehr (oder stürzt sofort ab).
Schalte ich den WD aus mit
1 | AT91C_BASE_WDTC->WDTC_WDMR = AT91C_WDTC_WDDIS;
|
dann läuft alles los.
Reseten tue ich ihn dann mit
1 | AT91F_WDTRestart(AT91C_BASE_WDTC); //Restart the Watchdog Timer
|
bzw.
1 | AT91C_BASE_WDTC->WDTC_WDCR = 0xA5000001;
|
Was mache ich falsch?