/**
Controlling the Pi Pico GPIO with direct register access (SIO registers + IO Bank 0 registers)
*/
const byte ADDR0 = 18 ;
const byte ADDR1 = 19 ;
const byte ADDR2 = 20;
const byte ADDR3 = 21;
const uint32_t SIO_MASK = (1 << ADDR0) | (1 << ADDR1) | (1 << ADDR2) | (1 << ADDR3);
void setup() {
pinMode(8, OUTPUT);
gpio_set_function(ADDR0, GPIO_FUNC_SIO);
gpio_set_function(ADDR1, GPIO_FUNC_SIO);
gpio_set_function(ADDR2, GPIO_FUNC_SIO);
gpio_set_function(ADDR3, GPIO_FUNC_SIO);
gpio_set_dir_out_masked(SIO_MASK);
for (uint8_t i = 0; i < 3; i++) {
gpio_put_masked(SIO_MASK, SIO_MASK);
delay(250);
gpio_clr_mask(SIO_MASK);
delay(250);
}
delay(1000);
}
void loop() {
for (uint32_t i = 0; i < 16; i++) {
uint32_t addr = (bitRead(i, 0) << ADDR0) | (bitRead(i, 1) << ADDR1) | (bitRead(i, 2) << ADDR2) | (bitRead(i, 3) << ADDR3);
gpio_put_masked(SIO_MASK, addr);
delay(500);
}
}