Grüße euch, Ich hab den Phytec LPC2294 HD 200 Evaluationsboard. Da ist ein Push-Button "S3" drauf, der am Pin0.20 angeschlossen ist. Ich hab es als externe Interruptquelle konfiguriert, doch der Button löst kein externes Interrupt aus. Der Quellcode: #include <LPC22XX.H> void fiqint (void) __fiq { int var1 = 3; EXTINT = 0x00100000; // Clear the peripheral interrupt flag while(1) { var1 = 2; } } int main(void) { int var1 = 0; IODIR0 = 0x00100000; // Push-Button als Eingang konfigurieren PINSEL0 = VICIntEnable = 0x00100000; // Push-Button als externe // Interruptquelle konfigurieren VICIntSelect = 0x00100000; // Push-Button-Interrupt führt zum FIQ-Modus while(1) { var1 = 2; } return 0; } Kann mir da mal bitte jemand weiterhelfen?
Sry der Code ist folgender: #include <LPC22XX.H> /* LPC22XX Peripheral Registers */ void fiqint (void) __fiq { int var1 = 3; EXTINT = 0x00100000; // Clear the peripheral interrupt flag while(1) { var1 = 2; } } int main(void) { int var1 = 0; IODIR0 = 0x00100000; // Push-Button als Eingang konfigurieren PINSEL0 = 0x00000180; VICIntEnable = 0x00100000; // Push-Button als externe Interruptquelle // konfigurieren VICIntSelect = 0x00100000; // Push-Button-Interrupt führt zum FIQ-Modus while(1) { var1 = 2; } return 0; }
Michael schrieb: > doch der Button löst kein externes > Interrupt aus. Wie stellst Du das fest? Ne Endlosschleife im Interrupt, auf die Idee muß man erstmal kommen. Und auf ne write-only Variable. Peter
Wie ich das feststelle. Ich steppe das gesamte Programm im Debugger durch. Kannst du bitte etwas genauer erklären wo das Problem liegt ? (Ich weiß : IODIR0 muss der Pin auf 0 gesetzt werden) gruß
Einen Button detektiert man nie (!) per interrupt. Mach's im Timer gesteuerten Loop im Main.
Ich hab den Code aktualisiert. Aber der Button löst noch immer kein Interrupt aus. Bin verzweifelt. Kann mir mal jemand bitte helfen?: void FIQ_Handler (void) __fiq { EXTINT = 0x00100000; // Clear the peripheral interrupt flag IOCLR0 = 0x00000100; } int main(void) { int var1 = 0; IODIR0 = 0x00000100; // Push-Button als Eingang // konfigurieren und D3 als Ausgang PINSEL0 = 0x00000300; // Push-Button als EINT3 einstellen EXTMODE = 0x00000008; // Push-Button :edgesensitive- // Modus(Flankenmodus) EXTPOLAR = 0x0000008; // Push-Button : Interrupt beim // Loslassen des Buttons (Wechsel // zum Hochpegel) VICIntEnable = 0x00100000; // Push-Button als externe // Interruptquelle konfigurieren VICIntSelect = 0x00100000; // Push-Button-Interrupt führt zum // FIQ-Modus while(1) { IOCLR0 = 0x00000100; } return 0; }
Niemand hat Lust, erst Datenblätter wälzen zu müssen, was Deine ganzen kryptischen Hexwerte bedeuten. Irgendein Wert wird wohl falsch sein, z.B. ein falscher Pin. Es gibt bestimmt vordefinierte Macros, die einen sprechenden Namen haben, benutze diese. Dann siehst Du besser durch und ein Leser auch. Peter
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.