mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Problem: nur senkrechte Striche auf LCD


Autor: HendrikHoelscher (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: HendrikHoelscher (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
soweit is es schon mit mir... da vergesse ich den Code.

Autor: HendrikHoelscher (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
...und der rest (das Hauptprogramm)

Autor: Pete da Heat (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi!

Schon mal mit 4Mhz Quarz probiert? Ich hatte auch mal so ein Problem ->
4 MHz Quarz und gut war...

Ciao
Pete

Autor: HendrikHoelscher (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: HendrikHoelscher (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Den Enable-Puls habe ich gerade auf 6nops verdoppelt - keine Änderung
:-(

Autor: ??? (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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...

Autor: HendrikHoelscher (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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).

Autor: HendrikHoelscher (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
-> Originalcode auf PortC umgeschrieben, fuses auf intern 4MHz
umgestellt: KEINE ÄNDERUNG.

Der Fehler liegt irgendwo anders...

Autor: ??? (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: ??? (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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...

Autor: TobyTetzi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

bist Du dir sicher, das du das Display richtig initialisiert hast?

Ich hatte da etliche Probleme, mit einem angeblich kompatiblem
Controller.

Gruß Toby

Autor: Hannes Lux (hannes)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Manche "kompatible" LCDs erfordern noch langsameres Timing.

...

Autor: HendrikHoelscher (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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?!?

Autor: HendrikHoelscher (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Hannes Lux (hannes)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ein LCD, das statt Text nur einige Striche anzeigte, hatte ich auch mal.
Ich musste das Handy, in das es eingebaut war, außer Betrieb nehmen, da
ich die Telefonnummern nicht mehr lesen konnte.

...

Autor: TobyTetzi (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: TobyTetzi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo nochmal,

ich hatte ein LCD "DEM16216 SYH-PY/V".
Soviel vorweg.

Gruß

Autor: HendrikHoelscher (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Es ist ein

TLC-493-LON von Toshiba
Controller: HD44780A00 HD44100H

Autor: Hannes Lux (hannes)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Nun wäre noch interessant, ob der LCD-Controller mit maximal möglichem
Takt läuft. Könnte ja sein, dass er langsamer getaktet wird um Strom zu
sparen. Damit ist das LCD immer noch schneller als wir lesen können.

...

Autor: TobyTetzi (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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

Autor: TobyTetzi (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Die LCD.H

Autor: TobyTetzi (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
...und das main Programm.

Ich hoffe, du findest was raus.

Gruß Toby

Autor: TobyTetzi (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Andreas Kassner (andi_k)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@HendrikHoelscher:
Hast Du JTAG im Mega16 deaktiviert?

MfG
Andi

Autor: HendrikHoelscher (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ich verwende einen mega8515!

@Tobi:
könntest Dus mir kurz kompilieren?
Welchen Takt braucht Dein Programm?

Autor: Andreas Kassner (andi_k)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ups, sorry, habe mich im Comtroller vertan!

MfG
Andi

Autor: HendrikHoelscher (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: TobyTetzi (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: ??? (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: HendrikHoelscher (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Daniel M. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

Meinst du vieleicht Freak5 TobyTetzi?

Mfg Daniel M.

Autor: TobyTetzi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich meinte Ulrich Radig.
Seine LCD Lib ist sehr interessant.

Ich werde mal eben für den Mega16 kompilieren.

Bin gleich wieder da.

Gruß Toby

Autor: HendrikHoelscher (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Radig arbeitet mit dem BF. Hilft mir nicht groß, da ich RW anf GND habe
;-)

Die inits sind identisch.

Autor: TobyTetzi (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

so, probier das mal,

Mega16, 8Mhz, Pins wie oben beschrieben an PORTA.

Bin mal gespannt!

Bis gleich!

Gruß Toby

Autor: Freak5 (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.