From 8a969eeca575913dfedb462ce7eedf0ab3bf79bb Mon Sep 17 00:00:00 2001 From: gemu2015 Date: Sat, 20 Feb 2021 10:25:51 +0100 Subject: [PATCH 1/3] 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/3] 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/3] 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 } }