Hi,
was kann ich tun, um bei der oben genannten Konstellation zu verhindern,
dass der Atmega kaputt geht, wenn er 5V Logiksignale vom LCD bekommt?
Reichen da Zenerdioden schon aus (wollte 3.6V Zenerdioden nehmen, weil
der Atmega VDD+0.5V also maximal 3.8V verträgt) oder muss ich auf
bidirektionale Levelshifter umsteigen?
Spannungsteiler geht ja nicht...das Display muss in einigen Fällen auf
den Datenleitungen 3.3V hinsenden und das Display muss diese erkennen.
Im anderen Fall werden dieselben Datenleitungen gelesen und das Display
sendet 5V. Und diese 5V müssen runter ohne das die 3.3V auf dem Hinweg
beeinflusst werden.
Um welches Display handelt es sich genau und was/wann muss das Display
an den AVR senden?
Angenommen es ist ein übliches TEXT-LCD kann die Software so mit fixen
Delays geschrieben werden, dass keine Daten (Busy-Abfrage, LCD Readout)
vom LCD zum AVR fliessen.
Den Artikel Pegelwandler kennst du?
Yo, im Datenblatt steht das 0.7*VDD als Min. Input High Voltage drin;
das sind bei LCD-Vcc 5.0V dann 3.5V und die packt der µC bei seiner
µC-Vcc von 3.3V nicht. Ich würde Pegelwandler-ICs installieren z.B. 2
aus der HCT Serie 74xx wie den 74HCT244 und mit Vcc 5.0V
versorgen.
du kannst auch das Display direkt mit 3,3V betreiben.
Allerdings benötigst du dann für Kontrast eine leicht negative Spannung,
die mit einer Ladungspumpe erzeugt werden kann.
Gruss k.
Braucht man bei diesem Display die negative Vee nicht immer, damit man
auf VDD-VO 9V kommt? IMHO gilt: Angenommen VDD ist typ. 5V und VDD-VO
typ. 9V, dann braucht man Vee <= -4V. Ob die Logik mit VDD 3.3V arbeitet
weiss ich nicht, bin nach Datenblattspecs gegangen. Versuchen würde ich
es aber :)
Obacht - das ist kein übliches HD44780A Text-LCD. Es scheint eine eigene
negative Spannungsversorgung zu enthalten, denn die Displayspannung ist
sowieso schon negativ. Das Display benötigt laut Datasheet ca. 8,5V
(5V..-3,5V) und eine darauf optimierte Ladungspumpe wird das bei 3,3V
vermutlich nicht schaffen.
So etwas wie eine integrierte Ladungspumpe mit Ausgang an Vee. Möglich
und und wahrscheinlich. Das habe ich in ausführlicheren Datenblättern
von anderen GLCDs schon gesehen. Müsste sich aber leicht mit einem
Voltmeter ausmessen lassen.
Genau die negative Spannung kommt schon aus dem LCD.
Ich habe mir die SN74HCT245 angesehen, aber ich habe es so verstanden
das je nach Richtung nur von 3.3V also kleinerer Spannung auf %V also
hohe Spannung geshiftet werden kann, er aber nicht auch noch runter
konvertiert. Deswegen wollte ich den für die unidirektionalen
Verbindungen wie RW, RS, E, RESET#, CS0, CS1 benutzen und für die
bedirektionale Verbindung wollte ich dann einen MAX3000 nehmen. Der
sollte in der Lage sein, wenn ich das Datenblatt richtig verstehe und
ich brauch nichtmal diesen Direction PIN der ist quasi
echt-bidirektional-fähig ohne manuelles umschalten.
Da auch das Timing der Befehle nicht definiert ist muss wohl wirklich
gelesen werden. Allerdings reicht D7 für Busy, wenn man auf den
Displayspeicher nicht lesend zugreifen muss. Dafür reicht also notfalls
auch ein unidirektionaler Pegelwandler (z.B. 74HCT541), und ein
Spannungsteiler an D7 retour zum AVR fürs Busy.
Muss man überhaupt vor Überspannung schützen?
Wenn ich die Appnote richtig verstehe, dann haben AVR intern bereits
einen Schutz verbaut. Jedenfalls schließen die hier wohl 230VAC direkt
an einem Portpin an. Fehlt nur ein Widerstand zur Strombegrenzung.
http://www.atmel.com/Images/doc2508.pdf
Kann man machen, aber dann muss man hoffen, dass der 3,3V Pegel
zuverlässig ausreicht, um das Display mit Vih(min)=3,5V zu bedienen.
Wird üblicherweise funktionieren, wenn man der Leitung deutlich mehr
Zeit lässt als das Datasheet verlangt, ist aber unsauber.
Ausserdem muss man bei insgesamt 8 Leitungen D0-D7 drauf achten, dass
der rückfliessende Strom von den Komponenten an 3,3V stets abverbraucht
wird, sonst bleiben das keine 3,3V.
amplifier schrieb:> Hi,>> was kann ich tun, um bei der oben genannten Konstellation zu verhindern,> dass der Atmega kaputt geht, wenn er 5V Logiksignale vom LCD bekommt?> Reichen da Zenerdioden schon aus (wollte 3.6V Zenerdioden nehmen, weil> der Atmega VDD+0.5V also maximal 3.8V verträgt) oder muss ich auf> bidirektionale Levelshifter umsteigen?
Standardantwort: 2*74LVCC3245A
Sind wie für Dich gemacht.
fchk
Danke den kannte ich noch nicht. So einen hatte ich gesucht um dann den
RW Pin an den Direction Pin anzuschließen. Ich hatte noch einen anderen
Gefunden, bei dem die 5V und die 3.3V Seite leider festdefiniert waren
und ich hätte bei dem noch einen Inverter vor dem Direction Pin
gebraucht, aber der scheint ja die 5V und 3.3V frei definiefrbar zu
haben.
amplifier schrieb:> Danke den kannte ich noch nicht. So einen hatte ich gesucht um dann den> RW Pin an den Direction Pin anzuschließen. Ich hatte noch einen anderen> Gefunden, bei dem die 5V und die 3.3V Seite leider festdefiniert waren
Das ist beim 74LVCC3245A auch der Fall:
1
74LVCC3245A min typ max Unit
2
VCCA Supply voltage 2.3 3.3 3.6 V
3
VCCB Supply voltage 3.0 5.0 5.5 V
DIR und /OE werden von VCCA betrieben.
Die andere Richtung gibts auch, das ist dann der 74LVCC4245A:
1
74LVCC4245A min typ max Unit
2
VCCA Supply voltage 4.5 5.0 5.5 V
3
VCCB Supply voltage 2.7 3.3 5.5 V
DIR und /OE werden von VCCA betrieben.
Also Augen auf!
fchk
Ich werde jetzt für die bidirektionale Verbindung den MAX3002 benutzen
bzw. MAX3000 wenn ich den irgendwo zu kaufen finde. Der scheint extrem
komfortabel zu sein, weil man sich um quasi nichts kümmern braucht.
Ja, sofern ich nur das LCD und weitere 5V Komponenten ansteuern müsste.
Ich habe aber einen DDS der nur 3.3V verträgt. Und da ich mehr Leitungen
zwischen DDS und Atmega habe als zwischen Atmega und LCD, bau ich lieber
da Levelshifter ein, wo weniger Leitungen sind, als den Atmega mit 5V zu
versorgen und zwischen DDS und Atmega Levelshifer einzubauen.
Ne das ist noch aufwendiger, da sind allein schon 16 Leitungen für den
Parallel Bus und dann kommen bestimmt nochmal 10 Steuerleitungen dazu
und die sind nicht alle unidirektional. Wenn ich nur die 8
Datenleitungen und die wenigen Steuerleitungen vom LCD shiften muss ist
das am einfachsten.
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