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
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
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).
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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.