SAM4E Watchdog lässt sich nicht aktivieren

OP #5122160
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
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

Eine eigene Frage? Dieser Thread ist über 9 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.