Forum: Mikrocontroller und Digitale Elektronik STM32F4 Frequenzmessung


von Lea R. (michael1909)


Lesenswert?

Hallo,

ich wollte mal fragen ob wer eine Idee hat wie man folgendes am besten 
löst, um die CPU-Auslastung möglichst gering zu halten!!!

Also, ich muss parallel 2 Frequenzen messen (f1~13MHz), (f2~15MHz).
mein plan sieht so aus:
ein Zeitfenster von 0.1ms erzeugen, indem ich die Flanken der beiden 
Eingänge zähle und somit auf die Frequenz zurückschließen kann.
diese Werte muss ich dann speichern und weiterverarbeiten (filtern, usw)

Welche timer / counter verwende ich hierzu am besten?
habe schon etwas gelesen von Master/Slave timer?!?

ich bin leider gerade erst in der Anfangsphase mich in den STM32F 
einzuarbeiten. Vielleicht hat von euch ein ähnliches Beispiel.

vielen Dank schon im voraus!

michael

von m.n. (Gast)


Lesenswert?


von Pieter (Gast)


Lesenswert?

moin moin,

die Software habe ich mal auf Pascal umgeschrieben, bin aber nicht 
zufrieden. Als Meßobject verwende ich einen Quarzgenerator, das Ergebnis 
springt wild hin und her.

Für den TO: mal mit dem Beispiel spielen und verschiedene Timer 
ausprobieren.

Mit Gruß
Pieter

von Lea R. (michael1909)


Lesenswert?

Hallo,

Habe folgendes Problem:
Ich zähle Pulse via den ETR-Pin eines Timers, welcher sich im 
Slave-Reset-Mode befindet.

ein Master-Timer liefert mir eine Zeitbasis von 0.1ms. Dieser ist im 
Master-Mode-Update konfiguriert.
Der Reset und alles funktioniert einwandfrei.

weiters besitzt der Slave-timer ein Comparevalue.
Das Ziel ist: wenn der Zählerstand unter dem Comparevalue bleibt soll 
nichts geschehen. Da er immer durch den Master-Timer auf 0 gesetzt wird.
Steigt die Frequenz am Eingang somit wird auch der Zählerstand höher. 
Überschreitet nun der Zählerstand den Comparevalue wird ein Interrupt 
ausgelöst. (Soweit funktioniert alles).
Nun möchte ich in diesem InterruptRequest den MasterMode deaktivieren, 
damit der Zählerstand nicht automatisch auf 0 gesetzt wird.
Weiters deaktiviere ich dabei auch den Interrupt für das 
CompareRegister,
und aktiviere den Interrupt für meinen "Master"-Timer damit ich alle 
0.1ms einen Interrupt bekomme und somit den Zählerstand des 
"Slave"Timers händisch auslesen kann und zurücksetzen kann.

jedoch, ist dann der Zählerstand des "Slave"-Timers immer 0, wenn ich 
ihn auslesen möchte.

Daher, kann man den Master/Slave Mode während den Betrieb ausschalten 
und einschalten?

oder übersehe ich hierbei noch etwas?

vielen Dank vorab!
M.

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.