[LPC2148] power down will nicht

OP #2656476
Lesenswert?

Hallo,

meine bisherigen Versuche den LPC2148 in den power down Modus zu 
versetzen gingen leider schief. Lange Recherchen im Netz haben mir 
leider auch nicht weitergeholfen, deshalb dieser Thread.
Der Unterprogramm-code:
1
void power_down()
2
{
3
  PINSEL0 |= 0xC000;  // PIN-funktion fuer P0.7 setzen (EINT2)
4

5
  INTWAKE = 0x04;   // P0.7 als interrupt-quelle
6
  EXTMODE = 0x04;   // fuer flanke konfigurieren
7
  EXTPOLAR = 0x04;  // und konfigurieren fuer steigende flanke
8
  VICIntEnClr = 0xFFFFFFFF;        // alles bisherige loeschen
9
  VICIntSelect = 0x00000000;       // jetzt alle interrupts IRQ
10
  VICVectAddr0 = (unsigned long)isr; // adresse fuer wakeup-code setzen
11
  VICVectCntl0 = (0x20 | 16); // benutze EINT2 
12
  VICIntEnable = 0x00010000;  // enable
13

14
  PCON = 0x02;  // power down LPC
15
  return;
16
}
17

18
void __attribute__ ((interrupt("IRQ"))) isr(void)
19
{
20
  EXTINT = 0x04;  // bit wieder loeschen
21

22
  VICVectAddr = 0;
23
}

Zum "Wecken" soll der Interrupt-Pin EINT2 verwendet werden.
Im Hauptprogramm wird nur die Clock initialisiert (60Mhz), UART 
initialisiert, Pin-Funktionen für UART gesetzt und die power_down() 
Funktion aufgerufen.

Was habe ich vergessen oder falsch gemacht?

Danke im vorraus,
Fabian
OP #2657284
Lesenswert?

Gut, dass Dummheit nicht weh tut (:
Ich habe im wakeup-isr das entsprechende Bit in EXTINT gelöscht, da im 
Datenblatt steht, dass ein wakeup-code genau das tun soll.
Die Lösung: Das Bit muss auch gelöscht werden, bevor die MPU ein erstes 
Mal in den power-down Modus versetzt wird. Von dem steht allerdings 
nichts im Datenblatt.

Jetzt funktioniert der Code soweit, aufwecken mit touchscreen an EINT2 
funktioniert ebenfalls und wakeup-code wird auch aufgerufen.

Leider werden die ersten vier Zeichen nach dem Aufwecken falsch gesendet 
(UART0), alle ab dem 4.Zeichen allerdings problemlos. Eine kurze 
Wartezeit half leider nichts.
Was könnte die Ursache dafür sein?

Danke im vorraus
Fabian

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