From a3091ff683cec72b72528b9fc2473035979b756b Mon Sep 17 00:00:00 2001 From: Stefan `Sec` Zehl Date: Mon, 6 Feb 2012 21:00:37 +0100 Subject: [PATCH] Revert "Remove unnecessary commands from N1600 initialization; refactor display memory write setup to use macros" This reverts commit e66910638d6cade376d87d709fcd0f1ed02d61f5. --- firmware/lcd/display.c | 55 ++++++++++++++++-------------------------- 1 file changed, 21 insertions(+), 34 deletions(-) diff --git a/firmware/lcd/display.c b/firmware/lcd/display.c index 1193942..6abd41c 100644 --- a/firmware/lcd/display.c +++ b/firmware/lcd/display.c @@ -56,15 +56,14 @@ static const struct display_macro INIT_N1200[] = { {COMMAND_TYPE_CMD, 0x10}, }; -static const struct display_macro PREPARE_N1200[] = { - {COMMAND_TYPE_CMD, 0xB0}, - {COMMAND_TYPE_CMD, 0x10}, - {COMMAND_TYPE_CMD, 0x00}, -}; - /* Decoded: + * CMD 36: MADCTL (argument missing!) * CMD 29: DISPON * CMD BA: Data order (1) + * DAT 07: ignored? + * CMD 15: undefined? + * DAT 25: ignored? + * DAT 3F: ignored? * CMD 11: sleep out * CMD 13: normal display mode on * CMD 37: set scroll entry point @@ -80,8 +79,13 @@ static const struct display_macro PREPARE_N1200[] = { */ static const struct display_macro INIT_N1600[] = { {COMMAND_TYPE_CMD, 0x01, 10}, + {COMMAND_TYPE_CMD, 0x36}, {COMMAND_TYPE_CMD, 0x29}, {COMMAND_TYPE_CMD, 0xBA}, + {COMMAND_TYPE_DATA, 0x07}, + {COMMAND_TYPE_CMD, 0x15}, + {COMMAND_TYPE_DATA, 0x25}, + {COMMAND_TYPE_DATA, 0x3F}, {COMMAND_TYPE_CMD, 0x11}, {COMMAND_TYPE_CMD, 0x13}, {COMMAND_TYPE_CMD, 0x37}, @@ -96,30 +100,14 @@ static const struct display_macro INIT_N1600[] = { {COMMAND_TYPE_DATA, 70-1}, }; -static const struct display_macro PREPARE_N1600[] = { - {COMMAND_TYPE_CMD, 0x2C}, -}; - - struct display_descriptor { - /* Macro to execute in order to initialize the display from scratch */ const struct display_macro * init_macro; int init_macro_length; - - /* Macro to execute to prepare the display for sending raw contents */ - const struct display_macro * prepare_macro; - int prepare_macro_length; }; const struct display_descriptor DISPLAY_DESCRIPTORS[] = { - [DISPLAY_TYPE_N1200] = { - INIT_N1200, sizeof(INIT_N1200)/sizeof(INIT_N1200[0]), - PREPARE_N1200, sizeof(PREPARE_N1200)/sizeof(PREPARE_N1200[0]) - }, - [DISPLAY_TYPE_N1600] = { - INIT_N1600, sizeof(INIT_N1600)/sizeof(INIT_N1600[0]), - PREPARE_N1600, sizeof(PREPARE_N1600)/sizeof(PREPARE_N1600[0]) - }, + [DISPLAY_TYPE_N1200] = { INIT_N1200, sizeof(INIT_N1200)/sizeof(INIT_N1200[0]) }, + [DISPLAY_TYPE_N1600] = { INIT_N1600, sizeof(INIT_N1600)/sizeof(INIT_N1600[0]) }, }; /**************************************************************************/ @@ -233,13 +221,6 @@ uint8_t lcdRead(uint8_t data) return ret; } -static void lcdExecuteMacro(const struct display_macro *macro, int macro_length) -{ - for(int i=0; iinit_macro, displayDescriptor->init_macro_length); + for(int i=0; iinit_macro_length; i++) { + lcdWrite(displayDescriptor->init_macro[i].type, displayDescriptor->init_macro[i].data); + delayms(displayDescriptor->init_macro[i].delay_after); + } lcd_deselect(); } @@ -326,9 +310,10 @@ void lcdDisplay(void) { char byte; lcd_select(); - lcdExecuteMacro(displayDescriptor->prepare_macro, displayDescriptor->prepare_macro_length); - if(displayType==DISPLAY_TYPE_N1200){ + lcdWrite(COMMAND_TYPE_CMD,0xB0); + lcdWrite(COMMAND_TYPE_CMD,0x10); + lcdWrite(COMMAND_TYPE_CMD,0x00); uint16_t i,page; for(page=0; page