diff options
author | Maxwell Beck <max@rastertail.net> | 2025-07-20 11:13:53 -0500 |
---|---|---|
committer | Maxwell Beck <max@rastertail.net> | 2025-07-20 11:13:53 -0500 |
commit | 039f2b9965ac716f7cb24c3563f6a9bf9e3038da (patch) | |
tree | ccfacca3474a26a772b78a8018de640001cef870 | |
parent | 38f2755daa2456a4ebcaadcf3ddd2ff88e4fa838 (diff) |
feat: Move drive handing to `SIO_IRQ_PROC1`
-rw-r--r-- | CMakeLists.txt | 2 | ||||
-rw-r--r-- | src/pico1541.c | 13 |
2 files changed, 10 insertions, 5 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt index 04846ba..4963841 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -11,5 +11,5 @@ add_executable(pico1541 ) pico_set_binary_type(pico1541 copy_to_ram) target_include_directories(pico1541 PRIVATE src) -target_link_libraries(pico1541 pico_runtime pico_multicore hardware_timer hardware_flash tinyusb_device tinyusb_board pico_stdlib) +target_link_libraries(pico1541 pico_runtime pico_multicore hardware_timer hardware_flash hardware_irq tinyusb_device tinyusb_board pico_stdlib) pico_add_extra_outputs(pico1541) diff --git a/src/pico1541.c b/src/pico1541.c index 8a02587..9864c89 100644 --- a/src/pico1541.c +++ b/src/pico1541.c @@ -1,8 +1,10 @@ +#include <hardware/regs/intctrl.h> #include <stdint.h> #include <hardware/clocks.h> #include <hardware/flash.h> #include <hardware/gpio.h> +#include <hardware/irq.h> #include <hardware/timer.h> #include <pico/multicore.h> @@ -272,15 +274,18 @@ DRESULT disk_ioctl(BYTE pdrv, BYTE cmd, void *buff) { return RES_PARERR; } +void drive_irq() { + drive_cycle(&drive); +} + void drive_thread() { drive_init(&drive); drive.image = disk; + + irq_set_exclusive_handler(SIO_IRQ_PROC1, drive_irq); + irq_set_enabled(SIO_IRQ_PROC1, true); multicore_fifo_push_blocking(1); - - while (multicore_fifo_pop_blocking_inline()) { - drive_cycle(&drive); - } } int main() { |