From a2bb2a2eb8fb4e55c2a256072bfd8c209be6789c Mon Sep 17 00:00:00 2001 From: rusefi Date: Fri, 19 Apr 2019 14:12:13 -0400 Subject: [PATCH] USB and TLE8888 not working for F4 or F767 #764 --- firmware/hw_layer/lcd/lcd_HD44780.cpp | 30 +++++++++++++++------------ firmware/hw_layer/lcd/lcd_HD44780.h | 1 + 2 files changed, 18 insertions(+), 13 deletions(-) diff --git a/firmware/hw_layer/lcd/lcd_HD44780.cpp b/firmware/hw_layer/lcd/lcd_HD44780.cpp index 2d4d4f2215..95ad1a30a1 100644 --- a/firmware/hw_layer/lcd/lcd_HD44780.cpp +++ b/firmware/hw_layer/lcd/lcd_HD44780.cpp @@ -189,19 +189,7 @@ void stopHD44780_pins() { brain_pin_markUnused(activeConfiguration.bc.HD44780_db7); } -void lcd_HD44780_init(Logging *sharedLogger) { - logger = sharedLogger; - - addConsoleAction("lcdinfo", lcdInfo); - - if (engineConfiguration->displayMode > DM_HD44780_OVER_PCF8574) { - warning(CUSTOM_ERR_DISPLAY_MODE, "Unexpected displayMode %d", engineConfiguration->displayMode); - // I2C pins need initialization, code needs more work & testing - return; - } - - printMsg(logger, "lcd_HD44780_init %d", engineConfiguration->displayMode); - +void startHD44780_pins() { if (engineConfiguration->displayMode == DM_HD44780) { // initialize hardware lines efiSetPadMode("lcd RS", CONFIGB(HD44780_rs), PAL_MODE_OUTPUT_PUSHPULL); @@ -218,6 +206,22 @@ void lcd_HD44780_init(Logging *sharedLogger) { palWritePad(getHwPort("lcd", CONFIGB(HD44780_db6)), getHwPin("lcd", CONFIGB(HD44780_db6)), 0); palWritePad(getHwPort("lcd", CONFIGB(HD44780_db7)), getHwPin("lcd", CONFIGB(HD44780_db7)), 0); } +} + +void lcd_HD44780_init(Logging *sharedLogger) { + logger = sharedLogger; + + addConsoleAction("lcdinfo", lcdInfo); + + if (engineConfiguration->displayMode > DM_HD44780_OVER_PCF8574) { + warning(CUSTOM_ERR_DISPLAY_MODE, "Unexpected displayMode %d", engineConfiguration->displayMode); + // I2C pins need initialization, code needs more work & testing + return; + } + + printMsg(logger, "lcd_HD44780_init %d", engineConfiguration->displayMode); + + startHD44780_pins(); chThdSleepMilliseconds(20); // LCD needs some time to wake up lcd_HD44780_write(LCD_HD44780_RESET); // reset 1x diff --git a/firmware/hw_layer/lcd/lcd_HD44780.h b/firmware/hw_layer/lcd/lcd_HD44780.h index 3c4fd1e214..53f5f68c67 100644 --- a/firmware/hw_layer/lcd/lcd_HD44780.h +++ b/firmware/hw_layer/lcd/lcd_HD44780.h @@ -13,6 +13,7 @@ extern "C" { #endif /* __cplusplus */ +void startHD44780_pins(); void stopHD44780_pins(); void lcd_HD44780_init(Logging *sharedLogger); void lcd_HD44780_set_position(uint8_t row, uint8_t column);