Commit Graph

323 Commits

Author SHA1 Message Date
Kevin Thomas
e82bd3d326 feat: add 0x0b_spi_cbm bare-metal SPI loopback driver 2026-04-05 18:49:36 -04:00
Kevin Thomas
9a760585e6 feat: add 0x0a_ir_cbm bare-metal NEC IR receiver 2026-04-05 18:36:30 -04:00
Kevin Thomas
108f3f5598 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
6bb722ddee 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
99ed43d69f Add 0x08_lcd1602_cbm bare-metal LCD1602 driver 2026-04-05 18:01:39 -04:00
Kevin Thomas
614062fa52 Add bare-metal I2C driver for RP2350 (0x07_i2c_cbm) 2026-04-05 17:43:31 -04:00
Kevin Thomas
e36a1a537f Add bare-metal ADC driver for RP2350 (0x06_adc_cbm) 2026-04-05 17:34:07 -04:00
Kevin Thomas
10b514ed38 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
7a42b2e088 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
d912771a5e 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
d5bdf49894 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
e875b8af89 Update tutorial date and lesson number 2026-04-05 08:49:39 -04:00
Kevin Thomas
eb6150ffad Added cbm 1 2 2026-04-04 12:11:58 -04:00
Kevin Thomas
aa8f2ca754 Update README.md 2026-04-04 08:38:34 -04:00
Kevin Thomas
587ed8206e Update tutorial date and lesson information 2026-04-03 08:28:18 -04:00
Kevin Thomas
9834d5c96c Fixed Rust drivers 2026-04-02 11:36:06 -04:00
Kevin Thomas
2792583302 Update tutorial date and lesson details 2026-04-02 08:26:26 -04:00
Kevin Thomas
6e05a67783 Update README.md 2026-04-01 18:40:11 -04:00
Kevin Thomas
8f22cc7112 Update tutorial date and lesson number 2026-04-01 10:29:51 -04:00
Kevin Thomas
423352a9c0 Added FINAL ruberic and info 2026-03-31 15:13:37 -04:00
Kevin Thomas
d64a65947f Update tutorial date and lesson number 2026-03-31 10:26:02 -04:00
Kevin Thomas
167819df3a Add servo example project to README 2026-03-30 19:55:40 -04:00
Kevin Thomas
930822573b Update tutorial date and lesson number in README 2026-03-30 09:17:08 -04:00
Kevin Thomas
84be8d0755 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
ac9559ba6d Update README.md 2026-03-28 22:50:11 -04:00
Kevin Thomas
1392a31221 Delete drivers/0x01_uart_asm_arm directory 2026-03-28 19:45:51 -04:00
Kevin Thomas
707a9fd01e Remove Assembler Drivers section from README
Removed section about Assembler Drivers and its details.
2026-03-28 19:45:01 -04:00
Kevin Thomas
f114f7b04f Update links for UART and Blinky examples 2026-03-28 19:44:00 -04:00
Kevin Thomas
76b10e740e Correct capitalization of 'Assembler' in README 2026-03-28 19:09:42 -04:00
Kevin Thomas
c611fcbc83 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
a4bbfece18 Update README.md 2026-03-28 19:02:23 -04:00
Kevin Thomas
a74b231755 Update tutorial date and lesson number 2026-03-28 08:36:17 -04:00
Kevin Thomas
ecbce65ae3 Update README driver tables 2026-03-27 11:22:28 -04:00
Kevin Thomas
67013421c3 Add new driver implementations and workspace updates 2026-03-27 11:19:24 -04:00
Kevin Thomas
7ca0d0f78d Update tutorial date and lesson number 2026-03-27 07:35:05 -04:00
Kevin Thomas
d5703370ad Update tutorial date and lesson number 2026-03-26 09:29:46 -04:00
Kevin Thomas
cca3fe4cff Add 0x09_dht11_rust: DHT11 temperature/humidity sensor driver 2026-03-25 21:21:35 -04:00
Kevin Thomas
0b207fd8b4 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
450f84ef75 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
3fc502854a 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
db25706ae7 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
c68e158f16 feat: add 0x08_lcd1602_rust driver with 14 unit tests 2026-03-25 17:31:05 -04:00
Kevin Thomas
b0299bf95e feat: add 0x07_i2c_rust driver with 12 unit tests 2026-03-25 17:16:51 -04:00
Kevin Thomas
bfb6f5541e feat: add 0x06_adc_rust driver with 9 unit tests 2026-03-25 12:25:09 -04:00
Kevin Thomas
05ae72d0a1 feat: add 0x05_servo_rust driver with 13 unit tests 2026-03-25 12:04:01 -04:00
Kevin Thomas
d7d30f8732 docs: add build and test instructions for Rust drivers 2026-03-25 11:53:25 -04:00
Kevin Thomas
9748b6848c feat: add 0x04_pwm_rust driver with 11 unit tests 2026-03-25 11:50:06 -04:00
Kevin Thomas
12da31297e feat: add 0x03_button_rust driver with 8 unit tests 2026-03-25 11:37:45 -04:00
Kevin Thomas
e5f6bb7f15 feat: add unit tests for blink driver with mock pin 2026-03-25 11:25:13 -04:00
Kevin Thomas
7ec979461f Update tutorial date and lesson number 2026-03-25 08:53:52 -04:00