Skip to content

Commit

Permalink
Remove clock/max bit overrides
Browse files Browse the repository at this point in the history
Move contants into bus manager
  • Loading branch information
blazoncek committed Aug 4, 2024
1 parent 779744b commit 5254854
Show file tree
Hide file tree
Showing 2 changed files with 26 additions and 30 deletions.
27 changes: 26 additions & 1 deletion wled00/bus_manager.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -378,14 +378,39 @@ void BusDigital::cleanup() {
}


#ifdef ESP8266
// 1 MHz clock
#define CLOCK_FREQUENCY 1000000UL
#else
// Use XTAL clock if possible to avoid timer frequency error when setting APB clock < 80 Mhz
// https://github.com/espressif/arduino-esp32/blob/2.0.2/cores/esp32/esp32-hal-ledc.c
#ifdef SOC_LEDC_SUPPORT_XTAL_CLOCK
#define CLOCK_FREQUENCY 40000000UL
#else
#define CLOCK_FREQUENCY 80000000UL
#endif
#endif

#ifdef ESP8266
#define MAX_BIT_WIDTH 10
#else
#ifdef SOC_LEDC_TIMER_BIT_WIDE_NUM
// C6/H2/P4: 20 bit, S2/S3/C2/C3: 14 bit
#define MAX_BIT_WIDTH SOC_LEDC_TIMER_BIT_WIDE_NUM
#else
// ESP32: 20 bit (but in reality we would never go beyond 16 bit as the frequency would be to low)
#define MAX_BIT_WIDTH 20
#endif
#endif

BusPwm::BusPwm(BusConfig &bc)
: Bus(bc.type, bc.start, bc.autoWhite, 1, bc.reversed)
{
if (!IS_PWM(bc.type)) return;
unsigned numPins = NUM_PWM_PINS(bc.type);
_frequency = bc.frequency ? bc.frequency : WLED_PWM_FREQ;
// duty cycle resolution (_depth) can be extracted from this formula: CLOCK_FREQUENCY > _frequency * 2^_depth
for (_depth=MAX_BIT_WIDTH; _depth>8; _depth--) if (((uint32_t(CLOCK_FREQUENCY)/_frequency)>>_depth) > 0) break;
for (_depth = MAX_BIT_WIDTH; _depth > 8; _depth--) if (((CLOCK_FREQUENCY/_frequency) >> _depth) > 0) break;

#ifdef ESP8266
analogWriteRange((1<<_depth)-1);
Expand Down
29 changes: 0 additions & 29 deletions wled00/const.h
Original file line number Diff line number Diff line change
Expand Up @@ -521,35 +521,6 @@
#endif
#endif

#ifndef CLOCK_FREQUENCY
#ifdef ESP8266
// 1 MHz clock
#define CLOCK_FREQUENCY 1e6f
#else
// Use XTAL clock if possible to avoid timer frequency error when setting APB clock < 80 Mhz
// https://github.com/espressif/arduino-esp32/blob/2.0.2/cores/esp32/esp32-hal-ledc.c
#ifdef SOC_LEDC_SUPPORT_XTAL_CLOCK
#define CLOCK_FREQUENCY 40e6f
#else
#define CLOCK_FREQUENCY 80e6f
#endif
#endif
#endif

#ifndef MAX_BIT_WIDTH
#ifdef ESP8266
#define MAX_BIT_WIDTH 10
#else
#ifdef SOC_LEDC_TIMER_BIT_WIDE_NUM
// C6/H2/P4: 20 bit, S2/S3/C2/C3: 14 bit
#define MAX_BIT_WIDTH SOC_LEDC_TIMER_BIT_WIDE_NUM
#else
// ESP32: 20 bit
#define MAX_BIT_WIDTH 20
#endif
#endif
#endif

#define TOUCH_THRESHOLD 32 // limit to recognize a touch, higher value means more sensitive

// Size of buffer for API JSON object (increase for more segments)
Expand Down

0 comments on commit 5254854

Please sign in to comment.