Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /**
- * Initialize Board Pins
- **/
- void init() {
- // LED
- cyw43_arch_init();
- cyw43_arch_gpio_put(CYW43_WL_GPIO_LED_PIN, false);
- // Set up the state machine for encoders
- pio = pio0;
- uint offset = pio_add_program(pio, &encoders_program);
- // Setup Encoders
- for (int i = 0; i < ENC_GPIO_SIZE; i++) {
- enc_val[i] = prev_enc_val[i] = cur_enc_val[i] = 0;
- encoders_program_init(pio, i, offset, ENC_GPIO[i], ENC_DEBOUNCE);
- dma_channel_config c = dma_channel_get_default_config(i);
- channel_config_set_read_increment(&c, false);
- channel_config_set_write_increment(&c, false);
- channel_config_set_dreq(&c, pio_get_dreq(pio, i, false));
- dma_channel_configure(i, &c,
- &enc_val[i], // Destination pointer
- &pio->rxf[i], // Source pointer
- 0x10, // Number of transfers
- true // Start immediately
- );
- irq_set_exclusive_handler(DMA_IRQ_0, dma_handler);
- irq_set_enabled(DMA_IRQ_0, true);
- dma_channel_set_irq0_enabled(i, true);
- // LED for debugging
- cyw43_arch_gpio_put(CYW43_WL_GPIO_LED_PIN, true);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement