Problem: nur senkrechte Striche auf LCD

Gast #261563
Lesenswert?

Tut mir wirklich Leid, dass auch ich jetzt mit so einem Problem
ankomme... Ich wollte nur 'mal schnell' ein paar Dinge auf einem LCD
testen - und schon kommt das Problem;-)

LCD: 2*16chars (HD44100H / HD44780A) von Toshiba
AVR: ATmega8515 @ 8Mhz
Code: AVRASM aus dem hiesigen LCD-Tut

Bei dem Code habe ich Target, Zeitschleifen und den Port (von D auf C)
umgeändert. Zur Kontrolle lasse ich noch eine LED in der Hauptschleife
blinken.

PROBLEM:
Die erste Zeile wird gelöscht, die zweite ist komplett mit 'schwarzen
Kästchen' gefüllt. Von dem 'Test' erkennt man nur '|  |'. Aus
einem 'hello world' wird ein '| ||    ||'.

Ich habe schon am Kontrast gekurbelt, die Spannung am Display mit 100n
geblockt, das Backlight mit ca. 300 Ohm gesichert und RW+D0-D3 auf GND
gelegt. Nach dem Flackern der LED und den fuses zu Urteilen arbeitet
die mcu wirklich auf 8MHz.

Ich bin mit meinem Latein mittlerweile am Ende und steuer auf die Krise
zu;-)

HIILFEEE!!!

Viele Grüße, Hendrik
Gast #261567
Lesenswert?

Mir ist klar, dass das Tut auf 4MHz geschrieben wurde.
Da sich das LCD aber in einen Stapel 8MHz-Routinen einfügen muss, habe
ich die Zeitschleifen angepasst (->Delayloop-Generator)

An den Schleifen sollte es also nicht liegen...
Trotzdem Danke!!

Hendrik
Gast #261569
Lesenswert?

schon getestet, das das Display noch ok ist? ...also z.B. Tutorialcode
mit 4MHz nur fürs Display... Sieht aus wie Probleme mit dem
Display-Speicher. Die Striche kommen ja so nicht im Zeichensatz vor
(Tabelle geprüft?).
... Masseverbindungen des Displays, Störungen durch Großverbraucher,
Spikes auf der Displayversorgung...
Gast #261570
Lesenswert?

Tutcode auf 4MHz werde ich noch probieren - sollte aber nicht viel
ändern. den Port muss ich trotzdem umlegen...

Die ASCII-Tabelle wird nicht von uns programmiert, sondern steckt im
LCD-Controller und im Compiler.

Masse sollte OK sein, ist sogar abgeblockt. Großverbraucher sind auch
nicht dran (nur der ATmega8515).
Gast #261572
Lesenswert?

Die Frage ist doch warum senkrechte Striche. Ist das der senkrechte
Strich aus dem Displayzeichensatz, dann werden die falschen Daten
empfangen. Ist der Strich anders als der aus dem Zeichensatz, dann ist
der Displayspeicher tot oder der Displaycontroller kommt durcheinander.
Der Blechrahmen liegt aber auch auf Masse?
Gast #261573
Lesenswert?

Ich hab gerade mal in meiner Kiste gewühlt und einige 2*16 Displays
angeschaut.
Die LCD-Gläser sind doch mit so Zebragummis oben und unten
kontaktiert.
Wenn da nun irgendwie kein richtiger Kontakt...
Gast #261576
Lesenswert?

Zunächst : Vielen Dank für Eure Hilfe!!

@Hannes:
Sämtliche Timings hatte ich schon bei den 8MHz-Versionen verlangsamt.
Selbst eine 8MHz-Version auf den internen 4MHz führt zu diesem Problem
(obwohl sich die Delays ja nun verdoppelt haben müssten).

@???:
Displaygehäuse liegt aug GND. Bei festem Druck auf den Rahmen werden
sämtliche Querstriche (nicht nur die gewünschten, sondern wirklich
alle) sichtbar.
Wenn sämtliche Buchstaben, bei denen ein senkrechter Strich vorkommt
(T,l,d,H,...) zu Strichen werden, ist das ein eigenartiger
Zeichensatz...

@Toby:
Deine Vermutung hat was: Von Natur aus ist ja 1Zeile transparent,
2Zeile schwarz. Nach lcd_init und lcd_clear erwarte ich eigentlich
komplette Transparenz... Zudem bekam ich gestern noch eine 8MHz
Firmware geschickt, die auf diesem Display gelaufen sein soll. Die
Chancen lagen ungefähr 1:50, dass die untere Zeile korrekt ausgegeben
wurde (die obere machte immer Striche). Ansonsten gab es auch hier die
Striche...
Allerdings ist das Tut für genau diesen Controller geschrieben worden -
wie kann da was falsch initialisiert werden?!?
Gast #261577
Lesenswert?

nächster Versuch mit PC und jaLCD:

Ich habe eben einen SubD-25 Stecker zusätzlich an das LCD gelötet und
den AVR entfernt.

Im 8bit-Mode arbeitet die 2.Zeile korrekt - die erste macht die
bekannten Striche. Aber die zweite arbeitet schonmal...

Irgendwer eine Idee?
Gast #261579
Lesenswert?

Hi,
mit Jalcds habe ich auch mal was gemacht.

da hatte mein LCD auch nur Striche.
Ich schau mal, ob ich da noch was finde.
Kleinen Moment.

Welches LCD hats du da nochmal ?!

Ich meine, es lag an der Initialisirung und der Warteschleifen.
Diese waren beim AVR deutlich zu kurz.

