#define LCD_LINES 4 /**< number of visible lines of the display */
2
#define LCD_DISP_LENGTH 20 /**< visibles characters per line of the display */
3
#define LCD_LINE_LENGTH 0x13 /**< internal line length of the display */
4
#define LCD_START_LINE1 0x00 /**< DDRAM address of first char of line 1 */
5
#define LCD_START_LINE2 0x20 /**< DDRAM address of first char of line 2 */
6
#define LCD_START_LINE3 0x40 /**< DDRAM address of first char of line 3 */
7
#define LCD_START_LINE4 0x60 /**< DDRAM address of first char of line 4 */
8
#define LCD_WRAP_LINES 0 /**< 0: no wrap, 1: wrap at end of visibile line */
Dann habe ich meine Schaltung an einem regelbarem Netzteil angeschlossen
und langsam die Spannung aufgedreht, als ich dann bei 24V war zeigte das
Display die Zeilen verschoben. Das konnte ich nur beheben indem ich
erneut die lcd.h angepasst habe. Werte durch Versuche ermittelt.
1
#define LCD_LINES 4 /**< number of visible lines of the display */
2
#define LCD_DISP_LENGTH 20 /**< visibles characters per line of the display */
3
#define LCD_LINE_LENGTH 0x13 /**< internal line length of the display */
4
#define LCD_START_LINE1 0x00 /**< DDRAM address of first char of line 1 */
5
#define LCD_START_LINE2 0x14 /**< DDRAM address of first char of line 2 */
6
#define LCD_START_LINE3 0x28 /**< DDRAM address of first char of line 3 */
7
#define LCD_START_LINE4 0x54 /**< DDRAM address of first char of line 4 */
8
#define LCD_WRAP_LINES 0 /**< 0: no wrap, 1: wrap at end of visibile line */
Wie kann das passieren? Kann durch "kaputte" Datensätze das Display
"umprogrammiert" werden?
Was passiert wenn in das Display an undokumentierte Stellen geschrieben
wird?
Yalpsid schrieb:> Dann habe ich meine Schaltung an einem regelbarem Netzteil angeschlossen> und langsam die Spannung aufgedreht, als ich dann bei 24V war zeigte das> Display die Zeilen verschoben.
Hast Du die 3,3V (und ggf. die 5V) gemessen, am besten mit Oszi?
Vielleicht schwingt der/die Regler.
Haben die Kondensatoren vor und hinter den Reglern die richtigen Werte?
Zeigt mal die Schaltung + Layout.
Gruß Dietrich
Yalpsid schrieb:> Wie kann das passieren?
Dieses Display hat eben eine etwas andere Adressaufteilung.
Und? Macht, ja nichts.
Das wird dir noch öfter passieren. Je nach Anzahl der Zeilen und Anzahl
der Spalten ist das etwas anders.
Der HD_dinsgbums Controller ist so aufgebaut, dass er eigentlich eine
Zeile mit 80 Spalten 'verwaltet'. Jetzt ist es aber so, dass ein
2-zeiliges LCD mit leidglich zb 16 sichtbaren Spalten natürlich diese 80
logischen Spalten überhaupt nicht ausnutzt.
Also legt man die 2.te Zeile zb genau in die Mitte rein und tut so, als
ob das LCD nur 1-zeilig wäre, wobei von dieser einen Zeile nur die
Bereich 0 bis 16 und 40 bis 56 angezeigt werden. Und sinnigerweise macht
man das dann auch noch so, dass diese beiden angezeigten Bereich
physikalisch übereinander aufs Glas gemalt werden.
Der COntroller denkt, er hätte nach wie vor nur 1 Zeile (die 80 Spalten
breit ist), dein menschlicher Benutzer sieht aber 2 übereinanderliegende
Zeilen. Das das für den Controller ein und dieselbe Zeile ist, aus der
er 2 Ausschnitte an verschiedenen Stellen des LCD sieht, das weiß der
Mensch ja nicht.
Dietrich L. schrieb:> Hast Du die 3,3V (und ggf. die 5V) gemessen, am besten mit Oszi?> Vielleicht schwingt der/die Regler.> Haben die Kondensatoren vor und hinter den Reglern die richtigen Werte?> Zeigt mal die Schaltung + Layout.>> Gruß Dietrich
Ja hab ich da war der Prozessor noch unprogrammiert. Die Beschaltung ist
wie in den Datenblättern angegeben. Am DCDC sind Tantal, am Linear 3,3V
Elkos, der Mega hat an jeder VDD VSS Pärchen einen 100n nach an den
Pins.
Karl Heinz Buchegger schrieb:> Dieses Display hat eben eine etwas andere Adressaufteilung.> Und? Macht, ja nichts.> Das wird dir noch öfter passieren. Je nach Anzahl der Zeilen und Anzahl> der Spalten ist das etwas anders.>> Der HD_dinsgbums Controller ist so aufgebaut, dass er eigentlich eine> Zeile mit 80 Spalten 'verwaltet'. Jetzt ist es aber so, dass ein> 2-zeiliges LCD mit leidglich zb 16 sichtbaren Spalten natürlich diese 80> logischen Spalten überhaupt nicht ausnutzt.> Also legt man die 2.te Zeile zb genau in die Mitte rein und tut so, als> ob das LCD nur 1-zeilig wäre, wobei von dieser einen Zeile nur die> Bereich 0 bis 16 und 40 bis 56 angezeigt werden. Und sinnigerweise macht> man das dann auch noch so, dass diese beiden angezeigten Bereich> physikalisch übereinander aufs Glas gemalt werden.> Der COntroller denkt, er hätte nach wie vor nur 1 Zeile (die 80 Spalten> breit ist), dein menschlicher Benutzer sieht aber 2 übereinanderliegende> Zeilen. Das das für den Controller ein und dieselbe Zeile ist, aus der> er 2 Ausschnitte an verschiedenen Stellen des LCD sieht, das weiß der> Mensch ja nicht.
Ja das ist ja alles ok.
Aber im Datenblatt steht es anders, und es hat ja am Anfang so
funktioniert wie es im Datenblatt stand, das ist ja das seltsame.
Hi
>An einem Atmega32 mit Peter Fleury LIB.
Bist du sicher, das die Lib mit den Extended Function Registern umgehen
kann?
Wie sieht die Initialisierung des Displays aus? Auf jeden Fall würde ich
alle Shiftoperationen disablen.
Das langsame Hochdrehen der Spannung würde ich unterlassen da dadurch
Controller und Display zu verschiedenen Zeiten starten können.
MfG Spess
spess53 schrieb:> Bist du sicher, das die Lib mit den Extended Function Registern umgehen> kann?
Ok danke das schaue ich mir an.
> Wie sieht die Initialisierung des Displays aus? Auf jeden Fall würde ich> alle Shiftoperationen disablen.
Ok, schaue ich mir auch an
> Das langsame Hochdrehen der Spannung würde ich unterlassen da dadurch> Controller und Display zu verschiedenen Zeiten starten können.
Was kann dadurch passieren?
Eine eigene Frage?
Dieser Thread ist über 13 Jahre alt.
Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.