Forum: Mikrocontroller und Digitale Elektronik Externer Interrupt PIC24FJ128GA106


von dieter (Gast)


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)
1
void init_taster(void){      //wird in main aufgerufen
2
  //Taster 1
3
  RPINR0bits.INT1R = 2;    //Pin für Interrupt bestimmen
4
  
5
  _INT1EP = 1;                        // negative Flanke 
6
    _INT1IP = 1;                        // Priorität 
7
    _INT1IF = 0;                        // clean flag 
8
    _INT1IE = 1;                        // enable external interrupt
9
    
10
    //Taster 2
11
    RPINR1bits.INT2R = 13;    //Pin für Interrupt bestimmen
12
    
13
    _INT2EP = 0;                        // positive Flanke 
14
    _INT2IP = 1;                        // Priorität
15
    _INT2IF = 0;                        // clean flag 
16
    _INT2IE = 1;                        // enable external interrupt
17
  
18
}
19
20
//--------------------------------------------------------------------
21
// Taster externer Interrupt
22
//--------------------------------------------------------------------
23
void __attribute__ ((__interrupt__, no_auto_psv)) _INT1Interrupt(void){
24
  
25
  LED_GRUEN = AN;
26
  LED_ROT = AUS;
27
28
  _INT1IF = 0;  
29
}
30
31
//--------------------------------------------------------------------
32
// Taster externer Interrupt
33
//--------------------------------------------------------------------
34
void __attribute__ ((__interrupt__, no_auto_psv)) _INT2Interrupt(void){
35
  
36
  LED_GRUEN = AUS;
37
  LED_ROT = AN;
38
39
  _INT2IF = 0;  
40
}
Hat vielleicht jemand einen Tipp, was ich vergesen haben könnte oder 
falsch gemacht habe.

Gruß
dieter

von dieter (Gast)


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. :(

von Manuel (Gast)


Lesenswert?

Ja Pins auf digital schalten

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

Gruss Manuel

von dieter (Gast)


Lesenswert?

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

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
Noch kein Account? Hier anmelden.