Hallo, ich habe ein bisschen mit den Beispielprogrammen von Keil rumgespielt und komme auch mit lesen der Datenblätter nicht so ganz weiter. Und zwar gelingt es mir dne Controller in einen sleep modus zu versetzen, jedoch nicht wieder daraus über einen Interrupt aufzuwecken. Über das RESET Signal funktioniert es zwar, aber das ist nicht Sinn und Zweck. Das Programm befindet sich im Anhang. Kurz zur erklärung: Es läuft ein Lauflicht über 8 LEDs, sobald der Taster für die dne Power down Modus gedrückt wird P3[25] legt der Controller sich schlafen, sobald P2[10] gedrückt wird soll er wieder aufwachen (Externes Interrupt) Vielen Dank für die hilfe =)
1 | #include "lpc17xx.h" |
2 | #include "type.h" |
3 | #include "extint.h" |
4 | |
5 | |
6 | void main(void) |
7 | {
|
8 | /***********PINs einstellen**********/
|
9 | |
10 | /*************LEDs******************/
|
11 | |
12 | LPC_GPIO2 -> FIODIR |= 0xFF; // P2[0..7] Ausgänge |
13 | LPC_GPIO2 -> FIOCLR |= 0xFF; // alle Pins ausschalten |
14 | |
15 | /************Taster****************/
|
16 | |
17 | LPC_GPIO3 -> FIODIR &= (1<<25); // P3[25] Eingang |
18 | |
19 | /************Interrupt*************/
|
20 | |
21 | LPC_PINCON->PINSEL4 &= ~(0x03<<20); // Reset des Pins |
22 | LPC_PINCON->PINSEL4 |= (0x01<<20); // Config P2.10 = EINT0 |
23 | LPC_GPIOINT->IO2IntEnF = 0x200; // Port2.10 is falling edge. |
24 | LPC_SC->EXTMODE = EINT0_EDGE; // INT0 edge trigger |
25 | LPC_SC->EXTPOLAR = 0; // INT0 is falling edge by default |
26 | NVIC_EnableIRQ(EINT0_IRQn); // Enable IRQ for EINT0 |
27 | |
28 | while(1) |
29 | {
|
30 | if (!(LPC_GPIO3 -> FIOPIN & (1<<25))) |
31 | {
|
32 | LPC_GPIO2 -> FIOPIN = 0xFF; |
33 | SCB -> SCR = 0x04; |
34 | __WFI(); |
35 | }
|
36 | |
37 | }
|
38 | |
39 | }
|
40 | |
41 | void EINT0_IRQHandler (void) |
42 | {
|
43 | LPC_SC->EXTINT = EINT0; //clear interrupt |
44 | LPC_GPIO2 -> FIOCLR = 0xFF; |
45 | }
|
So hier nocheinmal in einer kürzeren Form selbes Problem
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.