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
94dac7f76b
Update README.md
2026-04-06 08:19:56 -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
27d00a6ee0
Move C Bare-Metal Drivers section above C Drivers in README
2026-04-05 20:33:06 -04:00
Kevin Thomas
82f6914996
Add C Bare-Metal Drivers section to README (0x01-0x0d_cbm)
2026-04-05 20:32:01 -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
85ace9869c
Update tutorial date and lesson number
2026-04-05 08:49:39 -04:00
Kevin Thomas
b7c5937bf5
Added cbm 1 2
2026-04-04 12:11:58 -04:00
Kevin Thomas
3324c83b0f
Update README.md
2026-04-04 08:38:34 -04:00
Kevin Thomas
283a30e0de
Update tutorial date and lesson information
2026-04-03 08:28:18 -04:00
Kevin Thomas
da90954a90
Fixed Rust drivers
2026-04-02 11:36:06 -04:00
Kevin Thomas
dcc20840d4
Update tutorial date and lesson details
2026-04-02 08:26:26 -04:00
Kevin Thomas
bc574b0caa
Update README.md
2026-04-01 18:40:11 -04:00
Kevin Thomas
27a308ba8c
Update tutorial date and lesson number
2026-04-01 10:29:51 -04:00
Kevin Thomas
dd819c7afb
Added FINAL ruberic and info
2026-03-31 15:13:37 -04:00
Kevin Thomas
e3529279ef
Update tutorial date and lesson number
2026-03-31 10:26:02 -04:00
Kevin Thomas
9d5ab6313a
Add servo example project to README
2026-03-30 19:55:40 -04:00
Kevin Thomas
3c84655369
Update tutorial date and lesson number in README
2026-03-30 09:17:08 -04:00
Kevin Thomas
e0fb66ba66
Revise tutorial date and lesson in README
...
Updated tutorial date and lesson number in README.
2026-03-29 09:07:40 -04:00
Kevin Thomas
cb2e9a23e2
Update README.md
2026-03-28 22:50:11 -04:00
Kevin Thomas
6f9d138032
Delete drivers/0x01_uart_asm_arm directory
2026-03-28 19:45:51 -04:00
Kevin Thomas
f9307e4a57
Remove Assembler Drivers section from README
...
Removed section about Assembler Drivers and its details.
2026-03-28 19:45:01 -04:00
Kevin Thomas
7fbeb0cde2
Update links for UART and Blinky examples
2026-03-28 19:44:00 -04:00
Kevin Thomas
f78505dd3b
Correct capitalization of 'Assembler' in README
2026-03-28 19:09:42 -04:00
Kevin Thomas
313c8e137e
Add testing instructions to README
...
Added a section on testing with a command to run integration tests.
2026-03-28 19:05:19 -04:00
Kevin Thomas
0183a768f7
Update README.md
2026-03-28 19:02:23 -04:00
Kevin Thomas
3cc001dd7d
Update tutorial date and lesson number
2026-03-28 08:36:17 -04:00
Kevin Thomas
ea22aeb189
Update README driver tables
2026-03-27 11:22:28 -04:00
Kevin Thomas
bef5e91fbf
Add new driver implementations and workspace updates
2026-03-27 11:19:24 -04:00
Kevin Thomas
1c02ebd76e
Update tutorial date and lesson number
2026-03-27 07:35:05 -04:00
Kevin Thomas
321229785c
Update tutorial date and lesson number
2026-03-26 09:29:46 -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