diff --git a/.cache/clangd/index/main.c.FD33880BB41924A3.idx b/.cache/clangd/index/main.c.FD33880BB41924A3.idx new file mode 100644 index 0000000..b70503f Binary files /dev/null and b/.cache/clangd/index/main.c.FD33880BB41924A3.idx differ diff --git a/.cache/clangd/index/vga.c.0DFA730AD660A07F.idx b/.cache/clangd/index/vga.c.0DFA730AD660A07F.idx new file mode 100644 index 0000000..9c42b3c Binary files /dev/null and b/.cache/clangd/index/vga.c.0DFA730AD660A07F.idx differ diff --git a/.cache/clangd/index/vga.h.DADCA5B487311169.idx b/.cache/clangd/index/vga.h.DADCA5B487311169.idx new file mode 100644 index 0000000..ceebc71 Binary files /dev/null and b/.cache/clangd/index/vga.h.DADCA5B487311169.idx differ diff --git a/CMakeLists.txt b/CMakeLists.txt index d00baa8..f1b0d22 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,42 +1,29 @@ cmake_minimum_required(VERSION 3.13) set(CMAKE_C_STANDARD 11) -set(CMAKE_CXX_STANDARD 17) - -# initalize pico_sdk from installed location -# (note this can come from environment, CMake cache etc) -set(PICO_SDK_PATH "/home/ben/pico/pico-sdk") # Pull in Raspberry Pi Pico SDK (must be before project) +set(PICO_SDK_FETCH_FROM_GIT on) include(pico_sdk_import.cmake) +include_directories(${CMAKE_SOURCE_DIR}) + project(pico_vga C CXX ASM) - -add_executable(pico_vga) - -# Initialise the Raspberry Pi Pico SDK pico_sdk_init() -pico_set_program_name(pico_vga "pico_vga") -pico_set_program_version(pico_vga "0.1") +# pico_generate_pio_header(pico_vga ${CMAKE_CURRENT_LIST_DIR}/video.pio) -pico_enable_stdio_usb(pico_vga 1) -pico_enable_stdio_uart(pico_vga 0) - -pico_generate_pio_header(pico_vga ${CMAKE_CURRENT_LIST_DIR}/video.pio) - -target_sources(pico_vga PRIVATE - main.c - vga.c +add_executable(pico_vga + src/main.c ) # Add the standard library to the build -target_link_libraries(pico_vga - pico_stdlib - hardware_pio - hardware_dma - hardware_irq +target_link_libraries(pico_vga + pico_stdlib + # hardware_pio + # hardware_dma + # hardware_irq ) pico_add_extra_outputs(pico_vga) diff --git a/kicad/Product Logo.png b/designs/Product Logo.png similarity index 100% rename from kicad/Product Logo.png rename to designs/Product Logo.png diff --git a/kicad/Product Logo.psd b/designs/Product Logo.psd similarity index 100% rename from kicad/Product Logo.psd rename to designs/Product Logo.psd diff --git a/kicad/Product Version.png b/designs/Product Version.png similarity index 100% rename from kicad/Product Version.png rename to designs/Product Version.png diff --git a/kicad/Product Version.psd b/designs/Product Version.psd similarity index 100% rename from kicad/Product Version.psd rename to designs/Product Version.psd diff --git a/kicad/picovga/fp-info-cache b/designs/picovga/fp-info-cache similarity index 100% rename from kicad/picovga/fp-info-cache rename to designs/picovga/fp-info-cache diff --git a/kicad/picovga/fp-lib-table b/designs/picovga/fp-lib-table similarity index 100% rename from kicad/picovga/fp-lib-table rename to designs/picovga/fp-lib-table diff --git a/kicad/picovga/lib/kiwih_kicad.pretty/XM4L1542132.kicad_mod b/designs/picovga/lib/kiwih_kicad.pretty/XM4L1542132.kicad_mod similarity index 100% rename from kicad/picovga/lib/kiwih_kicad.pretty/XM4L1542132.kicad_mod rename to designs/picovga/lib/kiwih_kicad.pretty/XM4L1542132.kicad_mod diff --git a/kicad/picovga/lib/kiwih_kicad.pretty/name-logo.kicad_mod b/designs/picovga/lib/kiwih_kicad.pretty/name-logo.kicad_mod similarity index 100% rename from kicad/picovga/lib/kiwih_kicad.pretty/name-logo.kicad_mod rename to designs/picovga/lib/kiwih_kicad.pretty/name-logo.kicad_mod diff --git a/kicad/picovga/lib/kiwih_kicad.pretty/osh.kicad_mod b/designs/picovga/lib/kiwih_kicad.pretty/osh.kicad_mod similarity index 100% rename from kicad/picovga/lib/kiwih_kicad.pretty/osh.kicad_mod rename to designs/picovga/lib/kiwih_kicad.pretty/osh.kicad_mod diff --git a/kicad/picovga/lib/kiwih_kicad.pretty/product-logo.kicad_mod b/designs/picovga/lib/kiwih_kicad.pretty/product-logo.kicad_mod similarity index 100% rename from kicad/picovga/lib/kiwih_kicad.pretty/product-logo.kicad_mod rename to designs/picovga/lib/kiwih_kicad.pretty/product-logo.kicad_mod diff --git a/kicad/picovga/lib/kiwih_kicad.pretty/product-version.kicad_mod b/designs/picovga/lib/kiwih_kicad.pretty/product-version.kicad_mod similarity index 100% rename from kicad/picovga/lib/kiwih_kicad.pretty/product-version.kicad_mod rename to designs/picovga/lib/kiwih_kicad.pretty/product-version.kicad_mod diff --git a/kicad/picovga/lib/kiwih_kicad.pretty/raspberrypi-pico-module.kicad_mod b/designs/picovga/lib/kiwih_kicad.pretty/raspberrypi-pico-module.kicad_mod similarity index 100% rename from kicad/picovga/lib/kiwih_kicad.pretty/raspberrypi-pico-module.kicad_mod rename to designs/picovga/lib/kiwih_kicad.pretty/raspberrypi-pico-module.kicad_mod diff --git a/kicad/picovga/lib/pico_rp2040.dcm b/designs/picovga/lib/pico_rp2040.dcm similarity index 100% rename from kicad/picovga/lib/pico_rp2040.dcm rename to designs/picovga/lib/pico_rp2040.dcm diff --git a/kicad/picovga/lib/pico_rp2040.kicad_prl b/designs/picovga/lib/pico_rp2040.kicad_prl similarity index 100% rename from kicad/picovga/lib/pico_rp2040.kicad_prl rename to designs/picovga/lib/pico_rp2040.kicad_prl diff --git a/kicad/picovga/lib/pico_rp2040.kicad_pro b/designs/picovga/lib/pico_rp2040.kicad_pro similarity index 100% rename from kicad/picovga/lib/pico_rp2040.kicad_pro rename to designs/picovga/lib/pico_rp2040.kicad_pro diff --git a/kicad/picovga/lib/pico_rp2040.lib b/designs/picovga/lib/pico_rp2040.lib similarity index 100% rename from kicad/picovga/lib/pico_rp2040.lib rename to designs/picovga/lib/pico_rp2040.lib diff --git a/kicad/picovga/picovga b/designs/picovga/picovga similarity index 100% rename from kicad/picovga/picovga rename to designs/picovga/picovga diff --git a/kicad/picovga/picovga-B_Cu.gbr b/designs/picovga/picovga-B_Cu.gbr similarity index 100% rename from kicad/picovga/picovga-B_Cu.gbr rename to designs/picovga/picovga-B_Cu.gbr diff --git a/kicad/picovga/picovga-B_Mask.gbr b/designs/picovga/picovga-B_Mask.gbr similarity index 100% rename from kicad/picovga/picovga-B_Mask.gbr rename to designs/picovga/picovga-B_Mask.gbr diff --git a/kicad/picovga/picovga-B_Paste.gbr b/designs/picovga/picovga-B_Paste.gbr similarity index 100% rename from kicad/picovga/picovga-B_Paste.gbr rename to designs/picovga/picovga-B_Paste.gbr diff --git a/kicad/picovga/picovga-B_Silkscreen.gbr b/designs/picovga/picovga-B_Silkscreen.gbr similarity index 100% rename from kicad/picovga/picovga-B_Silkscreen.gbr rename to designs/picovga/picovga-B_Silkscreen.gbr diff --git a/kicad/picovga/picovga-Edge_Cuts.gbr b/designs/picovga/picovga-Edge_Cuts.gbr similarity index 100% rename from kicad/picovga/picovga-Edge_Cuts.gbr rename to designs/picovga/picovga-Edge_Cuts.gbr diff --git a/kicad/picovga/picovga-F_Cu.gbr b/designs/picovga/picovga-F_Cu.gbr similarity index 100% rename from kicad/picovga/picovga-F_Cu.gbr rename to designs/picovga/picovga-F_Cu.gbr diff --git a/kicad/picovga/picovga-F_Mask.gbr b/designs/picovga/picovga-F_Mask.gbr similarity index 100% rename from kicad/picovga/picovga-F_Mask.gbr rename to designs/picovga/picovga-F_Mask.gbr diff --git a/kicad/picovga/picovga-F_Paste.gbr b/designs/picovga/picovga-F_Paste.gbr similarity index 100% rename from kicad/picovga/picovga-F_Paste.gbr rename to designs/picovga/picovga-F_Paste.gbr diff --git a/kicad/picovga/picovga-F_Silkscreen.gbr b/designs/picovga/picovga-F_Silkscreen.gbr similarity index 100% rename from kicad/picovga/picovga-F_Silkscreen.gbr rename to designs/picovga/picovga-F_Silkscreen.gbr diff --git a/kicad/picovga/picovga-NPTH-drl_map.gbr b/designs/picovga/picovga-NPTH-drl_map.gbr similarity index 100% rename from kicad/picovga/picovga-NPTH-drl_map.gbr rename to designs/picovga/picovga-NPTH-drl_map.gbr diff --git a/kicad/picovga/picovga-NPTH.drl b/designs/picovga/picovga-NPTH.drl similarity index 100% rename from kicad/picovga/picovga-NPTH.drl rename to designs/picovga/picovga-NPTH.drl diff --git a/kicad/picovga/picovga-PTH-drl_map.gbr b/designs/picovga/picovga-PTH-drl_map.gbr similarity index 100% rename from kicad/picovga/picovga-PTH-drl_map.gbr rename to designs/picovga/picovga-PTH-drl_map.gbr diff --git a/kicad/picovga/picovga-PTH.drl b/designs/picovga/picovga-PTH.drl similarity index 100% rename from kicad/picovga/picovga-PTH.drl rename to designs/picovga/picovga-PTH.drl diff --git a/kicad/picovga/picovga-job.gbrjob b/designs/picovga/picovga-job.gbrjob similarity index 100% rename from kicad/picovga/picovga-job.gbrjob rename to designs/picovga/picovga-job.gbrjob diff --git a/kicad/picovga/picovga.kicad_pcb b/designs/picovga/picovga.kicad_pcb similarity index 100% rename from kicad/picovga/picovga.kicad_pcb rename to designs/picovga/picovga.kicad_pcb diff --git a/kicad/picovga/picovga.kicad_prl b/designs/picovga/picovga.kicad_prl similarity index 100% rename from kicad/picovga/picovga.kicad_prl rename to designs/picovga/picovga.kicad_prl diff --git a/kicad/picovga/picovga.kicad_pro b/designs/picovga/picovga.kicad_pro similarity index 100% rename from kicad/picovga/picovga.kicad_pro rename to designs/picovga/picovga.kicad_pro diff --git a/kicad/picovga/picovga.kicad_sch b/designs/picovga/picovga.kicad_sch similarity index 100% rename from kicad/picovga/picovga.kicad_sch rename to designs/picovga/picovga.kicad_sch diff --git a/kicad/picovga/picovga.zip b/designs/picovga/picovga.zip similarity index 100% rename from kicad/picovga/picovga.zip rename to designs/picovga/picovga.zip diff --git a/kicad/picovga/sym-lib-table b/designs/picovga/sym-lib-table similarity index 100% rename from kicad/picovga/sym-lib-table rename to designs/picovga/sym-lib-table diff --git a/main.c b/main.c deleted file mode 100644 index a11d8a7..0000000 --- a/main.c +++ /dev/null @@ -1,40 +0,0 @@ -// Copyright Benjamin Kyd 2021 All Rights Reserved - -#include - -#include "pico/stdlib.h" -#include "hardware/clocks.h" -#include "hardware/pio.h" -#include "hardware/dma.h" -#include "hardware/irq.h" - -#include "pico/stdlib.h" - -#include "vga.h" - -// PIN LAYOUT -// PIN 0-3 RED DAC -// PIN 4-7 GREEN DAC -// PIN 8-11 BLUE DAC -// PIN 12 HSYNC -// PIN 13 VSYNC - -int main() -{ - stdio_init_all(); - sleep_ms(1400); - - gpio_init(PICO_DEFAULT_LED_PIN); - gpio_set_dir(PICO_DEFAULT_LED_PIN, GPIO_OUT); - gpio_put(PICO_DEFAULT_LED_PIN, 1); - - printf("VGA Initalizing...\n"); - - const video_timing_t video_timing = vga_timing_800x600_60; - vga_init(&video_timing); - - while(true) - { - tight_loop_contents(); - } -} diff --git a/makefile b/makefile new file mode 100644 index 0000000..abd9179 --- /dev/null +++ b/makefile @@ -0,0 +1,16 @@ +.ONESHELL: + +all: compile flash + +compile: + cd build && cmake .. -DCMAKE_EXPORT_COMPILE_COMMANDS=on && make + +flash: compile + sudo mount -L RPI-RP2 /mnt + sudo cp build/pico_vga.uf2 /mnt + echo "Copied pico_vga.uf2 to pico" + +clean: + rm -rf build + mkdir build + diff --git a/pico_sdk_import.cmake b/pico_sdk_import.cmake index 28efe9e..65f8a6f 100644 --- a/pico_sdk_import.cmake +++ b/pico_sdk_import.cmake @@ -29,11 +29,22 @@ if (NOT PICO_SDK_PATH) if (PICO_SDK_FETCH_FROM_GIT_PATH) get_filename_component(FETCHCONTENT_BASE_DIR "${PICO_SDK_FETCH_FROM_GIT_PATH}" REALPATH BASE_DIR "${CMAKE_SOURCE_DIR}") endif () - FetchContent_Declare( - pico_sdk - GIT_REPOSITORY https://github.com/raspberrypi/pico-sdk - GIT_TAG master - ) + # GIT_SUBMODULES_RECURSE was added in 3.17 + if (${CMAKE_VERSION} VERSION_GREATER_EQUAL "3.17.0") + FetchContent_Declare( + pico_sdk + GIT_REPOSITORY https://github.com/raspberrypi/pico-sdk + GIT_TAG master + GIT_SUBMODULES_RECURSE FALSE + ) + else () + FetchContent_Declare( + pico_sdk + GIT_REPOSITORY https://github.com/raspberrypi/pico-sdk + GIT_TAG master + ) + endif () + if (NOT pico_sdk) message("Downloading Raspberry Pi Pico SDK") FetchContent_Populate(pico_sdk) diff --git a/src/main.c b/src/main.c new file mode 100644 index 0000000..fcff439 --- /dev/null +++ b/src/main.c @@ -0,0 +1,17 @@ +// Copyright Benjamin Kyd 2021 All Rights Reserved + +// PIN LAYOUT +// PIN 0-3 RED DAC +// PIN 4-7 GREEN DAC +// PIN 8-11 BLUE DAC +// PIN 12 HSYNC +// PIN 13 VSYNC + +#include +#include "pico/stdlib.h" + +int main() { + setup_default_uart(); + printf("Hello, world!\n"); + return 0; +} diff --git a/vga.c b/src/vga.c similarity index 61% rename from vga.c rename to src/vga.c index 9890665..e6c63a8 100644 --- a/vga.c +++ b/src/vga.c @@ -11,28 +11,28 @@ #include "vga.h" #include "video.pio.h" -const video_timing_t vga_timing_800x600_60 = -{ - .clock_freq = 38400000, - - .h_active = 800, - .v_active = 600, - - .h_front_porch = 4 * 8, - .h_pulse = 10 * 8, - .h_total = 128 * 8, - .h_sync_polarity = 0, - - .v_front_porch = 1, - .v_pulse = 3, - .v_total = 625, - .v_sync_polarity = 0, - - .enable_clock = 0, - .clock_polarity = 0, - - .enable_den = 0 -}; +// const video_timing_t vga_timing_800x600_60 = +// { +// .clock_freq = 38400000, +// +// .h_active = 800, +// .v_active = 600, +// +// .h_front_porch = 4 * 8, +// .h_pulse = 10 * 8, +// .h_total = 128 * 8, +// .h_sync_polarity = 0, +// +// .v_front_porch = 1, +// .v_pulse = 3, +// .v_total = 625, +// .v_sync_polarity = 0, +// +// .enable_clock = 0, +// .clock_polarity = 0, +// +// .enable_den = 0 +// }; #define PIN_START 8 #define PIN_COUNT 2 diff --git a/src/vga.h b/src/vga.h new file mode 100644 index 0000000..41e7c4e --- /dev/null +++ b/src/vga.h @@ -0,0 +1,40 @@ +#ifndef PICOVGA_VGA_H_ +#define PICOVGA_VGA_H_ + +#include "pico/types.h" +// +// typedef struct video_timing { +// uint32_t clock_freq; +// +// uint16_t h_active; +// uint16_t v_active; +// +// uint16_t h_front_porch; +// uint16_t h_pulse; +// uint16_t h_total; +// uint8_t h_sync_polarity; +// +// uint16_t v_front_porch; +// uint16_t v_pulse; +// uint16_t v_total; +// uint8_t v_sync_polarity; +// +// uint8_t enable_clock; +// uint8_t clock_polarity; +// +// uint8_t enable_den; +// } video_timing_t; +// +// const video_timing_t vga_timing_800x600_60; +// +// // typedef struct video { +// // uint16_t* +// // } video_t; +// +// void vga_init(const video_timing_t* timing); +// +// void vga_start(); +// +// void vga_swap_buffers(); +// +#endif diff --git a/vga.h b/vga.h deleted file mode 100644 index 210c7ee..0000000 --- a/vga.h +++ /dev/null @@ -1,40 +0,0 @@ -#ifndef PICOVGA_VGA_H_ -#define PICOVGA_VGA_H_ - -#include "pico/types.h" - -typedef struct video_timing { - uint32_t clock_freq; - - uint16_t h_active; - uint16_t v_active; - - uint16_t h_front_porch; - uint16_t h_pulse; - uint16_t h_total; - uint8_t h_sync_polarity; - - uint16_t v_front_porch; - uint16_t v_pulse; - uint16_t v_total; - uint8_t v_sync_polarity; - - uint8_t enable_clock; - uint8_t clock_polarity; - - uint8_t enable_den; -} video_timing_t; - -const video_timing_t vga_timing_800x600_60; - -// typedef struct video { -// uint16_t* -// } video_t; - -void vga_init(const video_timing_t* timing); - -void vga_start(); - -void vga_swap_buffers(); - -#endif diff --git a/vga.txt b/vga.txt deleted file mode 100644 index f851ea9..0000000 --- a/vga.txt +++ /dev/null @@ -1,5 +0,0 @@ -WHITE - VSYNC - -BLACK - HSYNC - -RED - VGA_R - -GREEN - VGA_G - -BLUE - VGA_B - \ No newline at end of file diff --git a/video.pio b/video.pio deleted file mode 100644 index 8f4ff7a..0000000 --- a/video.pio +++ /dev/null @@ -1,28 +0,0 @@ -; Copyright Benjamin Kyd 2021 All Rights Reserved - -.program video - -; write 5 bits from the TX FIFO to the pin mask - -.wrap_target - out pins 2 -.wrap - -% c-sdk { -static inline void video_program_init(PIO pio, uint sm, uint offset, uint pin, float clk_div) { - pio_sm_config c = video_program_get_default_config(offset); - - // Map the state machine's OUT pin group to one pin, namely the `pin` - // parameter to this function. - sm_config_set_out_pins(&c, pin, 1); - // Set this pin's GPIO function (connect PIO to the pad) - pio_gpio_init(pio, pin); - // Set the pin direction to output at the PIO - pio_sm_set_consecutive_pindirs(pio, sm, pin, 1, true); - - // Load our configuration, and jump to the start of the program - pio_sm_init(pio, sm, offset, &c); - // Set the state machine running - pio_sm_set_enabled(pio, sm, true); -} -%}