From 1f70dc8f97fd9e110283e82ccd64acd8afb432ec Mon Sep 17 00:00:00 2001 From: gemu2015 Date: Thu, 7 Jul 2022 13:31:52 +0200 Subject: [PATCH] inverted backpanel --- lib/lib_display/UDisplay/uDisplay.cpp | 39 +++++++++++++++++++++------ lib/lib_display/UDisplay/uDisplay.h | 1 + 2 files changed, 32 insertions(+), 8 deletions(-) diff --git a/lib/lib_display/UDisplay/uDisplay.cpp b/lib/lib_display/UDisplay/uDisplay.cpp index 71025069b..34b79e838 100755 --- a/lib/lib_display/UDisplay/uDisplay.cpp +++ b/lib/lib_display/UDisplay/uDisplay.cpp @@ -62,6 +62,7 @@ uDisplay::uDisplay(char *lp) : Renderer(800, 600) { sa_mode = 16; saw_3 = 0xff; dim_op = 0xff; + bpmode = 0; dsp_off = 0xff; dsp_on = 0xff; lutpsize = 0; @@ -305,6 +306,9 @@ uDisplay::uDisplay(char *lp) : Renderer(800, 600) { rotmap_ymin = next_val(&lp1); rotmap_ymax = next_val(&lp1); break; + case 'b': + bpmode = next_val(&lp1); + break; } } } @@ -1344,7 +1348,7 @@ void uDisplay::DisplayOnff(int8_t on) { pwr_cbp(on); } -// udisp_bpwr(on); +#define AW_PWMRES 1024 if (interface == _UDSP_I2C) { if (on) { @@ -1357,10 +1361,17 @@ void uDisplay::DisplayOnff(int8_t on) { if (dsp_on != 0xff) spi_command_one(dsp_on); if (bpanel >= 0) { #ifdef ESP32 - analogWrite(bpanel, dimmer10_gamma); - // ledcWrite(ESP32_PWM_CHANNEL, dimmer8_gamma); + if (!bpmode) { + analogWrite(bpanel, dimmer10_gamma); + } else { + analogWrite(bpanel, AW_PWMRES - dimmer10_gamma); + } #else - digitalWrite(bpanel, HIGH); + if (!bpmode) { + digitalWrite(bpanel, HIGH); + } else { + digitalWrite(bpanel, LOW); + } #endif } @@ -1368,10 +1379,17 @@ void uDisplay::DisplayOnff(int8_t on) { if (dsp_off != 0xff) spi_command_one(dsp_off); if (bpanel >= 0) { #ifdef ESP32 - analogWrite(bpanel, 0); - // ledcWrite(ESP32_PWM_CHANNEL, 0); + if (!bpmode) { + analogWrite(bpanel, 0); + } else { + analogWrite(bpanel, AW_PWMRES - 1); + } #else - digitalWrite(bpanel, LOW); + if (!bpmode) { + digitalWrite(bpanel, LOW); + } else { + digitalWrite(bpanel, HIGH); + } #endif } } @@ -1417,7 +1435,12 @@ void uDisplay::dim10(uint8_t dim, uint16_t dim_gamma) { // dimmer with #ifdef ESP32 // TODO should we also add a ESP8266 version for bpanel? if (bpanel >= 0) { // is the BaclPanel GPIO configured - analogWrite(bpanel, dimmer10_gamma); + if (!bpmode) { + analogWrite(bpanel, dimmer10_gamma); + } else { + analogWrite(bpanel, AW_PWMRES - dimmer10_gamma); + } + // ledcWrite(ESP32_PWM_CHANNEL, dimmer8_gamma); } else if (dim_cbp) { dim_cbp(dim); diff --git a/lib/lib_display/UDisplay/uDisplay.h b/lib/lib_display/UDisplay/uDisplay.h index 9a233fcff..93ee851e6 100755 --- a/lib/lib_display/UDisplay/uDisplay.h +++ b/lib/lib_display/UDisplay/uDisplay.h @@ -176,6 +176,7 @@ class uDisplay : public Renderer { uint16_t bg_col; uint16_t gxs; uint16_t gys; + int8_t bpmode; int8_t spi_cs; int8_t spi_clk; int8_t spi_mosi;