Forum: Mikrocontroller und Digitale Elektronik Probleme beim externen Interrupt am PIC18F14K50


von Alex H. (aheppis)


Lesenswert?

Servus zusammen,

ich programmiere gerade an einem PIC18F14K50 und versuche dort externe 
Interrupts zu realisieren.
Allerdings kommt dieser nicht durch. Ich habe schon andere Interrupts am 
Laufen - diese kommen durch. Am grundsätzlichen Aufbau der Software kann 
es also nicht liegen.
Ich habe es sowohl mit INT0 als auch INT1 versucht und auch schon den 
PIC getauscht. Einen Defekt am PIC halte ich also eher für 
unwahrscheinlich.
Ich habe die PINs mit 10 kOhm gegen Masse geschalten - ich will einen 
Interrupt bei einer Flanke von 0 auf 1.
So sieht die Initialisierung bei mir aus:

    INTCONbits.GIE = 1;       // interrupts on
    INTCONbits.PEIE = 1;      // low priority interrupts on

    TRISCbits.TRISC0 = 1;     // INT0 pin as input
    INTCON2bits.INTEDG0 = 1;  // INT0 interrupt on rising edge
    INTCONbits.INT0IF = 0;    // reset INT0 interrupt flag
    INTCONbits.INT0IE = 1;    // INT0 interrupt on for wake-up

    TRISCbits.TRISC1 = 1;     // INT1 pin as input
    INTCON2bits.INTEDG1 = 1;  // INT1 interrupt on rising edge
    INTCON3bits.INT1IP = 1;   // INT1 high priority
    INTCON3bits.INT1IF = 0;   // reset INT1 interrupt flag
    INTCON3bits.INT1IE = 1;   // INT1 interrupt on for wake-up

Irgendjemand eine Idee, was hier schief läuft?
Danke euch schon mal :-)

: Bearbeitet durch User
von McMix (Gast)


Lesenswert?

Du solltest im ANSEL Register die Funktion des entsprechenden Portpins 
noch auf digital setzen.

von Alex H. (aheppis)


Lesenswert?

McMix schrieb:
> Du solltest im ANSEL Register die Funktion des entsprechenden Portpins
> noch auf digital setzen.

Oooooh Mann, das war's :-)
Danke Dir :-)

von Alex H. (aheppis)


Lesenswert?

Ok, irgendwie stehe ich immer noch auf dem Schlauch, auch wenn der 
Interrupt jetzt funktioniert.
Aber ich scheitere daran ein ganze normalen Port als Ausgang zu 
benutzen.
Für mich zum Verständnis am Beispiel Port C.

ANSEL = 0;     (sollte als Augang aber eh keine Rolle spielen)
ANSELH = 0;

TRISC = 0;

LATCbits.LATC3 = 1;  (zeigt keine Wirkung)

Beim Port B funktioniert das aber bei RB6 und 7. Diese haben keine 
Analog-Funktion - daher vermute ich, da es was damit zu tun hat. Aber 
was?
Wäre super, wenn mir da jemand helfen kann. Danke euch schon mal :-)

von Alex H. (aheppis)


Lesenswert?

LVP war aktiviert und damit war der Port durch PGM blockiert...

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.