From 8a969eeca575913dfedb462ce7eedf0ab3bf79bb Mon Sep 17 00:00:00 2001 From: gemu2015 Date: Sat, 20 Feb 2021 10:25:51 +0100 Subject: [PATCH 1/5] fix ili9342 rotation --- lib/lib_display/ILI9341-gemu-1.0/ILI9341_2.cpp | 8 +++++--- tasmota/xdsp_04_ili9341.ino | 9 ++++++++- 2 files changed, 13 insertions(+), 4 deletions(-) diff --git a/lib/lib_display/ILI9341-gemu-1.0/ILI9341_2.cpp b/lib/lib_display/ILI9341-gemu-1.0/ILI9341_2.cpp index ebf828790..4af1ddc7f 100644 --- a/lib/lib_display/ILI9341-gemu-1.0/ILI9341_2.cpp +++ b/lib/lib_display/ILI9341-gemu-1.0/ILI9341_2.cpp @@ -411,17 +411,17 @@ void ILI9341_2::setRotation(uint8_t m) { _height = iheight; break; case 1: - m = (MADCTL_MV | MADCTL_BGR); + m = (MADCTL_MY | MADCTL_MV | MADCTL_BGR); _width = iheight; _height = iwidth; break; case 2: - m = (MADCTL_MY | MADCTL_BGR); + m = (MADCTL_MY | MADCTL_MX | MADCTL_BGR); _width = iwidth; _height = iheight; break; case 3: - m = (MADCTL_MX | MADCTL_MY | MADCTL_MV | MADCTL_BGR); + m = (MADCTL_MX | MADCTL_MV | MADCTL_BGR); _width = iheight; _height = iwidth; break; @@ -561,9 +561,11 @@ void ILI9341_2::DisplayOnff(int8_t on) { } void ILI9341_2::invertDisplay(boolean i) { + SPI_BEGIN_TRANSACTION(); ILI9341_2_CS_LOW writecmd(i ? ILI9341_2_INVON : ILI9341_2_INVOFF); ILI9341_2_CS_HIGH + SPI_END_TRANSACTION(); } void ili9342_dimm(uint8_t dim); diff --git a/tasmota/xdsp_04_ili9341.ino b/tasmota/xdsp_04_ili9341.ino index 2b1a31a73..57c00c225 100644 --- a/tasmota/xdsp_04_ili9341.ino +++ b/tasmota/xdsp_04_ili9341.ino @@ -42,7 +42,7 @@ bool tft_init_done = false; void ILI9341_InitDriver() { -#ifdef USE_M5STACK_CORE2 +#if (defined(USE_M5STACK_CORE2) || defined(USE_M5STACK_CORE_BASIC)) if (TasmotaGlobal.spi_enabled) { #else // There are displays without CS @@ -72,9 +72,14 @@ void ILI9341_InitDriver() fg_color = ILI9341_WHITE; bg_color = ILI9341_BLACK; + AddLog(LOG_LEVEL_INFO, PSTR("DSP: ILI934x 0")); + #ifdef USE_M5STACK_CORE2 // fixed pins on m5stack core2 ili9341_2 = new ILI9341_2(5, -2, 15, -2); +#elif defined(USE_M5STACK_CORE_BASIC) + // int8_t cs, int8_t res, int8_t dc, int8_t bp) + ili9341_2 = new ILI9341_2(14, 33, 27, 32); #else // check for special case with 2 SPI busses (ESP32 bitcoin) if (TasmotaGlobal.soft_spi_enabled) { @@ -94,6 +99,8 @@ void ILI9341_InitDriver() return; } + AddLog(LOG_LEVEL_INFO, PSTR("DSP: ILI934x 1")); + ili9341_2->init(Settings.display_width, Settings.display_height); renderer = ili9341_2; renderer->DisplayInit(DISPLAY_INIT_MODE, Settings.display_size, Settings.display_rotate, Settings.display_font); From 6edd24bbc66e1d95c83941c7abf9b37bafb51de6 Mon Sep 17 00:00:00 2001 From: gemu2015 Date: Sat, 20 Feb 2021 10:51:12 +0100 Subject: [PATCH 2/5] remove debug logs --- tasmota/xdsp_04_ili9341.ino | 4 ---- 1 file changed, 4 deletions(-) diff --git a/tasmota/xdsp_04_ili9341.ino b/tasmota/xdsp_04_ili9341.ino index 57c00c225..133cf4366 100644 --- a/tasmota/xdsp_04_ili9341.ino +++ b/tasmota/xdsp_04_ili9341.ino @@ -72,8 +72,6 @@ void ILI9341_InitDriver() fg_color = ILI9341_WHITE; bg_color = ILI9341_BLACK; - AddLog(LOG_LEVEL_INFO, PSTR("DSP: ILI934x 0")); - #ifdef USE_M5STACK_CORE2 // fixed pins on m5stack core2 ili9341_2 = new ILI9341_2(5, -2, 15, -2); @@ -99,8 +97,6 @@ void ILI9341_InitDriver() return; } - AddLog(LOG_LEVEL_INFO, PSTR("DSP: ILI934x 1")); - ili9341_2->init(Settings.display_width, Settings.display_height); renderer = ili9341_2; renderer->DisplayInit(DISPLAY_INIT_MODE, Settings.display_size, Settings.display_rotate, Settings.display_font); From 53ac4d825246c0cd3d236801beaf71f8994e5e2c Mon Sep 17 00:00:00 2001 From: gemu2015 Date: Sat, 20 Feb 2021 11:38:20 +0100 Subject: [PATCH 3/5] fix ili9342 backlight --- lib/lib_display/ILI9341-gemu-1.0/ILI9341_2.cpp | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/lib/lib_display/ILI9341-gemu-1.0/ILI9341_2.cpp b/lib/lib_display/ILI9341-gemu-1.0/ILI9341_2.cpp index 4af1ddc7f..eb6e3a277 100644 --- a/lib/lib_display/ILI9341-gemu-1.0/ILI9341_2.cpp +++ b/lib/lib_display/ILI9341-gemu-1.0/ILI9341_2.cpp @@ -527,7 +527,7 @@ void ili9342_bpwr(uint8_t on); void ILI9341_2::DisplayOnff(int8_t on) { - if (_hwspi>=2) { + if ((_hwspi >= 2) && (_bp < 0)) { ili9342_bpwr(on); } @@ -537,11 +537,11 @@ void ILI9341_2::DisplayOnff(int8_t on) { writecmd(ILI9341_2_DISPON); ILI9341_2_CS_HIGH SPI_END_TRANSACTION(); - if (_bp>=0) { + if (_bp >= 0) { #ifdef ILI9341_2_DIMMER - ledcWrite(ESP32_PWM_CHANNEL,dimmer); + ledcWrite(ESP32_PWM_CHANNEL, dimmer); #else - digitalWrite(_bp,HIGH); + digitalWrite(_bp, HIGH); #endif } } else { @@ -550,11 +550,11 @@ void ILI9341_2::DisplayOnff(int8_t on) { writecmd(ILI9341_2_DISPOFF); ILI9341_2_CS_HIGH SPI_END_TRANSACTION(); - if (_bp>=0) { + if (_bp >= 0) { #ifdef ILI9341_2_DIMMER - ledcWrite(ESP32_PWM_CHANNEL,0); + ledcWrite(ESP32_PWM_CHANNEL, 0); #else - digitalWrite(_bp,LOW); + digitalWrite(_bp, LOW); #endif } } From 82abbae3e6d2f48c1385e59e4b685219aff55900 Mon Sep 17 00:00:00 2001 From: stefanbode Date: Sat, 20 Feb 2021 15:06:36 +0100 Subject: [PATCH 4/5] Update xdrv_27_shutter.ino --- tasmota/xdrv_27_shutter.ino | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/tasmota/xdrv_27_shutter.ino b/tasmota/xdrv_27_shutter.ino index 62b32797b..c5666b0de 100644 --- a/tasmota/xdrv_27_shutter.ino +++ b/tasmota/xdrv_27_shutter.ino @@ -416,11 +416,7 @@ void ShutterDecellerateForStop(uint8_t i) if (ShutterGlobal.position_mode == SHT_COUNTER){ missing_steps = ((Shutter[i].target_position-Shutter[i].start_position)*Shutter[i].direction*ShutterGlobal.open_velocity_max/RESOLUTION/STEPS_PER_SECOND) - RtcSettings.pulse_counter[i]; //prepare for stop PWM - AddLog(LOG_LEVEL_DEBUG_MORE, PSTR("SHT: Remain steps %d, Counter %d, Freq %d"), missing_steps, RtcSettings.pulse_counter[i] ,Shutter[i].pwm_velocity); Shutter[i].accelerator = 0; - Shutter[i].pwm_velocity = Shutter[i].pwm_velocity > 250 ? 250 : Shutter[i].pwm_velocity; - analogWriteFreq(Shutter[i].pwm_velocity); - analogWrite(Pin(GPIO_PWM1, i), 50); Shutter[i].pwm_velocity = 0; while (RtcSettings.pulse_counter[i] < (uint32_t)(Shutter[i].target_position-Shutter[i].start_position)*Shutter[i].direction*ShutterGlobal.open_velocity_max/RESOLUTION/STEPS_PER_SECOND) { } @@ -496,7 +492,7 @@ void ShutterUpdatePosition(void) Shutter[i].time, toBeAcc, current_stop_way, Shutter[i].pwm_velocity, velocity_max, Shutter[i].accelerator, min_runtime_ms, Shutter[i].real_position, next_possible_stop_position, Shutter[i].target_position, velocity_change_per_step_max, Shutter[i].direction); - if ( Shutter[i].real_position * Shutter[i].direction + 2*Shutter[i].pwm_velocity >= Shutter[i].target_position * Shutter[i].direction ) { + if ( Shutter[i].real_position * Shutter[i].direction >= Shutter[i].target_position * Shutter[i].direction || (ShutterGlobal.position_mode == SHT_COUNTER && Shutter[i].accelerator <0 && Shutter[i].pwm_velocity+Shutter[i].accelerator<=100)) { if (Shutter[i].direction != 0) { Shutter[i].lastdirection = Shutter[i].direction; } From 9a18ef38751e2eaf8004b374f2d54e43b5633cde Mon Sep 17 00:00:00 2001 From: stefanbode Date: Sat, 20 Feb 2021 15:11:52 +0100 Subject: [PATCH 5/5] Update xdrv_27_shutter.ino --- tasmota/xdrv_27_shutter.ino | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/tasmota/xdrv_27_shutter.ino b/tasmota/xdrv_27_shutter.ino index c5666b0de..171d7406c 100644 --- a/tasmota/xdrv_27_shutter.ino +++ b/tasmota/xdrv_27_shutter.ino @@ -406,10 +406,9 @@ void ShutterDecellerateForStop(uint8_t i) case SHT_COUNTER: int16_t missing_steps; Shutter[i].accelerator = -(ShutterGlobal.open_velocity_max / (Shutter[i].motordelay>4 ? (Shutter[i].motordelay*11)/10 : 4) ); - while (Shutter[i].pwm_velocity > -2*Shutter[i].accelerator && Shutter[i].pwm_velocity > 100) { + while (Shutter[i].pwm_velocity > -2*Shutter[i].accelerator || (ShutterGlobal.position_mode == SHT_COUNTER && Shutter[i].pwm_velocity > 100) ) { delay(50); AddLog(LOG_LEVEL_DEBUG_MORE, PSTR("SHT: Velocity %ld, Delta %d"), Shutter[i].pwm_velocity, Shutter[i].accelerator ); - //Shutter[i].pwm_velocity = tmax(Shutter[i].pwm_velocity-Shutter[i].accelerator , 0); // Control will be done in RTC Ticker. }