mirror of
				https://github.com/esphome/esphome.git
				synced 2025-10-31 07:03:55 +00:00 
			
		
		
		
	rp2040_pwm frequency is per pair of pins (#4061)
This commit is contained in:
		| @@ -42,9 +42,9 @@ void HOT RP2040PWM::write_state(float state) { | |||||||
|     state = 1.0f - state; |     state = 1.0f - state; | ||||||
|   } |   } | ||||||
|  |  | ||||||
|   if (frequency_changed_) { |   if (this->frequency_changed_) { | ||||||
|     this->setup_pwm_(); |     this->setup_pwm_(); | ||||||
|     frequency_changed_ = false; |     this->frequency_changed_ = false; | ||||||
|   } |   } | ||||||
|  |  | ||||||
|   gpio_set_function(this->pin_->get_pin(), GPIO_FUNC_PWM); |   gpio_set_function(this->pin_->get_pin(), GPIO_FUNC_PWM); | ||||||
|   | |||||||
| @@ -10,8 +10,6 @@ | |||||||
| namespace esphome { | namespace esphome { | ||||||
| namespace rp2040_pwm { | namespace rp2040_pwm { | ||||||
|  |  | ||||||
| static bool frequency_changed_ = false; |  | ||||||
|  |  | ||||||
| class RP2040PWM : public output::FloatOutput, public Component { | class RP2040PWM : public output::FloatOutput, public Component { | ||||||
|  public: |  public: | ||||||
|   void set_pin(InternalGPIOPin *pin) { pin_ = pin; } |   void set_pin(InternalGPIOPin *pin) { pin_ = pin; } | ||||||
| @@ -19,7 +17,7 @@ class RP2040PWM : public output::FloatOutput, public Component { | |||||||
|   /// Dynamically update frequency |   /// Dynamically update frequency | ||||||
|   void update_frequency(float frequency) override { |   void update_frequency(float frequency) override { | ||||||
|     this->set_frequency(frequency); |     this->set_frequency(frequency); | ||||||
|     frequency_changed_ = true; |     this->frequency_changed_ = true; | ||||||
|     this->write_state(this->last_output_); |     this->write_state(this->last_output_); | ||||||
|   } |   } | ||||||
|  |  | ||||||
| @@ -38,6 +36,7 @@ class RP2040PWM : public output::FloatOutput, public Component { | |||||||
|   float frequency_{1000.0}; |   float frequency_{1000.0}; | ||||||
|   /// Cache last output level for dynamic frequency updating |   /// Cache last output level for dynamic frequency updating | ||||||
|   float last_output_{0.0}; |   float last_output_{0.0}; | ||||||
|  |   bool frequency_changed_{false}; | ||||||
| }; | }; | ||||||
|  |  | ||||||
| template<typename... Ts> class SetFrequencyAction : public Action<Ts...> { | template<typename... Ts> class SetFrequencyAction : public Action<Ts...> { | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user