Forum: Mikrocontroller und Digitale Elektronik Newbie: Wie Zähler realisieren?


von Uwe Naumann (Gast)


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)

von Florian Pfanner (Gast)


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

von Uwe Naumann (Gast)


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

von harry (Gast)


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

von Chris (Gast)


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ß

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.