Changes for version 0.02 - 2026-06-22
- Fixed setMonth() to store the month in BCD (was raw binary); months 10, 11 and 12 were written as illegal BCD (0x0A-0x0C) and corrupted the calendar/rollover on the chip
- Fixed setHour() 12-hour mode to store the hour in BCD (same raw-binary bug as setMonth())
- Fixed getTemp() to sign-extend the temperature MSB so sub-zero temperatures decode correctly
- Routed all BCD time/date register I/O through new setBcdField() / getBcdField() helpers, with masks per the DS3231 datasheet, so the raw-vs-BCD encoding can no longer diverge
- Added a simple BCD codec sanity check (t/01-bcd-encoding.t) and worst-case raw-register guards in t/40-month.t / t/15-hour.t that fail on the old raw write and pass on the BCD write; tightened t/50-temp.t to assert the DS3231 operating range. The comprehensive, exhaustive proof lives in the rpi-wiringpi test platform
Modules
Interface to the DS3231 Real-Time Clock IC over I2C