LPC2138 Power-down

OP #1285743
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
Angehängte Dateien:
Gast #1286417
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
OP #1287228
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
Gast #1287669
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?!

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