Newbie: Wie Zähler realisieren?

Gast #71010
Lesenswert?
• ▲
▼
Hallo,

ich bräuchte mal ein paar Hinweise, wie ich am Besten mit einem AVR
einen Zähler (für Modellbauzwecke, max. 100.000/min) realisiere?

Ich dachte mir das so, das ich via externen Interrupt die Pulse zähle
indem ich einen Wert in einem Register hochzähle. Dann das Ganze mit
einer Zeitschleife via internen Timer auslesen/ausgeben und Register
auf Null setzen.

Ist der Denkansatz so richtig?

Oder sollte ich einen anderen Weg gehen?

Gruß Uwe
(ja, es gibt ne Menge fertige Lösungen dafür, aber man will ja auch was
lernen)
Gast #71011
Lesenswert?
• ▲
▼
Deine lösung ist möglich. Aber du wirst bei höheren Frequenzen evt.
Probleme bekommen.
Eine andere Lösungsansatz währe, den internen Timer verwenden. Mit den
konfigurationsregister kannst du einstellen, dass der Timer mit einem
Externen Takt läuft. Du brauchst dich um das Zählen dann gar nicht zu
kümmern.

Wenn du hilfe brauchst, dann melde dich.

Gruß, Florian
Gast #71012
Lesenswert?
• ▲
▼
Meld!

Könntest Du mir mal ein wenig auf die Sprünge helfen?
Ich verwende einen AT90S2313.

Also, ich vermute mal, das ich dann Timer1 so einstellen soll, das er
via externen Interrupt hochgezählt wird.

Nur wie komme ich dann zu einem brauchbaren Ergebnis? Nach welchem
Schema werte ich das dann aus?

Bei meiner Variante hätte ich via Timer eine Torzeit erzeugt und
einfach die ankommenden Impulse in dieser Zeit ermittelt.

Gruß Uwe
Gast #71013
Lesenswert?
• ▲
▼
hi,

du kannst im einfachsten fall einen chip mit 2 timern nehmen.
z.b. Timer0 = Timer, der macht die torzeit, Timer1 = Counter, der zählt
via interrupt die pulse, geht gut bis ca. 1/2 cpu-frequenz.

gruss, harry
Gast #71014
Lesenswert?
• ▲
▼
Hallo,

sowetwas ähnliches hatten wir doch kürzlich gerade gehabt:
http://www.mikrocontroller.net/forum/read-1-62154.html#62154

Mich würde nur noch interessieren, wie die Aussage von Peter genau zu
verstehen ist.

"Der Trick ist nur die Kaskadiereung per Softwareregister im
Interrupt."

Soll es möglich sein, daß während der eine Interrupt ausgeführt wird
der des anderen Zählers ausgeführt werden kann/soll?

GRuß

Antwort schreiben

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.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.