Forum: Mikrocontroller und Digitale Elektronik Capture/Compare


von poiu (Gast)


Lesenswert?

Hi Leute,

ich soll mich über die Capture/Compare Einheit eine µC schlau machen. 
Habe dazu meine Unterlagen gewälzt und auch Wiki befragt. Nur steht in 
allem in etwa das gleich, womit ich aber irgendwie nix anfangen kann:

Timer-Modus: Aufwärtszählen mit verschiedenen Quellen als Taktgeber. Bei 
Zählerüberlauf kann ein Interrupt ausgelöst werden.

Capture-Modus: Beim Auftreten eines externen Signals wird der Inhalt des 
zugeordneten (laufenden) Timers gespeichert. Auch hier kann ein 
Interrupt ausgelöst werden.

Compare-Modus: Der Zählerstand des zugeordneten Timers wird mit dem 
eines Registers verglichen. Bei Übereinstimmung kann ein Interrupt 
ausgelöst werden.



Gibt's irgendwie Beispiele, die mir die einzelnen Modi näher erklären?

von tt4u (Gast)


Lesenswert?


von spontan (Gast)


Lesenswert?

Was ist denn unklar?

von poiu (Gast)


Lesenswert?

Danke erstmal für die antworten!

Unklar ist an den Sätzen nix. Ich will nur nicht irgendwelche Sätze 
auswendig lernen, wenn ich sie nicht wirklich verstanden habe und dazu 
hätt ich gern eine Beispielsituation wo der jeweilige Modus eingesetzt 
wird.

von LD (Gast)


Lesenswert?

Capture:

Du lässt einen Zähler hochzählen und weißt in welchem Abstand er dies 
macht, z.B. zählt er jede Sekunde um eins hoch, kann man 'beliebig' 
konfigurieren.
Wenn nun der Wechsel eines "externes Signal" erkannt wird, wird dieser 
Zählerwert gespeichert und du kannst dann z.B. erkennen wie viel Zeit 
zwischen zwei externen Signalen vergangen ist. Beispiel: Zählerstand 
beträgt 10, dann sind 10s zwischen zwei "externen Signalen" (z.B. zwei 
steigende Flanken eines Signals) vergangen.

Compare:

Du stellst den Takt (z.B. 1Hz) ein und schreibst in das 
Vergleichsregister einen Wert (z.B. 20). Wenn der Timer diesen Wert 
erreicht, kannst du einen Interrupt auslösen. (Hier wäre dies dann alle 
20s ein Interrupt).

Gruß
LD

von Route_66 (Gast)


Lesenswert?

Hallo!
Timer ist wie eine frei laufende Uhr.
Capture ist wie eine Stoppuhr: auf ein Signal hin wird die Uhr 
abgelesen.
Compare ist wie ein Wecker: Du gibst 6 Uhr vor, und bekommst ein Signal 
wann es soweit ist.

von poiu (Gast)


Lesenswert?

Könnte man also den Capture/Compare auch so beschreiben:

Capture:
Es wird der Startwert am Timer und der Wert nach dem der Timer gestoppt 
wurde, gespeichert. Die Zählerschritte zwischen den beiden Ergebnissen 
ergeben den zeitlichen Unterschied der beiden Ereignisse.

Compare:
Der Zählerstand des Timers wird bei jedem Zählschritt mit einem vorher 
eingestellt Wert vergleichen. Wenn der Timer den Wert erreicht hat der 
eingestellt wurde, wird ein Interrupt/weiteres Signal ausgelöst.


Stimmt das soweit?

von Karl H. (kbuchegg)


Lesenswert?

poiu schrieb:
> Könnte man also den Capture/Compare auch so beschreiben:
>
> Capture:
> Es wird der Startwert am Timer und der Wert nach dem der Timer gestoppt
> wurde, gespeichert. Die Zählerschritte zwischen den beiden Ergebnissen
> ergeben den zeitlichen Unterschied der beiden Ereignisse.

Fast.
Der Timer läuft die ganze Zeit weiter. Da wird nichts gestartet oder 
gestoppt.

Du hast eine Uhr mit Sekundenzeiger. Die tickt die ganze Zeit.
Wenn dein Kumpel oben das Klavier aus dem Fenster schmeisst, schreit er 
"jetzt". Du siehst auf deine Uhr und merkst dir "Sekundenzeiger bei 28" 
(Capture!).
Wenn das Klavier unten aufschlägt, siehst du wieder auf die Uhr und 
merkst dir: "Sekundenzeiger bei 37" (Capture!).
Aus der Different 37 - 28 errechnest du, dass das Klavier 9 Sekunden 
geflogen ist.
Die Uhr läuft die ganze Zeit weiter.

> Compare:
> Der Zählerstand des Timers wird bei jedem Zählschritt mit einem vorher
> eingestellt Wert vergleichen. Wenn der Timer den Wert erreicht hat der
> eingestellt wurde, wird ein Interrupt/weiteres Signal ausgelöst.

Passt

von Route_66 (Gast)


Lesenswert?

Nebenbei:

9 Sekunden Flugzeit: in so einem Hochhaus muß mein Kumpel schön laut 
schreien können. Die Schallgeschwindigkeit in Luft für die fast 400 m 
sollte man berücksichtigen!

von Peter D. (peda)


Lesenswert?

Und der Clou davon ist, das funktioniert immer, solange der Timer nicht 
2-mal überläuft.
Z.B.
Capture1: 65530
Capture2: 5
(uint16_t)(Capture2 - Capture1) = 11


Peter

von Route_66 (Gast)


Lesenswert?

Hallo!
...und poiu daran denken: wenn Du bei Capture zweimal auf die "Uhr" 
geschaut hast, und immer 15 abgelesen wurde, kann das Drei!!! Ursachen 
haben.
1) Du warst zu schell- der Zeiger ist noch nicht weiter gerückt,
2) der Zeiger hat inzwischen eine oder gar mehrere "Umdrehungen" 
gemacht,
3) die Uhr steht.

von Chris (Gast)


Lesenswert?

Hi,

eines der wenigen Foren hier, wo man vernünftige, nette Anworten bekommt 
und nicht patzig angemault wird!
Kompliment!

von Gefunden (Gast)


Lesenswert?

Lies hier ab Seite 362:
http://www.ti.com/lit/pdf/slau144

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.