Thanks for the help!! This got me going in the right direction. Here is the end result. I just pass in 0x00nnFF to handle changing the directions of the pins. Thanks for the suggestion!
Code:
.program parallel_io.side_set 1 opt jmp pin, recv // High means STROBE is HIGH and host is sending datajmp !OSRE,send jmp exit send: wait 0 gpio 11 // Wait for DIRECTION to go LOW out pindirs, 8 side 1 // Set pins for output out pins, 8 // Output data set pins 1 // Set ACK HIGHwait 1 GPIO 12 // Wait for STROBE to go HIGH set pins 0 // Set ACK LOW wait 0 GPIO 12 // Wait for STROBE to go LOW out pindirs, 8 side 0 // Set pins back for input jmp exit recv: wait 1 gpio 11 // Wait for DIRECTION to go HIGH in pins 8 // Read data pins push set pins 1 // Set ACK HIGH wait 0 gpio 12 // Wait for STROBE to go LOW set pins 0 // Set ACK LOW exit: nop% c-sdk {#include "hardware/clocks.h"#include "hardware/gpio.h"static inline void parallel_output_program_init(PIO pio, uint sm, uint offset) { pio_sm_config c = parallel_io_program_get_default_config(offset); // IO mapping sm_config_set_out_pins(&c, 0, 8); sm_config_set_in_pins(&c, 0); sm_config_set_set_pins(&c, 13, 1); sm_config_set_sideset_pins(&c, 10); sm_config_set_jmp_pin(&c, 12); pio_sm_set_pindirs_with_mask(pio, sm, 1u << 10 | 1u << 13, 1u << 10 | 1u << 13); pio_sm_set_pindirs_with_mask(pio, sm, ~(1u << 11 | 1u << 12 | 0xFF), 1u << 11 | 1u << 12 | 0xFF); pio_sm_set_pins_with_mask(pio, sm, ~(1u << 13 | 1u << 10), 1u << 13 | 1u << 10); for(int i = 0; i < 8; ++i) pio_gpio_init(pio, i); for(int i = 10; i < 14; ++i) pio_gpio_init(pio, i); sm_config_set_out_shift(&c, true, true, 24); sm_config_set_in_shift(&c, false, false, 8); pio_sm_init(pio, sm, offset, &c); pio_sm_set_enabled(pio, sm, true);}static inline void parallel_io_putc(PIO pio, uint sm, int c) { pio_sm_put_blocking(pio, sm, (uint32_t)c);}static inline int parallel_io_getc(PIO pio, uint sm) { return pio_sm_get_blocking(pio, sm);}static inline bool parallel_io_has_data(PIO pio, uint sm){ return !pio_sm_is_rx_fifo_empty(pio, sm);}%}
Statistics: Posted by zoggins — Fri Jul 05, 2024 12:14 am