Forum: Mikrocontroller und Digitale Elektronik Externer Interrupt PIC32


von ab2301 (Gast)


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!

von ab2301 (Gast)


Lesenswert?

Evtl. habe ich den Fehler gefunden.. habe vergessen das entsprechende 
ANSELx-Register auf 0 zu setzen, weshalb der Pin als analog definiert 
sein könnte. Werde ich morgen gleich mal ausprobieren..

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.