Hallo Forum,
ich versuche das ich mit meinem MSP430 ein 16x4 LCD (mit
HD44780-Controller) ansteuern kann.
Momentan hänge ich ein bisschen am Sprung in eine neue Zeile. Nach dem
Sprung werden keine Zeichen mehr ausgegeben (lustigerweise schiebt sich
das Cursor aber tatsächlich weiter vorwärts, das erkenne ich da er bei
verschiedenen Texten an verschiedenen Stellen steht, aber es erscheinen
einfach keine Zeichen).
Die zweite Zeile ist auch richtig initialisiert und die Zeichen werden
ausgegeben wenn ich in einer Schleife einfach weiterschreiben lasse (das
45. Zeichen ist dann der Anfang der zweiten Zeile).
Hier mal meine Sprungfunktion (wem die Adressen spanisch vorkommen, das
ist alles bitweise gedreht):
1 | void LCD_JPZ(int x) //Springe zu Zeile x
|
2 | {
|
3 | P5OUT = 0x01; //RS = 0; E = 1
|
4 | __delay_cycles(160); //warte 100 us
|
5 |
|
6 | switch (x)
|
7 | {
|
8 | case 1:
|
9 | P4OUT = 0x00 //Kommandoport
|
10 | LCD_RES();
|
11 | __delay_cycles(240); // warte 150 us
|
12 | break;
|
13 | case 2:
|
14 | P4OUT = 0x02;
|
15 | LCD_RES();
|
16 | __delay_cycles(240);
|
17 | break;
|
18 | case 3:
|
19 | P4OUT = 0x08;
|
20 | LCD_RES();
|
21 | __delay_cycles(240);
|
22 | break;
|
23 | case 4:
|
24 | P4OUT = 0x0A;
|
25 | LCD_RES();
|
26 | __delay_cycles(240);
|
27 | break;
|
28 | }
|
29 | }
|
Nochmal dazu was ich geprüft habe:
- 2te Zeile überhaupt "exisiterend": OK
- 2te Zeile lässt sich beschreiben: OK
- Sprungadressen passen: OK
- von Kommando wieder ins Character-Reg zurück: OK
Ich kann nach einem CLEAR-Befehl ebenfalls schreiben, also sollte es
zwischen den Registerwechsel auch kein Problem geben... noch jemand eine
Idee?