RPi Pico Frequenzzähler bis 65 MHz          

Elektronik-Labor  Projekte  Mikrocontroller  Raspberry            




Siehe auch: RPi Pico Schaltungen und Projekte, Kap 16

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