Das LCD habe ich mit jaLCD nicht zum laufen gebracht.

Mit dem AVR irgend wann schon.

Wie gesagt, es war ein "kompatibler" Controller drauf.

Gruß Toby
Gast #261583
Lesenswert?

Hallo nochmal,

so, jetzt hab ich es gefunden.

ich hatte den WINAVR Compiler, damit ging es garnicht.
Warum auch immer.

Dann hatte ich noch den CVAVR Compiler, und mit der LCD Routine
hat es geklappt.

Ich habe es eben nochmal ausprobiert.

Ich hänge die Files mal an,
dann kannst Du etwas aus diesen entnehmen.

Gruß Toby
Angehängte Dateien:
Gast #261586
Lesenswert?

Hier noch die Pinbelegung des

Mega16   LCD
PA0      RS Pin4
PA1      RD Pin5
PA2      EN Pin6
PA3      Frei
PA4      DB4 Pin11
PA5      DB5 Pin12
PA6      DB6 Pin13
PA7      DB7 Pin14

Wie schon gesagt, das LCD läuft im 4 Bit Modus.

Gruß Toby
Gast #261590
Lesenswert?

Hier mal mein aktueller Status:

Durch die jaLCD-Experimente bin ich drauf gekommen, dass die zweite
Zeile funzt.

Also habe ich nach der 'Rücklötaktion' den Pointer auf die zweite
Zeile gesetzt und kann dort nach Herzenslust rumkrakeln (auch im 4bit
mode mit AVR @8MHz)

Die erste Zeile macht nach wie vor nur Striche...

Kann es sein, dass einfach das Modul Schrott ist? (es wurde nicht
antistatisch verpackt und ich habe den Postboten gerade erwischt, wie
das LCD in den Briefschlitz quetschen wollte...)

Was meint Ihr?
Kann es hier wirklich noch an Timings/Init liegen, wo die zweite Zeile
funzt??

Hendrik
Gast #261591
Lesenswert?

Hallo Hendrik,

ich hänge heute Früh mal eine HEX Datei an.
Hab hier im Moment nix da.
Damit sollte dein LCD auch was anzeigen (hoffe ich).
Was es anzeig, ist ja erstmal schnuppe, nicht?

Der Mega16 laüft mit internen 8 Mhz.

Gruß Toby

Ach, das Prog könntest Du auch mit der Demo machen, die ist bis 2K
Flash begrenzt.

Ich habe irgendwo mal was über Senkrechte Linien gelesen.
Ich glaube sogar bei Peter Fleury oder NAME ????, vergiss es, das
bringt dir bestimmt nix, nein, brigt dich wieder auf eine andere
Fährte, meinte ich.

Mann, mir fällt der NAME nicht ein.

Trotzdem Komisch, das die erste Zeile spinnt, die 2te aber geht!
Eigentlich sollte das Timing überall gleich sein, bzw. ist es sogar!

Hast Du vielleicht noch einen Fehler in der Init ?
Schreib doch mal an Stellen und Zeilen, die das LCD garnicht mehr
anzeigt!
Zeigt es plötzlich etwas an, dann stimmt etwas mit der Adresse der
ersten Zeile nicht!

Mann, mir fällt der NAME immer noch nicht ein.

Gruß Toby
Gast #261592
Lesenswert?

Wie sieht denn das Zeichen 255 (FF) aus? Wird das Komplett als schwarzes
Viereck dargestellt, dann ist der RAM im Display ok.
Der HD44780A ist ja das Original (Nicht nur ein schwarzer Klecks). Da
sollte auch die Initialisierung klappen. Die 2. Zeile geht, also hat
die Initialisierung geklappt. Das einfachste wird wohl ein neues
Display.
Gast #261593
Lesenswert?

Bei 0xFF wird wirklich an erster Position der ersten Zeile ein schwarzes
Kästchen ausgegeben.
-> die Feldadresse war also korrekt
Im Gegensatz zur zweiten Zeile funzen aber keine Buchstaben.

Ich habe das Display auch mal einzeilig initialisiert: In Folge lief
nur noch die (defekte) erste Zeile, die zweite war transparent.
-> init ist auch OK

Das alles führt mich zur Überzeugung, dass die Post auch hier mal
wieder ganze Arbeit geleistet (und das Display auf dem Gewissen)
hat...

Danke für Eure Ausdauer!
Hendrik
Gast #261598
Lesenswert?

@Daniel M. : Ich hatte kein Problem mit senkrechten Srichen. Das waren
im Grafikmodus aber die Muster an denen ich versucht habe
herauszufinden, warum Pixelfehler auftreten.
Dabei habe ich eigenartige Ergebnisse erziehlt:
Senkrechte Linien über das gesamte Display waren fehlerfrei. Wenn man
das Muster aber ab einem bestimmten Punkt versetzt hat, so traten dort
oft fehlermuster auf, die aber nicht zufällig waren, sondern periodisch
auftraten.

Eigenartig war auch, dass der Text 1. nur in der 2. Zeile funktionierte
und dass er dort auch nur erkennbar war, wenn man den rest des Displays
nicht gelöscht hat. Weil beim Löschen wurde der Text sehr serh bass und
hate Pixelfehler, wobei der Buchstabe, der ja vom Display generiert
wurde, noch lesbar war.

Ich schaue mal, was mit diesem Display los ist. Es ist zwar auch von
Toshiba, aber ich hatte einen anderen Controller...

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren