Go Down

Topic: Digitales Signal - Frequenz im MHz Bereich ermitteln (Read 704 times) previous topic - next topic

DANINO24

Hallo Forum,

Ich benutze ein Arduino Mega 2560 und möchte folgendes Programm schreiben:

Ich habe ein digitales Input Signal an PIN 29, von dem ich gerne die Frequenz ermitteln möchte. Das Oszilloskop zeigt eine Frequnz von ca. 1,5 MHz an. Ich würde gerne nachvollziehen, ob das Arduino Board schnell genug ist und die gleiche Frequenz heraus bekommt!

Wie könnte ein mögliches Programm aussehen?

Vielen Dank!

Mfg

uwefed

Bei 16 Mhz Takt sind 1,5MHz gerade mal 10,6 Taktzyklen.
Mit einem C-Programm hast Du keine Chanche diese  Frequenz zu messen.
Grüße Uwe

jurs


Wie könnte ein mögliches Programm aussehen?


Mit der FreqCount-Library angeblich (von mir nicht getestet) Frequenzzählung bis zu 5 MHz möglich:
http://www.pjrc.com/teensy/td_libs_FreqCount.html

Probier's aus!

vieledinge


Bei 16 Mhz Takt sind 1,5MHz gerade mal 10,6 Taktzyklen.
Mit einem C-Programm hast Du keine Chanche diese  Frequenz zu messen.


Sehe ich auch so. Und selbst in Assembler dürfte das sportlich sein.

Klassisch hat man das früher mit Schaltkreisgräbern so gemacht:

Ein Zeitgeber hat das Zeitfenster für die Zählung definiert, z. Bsp. eine Sekunde. In diesem Zeitfenster wurden die Impulse von einer Zählerkette gezählt. Danach ausgegeben, Zähler auf Null und alles wieder von vorn.

Weil Zählerbausteine auch nicht beliebig schnell zählen können hat man davor einen Vorteiler gepackt, der den Zählimpuls durch einen bestimmten Wert runtergeteilt hat.

So in der Art würde ich das heute auch machen:

- Vorteiler um zählbare Impulsfolgen zu erhalten.
- Das Zeitfenster über einen Timer.  Wird der Timerinterrupt ausgelöst --> Wert anzeigen und zurück auf Null.
- Den Zählimpuls selbst würde ich über eine Interruptroutine zählen: Der Impuls löst den Interrupt aus, in der Routine wird der Zählwert um 1 erhöht.

Die Interruptroutine muss sehr kurz und schnell sein, damit sie sicher fertig ist bevor der nächste Zählimpuls kommt. Das ist das was Uwe mit den 10,6  Takten meinte.

Andererseits darf der Zählinterrupt auch nicht so oft ausgelöst werden das die anderen Routinen garnicht mehr zum Zug kommen.

Udo Klein

Die Hardware Zähler im AVR Chip können auch extern getaktet werden. Und Vorteiler haben die auch noch --> 1.5 MHz ist dann plötzlich gar nicht mehr wirklich sportlich. Die Details dazu stehen im Datenblatt.
Check out my experiments http://blog.blinkenlight.net

erni-berni

Hallo,
teile den zu messenden Takt doch erst durch ein vielfaches von 2, z.B. mit einem Binärzähler (74HC4060). Diesen Takt kannst du dann messen und zurückrechnen.
Gruß
Reinhard

Go Up