[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

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

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.