45 lines
880 B
Plaintext
45 lines
880 B
Plaintext
.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);
|
|
}
|
|
%}
|
|
|