LCD und ATMega8 - Fehlerhafte Ansteuerung

Hallo,

ich habe mir vor ein paar Tagen ein LCD gekauft, das "WINTEK WD-C2704M-1HNN" von Pollin (4*27 Zeichen, 2 HD44780-kompatible Controller). Das würde ich gerne mit einem ATMega 8L ansteuern.

Mit einer auf dem Steckboard aufgebauten Schaltung konnte ich das LCD einwandfrei im 4-Bit-Modus ansteuern, auch das Busy-Flag des LCDs wurde korrekt abgefragt.

Dann habe ich mir eine Lochraster-Platine gelötet, mit dem ATMega8 in der Mitte, und dessen PORTD mit allen 8 Pins an einen Stecker gelegt. PORTD liegt darüber über eine kleine Adapterplatine am LCD. Der Adapter macht nichts anderes als D0-D3 des LCDs auf GND zu legen (4-Bit-Modus) und eine Kontrastspannung zu erzeugen.

Naja, und da fingen die Probleme an. Meine LCD-Routinen, die auf dem Steckboard tadellos funktionierten, hängten sich beim Warten auf das Busy-Flag auf (BF wollte manchmal nicht auf Low gehen).

Ich habe den Busy-Flag-Test dann wieder durch eine genügend lange Warteschleife (>10ms) ersetzt. Dann funktionierte es gelegentlich, das LCD zu initialisieren und Zeichen anzuzeigen. Allerdings wurden teilweise Zeichen verschluckt, ausgetauscht oder die Cursor-Position verschob sich unerwartet. Häufig aber wurde der zweite Controller (der für die unteren beiden Zeilen) gar nicht zu Ende initialisiert. Wenn ich die Initialisierungsreihenfolge im Code umdrehe, sodass ich zuerst den unteren Controller aktiviere, wird der obere manchmal nicht vollständig initialisiert.

Ich habe jede Daten- und Steuer-Leitung mehrmals durchgemessen (vom Pin des uC bis zum Lötpad am LCD), alle Leitungen sind korrekt verbunden, keine einzige Querverbindung, kein Wackelkontakt. D0-3 des LCDs liegen auch auf GND, das LCD bekommt dieselben 5V vom 7805 wie der ATMega. Die Steuerleitungen sind RS, R/W, E1 und E2 (E vom ersten bzw. zweiten Controller). Die Datenleitungen (D4-D7) liegen auf PORTD4-7.

Die Software ist genau dieselbe wie auf dem Steckboard (mit AVR-Studio in Assembler geschrieben, inzwischen habe ich sie aber auch schon nach C portiert).

Ich vermute fast, dass es am Kabel liegt, weil ich es mir anders nicht erklären kann. Könnte die Länge entscheidend sein?

===========================***** (8-polig, 20cm) ATMega8 (PORTD) LCD ===========================*****====================********** (15-polig Flachbandkabel, Adapter (Lochraster, 1m) D0-3 -> GND, VCC, GND, Kontrast)

Oder woran könnte es sonst noch liegen, dass das LCD nur noch sporadisch funktioniert, seit ich den AVR auf Lochraster habe?

mfg, Christoph

Reply to
Christoph Dittmann
Loading thread data ...
[...]

Meintest du wirklich 1 Meter Kabel? Das erscheint mit reichlich viel, vor allem, weil du typische Symptome der verzerrten Signale beschreibst. Mach mal max 10 cm und prüfe, ob das sich signifikant ändert.

Robert

Reply to
R.Freitag

Vielen Dank. Ich meinte wirklich 1 Meter Kabel. Ich hab das mal auf 10cm verkürzt (schade um das schöne Kabel), aber jetzt funktioniert es. Lag wohl tatsächlich an verzerrten Signalen.

Was für (unerwünschte) physikalische Auswirkungen hat ein so langes Kabel eigentlich, ist das Induktion? Und was für Kabeltypen sind für LCDs besser geeignet als Flachbandkabel?

mfg, Christoph

Reply to
Christoph Dittmann

Ein längeres Kabel ist eine Kombination aus L und C, steile Taktflanken werden dadurch verschliffen. Ein Rechteck wird dadurch zum Trapez. Da die Anstiegsgeschwindigkeit der Flanken bestimmte Mindestwerte haben muss, kollidiert das mitunter.

Robert

Reply to
R.Freitag

Das finde ich interessant. Wie verhält sich das denn, wenn man ein doppelt so "breiten" Bus nimmt, und jedes zweite Signal auf GND legt (wie bei 80pol. IDE-Bus)? Treten dann die Symptome nicht mehr auf?

Viele Grüße Johannes

Reply to
Johannes Bauer

Es sind eigentlich alle Dreckeffekte zusammen. Du hast die Induktivität des Kabels und eine entsprechenden Kapazität dann, bei dir aber eher unerheblich, einen ohmschen Widerstand und dielektrische Verlusten.

Ich glaube aber nicht das du damit wirklich Probleme hattest weil die Taktrate beim LCD eher gering ist und das Gerät bzgl. der Flankensteilheit wohl auch eher tollerant.

