Guten Abend, bei meiner Frage gehts um das Captur-Modul eines dsPic30f. Bei einem capture-event ladet das Capturregister den momentanen Wert des zugeschalteten Timers, soweit alles klar. Ich konnte aber nirgends im DS einen Hinweis finden, ob der Timer-Zähler einfach weiterläuft oder ob dieser resetet wird. Gruss Jan
Speziell den PIC kenn ich nicht, aber bei den 18ern ist das Capture ein einfrieren des aktuellen Zählerstands in einem extra Register, der Timer läuft unbeeinflusst weiter.
Jens M. schrieb: > ... der Timer läuft unbeeinflusst weiter. So isses. Beim Capture wird eine on-the-fly Kopie des Timerregisters erzeugt und der Timer läuft unbeeinflusst durch.
Danke für die Antworten, ich habs befürchtet. So muss ich bei jedem capture-event den vorherigen vom neuen Wert substrahieren - etwas umständlich. Gruss Jan
Jan S. schrieb: > ich habs befürchtet. So muss ich bei jedem > capture-event den vorherigen vom neuen Wert substrahieren - etwas > umständlich. Das ist völlig normal und auch richtig so. Warum sollte es umständlich sein? Vlt. denkst Du das auch zu kompliziert. Beim manuellen Nullsetzen würdest Du Genauigkeit verlieren.
:
Bearbeitet durch User
Danke für den Tipp, aber ich befürchte, dass damit der Vorteiler zurückgesetzt wird, somit wären auch mehrere Instruktionen nötig, um den Vorteiler wieder zu beschreiben. Gruss Jan
Harald A. schrieb: > Das ist völlig normal und auch richtig so. Warum sollte es umständlich > sein? Vlt. denkst Du das auch zu kompliziert. Beim manuellen Nullsetzen > würdest Du Genauigkeit verlieren. Danke für die Antworten, schön wärs, wenns eine Option gäbe, den Timer hardwaremässig im Moment des capture-events zurückzusetzen...
Björn W. schrieb: > Setz doch einfach den Timer zurück. Das ist nicht so einfach. Je nachdem wie schnell der Timer läuft, vergeht auch für den Captureinterrupt einiges an Zeit. Ich glaube so 10-14 CPU Takte bis er überhaupt im Interrupt ist und dann muß auch noch der Timer zurückgesetzt werden. Wenn der Timer nur mit ein paar kHz läuft mag das gehen, aber bei höheren Frequenzen verliert man, wie Harald schon schrieb, Genauigkeit. Aber ich verstehe das Problem von Jan auch nicht so recht. Zur Auswertung der Captureevents hat man doch in der Regel alle Zeit der Welt, da kann man die Werte locker substrahieren. Wie schnell kommen die Events bei dir? Hab mal kurz das Datenblatt überflogen. Das Capturemodul hat eine Buffer für 4 Events, muß theoretisch also nur bei jedem 4. Event ausgelesen werden. Wenn viele Events in kurzer Zeit zu erwarten sind könnte das ein nützliches Feature sein.
:
Bearbeitet durch User
Jan S. schrieb: > aber ich befürchte, dass damit der Vorteiler > zurückgesetzt wird Der Vorteiler wird natürlich nicht zurück gesetzt, das würde ja den Timer verfälschen. Wenn Dir die Auflösung zu gering ist, setze den Vorteiler einfach auf 1:1. Wenn dann die Zählweite zu gering ist, zähle auch die Timerüberläufe mit. Das höchstwertige Bit des Capturewertes zeigt Dir an, ob der Überlauf vor oder nach dem Capture erfolgte.
Danke für die Antworten. Ich habe begriffen, dass das mit dem Substrahieren wohl die beste Lösung ist. Gruss Jan
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.