.program datastream public start: PULL block MOV X, OSR .wrap_target PULL noblock OUT NULL, 16 SET Y,6 loop: OUT PINS,1 [4] SET PINS,0 [4] OUT PINS,1 [4] SET PINS,0 [3] JMP Y-- loop OUT PINS,1 [4] SET PINS,0 [4] OUT PINS,1 [4] SET PINS,0 [1] .wrap % c-sdk { static inline void datastream_program_init(PIO pio, uint sm, uint offset, int dout) { pio_set_gpio_base(pio, 0); pio_gpio_init(pio, dout); pio_sm_set_consecutive_pindirs(pio, sm, dout, 1, true); pio_sm_config c = datastream_program_get_default_config(offset); sm_config_set_out_shift(&c, false, false, 0); sm_config_set_fifo_join(&c, PIO_FIFO_JOIN_TX); sm_config_set_clkdiv(&c, 3.0); sm_config_set_out_pin_base(&c, dout); sm_config_set_out_pin_count(&c, 1); sm_config_set_set_pin_base(&c, dout); sm_config_set_set_pin_count(&c, 1); pio_sm_init(pio, sm, offset, &c); } %}