AnalogWrite - frequency and resolution log errors + returns (#7471)
* Added log errors + returns * Update LEDC docs
This commit is contained in:
parent
394f7218ba
commit
dbeae9480d
2 changed files with 35 additions and 4 deletions
|
|
@ -222,9 +222,12 @@ void analogWrite(uint8_t pin, int value) {
|
|||
log_e("No more analogWrite channels available! You can have maximum %u", LEDC_CHANNELS);
|
||||
return;
|
||||
}
|
||||
if(ledcSetup(cnt_channel - 1, analog_frequency, analog_resolution) == 0){
|
||||
log_e("analogWrite setup failed (freq = %u, resolution = %u). Try setting different resolution or frequency");
|
||||
return;
|
||||
}
|
||||
ledcAttachPin(pin, cnt_channel - 1);
|
||||
pin_to_channel[pin] = cnt_channel--;
|
||||
ledcSetup(cnt_channel, analog_frequency, analog_resolution);
|
||||
ledcAttachPin(pin, cnt_channel);
|
||||
}
|
||||
ledcWrite(pin_to_channel[pin] - 1, value);
|
||||
}
|
||||
|
|
@ -237,7 +240,10 @@ int8_t analogGetChannel(uint8_t pin) {
|
|||
void analogWriteFrequency(uint32_t freq) {
|
||||
if (cnt_channel != LEDC_CHANNELS) {
|
||||
for (int channel = LEDC_CHANNELS - 1; channel >= cnt_channel; channel--) {
|
||||
ledcChangeFrequency(channel, freq, analog_resolution);
|
||||
if (ledcChangeFrequency(channel, freq, analog_resolution) == 0){
|
||||
log_e("analogWrite frequency cant be set due to selected resolution! Try to adjust resolution first");
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
analog_frequency = freq;
|
||||
|
|
@ -250,7 +256,10 @@ void analogWriteResolution(uint8_t bits) {
|
|||
}
|
||||
if (cnt_channel != LEDC_CHANNELS) {
|
||||
for (int channel = LEDC_CHANNELS - 1; channel >= cnt_channel; channel--) {
|
||||
ledcChangeFrequency(channel, analog_frequency, bits);
|
||||
if (ledcChangeFrequency(channel, analog_frequency, bits) == 0){
|
||||
log_e("analogWrite resolution cant be set due to selected frequency! Try to adjust frequency first");
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
analog_resolution = bits;
|
||||
|
|
|
|||
|
|
@ -169,6 +169,28 @@ It is compatible with Arduinos analogWrite function.
|
|||
* ``value`` select the duty cycle of pwm.
|
||||
* range is from 0 (always off) to 255 (always on).
|
||||
|
||||
analogWriteResolution
|
||||
*********************
|
||||
|
||||
This function is used to set resolution for all analogWrite channels.
|
||||
|
||||
.. code-block:: arduino
|
||||
|
||||
void analogWriteResolution(uint8_t bits);
|
||||
|
||||
* ``bits`` select resolution for analog channels.
|
||||
|
||||
analogWriteFrequency
|
||||
********************
|
||||
|
||||
This function is used to set frequency for all analogWrite channels.
|
||||
|
||||
.. code-block:: arduino
|
||||
|
||||
void analogWriteFrequency(uint32_t freq);
|
||||
|
||||
* ``freq`` select frequency of pwm.
|
||||
|
||||
Example Applications
|
||||
********************
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue