Kevin Thomas
9fd8c28e30
fix(ir_cbm): clear PDE bit in pad config for proper pull-up input
...
PADS_BANK0 GPIO5 had PDE (pull-down enable, bit 2) still set to its
reset default. With both PUE and PDE active the pin floated to ~VDD/2,
causing the Schmitt trigger to read LOW permanently. Clear PDE in
_configure_pad() so the pull-up works correctly.
Added PADS_BANK0_PDE_SHIFT define to rp2350.h.
2026-04-06 21:47:48 -04:00
Kevin Thomas
9a36752f74
fix(dht11_cbm): add dummy read on init to prevent first-read failure
2026-04-06 17:26:05 -04:00
Kevin Thomas
c46bcba401
fix: remove duplicate docstrings from public functions in .c files
...
Public function docstrings belong exclusively in .h headers per
coding convention. Only static helper functions and static variables
retain docstrings in .c files. Removed 413 duplicate docstrings
across 185 files (15 CBM + 15 C SDK projects). All 30 projects
rebuild with zero errors.
2026-04-06 08:49:37 -04:00
Kevin Thomas
e54c756423
refactor: enforce max 8 code lines, add docstrings, fix warnings across all Rust and C SDK projects
...
Rust (all 15 projects):
- Refactored overlength functions: format_counter, format_u8, format_f32_1,
format_u32_minimal, gpio_drive, read_sensor, poll_sensor, format_round_trip,
format_u32, prepare_write_buf, write_min_digits, write_temp, UartDriver::init,
init_spi, angle_to_pulse_us, compute_servo_level
- Added 200+ docstrings to test functions, mock structs, impl blocks
- Fixed pub static comments (//) to doc comments (///) in all main.rs files
- Fixed helper function ordering (helpers above callers)
- Fixed Fn(u32) -> FnMut(u32) bound in button poll_button
- Moved OneShot trait import from main.rs to board.rs in adc project
- Added unsafe {} blocks in flash unsafe fn bodies (Rust 2024 edition)
- Removed unused hal::Clock imports from pwm/servo main.rs
- All 15 projects build with zero errors and zero warnings
C Pico SDK (all 15 projects):
- Added docstrings to all public functions, macros, and static variables
- All 15 projects rebuilt with zero errors
Cleanup:
- Removed build/ and target/ directories from git tracking
- Added target/ to .gitignore
- Deleted temporary fix_rust_docs.py script
2026-04-06 08:33:17 -04:00
Kevin Thomas
3ee093be92
remove unused coprocessor driver from all CBM projects
...
No project uses floating-point, so coprocessor_enable() was dead code.
Removes rp2350_coprocessor.c/.h and all references from reset handlers
and Makefiles across all 15 CBM drivers (0x01-0x0f).
2026-04-05 21:36:42 -04:00
Kevin Thomas
aa8e471de1
refactor: enforce 8-line Reset_Handler limit across CBM drivers
...
Extract _late_init() wrappers in 0x04, 0x05, 0x0b, 0x0d, 0x0e, 0x0f
to keep Reset_Handler within the max 8 code-line standard.
2026-04-05 21:29:31 -04:00
Kevin Thomas
1ed501386e
Add 0x0f_flash_cbm bare-metal on-chip flash driver
2026-04-05 21:21:12 -04:00
Kevin Thomas
ce29cce5f4
Add 0x0e_watchdog_cbm: bare-metal watchdog timer driver for RP2350
2026-04-05 20:39:08 -04:00
Kevin Thomas
f63578de94
Add 0x0d_timer_cbm: bare-metal TIMER0 repeating alarm driver for RP2350
2026-04-05 20:28:23 -04:00
Kevin Thomas
acd9db9d43
feat: add 0x0c_multicore_cbm bare-metal dual-core FIFO driver
2026-04-05 20:14:56 -04:00
Kevin Thomas
9c7a2c0b40
feat: add 0x0b_spi_cbm bare-metal SPI loopback driver
2026-04-05 18:49:36 -04:00
Kevin Thomas
1271291abf
feat: add 0x0a_ir_cbm bare-metal NEC IR receiver
2026-04-05 18:36:30 -04:00
Kevin Thomas
1aad11d6d1
feat: add 0x09_dht11_cbm bare-metal DHT11 driver
...
- Single-wire protocol on GPIO4 via SIO register bit-bang
- TIMER0 TIMERAWL for microsecond pulse-width measurement
- Tick generator configured for 1 us ticks at 12 MHz clk_ref
- UART output: humidity/temperature or wiring failure message
- Zero warnings, 1876 bytes text
2026-04-05 18:30:18 -04:00
Kevin Thomas
a778d7fd3a
fix: correct 14.5 MHz to 12 MHz across all CBM projects
...
- Update all docstrings from 14.5 MHz to 12 MHz XOSC (29 files)
- Fix 0x05_servo_cbm divider: INT=14/FRAC=8 (14.5) -> INT=12/FRAC=0 (12)
- Verified against RP2350 datasheet, Pico 2 board schematic, and SDK
2026-04-05 18:19:43 -04:00
Kevin Thomas
3ce9d081f7
Add 0x08_lcd1602_cbm bare-metal LCD1602 driver
2026-04-05 18:01:39 -04:00
Kevin Thomas
2dc29e4d63
Add bare-metal I2C driver for RP2350 (0x07_i2c_cbm)
2026-04-05 17:43:31 -04:00
Kevin Thomas
70a12a85e7
Add bare-metal ADC driver for RP2350 (0x06_adc_cbm)
2026-04-05 17:34:07 -04:00
Kevin Thomas
8cbabf0f40
Add 0x05_servo_cbm: bare-metal RP2350 servo driver
...
- PWM slice 3, channel A on GPIO6 at 50 Hz
- Fractional divider 14.5 (14.5 MHz XOSC / 50 Hz / 20000)
- Sweep 0-180-0 degrees in 10-degree steps
- Pulse range 1000-2000 us, angle-to-pulse mapping
- UART reports each angle step
- 1557B FLASH, 11 source files, zero warnings
2026-04-05 16:25:29 -04:00
Kevin Thomas
f560e40cf7
Add 0x04_pwm_cbm: bare-metal RP2350 PWM driver
...
- PWM slice 4, channel B on GPIO25 (onboard LED)
- Duty cycle sweep 0-100% in 5% steps for breathing effect
- Wrap 9999 with no clock division (~650 Hz from ROSC)
- UART reports each duty step
- 1390B FLASH, 11 source files, zero warnings
2026-04-05 16:21:47 -04:00
Kevin Thomas
afdc1fa594
Add 0x03_button_cbm: bare-metal RP2350 button driver
...
- GPIO15 active-low button input with internal pull-up
- 20ms software debounce via busy-wait confirmation
- LED mirrors button state, UART reports edge transitions
- New gpio_config_input_pullup() in GPIO driver
- 1555B FLASH, 13 source files, zero warnings
2026-04-05 16:06:46 -04:00
Kevin Thomas
d072ec5946
refactor: convert 0x01_uart_cbm and 0x02_blink_cbm to bare-metal Inc/Src structure
...
- Restructure flat files into Inc/ (headers) and Src/ (sources)
- Replace constants.h with rp2350.h register layer (datasheet-verified)
- Add full Doxygen docstrings on all files, functions, and structs
- Replace build.bat/clean.bat with cross-platform Makefile
- Fix GPIO_IN offset (0x004), XOSC COUNT offset (0x10), SRAM size (520K)
- Rename blink_* API to led_* (name after peripheral, not feature)
- Build outputs to build/ directory
- Cross-platform .vscode configs (Windows/macOS/Linux)
2026-04-05 15:57:44 -04:00
Kevin Thomas
b7c5937bf5
Added cbm 1 2
2026-04-04 12:11:58 -04:00
Kevin Thomas
da90954a90
Fixed Rust drivers
2026-04-02 11:36:06 -04:00
Kevin Thomas
6f9d138032
Delete drivers/0x01_uart_asm_arm directory
2026-03-28 19:45:51 -04:00
Kevin Thomas
bef5e91fbf
Add new driver implementations and workspace updates
2026-03-27 11:19:24 -04:00
Kevin Thomas
7720434862
Add 0x09_dht11_rust: DHT11 temperature/humidity sensor driver
2026-03-25 21:21:35 -04:00
Kevin Thomas
3ade64aff8
Add // comments to all use statements in driver .rs files
...
- Add // comments above top-level use imports in uart.rs, blink.rs, button.rs
- Add // comments above test module use imports (use super::*, Infallible,
ErrorType) in all 8 driver .rs files
- All 8 drivers build, all 75 tests pass
2026-03-25 18:54:19 -04:00
Kevin Thomas
790b35add8
Fix duplicate //! headers in board.rs, update @brief, add // comments to lib.rs pub mod
...
- Remove duplicate //! @file/@brief/@author/@date blocks from all 8 board.rs
- Update original @brief to consistent 'Board-level HAL helpers for the XXX driver'
- Add // comment above pub mod in all 7 lib.rs files
- All 8 drivers build, all 75 tests pass
2026-03-25 18:45:41 -04:00
Kevin Thomas
279df2e408
Add inline // comments to all main.rs and board.rs boilerplate across 0x01-0x08 Rust drivers
...
- Add // comments to mod declarations, use imports, static items, and
PICOTOOL_ENTRIES in all 8 main.rs files matching rp-hal template style
- Add //! file headers to all 8 board.rs files
- Add // comments to all board.rs use imports and HAL alias
- All 8 drivers build successfully, all 75 tests pass
2026-03-25 18:34:20 -04:00
Kevin Thomas
097b295f63
refactor(drivers): add board.rs module, slim main.rs, fix docstrings across all 8 Rust drivers
...
- Add board.rs to all 8 drivers: constants, type aliases, init functions,
and HAL-specific helpers with full docstrings and pub(crate) visibility
- Slim main.rs to boilerplate + main() only, zero helper functions
- Fix i2c.rs: add file header, full docstrings on all functions
- Fix lcd1602.rs: add file header, full docstrings on all functions
- Fix lib.rs headers for 0x07 and 0x08
- All 8 drivers build and all 75 tests pass
2026-03-25 18:10:00 -04:00
Kevin Thomas
be4fcb15ff
feat: add 0x08_lcd1602_rust driver with 14 unit tests
2026-03-25 17:31:05 -04:00
Kevin Thomas
2965deb67d
feat: add 0x07_i2c_rust driver with 12 unit tests
2026-03-25 17:16:51 -04:00
Kevin Thomas
c78f86accb
feat: add 0x06_adc_rust driver with 9 unit tests
2026-03-25 12:25:09 -04:00
Kevin Thomas
37c1a0b5a3
feat: add 0x05_servo_rust driver with 13 unit tests
2026-03-25 12:04:01 -04:00
Kevin Thomas
aad8d6b848
feat: add 0x04_pwm_rust driver with 11 unit tests
2026-03-25 11:50:06 -04:00
Kevin Thomas
cc4b259f72
feat: add 0x03_button_rust driver with 8 unit tests
2026-03-25 11:37:45 -04:00
Kevin Thomas
c40c79099e
feat: add unit tests for blink driver with mock pin
2026-03-25 11:25:13 -04:00
Kevin Thomas
450d3f8ea6
fix: allow dead_code on blink module (on/off match C API)
2026-03-24 18:21:46 -04:00
Kevin Thomas
04cbf81c67
feat: add 0x02_blink_rust driver
2026-03-24 17:54:27 -04:00
Kevin Thomas
e4e5aa597d
Add 0x01_uart_rust driver and update README
2026-03-23 13:11:16 -04:00
Kevin Thomas
a98b864d4c
Fixed drivers
2026-03-23 11:20:32 -04:00
Kevin Thomas
91faba6800
Updated Drivers
2026-03-23 09:33:04 -04:00
Kevin Thomas
7601201d66
Drivers
2026-03-22 20:39:16 -04:00