www.mikrocontroller.net

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


Autor: Matthias N. (nippey)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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

Autor: Knut (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Matthias N. (nippey)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Knut (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Matthias N. (nippey)
Datum:

Bewertung
0 lesenswert
nicht 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!

Autor: Matthias N. (nippey)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Knut (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Knut Ballhause (Firma: TravelRec.) (travelrec) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Warum machst Du´s nicht so?

Beitrag "qtouch - sekt oder selters"

Zuverlässig und erprobt.

Autor: Nippey (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Knut Ballhause (Firma: TravelRec.) (travelrec) Benutzerseite
Datum:

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

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.