Forum: Mikrocontroller und Digitale Elektronik Timerprogrammierung


von Manuwar (Gast)


Lesenswert?

hallo zusammen,

ich verwende einen mega8535 und den c-compiler von codevision.
ich möchte in meinem programm über einen zeitraum von 2 sekunden die
impulsanzahl an einem pin aufnehmen.(dient zur drehzahlmessung)
nachdem ich mir das datenblatt von meinem controler angeschuat habe bin
ich genau so schlau wie vorher. ich möchte das ganze über einen timer
realisieren, und komm nicht weiter. würd mich freuen wenn mir hier
jemand einen vorschlag machen könnte!

gruß manuwar

von Johann Meier (Gast)


Lesenswert?

Hallo,
Da nimmst du am besten den PD6 (ICP), Pin 20 glaub ich beim 8535, als
Capture Interrupt. Hab ich in ner Schaltung erfolgreich so realisiert.
Ich laß die Signal vom Sensor auf den Pin laufen und zähle einfach
Timerimpulse zwischen zwei High/Low Flanken. Umgerechnet mit der
Taktfrequenz und den Impulsen pro Umdrehung (noch nen Filter drüber)
und du hast die Drehzahl.

Das Meßsystem ist allerdings anders wie bei dir.
Wenn du Impulse über 2 Sekunden zählen willst, hast du eine ziemlich
träge Drehzahlmessung. Oder hast du eine sehr langsame Drehzahl?

Mit Code kann ich dir leider nicht dienen, da ich das ganze in Bascom
geschrieben habe.

Gruß
Johann

von Norbert (Gast)


Lesenswert?

Hi,

Ich würde vorschlagen, Du lässt erstmal mit nem Timer ne LED blinken
und versuchst zu verstehen, wie die Timer funktionieren.

Dann überlegst Du Dir, wie Du die Impulse zählst, immer schön einen
Schritt nach dem anderen.

Ansonsten:
Timer einstellen und laden für Überlauf nach 2s
In der Überlauf-ISR ein flag setzen

Schleife1:
Wenn Puls = 1 dann Var hochzählen und Schleife2
   Schleife2:
   wenn Puls = 0 dann exit Schleife2
   wenn Timerüberlauf dann exit Schleife2
wenn Timerüberlauf dann exit Schleife1

Ist Dir damit geholfen?

Gruß,
Norbert

von Manuwar (Gast)


Lesenswert?

hallo norbert,

kannst du mir bitte sagen wie ich die zeit beim timer einstellen kann!
komm mit dem datenblatt echt nicht zurecht.
ich lass jetzt den timer als overflow interrupt laufen und nehm über
einen externen interrupt die impulse für meine drehzahl auf. im timer
interrupt wird dann die anzahl der impulse ausgewertet. aber die zeit
für den timer, da weiß ich einfach nicht wie das geht!

gruß manu

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.