Externer Interrupt PIC32

Gast #3804357
Lesenswert?

Hallo, ich kämpfe gerade mit dem externen Interrupt bei einem 
PIC32MX470. Mein Programm sieht wie folgt aus:
1
#include <stdio.h>
2
#include <stdlib.h>
3
#include <plib.h>
4

5
#pragma config FPLLMUL = MUL_20, FPLLIDIV = DIV_4, FPLLODIV = DIV_2, FWDTEN = OFF
6
#pragma config POSCMOD = HS, FNOSC = PRIPLL, FPBDIV = DIV_2
7
#define SYS_FREQ (50000000L) 
8

9
int main(int argc, char** argv) {
10
    
11
    TRISGbits.TRISG8 = 1;           //INT3-Pin als Eingang
12
    TRISDbits.TRISD0 = 0;
13
    
14
    //Externes Interrupt
15
    INTCONbits.INT3EP = 1;          //auf steigende Flanke reagieren
16
    INT3Rbits.INT3R = 0b0001;       //RPG8 als Int Pin
17
    IFS0bits.INT3IF = 0;            //Flag löschen
18
    IPC3bits.INT3IP = 3;            //Priorität festlegen
19
    IEC0bits.INT3IE = 1;            //Interrupt aktivieren
20

21
    INTEnableSystemMultiVectoredInt();   //Interrupts global zulassen
22

23
    while(1){
24
    }
25

26
    return (EXIT_SUCCESS);
27
}
28

29
    void __ISR(_EXTERNAL_3_VECTOR, ipl3) External3Handler(void){
30

31
        LATDbits.LATD0 = 1;
32
      
33
        IFS0bits.INT3IF = 0;     //Flag löschen
34
    }


Mir ist momentan nicht klar, was ich vergesse. Ich definiere den Pin als 
Eingang, setze die entsprechenden Bits für das Interrupt, habe daran 
gedacht die Interrupts global zuzulassen und habe auch den 
Routinen-Aufruf meiner Meinung nach richtig implementiert. Trotzdem wird 
der Test-Pin nicht auf high geschaltet, wenn ich den Interrupt-Pin mit 
der Versorgungsspannung "berühre". Sieht vielleicht jemand das was ich 
nicht sehe? Habe auch die Pins getestet.. wenn ich sie als Output 
definiere und auf 1 setze, kann ich die 3,3V messen.

Schonmal vielen Dank für die Unterstützung!

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren