mirror of
https://github.com/wled/WLED.git
synced 2025-07-09 11:56:35 +00:00
removed float math and log(), added max bit width
This commit is contained in:
parent
5c247d2833
commit
1123d85fd2
@ -40,19 +40,6 @@ uint8_t realtimeBroadcast(uint8_t type, IPAddress client, uint16_t length, byte
|
|||||||
#define DEBUG_PRINTF_P(x...)
|
#define DEBUG_PRINTF_P(x...)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// ESP8266 has 1 MHz clock
|
|
||||||
#ifdef ESP8266
|
|
||||||
#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
|
|
||||||
|
|
||||||
//color mangling macros
|
//color mangling macros
|
||||||
#define RGBW32(r,g,b,w) (uint32_t((byte(w) << 24) | (byte(r) << 16) | (byte(g) << 8) | (byte(b))))
|
#define RGBW32(r,g,b,w) (uint32_t((byte(w) << 24) | (byte(r) << 16) | (byte(g) << 8) | (byte(b))))
|
||||||
#define R(c) (byte((c) >> 16))
|
#define R(c) (byte((c) >> 16))
|
||||||
@ -398,7 +385,7 @@ BusPwm::BusPwm(BusConfig &bc)
|
|||||||
unsigned numPins = NUM_PWM_PINS(bc.type);
|
unsigned numPins = NUM_PWM_PINS(bc.type);
|
||||||
_frequency = bc.frequency ? bc.frequency : WLED_PWM_FREQ;
|
_frequency = bc.frequency ? bc.frequency : WLED_PWM_FREQ;
|
||||||
// duty cycle resolution (_depth) can be extracted from this formula: CLOCK_FREQUENCY > _frequency * 2^_depth
|
// duty cycle resolution (_depth) can be extracted from this formula: CLOCK_FREQUENCY > _frequency * 2^_depth
|
||||||
_depth = uint8_t(log((float)CLOCK_FREQUENCY / (float)_frequency) / log(2.0));
|
for (_depth=MAX_BIT_WIDTH; _depth>8; _depth--) if (((uint32_t(CLOCK_FREQUENCY)/_frequency)>>_depth) > 0) break;
|
||||||
|
|
||||||
#ifdef ESP8266
|
#ifdef ESP8266
|
||||||
analogWriteRange((1<<_depth)-1);
|
analogWriteRange((1<<_depth)-1);
|
||||||
|
@ -521,6 +521,35 @@
|
|||||||
#endif
|
#endif
|
||||||
#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: 32 bit
|
||||||
|
#define MAX_BIT_WIDTH 20
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
|
||||||
#define TOUCH_THRESHOLD 32 // limit to recognize a touch, higher value means more sensitive
|
#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)
|
// Size of buffer for API JSON object (increase for more segments)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user