Ich könnte mir gut vorstellen das du Probleme mit induktiver oder kapazitiver Einkopplung hast oder auch die Stromversorgung des LCD nich ausreichend entkoppelt ist.

Du könntest probierern die Anschlüsse des LCD mit ein paar Kiloohm zu belasten und einen zusätzlichen Kondensator der Stromversorgung spendieren.

Zur Not könnte man auch nur jede 2. Ader benutzen und die daziwschenliegenden auf GND schalten. Ich weis aber nicht ob man das besser auf beiden Seiten macht oder nur auf einer.

Tschüss Martin L.

Reply to
Martin Laabs

Ich weiß von meinem Cousin, dass er ein LCD über mehrere Meter betreibt. Wenn ich mich recht entsinne wars ein geschirmtes Kabel. Er hatte aber auch Probleme, die er nur durch ausprobieren lösen konnte (IIRC Abschrimung nur auf einer Seite mit Gnd verbunden). Bei Interesse Frage ich bei ihm nochmal nach, wie er das gemacht hat.

Gruß Stefan

Reply to
Stefan Nowy

Was meinst du mit belasten, Widerstände in Reihe mit der Leitung oder gegen Masse? Was bewirken die?

Der Kondensator in der Stromversorgung ist mir klar. Wobei der leider

20cm vom LCD entfernt ist, weil ich den nicht auf dem LCD festlöten kann. Meinst du, ich sollte noch einen 100nF in 10cm Abstand vom LCD einsetzen (auf die Adapterplatine)?

Das kommt bei meinem derzeitigen Kabel leider nicht in Frage (zu wenig Adern), außerdem ist der Platz zum Löten auf dem LCD zu beschränkt.

mfg, Christoph

Reply to
Christoph Dittmann

Also stell dir vor ein Strom fließt durch durch eine Ader mit einer steilen Flanke. Dieser erzeugt ein Magnetfeld welches sich entsprechend schnell ändert. Eine andere Ader bildet mit der GND Leitung eine relativ große Leiterschleife in der ein Strom I=L*dI/dt induziert wird. L ist zwar klein aber dI/dt groß. Die LCD-Anschlüsse sind CMOS und damit sehr hochohmig so das ein kleiner Strom ausreicht um eine signifikate Spannung zu erzeugen. Diese führen dann zu einem Signal was du gar nicht gesendet hast.

Wenn du jetzt jeden Pin über einen einzelnen Widerstand "erdest" reicht der Strom nicht mehr aus um eine ausreichende Spannung zu erzeugen die die Schaltschwelle des LCD übersteigt. Wie klein du die Widerstände machen kannst ist von der Treiberleistung und der Eigeninduktivität des Kabels abhängig. Aber ich würde es mal mit

10kOhm versuchen. (Gmein ist es nämlich das wenn der Widerstand zu klein ist auch ein höherer Strom fließt und die Induktion entsprechend stärker wird ...)

Warum? Die LCD die ich kenne haben kleine Pads und da kann man doch einen axialen Kondensator drüber löten. Entsprechend mit den Widerständen für die kritischen Leitungen.

Wenn du eine Adapterplatine in 10cm Abstand hast wäre es besser als keinen. Aber wenn du das Kabel von Adapterplatine zu LCD wieder auf

1m verlängerst macht es natürlich weniger Sinn.

Evt. kannst du aber die Getakteten Leitungen etwas auseinadern legen. Also GND und VCC dazwischen. Ist aber nicht wirklich schön weil man dann beim LCD viele sich kreuzende Leitungen hat ... das schreit gerade zu nach Lötfehlern.

Tschüss Martin L.

Reply to
Martin Laabs

Der Enable Eingang ist besonders empfindlich auf spikes und unsaubere Signale. Du kannst es ja einmal mit 1 nF direkt beim Display auf dieser Leitung versuchen.

--
MFG Gernot
Reply to
Gernot Fink

"Johannes Bauer" schrieb im Newsbeitrag

die

theoretisch Ja, praktisch Nein. Dein Fehler liegt woanders. Man bedenke, dass auch ohne 80pol. IDE-Kabel da Daten mit 33Mbyte/s drübergehen. Gewusst wie.

100nF am LCD (und nicht 10cm weit weg, direkt am Lötanschluss!!)sind da schonmal ein guter Anfang.

MfG Falk

Reply to
Falk Brunner

"Gernot Fink" schrieb im Newsbeitrag news: snipped-for-privacy@uni-berlin.de...

Warum so ein Bastel-Murks? Nimm nen 74HC14, der macht aus Gurkensignalen ein sauberes ENABLE. Dann kannst du das Ding über 10m Klingeldraht ansteuern. Aber bitte RC am Eingang (100 Ohm, 1nF) nicht vergessen, und natürlich 100nF zwischen VCC/GND.

MfG Falk

Reply to
Falk Brunner

Gernot Fink schrieb:

Hallo,

das taugt nichts, denn der Enable Eingang will auch Flanken mit ordentlicher Steilheit sehen.

Bye

Reply to
Uwe Hercksen

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.