Correctly invert esp32 RMT TX (#2022)

This commit is contained in:
WeekendWarrior1 2021-07-26 17:20:02 +10:00 committed by Otto winter
parent 9fbb3659a6
commit 7828f48b9a
No known key found for this signature in database
GPG key ID: 48ED2DDB96D7682C
2 changed files with 4 additions and 2 deletions

View file

@ -41,6 +41,7 @@ class RemoteTransmitterComponent : public remote_base::RemoteTransmitterBase,
bool initialized_{false}; bool initialized_{false};
std::vector<rmt_item32_t> rmt_temp_; std::vector<rmt_item32_t> rmt_temp_;
esp_err_t error_code_{ESP_OK}; esp_err_t error_code_{ESP_OK};
bool inverted_{false};
#endif #endif
uint8_t carrier_duty_percent_{50}; uint8_t carrier_duty_percent_{50};
}; };

View file

@ -50,6 +50,7 @@ void RemoteTransmitterComponent::configure_rmt() {
} else { } else {
c.tx_config.carrier_level = RMT_CARRIER_LEVEL_LOW; c.tx_config.carrier_level = RMT_CARRIER_LEVEL_LOW;
c.tx_config.idle_level = RMT_IDLE_LEVEL_HIGH; c.tx_config.idle_level = RMT_IDLE_LEVEL_HIGH;
this->inverted_ = true;
} }
esp_err_t error = rmt_config(&c); esp_err_t error = rmt_config(&c);
@ -95,10 +96,10 @@ void RemoteTransmitterComponent::send_internal(uint32_t send_times, uint32_t sen
val -= item; val -= item;
if (rmt_i % 2 == 0) { if (rmt_i % 2 == 0) {
rmt_item.level0 = static_cast<uint32_t>(level); rmt_item.level0 = static_cast<uint32_t>(level ^ this->inverted_);
rmt_item.duration0 = static_cast<uint32_t>(item); rmt_item.duration0 = static_cast<uint32_t>(item);
} else { } else {
rmt_item.level1 = static_cast<uint32_t>(level); rmt_item.level1 = static_cast<uint32_t>(level ^ this->inverted_);
rmt_item.duration1 = static_cast<uint32_t>(item); rmt_item.duration1 = static_cast<uint32_t>(item);
this->rmt_temp_.push_back(rmt_item); this->rmt_temp_.push_back(rmt_item);
} }