Forum: Mikrocontroller und Digitale Elektronik [LPC2148] power down will nicht


von Fabian K. (fabian_k)


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

von Fabian K. (fabian_k)


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

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.