LPC11C24 WD Reset

#5768445
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?
Gast #5768463
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
}
#5768559
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.
Gast #5768608
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.

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