From a627df0ad11e1ff453c6b669d01abfa9d42ba0e0 Mon Sep 17 00:00:00 2001 From: stefanbode Date: Fri, 11 Feb 2022 18:05:44 +0100 Subject: [PATCH] Fix shutter-stepper driver if >1 door moving Accelerate and decelerate did not work properly on two pins with different frequencies. Was always synced to the last send frequency without PIN awareness. If moving two doors or more frequency must work for each door independent --- tasmota/xdrv_27_shutter.ino | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/tasmota/xdrv_27_shutter.ino b/tasmota/xdrv_27_shutter.ino index 7b385af86..c2aca6742 100644 --- a/tasmota/xdrv_27_shutter.ino +++ b/tasmota/xdrv_27_shutter.ino @@ -175,8 +175,10 @@ void ShutterRtc50mS(void) if (Shutter[i].accelerator) { //AddLog(LOG_LEVEL_DEBUG_MORE, PSTR("SHT: Accelerator i=%d -> %d"),i, Shutter[i].accelerator); ShutterUpdateVelocity(i); - analogWriteFreq(Shutter[i].pwm_velocity); - analogWrite(Pin(GPIO_PWM1, i), 50); + digitalWrite(Pin(GPIO_PWM1, i), LOW); + // Convert frequency into clock cycles + uint32_t cc = microsecondsToClockCycles(1000000UL) / Shutter[i].pwm_velocity; + startWaveformClockCycles(Pin(GPIO_PWM1, i), cc/2, cc/2, 0, -1, 0, false); } break; }