From dfce7a280acf4371f6627404e0adbf57f991ec62 Mon Sep 17 00:00:00 2001 From: Adrian Scillato <35405447+ascillato@users.noreply.github.com> Date: Sun, 7 Oct 2018 14:24:52 -0300 Subject: [PATCH 1/2] Add PWM Freq Limits Config at Compile time PWM_MAX and PWM_MIN are added with explanation comments in order to let a user, who wants to use a Servo, to config these values. Not added at runtime in order to avoid issues with dimmers. --- sonoff/sonoff.h | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/sonoff/sonoff.h b/sonoff/sonoff.h index f891e387a..9a84fabd6 100644 --- a/sonoff/sonoff.h +++ b/sonoff/sonoff.h @@ -80,6 +80,10 @@ typedef unsigned long power_t; // Power (Relay) type //#define PWM_FREQ 1000 // 100..1000 Hz led refresh //#define PWM_FREQ 910 // 100..1000 Hz led refresh (iTead value) #define PWM_FREQ 880 // 100..1000 Hz led refresh (BN-SZ01 value) +#define PWM_MAX 4000 // [PWM_MAX] Maximum frequency - Default: 4000 +#define PWM_MIN 100 // [PWM_MIN] Minimum frequency - Default: 100 + // For Dimmers use double of your mains AC frequecy (100 for 50Hz and 120 for 60Hz) + // For Controlling Servos use 50 and also set PWM_FREQ as 50 (DO NOT USE THESE VALUES FOR DIMMERS) #define DEFAULT_POWER_DELTA 80 // Power change percentage #define MAX_POWER_HOLD 10 // Time in SECONDS to allow max agreed power From efb328de099e6e486494b4f49efbd26dd22f4529 Mon Sep 17 00:00:00 2001 From: Adrian Scillato <35405447+ascillato@users.noreply.github.com> Date: Sun, 7 Oct 2018 14:27:09 -0300 Subject: [PATCH 2/2] Add PWM Freq Limits Config at Compile time --- sonoff/sonoff.ino | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sonoff/sonoff.ino b/sonoff/sonoff.ino index 958c7879b..89badfbe1 100755 --- a/sonoff/sonoff.ino +++ b/sonoff/sonoff.ino @@ -914,7 +914,7 @@ void MqttDataHandler(char* topic, byte* data, unsigned int data_len) snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("%s}"), mqtt_data); } else if (CMND_PWMFREQUENCY == command_code) { - if ((1 == payload) || ((payload >= 100) && (payload <= 4000))) { + if ((1 == payload) || ((payload >= PWM_MIN) && (payload <= PWM_MAX))) { Settings.pwm_frequency = (1 == payload) ? PWM_FREQ : payload; analogWriteFreq(Settings.pwm_frequency); // Default is 1000 (core_esp8266_wiring_pwm.c) }