Forum: Mikrocontroller und Digitale Elektronik atmega8 - Zeitbeschränkte Taktzählerfunktion


von LD2307 (Gast)


Lesenswert?

Hallo zusammen,
ich möchte einen extern gegebenen Takt (Reed-Kontakt), welcher an PB5 
hängt, zählen und über UART ausgeben.

Die Ausgabe über UART ist kein Problem.

Da der Taktzähler als Funktion laufen soll, soll die Funktion auf 10 sec 
Mess bzw Zähldauer beschränkt sein.

Ich habe mir das so vorgestellt:

Der Takt an PB5 wird für 10 Sekunden gezählt. Anschließend wird das 
Ergebnis mal 6 genommen, und der Wert der dabei rauskommt, per UART 
ausgegeben.

Allerdings habe ich keine Ahnung, wie ich diesen Zählvorgang auf 10 sec 
beschränken soll.

Programmiert wird in der Programmiersprache C. Der Controller läuft bei 
8Mhz über den internen Oszillator.

VG
LD2307

von Karl (Gast)


Lesenswert?

Warum 10 Sekunden? Und wie genau?

von Ingo (Gast)


Lesenswert?

Nimm n Timer, erzeuge dir ne Zeitbasis. Nimm eine Variable, die in oder 
dekrementierst du in der Timer ISR und solange deine Variable != 0 oder 
beim hochzählen != deinen 10s dann messen, ansonsten halt nicht 
messen...

von Ingo (Gast)


Lesenswert?

Karl schrieb:
> Warum 10 Sekunden? Und wie genau?
Wenn man Pulse die in größeren Abständen als 1s kommen misst und man im 
1s Raster auswertet gibt das Chaos!

von LD2307 (Gast)


Lesenswert?

@ Ingo: danke für die Hilfe!

Vg
LD2307

von Route_66 (Gast)


Lesenswert?

Hallo!
Über den Zweck Deiner Konstruktion schweigst Du Dich ja aus. In vielen 
Fällen ist es bei langsamen Impulsfolgen besser, die Abstände zu messen. 
Dabei erhält man z.B. bei einem Fahrradtacho zu jedem Impuls eine 
Geschwindigkeit und nicht erst nach 10 Sekunden, dann noch mit 
entsprechend hohem Restfehler!

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.