Button - Interrupt

Gast #2786103
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?
Gast #2786109
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;
}
Gast #2786211
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ß
Gast #2786268
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;
}
#2786605
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

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 14 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.