Forum: Mikrocontroller und Digitale Elektronik PIC32MX350: zu viele Interrupts


von Harstad (Gast)


Lesenswert?

Hi,

ich habe hier einen PIC32MX350, der mittels eines externen Signals 
angesteuert wird. Dieses Signal ist recht simpel: SYNC geht auf HIGH, 
CLK wechselt 22 mal (es wird jeweils auf beide Flanken reagiert), SYNC 
geht auf LOW, CLK wechselt noch einmal.

CLK ist in meiner Software an INT1 und INT2 gebunden (jeweils für 
steigende und fallende Flanke), SYNC ist an INT4 gebunden (hier 
interessiert nur die fallende Flanke).

Jetzt sollte sich ja theoretisch ein Verhältnis von 23:1 ergeben: wenn 
meine CLK-Interrupts 23 mal ausgelöst werden, kommt der SYNC-Interrupt 
einmal. Tatsächlich ist das Verhältnis aber 3:1 bzw. 4:1.

Wenn ich mit dem Oszilloskop direkt an den Eingängen des PIC messe, ist 
alles OK, die Signale stimmen und es ist auch kein Rauschen zu sehen, 
welches Fehlinterrupts bewirken würde.

Meine Fragen: was könnte noch dafür verantwortlich sein, dass der 
SYNC-Interrupt zu häufig kommt?

Und angenommen, die Interrupts passen und meine ISR für die 
CLK-Interrupts ist zu langsam - wie kann ich das überprüfen? Gibt es 
irgend eine Möglichkeit, einen Taktzyklenzähler oder ähnliches im PIC 
abzufragen, um am Anfang und am Ende der ISR zu ermitteln, wie viel Zeit 
die tatsächlich benötigt hat?

Danke!

von Harstad (Gast)


Lesenswert?

Nachtrag: ich habe meine beiden ISRs mal so geändert, dass nur noch je 
ein Zähler drin vorkommt. Damit liegt das Verhältnis, in dem sie 
aufgerufen werden, bei 5:1 - also kann es wohl nicht daran liegen, dass 
der Code in der ISR zu viel/zu langsam ist. Ein CLK-Flankenwechsel 
erfolgt ca. alle 5 usec, was eigentlich mehr als genug Zeit sein sollte, 
wenn der PIC auf 96 MHz läuft.

von K. S. (the_yrr)


Lesenswert?

Ist dir schon die Idee gekommen zu testen ob der relevante (minimal 
funktionale) Code eventuell interessant sein könnte für Alle die dir 
helfen wollen?

von Harstad (Gast)


Lesenswert?

K. S. schrieb:
> Ist dir schon die Idee gekommen zu testen ob der relevante
> (minimal
> funktionale) Code eventuell interessant sein könnte für Alle die dir
> helfen wollen?

Gerne - welcher Code ist interessant? Die ISRs bestehen nur noch aus je 
einem Zähler, der bei jedem Aufruf um eins hochzählt. Was ist sonst noch 
interessant? Die Initialisierung?

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.