SAM4E Watchdog lässt sich nicht aktivieren

OP #5122160
Lesenswert?

Hallo zusammen,

ich habe zwei Boards mit einem SAM4E
- Atmel SAM4E X-Plained
- Eigenes User-Board

Auf dem Atmel Board habe ich das Watchdog Beispiel aufgespielt und dort 
funktioniert alles.

Nun wollte ich auf meinem Board den Watchdog aktivieren, leider 
beschreibt er die Register überhaupt nicht - Habs mir Step für Step im 
Debug mode angeschaut.

Was könnte ich übersehen?

1
bool sys_wdt_init(void)
2
{
3
  uint32_t wdt_mode;
4
  uint32_t timeout_value;
5

6
  timeout_value = wdt_get_timeout_value(WDT_TIMEOUT * 1000, BOARD_FREQ_SLCK_XTAL);
7

8
  if (timeout_value == WDT_INVALID_ARGUMENT)
9
  {
10
    return false;
11
  }
12

13
  /* Konfiguration */
14
  wdt_mode =  WDT_MR_WDFIEN  |
15
        WDT_MR_WDRPROC  |  
16
        WDT_MR_WDDBGHLT |
17
        WDT_MR_WDIDLEHLT;
18

19
  wdt_init(WDT, wdt_mode, timeout_value, timeout_value);
20

21
  NVIC_DisableIRQ(WDT_IRQn);
22
  NVIC_ClearPendingIRQ(WDT_IRQn);
23
  NVIC_SetPriority(WDT_IRQn, 0);
24
  NVIC_EnableIRQ(WDT_IRQn);
25

26
  return true;
27
}
OP #5122352
Lesenswert?

Also das "Problem" habe ich nun gefunden - verstehen tu ich es jedoch 
nicht.

Mein Bootloader hat den WDT deaktiviert, bzw. im Bsp. wäre es in der 
board_init():
1
#ifndef CONF_BOARD_KEEP_WATCHDOG_AT_INIT
2
    /* Disable the watchdog */
3
    WDT->WDT_MR = WDT_MR_WDDIS;
4
#endif

Nun stellt sich mir die frage: Warum kann man den WDT nach einem 
'disable' nicht wieder einschalten? Weder wdt_init() noch wdt_restart() 
ändert etwas an den Bits.

Siehe Anhang:
Bild 1 - Nach System-Start
Bild 2 - Nach 'disable' und ebenfalls nach dem Init.-Versuch.

---
Edit:
Problem ist gelöst - Hatte einen Satz im Datenblatt "überlesen" :-(

WDT_MR can be written only once. Only a processor reset resets it.

Trotzdem Danke ;) ...peinlich, peinlich

Toll find ich das jedoch nicht. Mein Ansatz wäre nämlich:
- WDT disable
- System-Init. durchführen
- WDT enable
Angehängte Dateien:

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren