
RPi Pico Frequenzzähler bis 65 MHz
Elektronik-Labor
Projekte
Mikrocontroller
Raspberry
Für höhere Frequenzen reicht die Abfrage von Portzuständen nicht mehr
aus, sondern man braucht einen Hardware-Zähler. Hier wird die
PWM-Einheit 2 (Slice 2) als 16-Bit-Zähler verwendet. Der Kanal B kann
statt des Systemtakts auch einen externen Takt zählen. Er liegt nun an
P5.
Mit pwm_get_default_config() erhält man eine Default-Struktur mit allen
Einstellungen einer PWM-Einheit. Mit config_set_clkdiv_mode wird die
Einstellung so geändert, dass am Eingang B externe Impulse bei
steigenden Flanken gezählt werden. Diese Konfiguration wird dann mit
pwm_init der PWM-Einheit 2 zugewiesen, wobei der Parameter false
angibt, dass keine PWM-Ausgabe gewünscht wird. Stattdessen wird diesmal
mit pwm_get_counter der Zählerstand ausgelesen.
//Pico_Freq3
#include "pico/stdlib.h"
#include "hardware/pwm.h"
#include "pico/multicore.h"
void setup() {
Serial.begin(115200);
}
void loop() {}
void setup1() {
gpio_set_function(0, GPIO_FUNC_PWM);
pwm_set_wrap(0, 1); //PWM 62,5 MHz
pwm_set_gpio_level(0, 1);
pwm_set_enabled(0, true);
while (true) {
uint32_t f = 0;
pwm_config cfg = pwm_get_default_config();
pwm_config_set_clkdiv_mode(&cfg, PWM_DIV_B_RISING);
pwm_init(2, &cfg, false);
gpio_set_function(5, GPIO_FUNC_PWM);
uint32_t t = time_us_32()+2;
while (t>time_us_32());
pwm_set_enabled(2, true);
t += 1000;
while (t>time_us_32());
pwm_set_enabled(2, false);
f= pwm_get_counter(2);
Serial.print(f);
Serial.println(" kHz ");
}
}
void loop1() {}
Auch diesmal wird der PWM-Ausgang am Port GP0 als Signalquelle
verwendet. Hier wird die höchste mögliche PWM-Frequenz von 62,5 MHz
erzeugt. Als Zeitbasis wird der Mikrosekunden-Timer verwendet. Damit
die Messung genau bei einer beginnenden Mikrosekunde beginnt, wird
vorher der Beginn der zweiten Mikrosekunde abgewartet. Nach weiteren
1000 µs endet die Messung. Das Messergebnis bestätigt die Messfrequenz
von 62500 kHz mit den üblichen Schwankungen am letzten Digit.
Der Anschluss GP5 kann nun als Eingang für einen vielseitig
einsetzbaren Zähler verwendet werden. Zum Schutz des Eingangs vor
negativen oder zu hohen Signalspannungen sollten ein Widerstand und ein
Kondensator in Reihe gelegt werden.
Elektronik-Labor
Projekte
Mikrocontroller
Raspberry