Fix slow_pwm output glitch (#3601)

This commit is contained in:
marshn 2022-06-30 10:28:19 +01:00 committed by GitHub
parent 435f972357
commit f7db9aaa9f
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -42,12 +42,12 @@ void SlowPWMOutput::loop() {
uint32_t now = millis(); uint32_t now = millis();
float scaled_state = this->state_ * this->period_; float scaled_state = this->state_ * this->period_;
if (now >= this->period_start_time_ + this->period_) { if (now - this->period_start_time_ >= this->period_) {
ESP_LOGVV(TAG, "End of period. State: %f, Scaled state: %f", this->state_, scaled_state); ESP_LOGVV(TAG, "End of period. State: %f, Scaled state: %f", this->state_, scaled_state);
this->period_start_time_ += this->period_; this->period_start_time_ += this->period_;
} }
this->set_output_state_(now < this->period_start_time_ + scaled_state); this->set_output_state_(scaled_state > now - this->period_start_time_);
} }
void SlowPWMOutput::dump_config() { void SlowPWMOutput::dump_config() {