Hallo zusammen, eben habe ich ein schönes 4x20 LCD geschrottet wie es scheint... alles funktionierte wunderbar bis dahin; ich konnte per PIC18F4550 das Display beschreiben, wobei der PIC den Text per USB übertragen bekam. Dann fiel mir ein ganz leichter kokeliger Geruch auf... da alles klappte und ich keine Fehler sah machte ich weiter. Und dann auf einmal ging das verdammte Teil nicht mehr! Beim Einschalten erscheint es zweizeilig mit schwarzen Boxen, dann wird es beim Initialisieren korrekt gelöscht. Nur leider kommt kein Text mehr an. Hab alle Verbindungen geprüft - alles bestens. Meine Theorie: Die Busy-Abfrage die vor dem Ausgeben von Control- und Datenbytes gestartet wird setzt RW auf High. In dem Moment schreibt der Controler sein Statusregister auf den Bus... wenn man nun in dem Moment den PIC resettet (was ich beim Testen unzählige Male gemacht hab!) setzt der erstmal seine Pins am LCD auf Output. Wenn da dann high auf low getroffen hat würde das den brenzligen Geruch und das zerstörte Display erklären. Falls es wirklich so war frage ich mich: Wie kann man das verhindern, und wieso wird man auf diese Falle in den ganzen Tutorials & Anleitungen zur LCD-Ansteuerung nicht auf diese Gefahr hingewiesen? Eigentlich wäre das Resetten nur des Mikrocontrollers bei Benutzung des Busy-Flags ja absolut unzulässig weil man nicht weiß ob der uC resettet wurde während der LCD-Controller seine Tristate-Pins noch auf Output hatte. MAn dürfte doch so ein LCD dann nur über Schutzwiderstände in den Datenleitungen betreiben...
330 Ohm Widerstände einbauen sowas mache ich immer wenn ich mit meinem Board spiele
"Der PIC setzt seine Pins bei einem Reset auf Output?! - Ist mir neu..." Das Programm tut das! Ok vielleicht ist das der Fehler... aber das muss ich ja um überhaupt mit dem LCD kommunzieren zu können... >330 Ohm Widerstände einbauen sowas mache ich immer wenn ich mit meinem >Board spiele Ok das klingt sinnvoll!
kennie schrieb: > Meine Theorie: Die Busy-Abfrage die vor dem Ausgeben von Control- und > Datenbytes gestartet wird setzt RW auf High. In dem Moment schreibt der > Controler sein Statusregister auf den Bus... wenn man nun in dem Moment > den PIC resettet (was ich beim Testen unzählige Male gemacht hab!) setzt > der erstmal seine Pins am LCD auf Output. Wenn da dann high auf low > getroffen hat würde das den brenzligen Geruch und das zerstörte Display > erklären. Blödsinn, selbst wenn, das töten den Displaycontroller nicht. Das wäre mal was ganz was neues. Nimm ein anderes 4x20 mit gleichem Controller und probier's mal aus. Ich glaube eher, dass der Fehler irgendwo in deinen Initialisierungen liegt ...
> würde das den brenzligen Geruch und das zerstörte Display > erklären. Nicht wirklich, CMOS-Ausgänge regeln zwischen 20 und 40mA ab, das reicht nicht für brenzligen Geruch. Die Ursache liegt wohl woanders.
@MaWin: Hast du dazu irgendeine Quelle? Ist das sicher, technisch bedingt oder kommts auf den Hersteller an?
MaWin schrieb: > Nicht wirklich, CMOS-Ausgänge regeln zwischen 20 und 40mA ab, > das reicht nicht für brenzligen Geruch. Meinst du wirklich, dass die Treiber im LCD-Controller 20-40mA können? Im Datasheet vom HD44780 sind die Ausgänge mit einer Last von 40-100µA definiert. Ich denke, die können von 20mA nicht einmal träumen.
Thomas O. schrieb: > @MaWin: Hast du dazu irgendeine Quelle? Ist das sicher, technisch > bedingt oder kommts auf den Hersteller an? Da brennt nichts an. Es gibt beliebig viele Leute, die aufgrund Unkenntnis und falschen Vorbildern die 4 unbenutzen Datenbus-Pins auf Masse oder VCC festzurren, und denen trotzdem beim Busy-Polling nicht der Chip davonfliegt, obwohl auch diese 4 Pins dann Ausgänge sind.
Kandidaten fürs Kokeln sind beispielsweise Tantal-Elkos und falsch angeschlossene Hintergrundbeleuchtungen.
Wenn du Sorgen wg. RW hast, dann lass es einfach weg (fest auf low) und warte per Delay statt Busy.
Ihr habt alle recht gehabt und es lag an was anderem. Gestern abend erschien während ich über den Sourcecode brütete auf einmal wie von Geisterhand -plopp!- wieder der gewünschte Text. Das kann ich mir nur so erklären dass das LCD mit Hintergrundbeleuchtung zuviel Strom aus dem Bus zieht bzw. die Versorgung nicht sauber ist und dann ein paar Milivolt mehr oder weniger den Unterschied machen. Naja muss ich mal suchen... jedenfalls danke für die Hilfe!
kennie schrieb: > Das kann ich mir nur so > erklären dass das LCD mit Hintergrundbeleuchtung zuviel Strom aus dem > Bus zieht An den Vorwiderstand für die Hintergrundbeleuchtung hast Du sicher gedacht? Falls ja, fass den doch mal an.
Da sind 100R dran. Auch mit 1K als Vorwiderstand (Beleuchtung nur ganz schwach) startet das Board aber nicht; der LCD löscht dann das Busy-Flag nicht und der Controller wartet und wartet.
Dann würde ich mal einen Fehler in der Schaltung suchen. Das LCD muss auch ohne Beleuchtung funktionieren (außer es geht beides über den selben Pin, aber dann würde auch kein Vorwiderstand gebraucht werden).
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.