Das Display fängt sich warscheinlich Störungen ein.
Versuch mal einen IC4584 oder IC4093 an den Datenpins, direkt am Display.
Hallihallo!
Wie im Thema genannt, habe ich Probleme mit einem ATMega32 und einem ca. 80cm langem Flachbandkabel zu einem blauen 16*2 LCD von Reichelt.
Schalte ich den Strom ein, fährt der uC hoch und versucht, das LCD zu initialisieren. Dabei hängt er in einer Warteschleife fest, wie ich nach umfangreichem Debuggen feststellte. Diese Schleife sollte die Rückmeldung des Displays abwarten. Fahre ich nun mit dem Finger über die Kontakte auf der Platine des LCD (was mir mal durch Zufall passiert ist) so scheint dies den Pegel der abgefragten Leitung gerade so zu beeinflussen, dass es dem AVR reicht. Das Display zeigt dann meine Ausgaben an. Allerdings erscheinen die Zeichen sehr langsam der Reihe nach, ähnlich dem Schreibmaschineneffekt bei PowerPoint.
Bei einem Kabel von 10cm Länge gibt es keine Probleme.
Das Display wird komplett über das Kabel versorgt. Alle sieben Datenleitungen für den 4Bit Modus, Power, Masse und die Kontrastspannung bezieht es über dieses Kabel. Die Spannungsversorgung des gesammten Aufbaus läuft über einen Festspannungsregler.
Das Problem scheinen folglich Störungen zu sein, derer ich aber dank mangelndem Fachwissen nicht Herr werde. Ich habe schonmal an sämtliche Datenleitungen auf LCD-Seite einen größeren Widerstand gen Masse gehängt, in der Hoffnung, damit einem kleinen Stromfluss zu erzeugen, der dann die Störungen "schluckt".
Das Kabel muss so lang sein, ich kann es leider nicht kürzen. Nun habe ich schon von diversen Möglichkeiten gelesen, wie man Störungen beseitigen kann, weiß aber nicht, welche ich hier anwenden sollte. Serienwiderstände? Kapazitäten? Wenn ja, auf welcher Seite und wie groß?
Vielen Dank für Tipps,
Bääääär
PS: Ich hoffe, mit dem Beitrag im richtigen Forum gelandet zu sein... =c)
[Edit] Kabellänge korrigiert
Das Display fängt sich warscheinlich Störungen ein.
Versuch mal einen IC4584 oder IC4093 an den Datenpins, direkt am Display.
Hmmm, hab ich nich da. Kann ich sonst noch was versuchen?
[Edit] Abgesehen davon liegt das Problem ja nicht bei den Datenleitungen sondern bei derjenigen, die die Bereitschaft des LCD meldet
Die busy-Abfrage geschieht auch über die Datenleitungen.
Wenn du aber nicht feststellen kannst ob die Störungen vom Kontroller oder vom LCD selbst sind ist es schwer die Störungen in den Griff zu bekommen.
Am besten mit den Grundsätzlichen Sachen beginnen.
Genügend Abblockkondensatoren vorhanden, 100Ohm Widerstände in die Daten und Steuerleitungen einfügen wären so die ersten Maßnahmen.
Hallo,
hast du mal ein Datenblatt zum Display. Welcher Pin soll das sein? Wenn du das Busy Flag meinst, das kommt mit als Antwort über die Datenleitungen.
Gruß
Jens
Hallihallo!
Mit Abblockkondensatoren meinst du 100nF an den Versorgungspins von uC und LCD? Am uC sind genug dran, am LCD keine, die werde ich dann mal übernehmen.
Die Serienwiederstände: Wohin sollen die? An beiden Seiten, nur am uC, nur am LCD? Ich werde für das LCD nochmal eine neue Platine ätzen müssen, deswegen will ich erstmal so viele Informationen wie möglich suchen, damit ich alles Mögliche gleich auf die Platine übernehmen kann.
Das Datenblatt des Displays ist dieses hier: klick
Danke für die Antworten,
Bääääär
PS: Ja, ihr habt Recht, das BusyFlag geht tatsächlich über die Datenleitungen. Mich wundert eins: Ich bekomme keine falschen Zeichen übertragen, das heißt, der uC macht alles richtig. Die Störungen könnten also nur vom LCD selber kommen, oder? Schließlich gibt es immer Probleme, wenn ich von ihm lese.
Hallo,
wenn du nicht vom Display liest, hast du die Pins als Ausgang definiert. Dann liegt immer definiertes Potential auf der Leitung.
Als erstes würde ich versuchen ob, die internen Pullups beim Lesen Besserung bringen. Wenn das nicht hinhaut, versuch es mit externen Pulldowns.
Gruß
Jens
Hallo!
Ich habe jetzt ans Display noch einen Kondensator mit 100nF gelötet. Der hat jedoch keinerlei Verbesserung gebracht. Pulldowns hatte ich auf Seite des Displays schon angebracht. Ich glaube nicht, dass es Sinn macht, parallel noch welche auf uC-Seite anzubringen, oder? Ich kann sie natürlich auch nochmal ablöten, wenn das Aussicht auf Erfolg bringt.
Da ich das Modul eben nochmal gestartet habe, um eben das zu testen, habe ich auch nochmal geschaut, wie es mit dem "berühren" der Kontakte am Display aussieht (wie oben schon beschrieben): Das Display stellt, wenn ich meinen Finger auf den Pin für Datenleitung 7 lege (also auch die für das BusyFlag) gleich einen Schwung Zeichen ohne Verzögerung dar. Ich vermute mal, ich bin elektrostatisch aufgeladen und solange, wie meine Ladung reicht, beeinflusse ich die Leitung zum positiven Effekt hin.
Ich habe auch nochmal einen Versuch mit einem kürzeren Kabel durchgeführt. Dabei fiel mir auf, dass das Display auf Anhieb initialisiert (was beim langen Kabel erst nach Berührunf der Kontakte passierte), die Zeichen bis zur Hälfte der zweiten Zeile auch schnell und ohne Verzögerung überträgt, dann jedoch in den selben "Schreibmaschineneffekt" fällt, wie beim langen Kabel.
Vielen Dank für eure Hilfe,
Bääääär
ich weiß nicht ob du das so willst, aber versuchs mal mit I²C. ich betreibe 7-segment-led/lc-, zeilen- und grafische displays über I²C mit bis zu 2.5m kabellänge - ohne probleme
Ich programmiere mit AVRCo
20 cm ist nach nicht sonderlich lang. Ich hatte mit Kabeln von 1 m noch keine Probleme.
Bist Du dir sicher daß das Kabel in Ordnung ist und auch die Kontakte sauber sind?
Signatur??? kann ich mir nicht leisten!!!
Lesezeichen