Hallo,
ich habe hier: Beitrag "EA DOG 3,3V 4bit (AVR-GCC-Tutorial/LCD-Ansteuerung)" nach Rat
zu einem Problem mit der Initialisierung gesucht.
Nach einigem Ausprobieren, habe ich mir die 5V 4bit
Initialisierungsfolge von EA genommen und damit getestet. -> Läuft,
Display also nicht defekt. Dann konnte ich die Folge für 3,3V anpassen
-> läuft!
ABER: Es iat eine andere Folge, als im EA Datenblatt beschrieben. Es
wird 2x die instruction function aufgerufen und es ist das Bit gesetzt,
was für den 8bit-Betrieb notwendig ist. Erst danach (4. Zeile) wird auf
4bit umgestellt. Kann mir jemand erklären, was da passiert, und warum es
sich nicht mit dem Datenblatt deckt?
So ist die bisher einzige Folge, die bei mir für 4bit und 3,3V bei 3x16
Display funktioniert:
1 | #define INSTRUCTION_CLEAR_DISPLAY 0b 0000 0001
|
2 | #define INSTRUCTION_FUNCTION_SET_INIT_0 0b 0011 0011
|
3 | #define INSTRUCTION_FUNCTION_SET_INIT_1 0b 0011 0010
|
4 | #define INSTRUCTION_FUNCTION_SET_INIT_2 0b 0010 1001
|
5 | #define INSTRUCTION_INSTRUCTION_SET_0 0b 0010 1000
|
6 | #define INSTRUCTION_INSTRUCTION_SET_1 0b 0010 1001
|
7 | #define INSTRUCTION_BIAS_SET 0b 0001 0101
|
8 | #define INSTRUCTION_POWER_CONTROL 0b 0101 0101
|
9 | #define INSTRUCTION_FOLLOWER_CONTROL 0b 0110 1110
|
10 | #define INSTRUCTION_CONTRAST_SET 0b 0111 0000
|
11 | #define INSTRUCTION_DISPLAY_ON 0b 0000 1100
|
12 | #define INSTRUCTION_ENTRY_MODE 0b 0000 0110
|
Bin zwar froh, dass es jetzt käuft, aber verstehe nicht warum ;-)
P.S.: die Abstände bei 0b.... sind nur zur besseren Lesbarkeit
eingefügt. Jede Zeile wird im Code als Befehl mit 200ms Abstand
ausgeführt - also nicht wundern, dass hier nur die Defines stehen.