Forum: Mikrocontroller und Digitale Elektronik LPC11C24 WD Reset


von Andi S. (sn0000py)


Lesenswert?

Ich würde gerne beim LPC11C24 den Watchdog aktivieren, der Controller 
sollte einen Reset machen wenn der Watchdog aktiviert wird.

mein letzer Versuch mit code aus dem INet zusammengesammelt wäre :
1
  Chip_WWDT_Init(LPC_WWDT);
2
  Chip_SYSCTL_PowerUp(SYSCTL_POWERDOWN_WDTOSC_PD);
3
  Chip_Clock_SetWDTOSC(WDTLFO_OSC_1_05, 20);
4
  Chip_Clock_SetWDTClockSource(SYSCTL_WDTCLKSRC_WDTOSC, 1);
5
6
  Chip_WWDT_SetTimeOut(LPC_WWDT, 2);
7
8
  Chip_WWDT_ClearStatusFlag(LPC_WWDT, WWDT_WDMOD_WDTOF);
9
10
  NVIC_ClearPendingIRQ(WDT_IRQn);
11
    NVIC_EnableIRQ(WDT_IRQn);
12
13
    /* Start watchdog */
14
    Chip_WWDT_Start(LPC_WWDT);

hat wer da ein funktionierendes Beispiel?

von temp (Gast)


Lesenswert?

1
void WDTFeed( void )
2
{
3
  LPC_WDT->FEED = 0xAA;  /* Feeding sequence */
4
  LPC_WDT->FEED = 0x55;
5
  return;
6
}
7
8
void WDTInit( int i10ms )
9
{
10
  LPC_SYSCON->BODCTRL=0x03 | (0x1<<4);
11
12
  // Settings for LPC1114
13
  // Enable clock to WDT */
14
  LPC_SYSCON->SYSAHBCLKCTRL |= (1<<15);
15
16
  // 7.81Khz
17
  LPC_SYSCON->WDTOSCCTRL = 0x03F; // FREQSSL 1 DIVSEL 64
18
  LPC_SYSCON->PDRUNCFG &= ~(0x1<<6);
19
20
  LPC_SYSCON->WDTCLKSEL = 0x02;  // Select watchdog osc 
21
  LPC_SYSCON->WDTCLKUEN = 0x01;  // Update clock 
22
  LPC_SYSCON->WDTCLKUEN = 0x00;  // Toggle update register once 
23
  LPC_SYSCON->WDTCLKUEN = 0x01;
24
  // Wait until updated 
25
  while ( !(LPC_SYSCON->WDTCLKUEN & 0x01) );  
26
27
  // Divided by 1 
28
  LPC_SYSCON->WDTCLKDIV = 1;  
29
30
  // ergibt bei ca. 7.8Khz 10s
31
  LPC_WDT->TC = i10ms * (78/4);  
32
33
  //WDEN | WDRESET;
34
  LPC_WDT->MOD = 0x03; 
35
36
  // mit der ersten Feeding sequence gehts los
37
  LPC_WDT->FEED = 0xAA;  
38
  LPC_WDT->FEED = 0x55;
39
}

von Andi S. (sn0000py)


Lesenswert?

hmmm kann es sein das ich mir damit meine LPC11C24 etwas zerschossen 
haben?

Wollte das obige testen, und nun kann ich dieses Gerät mit der 
LPCXpresso nicht mehr ansprechen - bekomme immer wenn ich debugen will 
den Fehler :
"reading core register failed-rc EP(08) Cannot access core reigster when 
target is running"

habe dann die Sachen wieder zurückgebaut, und funkt auch nicht, 
umgesteckt auf ein anderes Device funktioniert sofort wieder.

von temp (Gast)


Lesenswert?

Wenn der Watchdog zuschlägt gibt es einen Reset. Du musst schon in 
deinem Hauptprogramm WDTFeed() ausreichend oft aufrufen.
Wenn bei den LPCs nichts mehr geht, dann hilft es die Bootloaderpins so 
zu beschalten, dass er in den Bootloader sspringt nach Reset. Dann 
sollte sich auch wieder ein Programm flashen lassen ohne vom Watchdog 
unterbrochen zu werden.

von Lutz (Gast)


Lesenswert?


von Andi S. (sn0000py)


Lesenswert?

okay danke läuft nun wieder!

danke an euch zwei :D

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.