BlackMark ab78d94872 Rewrite on libavr
Same controller: thermistor on ADC0 averaged over 1000 free-running
conversions, 50 kHz fan PWM on OC0B, 115200 Bd console with the full
command set, EEPROM temperature histogram, watchdog-reset path into the
boot section. The Steinhart-Hart math and the libm log are gone — the
Beta equation and the cubic fan curve are consteval-evaluated into
flash tables; the firmware never does floating point. Byte-identical
.text in both libavr modes. Legacy stays on master.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-07-18 04:37:26 +02:00
2026-07-18 04:37:26 +02:00
2020-03-29 01:29:59 +01:00
2020-03-29 01:29:59 +01:00
2026-07-18 04:37:26 +02:00
2026-07-18 04:37:26 +02:00
2026-07-18 04:37:26 +02:00
2020-03-29 01:29:59 +01:00
2026-07-18 04:37:26 +02:00

fantemp

Temperature-controlled fan firmware (ATmega328P, 16 MHz), rewritten on libavr: thermistor on ADC0 sampled free-running and averaged over 1000 conversions, fan on OC0B at 50 kHz, 115200 Bd serial console (help lists the commands), temperature histogram persisted to EEPROM, watchdog-reset path into a boot-section bootloader.

The SteinhartHart math of the legacy firmware (runtime doubles + libm log) is gone: the Beta equation and the cubic fan curve are evaluated consteval into flash tables — the firmware itself never touches floating point.

Build against a libavr checkout:

LIBAVR_ROOT=/path/to/libavr cmake --preset atmega328p-generated
cmake --build --preset atmega328p-generated

Legacy (yazoalfa submodules) stays on master.

Description
Firmware for temperature controller board
Readme 229 KiB
Languages
C++ 100%