Commit Graph

321 Commits

Author SHA1 Message Date
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
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 d315e76f1e docs: add build and test instructions for Rust drivers 2026-03-25 11:53:25 -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 2eb8b50e15 Update tutorial date and lesson number 2026-03-25 08:53:52 -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