Hallo,
ich hab ein kleines Problem mit dem oben genannten LCD Display... es
funktioniert erstmal alles... sogar die Curserposition... aber spradisch
eben nicht... Ich betreibe das Display mit SPI (1MHZ) und erstmal mit
20cm Flachbandkabel... obwohl ich dachte, es könnte zu Problemen kommen,
war noch kein falsches Zeichen dabei... deswegen schließe ich auch aus,
dass ein Übertragungsfehler bei der Curserposition entsteht...
jedenfalls würde ich das sehr merkwürdig finden...
Außerdem kann man beobachten das die untere Zeile immer an die selben
zwei Stellen des Displays falsch springt...
Manchmal ist es öfter, manchmal gar nicht... kann mir das nicht
erklären...
Hab mit zusätzlichen Delayzeiten versucht, aber keine Besserung...
Ich hoffe es hatte schonmal jemand das selbe Problem... hier mal etwas
Code...
1 | clear_home();
|
2 | fprintf(stderr, "Umin: %5.2fV",(float)Spannung_Min*(*SU));
|
3 | set_cursor(40); //auf neue Zeile springen
|
4 | fprintf(stderr, "Imax: %5.1fA",(float)Strom_Max*(*SI));
|
hier springt das Imax manchmal auf Umin oder auch auf Position 48...
hier die wichtigen funktionen:
1 | void set_cursor (unsigned char pos) // Cursor an Position setzen
|
2 | {
|
3 | CONTROLPORT &= ~_BV(CTRL_RS);
|
4 | SPDR = 128+pos;
|
5 |
|
6 | _delay_ms(0.2);
|
7 | ctoggle_RS ();
|
8 | }
|
9 |
|
10 | void clear_home (void) // Display löschen, Cursor an Position home setzen
|
11 | {
|
12 | CONTROLPORT &= ~_BV(CTRL_RS);
|
13 | SPDR = 0b00000001;
|
14 | _delay_ms(1.2);
|
15 | ctoggle_RS ();
|
16 | }
|
mfg basti