Forum: Mikrocontroller und Digitale Elektronik PIC Capture/Compare-Modul


von Jan S. (Firma: Eigenbau) (vox_equus)


Lesenswert?

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

von Jens M. (schuchkleisser)


Lesenswert?

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.

von Dieter W. (dds5)


Lesenswert?

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.

von Jan S. (Firma: Eigenbau) (vox_equus)


Lesenswert?

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

von Björn W. (bwieck)


Lesenswert?

Setz doch einfach den Timer zurück.

von Harald A. (embedded)


Lesenswert?

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
von Jan S. (Firma: Eigenbau) (vox_equus)


Lesenswert?

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

von Jan S. (Firma: Eigenbau) (vox_equus)


Lesenswert?

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...

von Ste N. (steno)


Lesenswert?

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
von Peter D. (peda)


Lesenswert?

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.

von Jan S. (Firma: Eigenbau) (vox_equus)


Lesenswert?

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
Noch kein Account? Hier anmelden.