71 void update(uint32_t nowMs);
99 static void IRAM_ATTR handleInterrupt();
111 uint32_t takePulseCountSnapshot();
116 volatile uint32_t pulseCountSinceSample_;
117 uint16_t lastMeasuredRpm_;
118 uint32_t lastSampleMs_;
Measures fan speed from tachometer pulses.
Definition rpm_monitor.h:48
uint32_t pulseCount() const
Returns the number of pulses accumulated in the current sample.
Definition rpm_monitor.cpp:56
bool begin()
Initializes the tachometer pin and attaches the interrupt handler.
Definition rpm_monitor.cpp:17
uint32_t sampleAgeMs(uint32_t nowMs) const
Calculates the age of the current RPM sample.
Definition rpm_monitor.cpp:60
uint16_t rpm() const
Returns the most recently calculated fan speed.
Definition rpm_monitor.cpp:52
void update(uint32_t nowMs)
Updates the measured RPM after the configured sample window elapses.
Definition rpm_monitor.cpp:28
constexpr RpmMonitorConfig kDefaultRpmMonitorConfig
Default tachometer settings for the configured cooling fan.
Definition rpm_monitor.h:30
Configuration for fan tachometer sampling.
Definition rpm_monitor.h:21
uint8_t tachPin
GPIO connected to the fan tachometer output.
Definition rpm_monitor.h:22
uint32_t sampleWindowMs
Minimum sampling window in milliseconds.
Definition rpm_monitor.h:24
uint8_t pulsesPerRevolution
Tachometer pulses emitted per full fan revolution.
Definition rpm_monitor.h:23