Verify battery readings
Build the cat with bat and read its BatteryReport values: the BAT? keycode types
the last one per hand on any Coordinator, the T-Dongle shows it on its screen, and a
tower-console receiver logs every one (Vial settings). See
build and flash for commands.
The divider sits on GPIO14, which no mouse variant uses.
The default BATTERY_VFS_MV = 0 selects per-chip eFuse calibration in
battery/task.rs. Its comments explain the ADC2/Wi-Fi
initialization order. The on-board 470 kΩ / 470 kΩ divider is noisy; this is
indicator-grade state of charge, not a precision voltmeter.
- Disconnect the charger, boot, and wait at least 15 seconds.
- Measure at the battery connector with a DMM and compare with the next reported
millivolts. Reports arrive every 30 seconds (
protocol::battery::BATTERY_REPORT_PERIOD_MS);BAT?shows the age of the one it types. - Take at least five paired readings for each cat. The bench acceptance target is mean absolute error ≤50 mV and maximum ≤75 mV.
- Compare state of charge and LED 2 with the functions in cat-rules/battery.rs. White means invalid reading.
For a blank-eFuse chip or historical reproduction only: set BATTERY_VFS_MV = 3100,
measure a cell at least 40% charged without the charger, then compute
Vfs = 3100 × meter_mV / firmware_mV. Set the result, rebuild and remeasure.
Do not share a hand-calibrated constant between devices.
If error grows with voltage, averaging cannot fix the divider's settling error; the recorded hardware follow-up is a 100 nF filter capacitor at GPIO14. If voltage is accurate but charge/color is wrong, investigate the LUT/animator separately.