Forum: Mikrocontroller und Digitale Elektronik LPC2138 Power-down


von Daniel D. (dale)


Angehängte Dateien:

Lesenswert?

Hallo zusammen,

ich habe das Problem, dass der Mikrocontroller LPC2138 zu viel Strom im 
Power-down Modus verbraucht.

Die Application Notes AN10421 und AN10404 sind mir bekannt und habe ich 
auch beachtet.

Der Stromverbrauch beläuft sich auf ca. 500 µA.

100 µA verursachen die beiden Pull-downs an P1.26 und P1.29. Den Rest 
kann ich mir jedoch nicht erklären.

Der Code ist recht unspektakulär. Es wird zum Messen des Stromverbrauchs 
lediglich in den Power-Down Modus gewechselt.

Schaltplan ist angehängt. Vielleicht fällt euch noch etwas dazu ein.

Gruß Daniel

von Steff (Gast)


Lesenswert?

Hallo,
ein Problem mit dem Power Down hab ich auch.Hab zwar keine Lösung für 
dein Problem, aber hätte eine Frage an dich.
Bin relativ unerfahren was dies betrifft. Bin grad dabei meinen LPC in 
den Ruhemodus zu versetzen und durch eine externe Uhr wieder 
aufzuwecken.
Hast du sowas schonmal gemacht? Häng grad an den Voreinstellungen für 
die Interrupts.
Wäre nett wenn du mir weiterhelfen könntest

von (prx) A. K. (prx)


Lesenswert?

VBAT auf Masse kommt mir etwas seltsam vor.

von Daniel D. (dale)


Lesenswert?

Steht so im Datenblatt.

Auszug:

If the RTC is used, VBAT must be connected to either pin V3 or an 
independent power
supply (external battery). Otherwise, VBAT should be tied to the ground 
(VSS).

von holger (Gast)


Lesenswert?

Schliess doch mal VDDA3 und VSSA an.

von Daniel D. (dale)


Lesenswert?

Hallo Steff,

was genau möchtest du wissen?

Deine Uhr muss einen digitalen Ausgang haben den du an die Wake-up 
fähigen externen Interrupt-Pins anbindest. Z.B. EINT0 beim LPC2138. Dann 
den Vektor Interrupt Controller entsprechend konfigurieren und den 
Prozessor schlafen legen (PCON |= 0x6;)

Wichtig: Nach dem du wieder aufgewacht bist, muss du die PLL wieder 
initialisiern.

Gruß

Daniel

von Steff (Gast)


Lesenswert?

Hab hier den EINT3 genommen. Hab halt sehr große Probleme weil ich 
nicnht genau weiß was und wie ich den Interrupt initialisieren muss.
Hab die Initialisierung bis jetzt so geschreiben:
  PINSEL1     |= 0x20000000;              //P0.30 als EINT3
  IODIR0      &= ~(0x0001 << 29);         //Set P0.30 als Eingang


  EXTWAKE     = 0x08;                     // to wake up on EINT3
  EXTINT      = (0x0001 << 17);             // to clear EXTINT3
  EXTMODE     = 0x08;

  VPBDIV=0;
  VICIntEnClr = 0xFFFFFFFF;             // Alle Interrupts löschen
  VICIntSelect= 0x00000000;                   // Alle Interrupts als IRQ
  VICVectAddr3= (unsigned long)ISR_WakeUp;
  VICVectCntl0= (1<<17) | VIC_EINT3;       // EINT3
  VICIntEnable= (0x0001 << VIC_EINT3);          // EINT3

Hauptaufgabe ist: Vom Mikrocontroller über i2c eine Alarmzeit der 
externen Uhr vorzugeben. Wird der Alarm ausgelöst soll der externe 
Interrupt ausgelöst werden an EINT3.Hier soll dann nur abgefragt werden 
ob ein Interrupt statt fand. War dies der Fall soll kurz die Messdaten 
eingelesen werden(Dies hab ich schon verwirklicht). Brauch ich 
eigentlich VICVectAddr3 und  VICVectCntl0 wenn ich danach nur abfrag ob 
ein Interrupt stattgefunden hat?
Ich leg den MIkrocontroller mit PCON    = 0x02;  schlafen?!

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.