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..eb6e3a277 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; @@ -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,20 +550,22 @@ 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 } } } 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..133cf4366 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 @@ -75,6 +75,9 @@ void ILI9341_InitDriver() #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) {