diff --git a/src/main.c b/src/main.c index 00cfb99..b951e9a 100644 --- a/src/main.c +++ b/src/main.c @@ -103,26 +103,19 @@ int main() uint sm1 = pio_claim_unused_sm(pio, true); printf("Starting VGA sync machine on %u...\n", sm1); vga_sync_program_init(pio, sm1, offset1); + printf("Feeding horizontal sync...\n"); + pio_sm_put_blocking(pio, sm1, 63 * 4); + pio_sm_put_blocking(pio, sm1, 775 * 4); - printf("Welcome.\n"); + printf("Start!\n"); while (true) { for (size_t i = 0; i < sizeof(frames[0].data);) { - // feed sync machine - if (pio_sm_get_tx_fifo_level(pio, sm1) <= 4) - { - pio_sm_put_blocking(pio, sm1, 63 * 4); - pio_sm_put_blocking(pio, sm1, 775 * 4); - } - // feed pixel machine if (!pio_sm_is_tx_fifo_full(pio, sm0)) pio_sm_put_blocking(pio, sm0, frames[0].data[i++]); } - // printf("."); - - // sleep_ms(1000); } } diff --git a/src/vga.pio b/src/vga.pio index 0d985dd..6f8876d 100644 --- a/src/vga.pio +++ b/src/vga.pio @@ -9,14 +9,16 @@ loop: .program vga_sync entrypoint_vga_sync: -loop: pull - mov x, osr + mov isr, osr + pull + +loop: + mov x, isr set pins, 0 hsync_pulse: jmp x-- hsync_pulse - pull mov x, osr set pins, 1 hsync_idle: