Forum: Mikrocontroller und Digitale Elektronik PIC_Interrupt


von Stefan Helmert (Gast)


Lesenswert?

Hallo,

ich habe in der neuen Version 7.10 von MPLAB einen fehler im Simulator
festgestellt. - Interruptflags lassen sich nicht zurücksetzen - was
jedoch in Version 6.70 geht

Dann ist mir noch etwas passiert: Führe ich das Programm auf einem
PIC16F84A aus, wobei der Interrupt für Flankenwechsel an Ports B4-B7
aktiviert ist, wird die Interruptroutine nicht einmal je Wechsel
ausgeführt. Stattdessen wird sie bei Low ständig ausgeführt und bei
High nicht mehr. Es ist aber davon abhängig an welcher Stelle der Port
mit Masse verbunden ist. Könnte es sein, dass dieser Port sehr
empfindlich ist, was die Interruptauslösung angeht und er daher auf
jede Störstrahlung reagiert. Es scheint auch davon abhängig zu sien ob
die internen Pullups aktiviert sind.
Oder woran liegt das? Wie kann ich es beheben? Tritt das bei anderen
PICs auch auf? Oder ist nur dieser PIC kaputtgegangen?

von Andreas (Gast)


Lesenswert?

Was hast Du denn an den Pin's dran, bzw. was erzeugt den
Flankenwechsel?

Andreas

von Manfred Glahe (Gast)


Lesenswert?

Hallo Stefan,

Störstrahlung kannst Du ausschließen. Dieser PIC ist sehr resistent
gegen derlei Probleme. Poste doch mal den Code, sieht für mich aus als
hättest Du das I Flag nicht zurückgesetzt. Schau dir noch mal Deine I
Routine an. Wie sieht die Beschaltung der Pins aus? Sind Spikes
ausgeschlossen usw.?

MfG Manfred Glahe

von peter dannegger (Gast)


Lesenswert?

Ich vermute mal, Du hast offene Anschlüsse.

Das mag kein µC gerne, völlig egal, ob PIC oder nicht PIC.
Im günstigsten Fall hast Du nur eine erhöhte Stromaufnahme.


Ich setze daher bei sämtlichen IO-Pins, die ich nicht benutze, den
internen Pull-Up. Damit sind sie dann auf definiertem High-Potential.

Zu beachten ist aber, daß manche Sonderfunktionen den Pull-Up außer
Kraft setzen. Also am besten kontrollieren, das jeder freie Pin +VCC
hat.


Peter

von Manfred Glahe (Gast)


Lesenswert?

Hallo Stefan,

was mir gerade noch eingefallen ist zu Deinem Problem, Read or Write
will end mismatch condition. Da Du die internen PU gesetzt hast könnte
es sich auch um den Anschluß zur Interruptquelle handeln. Hast Du dort
auch die Masse verbunden und nicht nur den Portpin beschaltet? Du
solltest doch mal die Beschaltung und das Codesegment posten.

MfG Manfred Glahe

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.