#include "hardware/gpio.h" #include "pico/stdlib.h" #include #include #include #include constexpr static uint start_pin = 2; constexpr static uint pin_mask = (0xFFF) << start_pin; template constexpr bool between(T x, T min, T max) { return (x >= min) && (x < max); } int main() { stdio_init_all(); for (uint offset{}; offset != 14; ++offset) { auto const pin = start_pin + offset; std::printf("Initializing GPIO %d\n", pin); gpio_init(pin); gpio_set_dir(pin, GPIO_OUT); } for (uint32_t y{}; y != 525; ++y) { for (uint32_t x{}; x != 800; ++x) { const auto is_blanking = y >= 480 || x >= 640; const auto hsync = between(x, 656ul, 752ul); const auto vsync = between(y, 490ul, 492ul); auto const pixel = (0u << 8) | ((y & 0xF) << 4) | (x & 0xF); auto const set_mask = (((uint32_t)vsync << 13) | ((uint32_t)hsync << 12) | (pixel & 0xFFF)) << start_pin; std::printf("Set mask=%04X\n", set_mask >> start_pin); gpio_put_masked(pin_mask, set_mask); sleep_ms(10); } } }