add reverse display for mini viki st7565
authorJim Morris <morris@wolfman.com>
Wed, 6 Nov 2013 23:26:36 +0000 (15:26 -0800)
committerJim Morris <morris@wolfman.com>
Wed, 6 Nov 2013 23:31:11 +0000 (15:31 -0800)
src/modules/utils/panel/panels/ST7565.cpp
src/modules/utils/panel/panels/ST7565.h

index 52c3849..66d7398 100644 (file)
@@ -36,7 +36,7 @@ ST7565::ST7565() {
 
     //lcd reset
     this->rst.from_string(THEKERNEL->config->value( panel_checksum, rst_pin_checksum)->by_default("nc")->as_string())->as_output();
-    rst.set(1);
+    if(this->rst.connected()) rst.set(1);
 
     //a0
     this->a0.from_string(THEKERNEL->config->value( panel_checksum, a0_pin_checksum)->by_default("2.13")->as_string())->as_output();
@@ -51,6 +51,8 @@ ST7565::ST7565() {
 
     // contrast, mviki needs  0x018
     this->contrast= THEKERNEL->config->value(panel_checksum, contrast_checksum)->by_default(9)->as_number();
+    // reverse display
+    this->reversed= THEKERNEL->config->value(panel_checksum, reverse_checksum)->by_default(false)->as_bool();
 
     framebuffer= (uint8_t *)ahbmalloc(FB_SIZE, AHB_BANK_0); // grab some memoery from USB_RAM
     if(framebuffer == NULL) {
@@ -127,8 +129,8 @@ void ST7565::display(){
 void ST7565::init(){
     const unsigned char init_seq[] = {
       0x40,    //Display start line 0
-      0xa1,    //ADC reverse
-      0xc0,    //Normal COM0...COM63
+      reversed?0xa0:0xa1, // ADC
+      reversed?0xc8:0xc0, // COM select
       0xa6,    //Display normal
       0xa2,    //Set Bias 1/9 (Duty 1/65)
       0x2f,    //Booster, Regulator and Follower On
@@ -142,7 +144,7 @@ void ST7565::init(){
       0xaf,    //Display on
   };
   //rst.set(0);
-  rst.set(1);
+  if(this->rst.connected()) rst.set(1);
   send_commands(init_seq, sizeof(init_seq));
   clear();
 }
index 14cbb0f..f556ae7 100644 (file)
@@ -36,6 +36,7 @@ using namespace std;
 #define up_button_pin_checksum     CHECKSUM("up_button_pin")
 #define down_button_pin_checksum   CHECKSUM("down_button_pin")
 #define contrast_checksum          CHECKSUM("contrast")
+#define reverse_checksum           CHECKSUM("reverse")
 #define rst_pin_checksum           CHECKSUM("rst_pin")
 #define a0_pin_checksum            CHECKSUM("a0_pin")
 
@@ -93,6 +94,7 @@ private:
        // text cursor position
        uint8_t tx, ty;
     uint8_t contrast;
+    bool reversed;
 };
 
 #endif /* ST7565_H_ */