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!
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.
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?
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.