www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Externer Interrupt PIC24FJ128GA106


Autor: dieter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich bekomme meine externen Taster per Interrupt nicht zum Laufen.
Ich hatte da ganze zunächst ohne Interrupt probiert. Da funktioniert 
alles. Taster sind hardwareseitig entprellt.
Er springt nicht in die Interrupt-Routinen.

PIC24FJ128GA106 und die Taster sind an PIN42 (RTCC/RP2/CN53/RD8)
und PIN 14 (AN2/C2INB/RP13/CN4/RB2)
void init_taster(void){      //wird in main aufgerufen
  //Taster 1
  RPINR0bits.INT1R = 2;    //Pin für Interrupt bestimmen
  
  _INT1EP = 1;                        // negative Flanke 
    _INT1IP = 1;                        // Priorität 
    _INT1IF = 0;                        // clean flag 
    _INT1IE = 1;                        // enable external interrupt
    
    //Taster 2
    RPINR1bits.INT2R = 13;    //Pin für Interrupt bestimmen
    
    _INT2EP = 0;                        // positive Flanke 
    _INT2IP = 1;                        // Priorität
    _INT2IF = 0;                        // clean flag 
    _INT2IE = 1;                        // enable external interrupt
  
}

//--------------------------------------------------------------------
// Taster externer Interrupt
//--------------------------------------------------------------------
void __attribute__ ((__interrupt__, no_auto_psv)) _INT1Interrupt(void){
  
  LED_GRUEN = AN;
  LED_ROT = AUS;

  _INT1IF = 0;  
}

//--------------------------------------------------------------------
// Taster externer Interrupt
//--------------------------------------------------------------------
void __attribute__ ((__interrupt__, no_auto_psv)) _INT2Interrupt(void){
  
  LED_GRUEN = AUS;
  LED_ROT = AN;

  _INT2IF = 0;  
}
Hat vielleicht jemand einen Tipp, was ich vergesen haben könnte oder 
falsch gemacht habe.

Gruß
dieter

Autor: dieter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ok, Interrupt1 läuft schonmal. Ich hatte die init an der falschen 
Stelle.
Das der Interrupt2 nicht läuft liegt wohl vermutlich daran, dass das 
auch ein analoger ist?
Da muß wohl irgendwo noch irgendwas gesetzt werden. :(

Autor: Manuel (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ja Pins auf digital schalten

  // Alle Pin auf digital setzen
  //-----------------------
  AD1PCFGL = 0xFFFF;
  AD1PCFGH = 0xFFFF;

Gruss Manuel

Autor: dieter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke schön, das war's. Läuft jetzt super!

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.