Ne, leider hat es nichts gutes gebracht. Ich habe an Reset einn
Pullup-Widerstand angelötet (47kOhm zu VCC) und ein Kondensator (100nF
zu GND). Jeztzt wird es zwar immer initialisiert, aber nicht richtig -
auf der Anzeige habe ich was chaotisches, und es ist ein Standbild, da
wird nichts geändert. Ich habe alles wieder entfernt und habe das, was
ich vorher hatte - es wird nur ca. 1 Mal pro 40 Resets richtig
initialisiert, aber dann geht ja alles wie es sein soll. Und alle
weiteren Resets bringen ja keine Probleme mit.
So mache ich es eigentlich:
// Pull-up on reset pin.
LCD_RST_PIN = 1;
// Set output bits on port B.
DDRB = 0xFF;
LCD_POWER = 1;
delay_ms(10);
// Toggle display reset pin.
LCD_RST_PIN = 0;
delay_ms(100);
LCD_RST_PIN = 1;
// Enable SPI port: No interrupt, MSBit first, Master mode, CPOL->0,
CPHA->0, Clk/4
SPCR = 0x50;
// Disable LCD controller
LCD_CE_PIN = 1;
LcdSend(0x21, LCD_CMD); // LCD Extended Commands.
LcdSend(0xC8, LCD_CMD); // Set LCD Vop (Contrast).
LcdSend(0x06, LCD_CMD); // Set Temp coefficent.
LcdSend(0x13, LCD_CMD); // LCD bias mode 1:48.
LcdSend(0x20, LCD_CMD); // LCD Standard Commands, Horizontal
addressing mode.
LcdSend(0x0C, LCD_CMD); // LCD in normal mode.