Forum: Projekte & Code Arduino pico-fmeter mit RP2040


von Mi N. (msx)


Angehängte Dateien:

Lesenswert?

Die ursprüngliche Schaltung ist hier gezeigt worden: 
Beitrag "Pico Frequenzzähler mit RP2040"
Das Programm ist auf Arduino-IDE portiert worden, um zum einen bei 
Bedarf (oder temporär) ein einfaches Messgerät aufzubauen (nur ein 
RP2040 Pico-Board wird benötigt) und zum anderen ohne großen Aufwand die 
USB-Schnittstelle zur Ausgabe zu nutzen.

Es muß lediglich das Eingangssignal an FIN gelegt werden. Die 
Stromversorgung erfolgt über USB und die Daten können mit einem 
Terminal-Programm gelesen werden. Mit dem Trimmpoti kann eine Korrektur 
der lokalen Takfrequenz um +/- 20 ppm vorgenommen werden. Die LC-Anzeige 
ist optional, die restlichen Leitungen werden nicht verwendet.

Die maximale Eingangsfrequenz beträgt ca. F_CPU/9 und bei typisch 125 
MHz etwa 14 MHz. Übertaktung auf 300 MHz geht in der Regel problemlos, 
womit dann etwa 34 MHz erreicht werden.
Änderungen/Ergänzungen können auch mit den Arduino typischen Befehlen 
vorgenommen werden, solange nicht die PWM-Kanäle verwendet werden.
Möchte man DEF_F1_MESSZEIT, DEF_TIMEOUT, DEF_STELLEN, ... oder die 
exakte Taktfrequenz anpassen, kann man das ggf. direkt im Programm 
vornehmen und alles neu übersetzen.

Interessant wäre, ob sich auch ein Pico-Board-W mit WiFi drahtlos 
auslesen läßt. Dafür habe ich (noch) keine Testmöglichkeit.
Viel Spaß!

: Bearbeitet durch User
von Mi N. (msx)


Lesenswert?

Aktuell habe ich eine weitere Version eines Frequenzzählers für die 
Arduino-IDE portiert: 
http://mino-elektronik.de/fmeter/fm_software.htm#bsp_RP2040a
Sie findet sich etwas weiter unten und hat als Erweiterung zu den 
anderen Versionen für IAR- und Segger-IDE ebenfalls die 
USB-Schnittstelle zur Kommunikation aktiviert.

Im Prinzip kann man sich das Programm auch mit Arduino-typischen 
Befehlen anpassen, sofern man F_CPU auf 133 MHz eingestellt hat. 
Aktiviert man den Turbo-Modus mit verdoppelter Taktfrequenz kann das 
Timing z.B. für PWM oder Baudrate abweichen. Bei Bedarf einfach 
probieren.

von Markus B. (dalotel)


Lesenswert?

Danke für deine unermüdliche Arbeit.
Setzt du die Version mit dem TDC auch noch nach Arduino um?

Gruß
Markus

von Mi N. (msx)


Lesenswert?

Markus B. schrieb:
> Danke für deine unermüdliche Arbeit.

Danke, das freut mich!

Ja, ich bin mit dem Programm für das AS6501-Board fast fertig.
Das wird dann eine Doppelversion, die sich ohne bestückten AS6501 als 
"Pico-Fmeter3" meldet. Die Funktion ist nahezu identisch mit der 
2a-Version, wobei dann auch der lokale 10 MHz TCXO den lokalen 12 MHz XO 
stabilisieren kann.

Bestückt man dann nachträglich den AS6501 (der kostet doch ein paar 
Scheine), bekommt man die höhere Auflösung dazu.
Je nach Ansprüchen kann man mit der einfachen Version starten und mit 
dem gleichen Board weitermachen. Es ist aber auch eine 
Umschaltmöglichkeit vorgesehen, wieder ohne AS6501 zu messen.

Für das Programm gibt es dann Versionen für IAR, Segger und Arduino.
Da bei Segger die IRQ-Handler anders bezeichnet sind und Arduino die 
Vektoren im RAM erwartet, bin ich dazu übergegangen, auch in der IAR 
Ursprungsversion die Vektoren ins RAM zu legen. Die Änderungen zwischen 
IAR und Segger fallen damit weg und Arduino bekommt die Vektoren wie 
erwartet.

von Markus B. (dalotel)


Lesenswert?

Super Sache, Danke.

von Mi N. (msx)


Lesenswert?

Einige Punkte müssen noch besser dokumentiert (F1_offset) und einige 
Details noch angepaßt werden, aber als erste Schnupperverion für Arduino 
sollte es schon reichen: 
http://mino-elektronik.de/progs/Pico-FM-AS6501/pico_fm_as65_ard.zip

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.