Forum: Mikrocontroller und Digitale Elektronik XMega-Kenner: Zeitmessung mit Timer und Analogkomparator


von Matthias N. (nippey)


Angehängte Dateien:

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

von Knut (Gast)


Lesenswert?

Also du bist schon auf dem richtigen Weg. Ich würde das aber (wenn 
möglich beim Xmega) wie beim normalen Mega ohne Event machen. Da sollte 
sicher funktionieren!


Knut

von Matthias N. (nippey)


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?

von Knut (Gast)


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

von Matthias N. (nippey)


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!

von Matthias N. (nippey)


Lesenswert?

Hmm, da ist mir noch ne Optimierungsidee gekommen:

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?

von Knut (Gast)


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

von Knut B. (Firma: TravelRec.) (travelrec) Benutzerseite


Lesenswert?

Warum machst Du´s nicht so?

Beitrag "qtouch - sekt oder selters"

Zuverlässig und erprobt.

von Nippey (Gast)


Lesenswert?

qTouch, klingt interessant!
Werde ich in mal in Ruhe durchscrollen ;)

Wenn ich mit meinem Aufbau doch weitermachen sollte, melde mich mal 
zurück wenns klappt ;)

Dankedanke

von Knut B. (Firma: TravelRec.) (travelrec) Benutzerseite


Lesenswert?

Wenn Du alle Tipps beherzigst (Code ist auch dabei) solltest Du schnell 
zum Ergebnis kommen.

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.