myAVR LCD reagiert nicht.

Gast #4811712
Lesenswert?
• ▲
▼
Hallo,

ich muss für ein Projekt das LC-Display von myAVR mit einem Arduino 
verwenden. Dafür darf jedoch nur Ansi-C verwendet werden, und keine 
Arduinospezifischen Funktionen.

Meine Frage ist also, gibt es einen einfachen Weg die vorgegebenen 
LCD-Funktionen für den Arduino umzuschreiben? Muss ich die Funktionen 
überhaupt umschreiben? eigentlich werden die PORTS ja genau so 
angesprochen wie beim AVR, und von der Programmierung her sollte es auch 
gleich sein. Einzig die wait_ms funktionen müssen angepasst werden.

Aktuell tut sich mit dem vorgegebenen Zeug nämlich absolut nichts.

Was mir außerdem auffällt, in dem beigefügten Code gibt es 3 lcd_write 
Funktionen. Im Lehrbuch und im Internet findet man den Code so das alle 
3 Funktionen lcd_write heißen. Hier spuckt mein Atmel Studio aber nur 
Fehler aus. Deshalb habe ich die funktionen lcd_write, lcd_write1 und 
lcd_write2 genannt. Ist das falsch?

Hoffe mir kann jemand weiterhelfen :)

Viele Grüße
Angehängte Dateien:
Gast #4811742
Lesenswert?
• ▲
▼
Die +5V kommen vom Arduino ebenso wie die Masse.

Ansonsten:
PortD-2  -> LCD4(RS)
PortD-3  -> LCD6(E)
PortD-4  -> LCD11(DB4)
PortD-5  -> LCD12(DB5)
PortD-6  -> LCD13(DB6)
PortD-7  -> LCD14(DB7)
PORTB-1  -> LCD15(BLA)
exakt so wies in dem Lehrbuch steht. Die Datenbits 0-3 liegen auf Masse.

Ich hab den Controller grade nochmal resettet, da ist mir aufgefallen 
das das LCD ganz schwach, ganz kurz aufleuchtet und sofort wieder 
ausgeht.

Wie meinst du das mit dem Unterschied zwischen C und C++?
Gast #4811782
Lesenswert?
• ▲
▼
Muss ich noch genauer abklären. Eigentlich sollte es kein Problem sein 
wenn ich diese Bibliothek verwende. Es dürfen halt keine 
Arduino-Funktionen wie z.B. Serial.Begin() oder Serial.println 
vorkommen.
Gast #4812191
Lesenswert?
• ▲
▼
Eric B. schrieb:
> C++ erlaubt Funktionen mit der gleiche Name, solange die Signatur (Typen
> von Rückgabewert und Parameter) unterschiedlich sind. Bei C geht das
> nicht, wie du schon erfahren hast.

Dann ist mir schleierhaft warum in dem Lehrbuch bei "Programmierung des 
LC-Displays in C" 3 Funktionen mit gleichem Namen vorhanden sind. Wie 
gesagt, hab ich hier schwarz auf weiß liegen, auf sowas wäre ich auch 
nicht gekommen. Hab mir dann nur gedacht dass anhand der Parameter 
(einmal char, einmal char*, und einmal char* + int) erkannt wird um 
welche der 3 es sich handelt.

Matthias S. schrieb:
> Das ist übrigens Unsinn. Die Pins haben interne Pullups und sollten
> einfach freigelassen werden, wenn sie unbenutzt sind. RW aber bitte fest
> auf Masse.

RW ist auf Masse, die D0-3 sind hier in meinem "Anschlussplan" auf 
Masse. Deshalb dachte ich ich mach das auch so.  Ich habs aber auch 
schon probiert das ich die freigelassen habe, ändert aber nichts an der 
nichtvorhandenen Funktion des Displays.

Jemand sonst ne Idee warum das Ding keinen Mucks macht? :)
Gast #4813044
Lesenswert?
• ▲
▼
Der Kontrast-Pin wird durch einen Spannungsteiler mit einem Poti 
angesteuert. eine Seite auf 5V und eine auf Masse. Eine Veränderung des 
Potis bewirkt nichts.

Ich hab das jetzt mal so gemacht wie in dem Tutorial, also 4 mal ins 
Steuerregister für den 4-Bit-Modus. Fehlanzeige. funktioniert nicht.
Gast #4813088
Lesenswert?
• ▲
▼
Könnte es theoretisch sein das der Arduino nicht genug Strom für das LCD 
liefern kann? Er ist nur via USB mit dem Rechner verbunden.

Verdrahtung hab ich schon gefühlte 1000 mal überprüft, es war und ist 
richtig angeschlossen. Entweder es bekommt nicht genügend Saft oder es 
ist defekt. Naja, ich geb morgen nochmal Bescheid, heute habe ich leider 
keine Zeit mehr mich länger damit zu befassen.

Danke an alle bisher!
Gast #4815311
Lesenswert?
• ▲
▼
Im Datenblatt steht 5V. An der Stromversorgung liegts nicht, habs mit 
einer externen Quelle versucht, läuft nicht.

tommy_v schrieb:
> Kannst Du mal ein Foto machen?

Naja, kann ich schon, aber es ist halt wirklich genau so angeschlossen 
wie oben steht, und wie es im Datenblatt steht.

Defekt ist das Display auch nicht, weil ich es gestern an einem 
myAVR-Board testen konnte. An diesem hat es funktioniert.
Gast #4815338
Lesenswert?
• ▲
▼
Calytras schrieb:
> Naja, kann ich schon, aber es ist halt wirklich genau so angeschlossen
> wie oben steht, und wie es im Datenblatt steht.

Dann bleibt als Schlussfolgerung nur, dass man generell keine Lcds mit 
microcontrollern betreiben kann.

Es gibt endlos funktionierenden LCD-code im Netz. Wenn die Hardware 
wirklich in Ordnug ist, nimm doch einfach anderen code.
#4815362
Lesenswert?
• ▲
▼
Das Display ist in Ordnung, alles ist richtig angeschlossen, nur das 
Verhalten entspricht nicht dem, was der User erwartet. Ich fürchte, hier 
kann nicht geholfen werden.

Nochmals, ganz langsam geschrieben, damit es keine Missverständnisse 
gibt: Wenn Änderungen an der Kontrastspannung nichts bewirken, liegt ein 
Hardware Problem vor.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren