EDIT:Looks like this is happening even if the display is not connected. Sometimes the upload will hang and disconnecting any pin (even if it is not connected with the display) seems to resolve the issue...
I have my display connected to pins 22-34 and a 4x4 keypad connected to pins 36-43.
This the first mention of additional hardware (keypad) being attached.So there are other things hooked up in addition to the glcd.This is why I asked about other things being hooked up to the mega.
Do you have a voltmeter?If so check the VCC voltage and see if it is low particularly when the upload is failing.
The glcd library is using pins 36 and 37 so you have pin collision, which has the potential to create a short.This is very bad. Make sure you are not sharing any pins between the glcd library and the keypad.
/* * ks0108_Mega.h - User specific configuration for Arduino GLCD library * * Use this file to set io pins * * The configuration below uses a single port for data * and has the same wiring as the mega config from the previous ks0108 library **/#ifndef GLCD_PIN_CONFIG_H#define GLCD_PIN_CONFIG_H/* * define name for pin configuration */#define glcd_PinConfigName "ks0108-Mega"/*********************************************************//* Configuration for assigning LCD bits to Arduino Pins *//*********************************************************//* * Pins used for Commands */#define glcdCSEL1 30 // 33 // CS1 Bit #define glcdCSEL2 31 // 34 // CS2 Bit#define glcdRW 32 // 35 // R/W Bit#define glcdDI 33 // 36 // D/I Bit #define glcdEN 34 // 37 // EN Bit//#if NBR_CHIP_SELECT_PINS > 2//#define glcdCSEL3 32 // third chip select if needed//#endif//#if NBR_CHIP_SELECT_PINS > 3//#define glcdCSEL4 31 // fourth chip select if needed//#endif/* * Data pin definitions * This version uses pins 22-29 for LCD Data */#define glcdData0Pin 22#define glcdData1Pin 23#define glcdData2Pin 24#define glcdData3Pin 25#define glcdData4Pin 26#define glcdData5Pin 27#define glcdData6Pin 28#define glcdData7Pin 29// Reset Bit - uncomment the next line if reset is connected to an output pin//#define glcdRES 30 // Reset Bit#endif //GLCD_PIN_CONFIG_H
Looks like the problem might be connected with the keypad and constants reassignment. Whenever I disconnect the keypad completely I can't reproduce the hang. Connecting pins 36 and 37 of the keypad still produces no problem (I tried multiple re-uploads). But after connecting ping 38 along with 36 and 37 I got a hang. So there must be something else I need to change in GLCD in order to use reassigned pins...