Guten Tag! An einem Atmega8 betreibe ich ein 16x2 Zeilen Display mit HD44780-"kompatiblem" Controller. Sowohl Schreiben zum als auch Lesen (Busy Flag) vom Display funktionieren. Die Datenleitungen DB 0-7 sind direkt an Port D des Atmegas angeschlossen. Wenn ich nun fälschlicher Weise (per Software) sowohl Port D als auch die Datenleitungen des Displays auf Ausgang stelle, würde je nach gesetzten Levels ein recht hoher Strom fliessen. Das Enable-Signal müsste natürlich auch längere Zeit gehalten werden - so meine Überlegung. Da das Display-Datenblatt recht dünn ist, habe ich mir das HD44780-Datenblatt von Hitachi angesehen: https://www.sparkfun.com/datasheets/LCD/HD44780.pdf Auf Seite 54 unten (rechts) habe ich die Ausgangsstufe gefunden. Über die PMOS- bzw. NMOS-Transistoren wird der Ausgang auf Vcc bzw. GND geschaltet. Eine weitere Strombegrenzung scheint nicht integriert zu sein. Ist das Szenario so korrekt bzw. kann der AVR oder der Display-Controller in der Form mit fehlerhafter Software beschädigt werden? Falls ja, sollte man die Display-Datenleitungen lieber über Widerstände zur Strombegrenzung mit dem AVR verbinden? Ich würde jetzt eher auf die Strombegrenzung verzichten und auf korrekten Code achten. Das "Enable"-Signal dauert meist auch nur wenige Mikrosekunden, so dass man den Fehler vermutlich noch finden wird, bevor etwas Schaden nimmt. Aber wie macht man das in Anwendungen mit höherem Anspruch als meiner Bastelei? Danke schon einmal für eure Meinung und schönen Nachmittag! Frank
Ich wuerd empfehlen 100 Ohm widerstaende zu verwenden. Und das ruecklesen zu vergessen. Ich schreib jeweils mit einem Timer, alle 10ms ein Zeichen oder so.
Frank schrieb: > Wenn ich nun fälschlicher Weise (per Software) sowohl > Port D als auch die Datenleitungen des Displays auf Ausgang stelle, > Auf Seite 54 unten (rechts) habe ich die Ausgangsstufe gefunden. Über > die PMOS- bzw. NMOS-Transistoren wird der Ausgang auf Vcc bzw. GND > geschaltet. Eine weitere Strombegrenzung scheint nicht integriert zu > sein. Für die Datenleitungen ist ja der Port(AVR) eh immer auf Ausgang gestellt, ausser zum lesen und zum lesen muss das übers RS; R/!W bit angezeigt werden, damit die LCDausgangsstufe auf IN/OUTput umgestellt wird bin vor längeren umgestiegen auf die serielle Ansteuerung solcher LCD's mit nen 74164 oder auch den 74595 und die kurze Zeit für die Ausgabe ist das eh egal man muss sich nur klar machen wann man das LCD aktualisieren muss/will. Meist dann wenn sich Werte ändern/geändert haben und Texte z.B. für ein Menu oder ähnliches kann man stehen lassen und muss nicht alle Xms neu schreiben. !!!Ausnahmen betsätigen die Regel!!! es ist mir aufgefallen das diese LCD mit gewissen verseuchten Umgebungen Probleme haben, habe es so gemacht das alle 5s das ganze LCD einfach komplett neu geschrieben wird.
chris schrieb: > !!!Ausnahmen betsätigen die Regel!!! es ist mir aufgefallen das diese > LCD mit gewissen verseuchten Umgebungen Probleme haben, habe es so > gemacht das alle 5s das ganze LCD einfach komplett neu geschrieben wird. Ziemlich sicher war die Umgebung ohne deine Hardware noch nicht verseucht. Ich würde mal darauf setzen, dass du die Störungen, welche dein LCD zum absturz bringen, selbst verursachst.
Holger Krähenbühl schrieb: > chris schrieb: >> !!!Ausnahmen betsätigen die Regel!!! es ist mir aufgefallen das diese >> LCD mit gewissen verseuchten Umgebungen Probleme haben, habe es so >> gemacht das alle 5s das ganze LCD einfach komplett neu geschrieben wird. > > Ziemlich sicher war die Umgebung ohne deine Hardware noch nicht > verseucht. negativ in 40cm Entfernung is nen Wechselrichter und davon ab mit entsprechnder Änderung an der Software fürs LCD, dass ich es entsprechend überschreibe, zeigts auch kein Müll mehr an. Die Software musste seit dem neuaufspielen nicht einmal mehr resetet werden (vor ca. 2 Jahren). Habe vor ca.3 Jahren mal recherchiert und bin mit fündig geworden Beitrag "LCD 4x20 hängt sich nach der Zeit auf!" weiter unten Problem mit der Masseschleife und Störungen > Ich würde mal darauf setzen, dass du die Störungen, welche dein LCD zum > absturz bringen, selbst verursachst. nicht mehr als du. Oder doch?? So ende jetzt, will den Thread nicht kappern
Frank schrieb: > Wenn ich nun fälschlicher Weise (per Software) sowohl > Port D als auch die Datenleitungen des Displays auf Ausgang stelle, > würde je nach gesetzten Levels ein recht hoher Strom fliessen. Was heißt recht hoch? Ampere? Milliampere? Microampere? > Auf Seite 54 unten (rechts) habe ich die Ausgangsstufe gefunden. Über > die PMOS- bzw. NMOS-Transistoren wird der Ausgang auf Vcc bzw. GND > geschaltet. Eine weitere Strombegrenzung scheint nicht integriert zu > sein. Na das ist doch schon mal was. Die FETs sind ja doch Widerstände. Die Größe ihres Rdson kann man ja mal schätzen. Im Datenblatt findet man für den Betrieb bei 5V für DB0-DB7: Output high voltage 2.4V I = 0.205 mA Am oberen Transistor fallen also bei 0,2 mA ca. 2,5V ab, macht rund 12kOhm. Oder anders gesagt, bei einem Kurzschluß gegen GND sinds rund 0,4mA. Das ist sicher kein vernünftiger Wert als Dauerzustand, temporär aber kein Grund zur Panik. Außerdem kommt ja noch der Innenwiderstand des zweiten Ausgangs dazu, der selbst bei kräftigeren Ausgängen im zweistelligen Ohmbereich liegen wird. MfG Klaus
Frank schrieb: > Wenn ich nun fälschlicher Weise (per Software) Warum nicht einfach das falsche Programmieren verhindern? Dazu schreibt man sich 2 Funktionen zur Umschaltung, die die korrekte Reihenfolge einhalten. Und benutzt fürderhin nur diese Funktionen und schreibt nie direkt auf die Register. Pseudocode: set_lesen: Daten auf Eingang RW_Pin auf Lesen RET set_schreiben: RW_Pin auf Schreiben Daten auf Ausgang RET
@ Frank (Gast) >angeschlossen. Wenn ich nun fälschlicher Weise (per Software) sowohl >Port D als auch die Datenleitungen des Displays auf Ausgang stelle, >würde je nach gesetzten Levels ein recht hoher Strom fliessen. Nö. Denn die Ausgänge des LCD sind sehr stromschwach. >Ist das Szenario so korrekt bzw. kann der AVR oder der >Display-Controller in der Form mit fehlerhafter Software beschädigt >werden? Theoretisch ja, praktisch eher nicht. >Falls ja, sollte man die Display-Datenleitungen lieber über Widerstände >zur Strombegrenzung mit dem AVR verbinden? Nein. Millionen Leute schaffen das auch ohne Widerstände. >Ich würde jetzt eher auf die Strombegrenzung verzichten und auf >korrekten Code achten. Genau. > Das "Enable"-Signal dauert meist auch nur wenige >Mikrosekunden, so dass man den Fehler vermutlich noch finden wird, bevor >etwas Schaden nimmt. Aber wie macht man das in Anwendungen mit höherem >Anspruch als meiner Bastelei? Genau so.
Klaus schrieb: > Output high voltage 2.4V I = 0.205 mA Aha, das sind mal konkrete Werte! Für Output Low ist der Strom aber deutlich höher (1.2 mA bei 0.4 V -> 333 Ohm), woraus im umgekehrten Fall (AVR Output von 20 mA bei 5.0 - 4.2 = 0.8 V -> 40 Ohm) ein Strom von ca. 13mA resultieren würde. Der Atmega8 hält das auch mit 8 falsch konfigurierten Leitungen aus. Im HD44780-Datenblatt finde ich dazu leider keine Angaben. Peter Dannegger schrieb: > ...die die korrekte Reihenfolge einhalten. Es geht ja darum, dass diese eben nicht korrekt ist. Dennoch ein guter Hinweis, denn genauso mache ich das auch. Falk Brunner schrieb: > Millionen Leute schaffen das auch ohne Widerstände. Ich auch. :) Danke an alle!
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.