Forum: Mikrocontroller und Digitale Elektronik PIC16F887 PIN Change Interrupt Problem


von DasSauerkraut (Gast)


Lesenswert?

Hallo Leute,

ich hätte da mal eine Frage zum 887 den ich für meine Berufsausbildung 
benötigt.

Ich möchte einen PIN Change Interrupt an RB6 oder RB7 aufrufen. Habe 
auch soweit alles richtig konfiguriert etc. Allerdings hängt der PIC so 
lange wie ich die Taste gedrückt halte in der ISR. Sollte er nicht 
eigentlich nur bei einem Flankenwechsel den Interrupt erneut aufrufen? 
Also so wie er es an RB0 richtig macht? (Siehe Datenblatt)

Habe ich hier einen Denkfehler? PIN Change Interrupt heißt doch 
flankengesteuert?? Wenn ich den Taster halte ändert sich doch nix?

von Max H. (hartl192)


Lesenswert?

Versuche in der ISR PORTB zu lesen oder zu schriben, damit das 
Eingangslatch neu geladen wird.

Microchip schrieb im Datenblatt auf S.49:
>For enabled interrupt-on-change pins, the present value
>is compared with the old value latched on the last read
>of PORTB to determine which bits have changed or
>mismatched the old value. The ‘mismatch’ outputs of
>the last read are OR’d together to set the PORTB
>Change Interrupt flag bit (RBIF) in the INTCON register.
>This interrupt can wake the device from Sleep. The user,
>in the Interrupt Service Routine, clears the interrupt by:
>a) Any read or write of PORTB. This will end the
>   mismatch condition.
>b) Clear the flag bit RBIF.

P.S. Wenn das nicht die Lösung ist, solltest du deinen Code posten.

: Bearbeitet durch User
von DasSauerkraut (Gast)


Lesenswert?

Vielen Dank,

hat funktioniert

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.