Forum: Mikrocontroller und Digitale Elektronik externe Interrupts beim PIC18F


von Chris H. (xkris)


Lesenswert?

Hallo,

ist zufällig jemand hier der sich mit dem PIC18F auskennt. Der µc 
verfügt laut Datenblatt über  3 I/O Pins, INT0, INT1 und NT2, die einen 
externen Interupt auslösen können.
Dabei lässt sich in einem Register festlegen, ob der Interupt bei 
steigender oder fallender Flanke an diesen Pins ausgelöst werden soll. 
Dies lässt sich laut Datenblatt für jeden dieser 3 Pins frei 
konfigurieren.

"External interrupts on the RB0/INT0, RB1/INT1 and
RB2/CANTX/INT2 pins are edge triggered: either rising
if the corresponding INTEDGx bit is set in the
INTCON2 register, or falling if the INTEDGx bit is clear."

Für INT0 und INT1 gibt es diese Bits im angegebenen Register, allderings 
fehlt diese Angabe für INT2.

Muss ich dann annehmen, dass INT2 auf beide Flanken reagiert oder wie 
soll das funktionieren?

von CaH (Gast)


Lesenswert?

Aus dem Datenblatt für einen PIC18F2480


bit 6 INTEDG0: External Interrupt 0 Edge Select bit
1 = Interrupt on rising edge
0 = Interrupt on falling edge
bit 5 INTEDG1: External Interrupt 1 Edge Select bit
1 = Interrupt on rising edge
0 = Interrupt on falling edge
bit 4 INTEDG2: External Interrupt 2 Edge Select bit
1 = Interrupt on rising edge
0 = Interrupt on falling edge

von Meister E. (edson)


Lesenswert?

Welches Datenblatt hast du zur Hand?

Das gesuchte Bit befindet sich (zumindest beim 18f4680) in INTCON2 und 
heisst INTEDG2.

Gruss,
Edson

von Chris H. (xkris)


Lesenswert?

Ah, danke vielmals.

bit 6 und bit 5 hab ich auch aber bit 4 hat laut meinem Datenblatt 
(PIC18FXX8 Data Sheet) keine Funktion.

@Meister Eder: genau diese Angabe fehlt in meinem Datenblatt.

von Meister E. (edson)


Lesenswert?

Schau mal nach ob du INTEDG2 in deinem .INC-file findest. Wenn nicht, 
hat der PIC den du nutzt keinen INT2.

Gruss,
Edson

Nachtrag: Das von Dir beschriebene Datenblatt gehört zu den älteren 
PIC18 Typen. Die neueren, z.B. 18f4680, 18f2480 usw. sind Enhanced 
PIC18. Zwischen den Angaben im allgemeinen Family-Datasheet für die 
jeweiligen Typen kann es also Abweichungen geben. Letztlich sollte man 
immer auch das explizite Datenblatt für den Typen nehmen, den man 
wirklich benutzt.

von holger (Gast)


Lesenswert?

>Wenn nicht, hat der PIC den du nutzt keinen INT2.

INTEDG2 ist weder in den C noch in den ASM
Headerfiles für z.B. PIC18F258 zu finden.
Bis Compilerversion V3.0 jedenfalls nicht.
Im Datenblatt findet man INTEDG2 nicht.
In den Erratas steht auch nichts dazu.
INT2IF, INT2IE und INT2IP sind aber vorhanden. Im Datenblatt
und in den Headerfiles. Ich würde auf Bit 4 von
INTCON2 für INTEDG2 tippen ;)

Einfach ausprobieren. Wenn es nicht geht gibt es keinen INT2 :(

von Meister E. (edson)


Lesenswert?

>INTEDG2 ist weder in den C noch in den ASM
>Headerfiles für z.B. PIC18F258 zu finden.

Welcher Compiler? Aus dem .INC (MPASM V8.0) des 18f258:

;----- INTCON2 Bits ----------------------------------------------
NOT_RBPU        EQU  H'0007'
RBPU            EQU  H'0007'
INTEDG0         EQU  H'0006'
INTEDG1         EQU  H'0005'
INTEDG2         EQU  H'0004'
TMR0IP          EQU  H'0002'
T0IP            EQU  H'0002'      ; For compatibility with T0IE and T0IF
RBIP            EQU  H'0000'

>Ich würde auf Bit 4 von
>INTCON2 für INTEDG2 tippen ;)

Die Annahme war aber offensichtlich richtig ;)

Gruss,
Edson

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.