Forum: Mikrocontroller und Digitale Elektronik I2C und Interrupt bei PIC


von Matthias W. (mawi_pic)


Lesenswert?

Guten Abend!

Ich arbeite mit einem PIC (16F877A, später ist ein "kleinerer" geplant) 
an einem Kurzzeit-Timer (zum Belichten von Platinen bzw. Teekochen ...). 
Als Quarz verwende ich wegen der genauen Sekunden einen Quarz mit 3,2768 
MHz. Die 7-Segment-Anzeige soll über einen SAA1064 per I2C angesprochen 
werden. Der Compiler ist mikroPascal von Mikroelektronika.

Ein Programm, das einen einfachen (nicht sekunden-genauen) Zähler auf 
dem 7-Segment-Display ausgibt ist voll funktionsfähig. Soll heißen, dass 
meine Routinen richtig sind. Ebenso läuft ein Programm korrekt, dass 
einen sekunden-genauen Interrupt auslöst. Der hochzählende Wert wird 
testweise auf einem LCD ausgegeben. Kombiniere ich beide Programme 
funktioniert nichts mehr. Bei zwei anderen Controller-Typen existiert 
die gleiche Problematik. Wenn ich statt des SAA1064 einen Port-Expander 
PCF8574 anspreche ebenso eine Blockade des Interrupts.
Hat schon mal jemand ein ähnliches Problem/Phänomen gehabt? Müssen bei 
der Kombination von Interrupt und I2C Dinge beachtet werden? (Timing, 
Bits ...)

Schon mal vielen Dank!

von NACK (Gast)


Lesenswert?

Du kannst ja einfach beim Aufruf der I2C Routine den Sekundentimer 
Interrupt sperren und nach dem aktualisieren des Displays wieder 
freigeben. Dann wird der IRQ solange auf das Display geschrieben wird 
nicht bearbeitet, sondern erst danach. D.h. die nächste Ziffer erscheint 
dann einige Millisekunden später.

von Carsten M. (ccp1con)


Lesenswert?

Wenn ich das richtig verstanden habe, könnte es sein, dass dein 
Interrupt die I2C Routinen unterbricht. Dann kannst du die Interrupts 
für diese Zeit sperren, oder I2C selber im Interrupt ausführen und 
gleiche Prioritäten vergeben.

von Matthias W. (mawi_pic)


Lesenswert?

Das Thema kann geschlossen werden. Das Problem saß wie so oft vor dem 
Rechner. Ich hatte einen Port falsch konfiguriert und somit den I2C-Bus 
gestört.
Trotzdem danke für die schnellen Antworten!

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.