Commit Graph

342 Commits

Author SHA1 Message Date
Kevin Thomas 8bf04eb9aa Update training links to include 'HERE' text 2026-04-09 16:57:23 -04:00
Kevin Thomas f3f39f9ee5 Add Required Skills section to README 2026-04-09 16:54:58 -04:00
Kevin Thomas d4119b880e Update README.md 2026-04-09 15:09:36 -04:00
Kevin Thomas 37df974e38 Update tutorial date and lesson number in README 2026-04-08 08:51:35 -04:00
Kevin Thomas b3aaf950d7 Updated formatting of cbm 2026-04-07 19:40:29 -04:00
Kevin Thomas 6ac25d6996 Change tutorial date and lesson from 151 to 152
Updated tutorial date and lesson number in README.
2026-04-07 08:42:12 -04:00
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 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