PIC32MX350: zu viele Interrupts

Gast #6174203
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!
Gast #6174278
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.
Gast #6174515
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?

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren