From: MaikStohn Date: Thu, 3 May 2012 12:28:17 +0000 (+0200) Subject: Moved LCD initialization out of constructor X-Git-Tag: iwj-success-2012-07-29~24^2~7 X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=commitdiff_plain;h=032df0b2c6dde69303f60ee05681e046b1a4aab3;p=marlin.git Moved LCD initialization out of constructor Since the class "MainMenu" was used within a static variable the initialization of the object (constructor call) was done before Arduino library startup. It always caused a crash when using AVRStudio with JTAG debugger (caused from calling the LCD initialization / the lot of I/O work / the stack used during this calls). By moving the LCD_INIT out of the constructor and using an explicit call inside of Arduino setup() implementation immediately fixed all problems and the JTAG debugger runs fine. --- diff --git a/Marlin/Marlin.pde b/Marlin/Marlin.pde index 2facb94..c9cff67 100644 --- a/Marlin/Marlin.pde +++ b/Marlin/Marlin.pde @@ -300,6 +300,8 @@ void setup() st_init(); // Initialize stepper; wd_init(); setup_photpin(); + + LCD_INIT; } diff --git a/Marlin/ultralcd.h b/Marlin/ultralcd.h index 253149c..39d2622 100644 --- a/Marlin/ultralcd.h +++ b/Marlin/ultralcd.h @@ -134,11 +134,12 @@ char *ftostr3(const float &x); - + #define LCD_INIT lcd_init(); #define LCD_MESSAGE(x) lcd_status(x); #define LCD_MESSAGEPGM(x) lcd_statuspgm(MYPGM(x)); #define LCD_STATUS lcd_status() #else //no lcd + #define LCD_INIT #define LCD_STATUS #define LCD_MESSAGE(x) #define LCD_MESSAGEPGM(x) diff --git a/Marlin/ultralcd.pde b/Marlin/ultralcd.pde index a10fbb3..9124022 100644 --- a/Marlin/ultralcd.pde +++ b/Marlin/ultralcd.pde @@ -99,6 +99,9 @@ FORCE_INLINE void clear() void lcd_init() { //beep(); + #ifdef ULTIPANEL + buttons_init(); + #endif byte Degree[8] = { @@ -306,10 +309,6 @@ MainMenu::MainMenu() displayStartingRow=0; activeline=0; force_lcd_update=true; - #ifdef ULTIPANEL - buttons_init(); - #endif - lcd_init(); linechanging=false; tune=false; }