Hallo Leute, möchte mit einem uC (im Moment noch unwichtig welcher) eine Frequenz messen. (Rechtecksignal. 5V. max. 400kHz) Ich möchte nicht auf "Spezialfähigkeiten" wie Capture Compare usw. zurückgreifen. Wie gehe ich am besten vor? Habe jetzt zwei Lösungsansätze: Ansatz 1: Ich zähle in einer Schleife sämtliche eingehenden Pulse. Läuft mein Timer über (z.b. nach einer Sekunde), so wird das Ergebniss ausgewertet. Der Timer und Counter wird zurückgesetzt und alles fäng von vorne an. Ansatz 2: Ein der Hauptschleiffe wird auf einen Puls gewartet. Ist dieser eingetroffen, so wird der Timer gestartet. Es wird auf einen zweiten Puls gewartet. Ist dieser eingetroffen, so wird der Timer gestoppt und das Ergebniss ausgegeben. Der Timer wird zurückgesetzt und alles beginnt von vorne. mfG Seppi
den "Timer" zählst du aber nicht zu den Spezialfähigkeiten? Dürfen es auch zwei Timer sein? Einen extern getriggert, der Zählt. Einen internen, der stellt die Zeitbasis zur Verfügung. 400kHz zählen mit Polling oder auch Interrupts braucht einen sehr schnellen µC. 400kHz mit Timer-Eingang sind kein Thema. Bei den kleinen PICs gibt's sogar einen Timer-Eingang, der nicht mit der System-Clock synchronisiert ist. Der zählt (laut Datenblatt) bis 50 MHz, auch wenn der PIC z.B. nur mit 1MHz läuft. In der Praxis zählt der auch noch 66MHz sauber, zumindest bei Zimmertemperatur.
Seppi schrieb: > möchte mit einem uC (im Moment noch unwichtig welcher) > eine Frequenz messen. (Rechtecksignal. 5V. max. 400kHz) > > Ich möchte nicht auf "Spezialfähigkeiten" wie Capture Compare usw. > zurückgreifen. Und warum möchtest du das nicht? Diese Anforderung ist ca. genauso sinnvoll wie "ich möchte Tango tanzen lernen, aber mit verbundenen Augen und auf dem Rücken gefesselten Händen". > Habe jetzt zwei Lösungsansätze: > > Ansatz 1: > Ich zähle in einer Schleife sämtliche eingehenden Pulse. > Läuft mein Timer über (z.b. nach einer Sekunde), so wird das > Ergebniss ausgewertet. Der Timer und Counter wird zurückgesetzt und > alles fäng von vorne an. Vulgo: direkter Frequenzzähler > Ansatz 2: > Ein der Hauptschleiffe wird auf einen Puls gewartet. > Ist dieser eingetroffen, so wird der Timer gestartet. > Es wird auf einen zweiten Puls gewartet. > Ist dieser eingetroffen, so wird der Timer gestoppt und das Ergebniss > ausgegeben. Vulgo: Periodendauermessung Kommt auf die Meßfrequenz an, welchen Verfahren besser ist. Siehe Frequenzzählermodul: Messverfahren Allerdings hat es einen guten Grund, warum man die Capture-Funktion eines Timers benutzt, statt das Signal in Software abzutasten: es ist viel genauer (und man schafft höhere Frequenzen). Und es hat genauso gute Gründe, warum man einen Hardware-Timer benutzt, um z.B. eine Sekunde zu warten statt eines z.B. _delay(1000).
Seppi schrieb: > Wie gehe ich am besten vor? http://www.mino-elektronik.de/fmeter/fm_software.htm 400 kHz für einen 'nackten' AVR mit 20 MHz Takt sind kein Problem. Das geht sogar mit BASCOM.
@Seppi Du hast leider noch kein Wort über deine Genauigkeit und Auflösung verloren, sehr schade...
m.n. schrieb: > 400 kHz für einen 'nackten' AVR mit 20 MHz Takt sind kein Problem. Aber eben auch nur unter Verwendung der Capture-Funktion.
Axel Schwenke schrieb: > m.n. schrieb: >> 400 kHz für einen 'nackten' AVR mit 20 MHz Takt sind kein Problem. > > Aber eben auch nur unter Verwendung der Capture-Funktion. Er wollte doch wissen, wie er am besten vorgehen soll. Gibt es heute denn noch µCs ohne Capture-Funktion? Ich kann ihm auch einen Schaltplan mit 7490 zeichnen ;-)
Das Prinzip der Frequenzmessung ist halt für eine gewisse Zeit das Signal und den Ref Takt zu Zählen. Auf eines der Signale kann man die Zählung meist synchronisieren, so dass der eine Wert exakt ist, beim anderen hat man halt die prinzipielle Unsicherheit um +-1. Meist ist es besser die niedrigere Frequenz exakt zu zählen. Bei eingeschränkter Hardware muss man halt sehen welcher weg besser funktioniert. Die 400 kHz sind ggf. schon recht schnell um sie ohne HW Unterstützung zu verarbeiten. Ohne sich auf die HW festzulegen kann man also nicht sagen welcher weg besser geht, bzw. sich überhaupt richtig realisieren lässt. Da die meisten µC so etwas wie eine capture Einheit bieten, bietet es sich an die auch zu nutzen. Dafür ist die schließlich auch da.
Seppi schrieb: > möchte mit einem uC (im Moment noch unwichtig welcher) > eine Frequenz messen. > (Rechtecksignal. 5V. max. 400kHz) > > Ich möchte nicht auf "Spezialfähigkeiten" wie Capture Compare usw. > zurückgreifen. Warum nicht? Ohne vernünftige Begründung, warum ein bei fast jedem µC vorhandenes, für die Aufgabe optimal geeignet Feature nicht verwendet werden soll, bleibt nur die Annahme eine verdammenswerten Trollpostings über... > Wie gehe ich am besten vor? > > Habe jetzt zwei Lösungsansätze: [...] Das ist ein Problem, was völlig unabhängig davon ist, wie du die Meßdaten gewinnst. Außerdem wurde diese Wahl schon gefühlte 100.000 mal hier diskutiert und es kam immer dasselbe dabei heraus, weil das in der Natur der Sachen liegt und jeder Nicht-Vollidiot es sich auch selber ausrechnen kann: es hängt einfach von der zu messenden Frequenz selber ab und der Frequenz, mit der die Meßwerte "hinten" aus dem Messgerät rausfallen sollen. Ist die Meßfrequenz höher oder gleich der zu messenden Frequenz, kommt grundsätzlich immer nur die Messung der Periodendauer der zu messenden Frequenz in Frage und die Meßfrequenz wird zwangsläufig auf die zu messende Frequenz abgesenkt. Ist die Meßfrequenz hingegen geringer als die zu messende Frequenz, gibt es immer noch einen gewissen Bereich, in dem die Messung der Periodendauer sinnvoller ist. Bei weiter fallender Maßfrequenz wird aber irgendwann das Zählverfahren genauere Ergebnisse liefern können. Diese Grenze (das einzig Interessante an der ganzen Sache) ist z.T. schon durch das Abtast-Theorem vorgegeben. Erst wenn die Meßfrequenz unter die Hälfte der zu messenden Frequenz fällt, muß man deshalb überhaupt über diese Grenze wirklich nachdenken. Wenn aber Scheiß-Drecks-Trolls wie du Arsch weder das eine noch das andere angeben, braucht man überhaupt nicht darüber nachdenken...
Seppi schrieb: > Ich möchte nicht auf "Spezialfähigkeiten" wie Capture Compare usw. > zurückgreifen. > > ... > > Der Timer wird zurückgesetzt ... Welcher Timer? Wollte du auf solche Spezialhardware nicht verzichten?
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.