Hallo, ich möchte mit meinem 2313 in Assembler irgendwie die genaue Anzahl von Impulsen in einer fest definierten Zeitspanne zählen. Also z.B. wieviele Impulse pro 500ms . Damit möchte ich dann etwas wie z.B. Umdr./min oder Umdr./sec realisieren. Kann mir jemand eine Anregung geben, wie ich die Zeitnahme realisieren kann? Danke Gruß Bastian
Du hast eigentlich schon alles selbst beantwortet. Feste Zeitspanne: Einen Timer-Interrupt, der dem Hauptprogramm den Zählerwert mitteilt und den Zähler wieder auf 0 stellt. Am besten den 16-Bit Timer mit Compare-Interrupt verwenden, da kann man sehr genau die Zeitbasis einstellen. Schau Dir im Datenblatt mal die Compare-Funktion an (wichtig ist auch das CTC-Bit). Zählen: Entweder über Polling oder einen Externen Interrupt. Wenn der Controller nebenbei noch viel machen soll, ist der Externe Interrupt erste Wahl. Bei niedrigen Frequenzen kann man aber auch die Zeit zwischen zwei Impulsen heranziehen, ist genauer. Dann noch die Umrechnung. 500ms sind ne halbe Sekunde, Umdrehungen /Sec. : Zählerwert verdoppeln, Umdrehungen/min: Zählerwert x 120 (vorausgesetzt 1 Impuls/Umdrehung).
Sieh Dir vielleicht dieses Programm an: www.mino-elektronik.de/fmeter/fm_software.htm; es macht mit einem 2313 eine hochaufgelöste Frequenzmessung - die Drehzahl ist nur Faktor 60 daneben.
Danke für eure Anregungen. Dann muss ich mich wohl mal in die Timer Sache einarbeiten. Grundsätzlich: Der Timer zählt bei jedem Taktimpuls einen hoch und bei überlauf wird ein Bit gesetzt? Dieses Bit muss man auswerten und man hat eine konstante Zeitspanne? Gruß Bastian
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.