mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Mega128 Input Capture


Autor: TobyTetzi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich habe an dem Input capture Pin von 16 Bit Timer 1 einen Hall
Sensor.
Damit will ich eine Drehzahl erfassen.
Der Timer läuft ständig in 16Mhz/64 also mit 250.000 KHz.

Wie und was kann man genau mit dem Capture Pin anstellen?

So weit ich weiß, einen Interrupt bei steigender oder fallender
Flanke.

Und es wird bei jedem Capture der Timerwert in das Capture Register
kopiert.

Irgendwie stehe ich aber wie vor einer Mauer.

Muß ich nun den Timerwert bei einem Capture minus dem voherigen Capture
Wert mehmen, um zu wissen, wie lange die Zeit einer Umdrehung war,
oder zähle ich bei jedem Capture Interrupt einen Zähler hoch,
das eine gewisse Zeit lang, und errechne daraus meine Drehzahl?

Danke für euere Hilfe....

Gruß Toby

Autor: Andi K. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
In der ISR für Input Capture liest Du einfach den Input Capture aus und
setzt den TCNT1 auf 0 zurück.
Wenn Du willst, kannst Du für 2, 4 oder sogar 10 Umdrehungen noch einen
Zähler einbauen und die einzelnen Werte aus dem Input Capture Register
auf eine 24 oder 32 Bit-Variable aufaddieren um genauer zu messen.
Mit den ausgelesenen Werten wandelst Du dann die Zeit in Drehzahl mit
250000 * 60 / Zeit oder einfach
15000000 / Zeit

Bei mehreren, aufaddierten, Messungen hintereinander, z. B. 4, dann
einfach
250000 * 240 / Zeit oder
60000000 /Zeit

Ob nun steigende oder fallende Flanke ist wurscht.

MfG
Andi

Autor: Hannes Lux (hannes)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Moin...

Nööööööööö... - Mag zwar gehen, bringt aber langfristig nix.
Timer nicht zurücksetzen, das kostet unnötig Ressourcen.
http://www.mikrocontroller.net/forum/read-1-241435...
Lieber Differenz zum vorhergehenden "Schnappschuss" bilden, dann kann
man parallel dazu auch noch die Compare-Match-Interrupts verwenden und
mit externen Interrupts weitere Input-Capture-Events in Software
erfassen. Einzige Bedingung: Niemand (außer dem Prozessortakt über
Vorteiler) vergreift sich am Stand des Timers.

Schönen Herbstsonntag noch...
...HanneS...

Autor: Andi K. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
OK, bei einer "Mehrfachnutzung" des Timer1 dann lieber nicht den TCNT1
zurücksetzen.
Nur ist die Nutzung eines Compare Match dann auch nicht so einfach
wobei es wohl einfach nur eine 16 Bit-Addition sein mag für den
nächsten Compare Match.

MfG
Andi

Autor: TobyTetzi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich zähle nun einfach in jeder Input Capture ISR einen Impulszähler
hoch. Den Capture Wert beachte ich garnicht.

In der Overflow Routine, nach 250 ms also, errechne ich aus der Menge
der Pulse die Drehzahl.

Also, brauche ich den Capture Wert eigentlich nicht,
sondern nur den Capture Interrupt, da der Hall sensor nunmal darauf
liegt, und nicht auf einem Ext.Int.

Desweiteren läuft der Timer non stop, da ich aus 4x250ms Überläufen
eine Sekunde bilde.
Daher kann ich ihn nicht zurück setzen.

Zudem errechne ich aus dem Zählerstand noch eine PPM Pulslänge von
einem RC-Signal, wobei allerdings ein zurücksetzen besser wäre, da ich
ja hierbei Überläufe habe.

Danke für Euere Hilfe.

Gruß Toby

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.