4 #include "pico/stdlib.h"
5 #include "hardware/pio.h"
6 #include "hardware/clocks.h"
28 this->program = program;
32 this->config = config;
42 uint offset = pio_add_program(pio, &program);
47 state_machine = pio_claim_unused_sm(pio,
true);
51 sm_config_set_out_pins(&config, pin, 1);
54 pio_gpio_init(pio, pin);
57 sm_config_set_sideset_pins(&config, pin);
60 pio_sm_init(pio, state_machine, offset, &config);
64 PIOManager &setup(uint64_t hz,
int pin, pio_program_t program, pio_sm_config config, PIO pio = pio0 ){
65 setup(pin, program, config, pio);
73 float div = clock_get_hz(clk_sys) / hz);
74 sm_config_set_clkdiv(&config, div);
75 pio_sm_set_enabled(pio, state_machine,
true);
77 pio_sm_set_enabled(pio, state_machine,
false);
83 pio_sm_set_enabled(pio, state_machine,
true);
88 pio_sm_set_enabled(pio, state_machine,
false);
95 pio_program_t program;
The PIO subsystem on RP2040 allows you to write small, simple programs for what are called PIO state ...
Definition: PicoPIOManager.h:15