XMega-Kenner: Zeitmessung mit Timer und Analogkomparator

OP #2114442
Lesenswert?

Hallo,

ich möchte auf einem AtXmega128A1 unter anderem einen Kapazitiven Sensor 
aufbauen.

Hierbei soll zwischen zwei Zuständen unterschieden werden, die einzelnen 
Kapazitätswerte sind sind nicht festgelegt, jedoch gilt:

Um die Unterscheidung zu machen, wollte ich die Kapazität mit der 
Rechteckspannung Uout versorgen. Dies geschieht über einen Widerstand, 
sodass die resultierende Spannung am Kondensator dem Verlauf von Uin 
entspricht.
Die relative Kapazität kann nun bestimmt werden, indem man die Zeit t 
bis zur Schneidung der Vergleichsspannung misst.
Es gilt dann hier:


Nun zu meiner Frage:
Der XMega verfügt über ein Eventsystem, Timer/Counter und Analog 
Komparatoren.
Welche Möglichkeiten habe ich, um den 'Zeitwert' möglichst Rechenzeit 
sparend mithilfe der vorhandenen Hardware zu Ermitteln?

Meine erste Idee war folgende:
*Generiere Signal Uout mit Timer A
*Vergleiche Uin und Uref mit AnalogComp und erzeuge Event 0
*Nutze Event 0 um aktuellen Zählerwert von Timer A zu Capturen
*Weiterverarbeitung in SW

Leider kriege ich es nicht auf die Reihe, mit einem Timer zugleich ein 
Signal zu generieren und Timerwerte aufzuzeichnen.
Welche Möglichkeiten gäbe es beim XMega noch?

Gruß Matthias
Angehängte Dateien:
OP #2114775
Lesenswert?

Hallo Knut,

wenn ich es ohne Events mache, wie nutze ich denn dann das Signal vom 
Analog-Komparator zum 'Capturen'? Bei Interrupt-Routinen habe ich immer 
die Sorge, dass diese durch eine andere, gerade aktive Routine zeitlich 
verzögert wird.

Zudem: Ich habe es mit dem Xmega nicht geschafft mit einem einzigen 
Timer zugleich eine Frequenz auf einen Pin zu generieren und über einen 
anderen Pin zu 'capturen'.
Das hieße ich bräuchte zwei Timer, die dann auch noch beide synchron 
laufen.
Oder hat jemand bereit erfolgreich einen Timer sowohl zur 
Signalgenerierung als auch zum 'capturen' genutzt?
Gast #2114781
Lesenswert?

Dann nimm doch 2 Timer, oder brauchste alle? Wenn der Input Capture 
kommt, wird der Timerwert bis zum nächsten Capture gespechert, daher 
Zeitunkritisch. Warum willst du dein Rechteck unbedingt mit nem Timer 
erstellen, machdas doch per Hand. Is viel leichter und erspart dir einen 
Timer.

Knut
OP #2114821
Lesenswert?

Wie starte ich zwei Timer möglichst synchron? ;)

Zu 'per Hand'
Klingt eigentlich auch ganz gut.., hatte mich halt nur an der 
'Hardwarezauberei' festgefressen ;)

*Pin per SW ändern
*Änderung triggert Timer von extern
*Verzögerte Flanke vom Kondensator triggert Timer erneut
*Wert abholen

Mal programmieren und Rechenzeit vergleichen. Die andere Lösung hätte 
den Vorteil, dass ich, wenn ich die Zeit auswerten will, ihn einfach nur 
abholen muss.
Schonmal danke!
Gast #2115387
Lesenswert?

Matthias N. schrieb:
> Was ist, wenn ich den Analog-Komparator ausßen vor lasse und mich auf
> die Schaltschwelle des Inputs verlasse?
> Wird das Signal immer an der gleichen Stelle als 'High' Pegel erkannt?

Warum nicht, geht auch. Die Eingänge sind Schmitt-Trigger.

> Wie starte ich zwei Timer möglichst synchron? ;)

Einfach nacheinander starten, der Zeitversatz ist minimal und kannst 
ggf. ja wieder rausrechnen :-)


Knut

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