Stable VGA 640x460@75Hz. Black screen.
This commit is contained in:
parent
d805003349
commit
151afb08b0
@ -122,8 +122,8 @@ int main()
|
||||
vga_hsync_program_init(pio, sm1, offset1);
|
||||
printf("Feeding horizontal sync...\n");
|
||||
// low pulse is X pixels long, and SM runs at 4x of pixel clock
|
||||
pio_sm_put_blocking(pio, sm1, 63 * 4);
|
||||
pio_sm_put_blocking(pio, sm1, 775 * 4);
|
||||
pio_sm_put_blocking(pio, sm1, 64 * 4);
|
||||
pio_sm_put_blocking(pio, sm1, 765 * 4);
|
||||
|
||||
// VGA VSYNC program
|
||||
uint offset2 = pio_add_program(pio, &vga_vsync_program);
|
||||
@ -131,8 +131,9 @@ int main()
|
||||
printf("Starting VGA vsync machine on %u...\n", sm2);
|
||||
vga_vsync_program_init(pio, sm2, offset2);
|
||||
printf("Feeding vertical sync...\n");
|
||||
pio_sm_put_blocking(pio, sm2, 2520 * 4);
|
||||
pio_sm_put_blocking(pio, sm2, 420000 * 4);
|
||||
// low pulse assert lasts for 3 horizontal lines, then adjust by one
|
||||
pio_sm_put_blocking(pio, sm2, 3 - 1);
|
||||
pio_sm_put_blocking(pio, sm2, 500 - 3 - 1);
|
||||
|
||||
printf("Start!\n");
|
||||
|
||||
|
20
src/vga.pio
20
src/vga.pio
@ -13,9 +13,10 @@ entrypoint_vga_hsync:
|
||||
mov isr, osr
|
||||
pull
|
||||
|
||||
loope:
|
||||
set y, 15
|
||||
loop:
|
||||
nop
|
||||
irq set 0
|
||||
|
||||
mov x, isr
|
||||
set pins, 0
|
||||
hsync_pulse:
|
||||
@ -25,10 +26,9 @@ hsync_pulse:
|
||||
set pins, 1
|
||||
hsync_idle:
|
||||
jmp x-- hsync_idle
|
||||
jmp y-- loop
|
||||
nop
|
||||
jmp loop
|
||||
|
||||
irq set 0
|
||||
jmp loope
|
||||
|
||||
.program vga_vsync
|
||||
|
||||
@ -38,11 +38,17 @@ entrypoint_vga_vsync:
|
||||
pull
|
||||
|
||||
loop:
|
||||
wait irq 0
|
||||
|
||||
mov x, isr
|
||||
set pins, 0
|
||||
vsync_pulse:
|
||||
wait irq 0
|
||||
set pins, 0
|
||||
jmp x-- vsync_pulse
|
||||
|
||||
mov x, osr
|
||||
vsync_idle:
|
||||
wait irq 0
|
||||
set pins, 1
|
||||
jmp x-- vsync_idle
|
||||
|
||||
jmp loop
|
||||
|
Loading…
Reference in New Issue
Block a user