Hallo,
ich versuche gerade ein Display Typ wie im Tutorial verwendet wird in
Betrieb zu nehmen. Es hat 4x20 Zeichen.
Angeschlossen ist es nach Schaltplan.
Am Display ist die 1. und 3. Zeile bei anlegen von VCC und GND mit einem
schwarzen Balken, soweit ok.
lcd.h habe ich auf meine verwendeten Portpins angepasst:
1
/LCDDB4-DB7<-->PORTDBitPD4-PD7
2
#define LCD_PORT PORTC
3
#define LCD_DDR DDRC
4
5
// LCD Datenbus, Bitnummer des untersten Bits D4, kann auf den
6
// Portbits 0..4 liegen
7
8
#define LCD_DB PC2
9
10
// LCD RS <--> PORTD Bit PD2 (RS: 0=Data, 1=Command)
11
#define LCD_RS PC0
12
13
// LCD EN <--> PORTD Bit PD3 (EN: 1-Impuls für Daten)
14
#define LCD_EN PC1
Ebenso die main.h die Prozessorfrequenz von 8Mhz eingetragen. Ich habe
es schon mit dem internen Oszi versucht, als auch mit den externen.
Das Problem ist, dass das Display einfach nicht reagiert, d.h. egal was
das Programm hin sendet, es bleiben die schwarzen Balken in Zeile 1 und
3.
Das Programm läuft ab, ich habe testweise mal eine LED am Ende des
Programms einschalten lassen, Sie geht dann irgendwann an.
Das Display reagiert aber nicht. Sämtliche Leitungen habe ich auf
Durchgang geprüft. Leiterplatte ist vom Platinenhersteller und hat auch
keine Brüche.
Entdeckt jemand einen Fehler im Code und/oder Schaltplan?
Der Code ist prinzipiell bis auf die Port- und Taktanpassung 1:1 aus dem
erweiterten LCD Tutorial.
Danke.
Sven
Diese Zeile
> / LCD DB4-DB7 <--> PORTD Bit PD4-PD7
entspricht nicht deinem Schaltplan. In deinem Schaltplan liegen LCD
DB4-DB7 auf PC2-PC5, d.h. nich bündig am LSB oder MSB eines Ports.
Dadurch ist die Bitmaskierung des Nigh- und Low-Nibbles in den
LCD-Schreibroutinen zerbrochen. Ohne Anpassung dieser Routinen wird es
mit dieser Schaltung nicht gehen.
Tipp: Beim erstmaligen Inbetriebnehmen einer neuen Hardware (LCD) mit
unbekannten Softwareroutinen (LCD.c) würde ich die Schaltung benutzen,
die in den betreffenden Tutorials angegeben ist. Änderungen würde ich
erst machen, wenn die Funktion grundsätzlich vorhanden ist.
Hallo,
auf flüchtigen Blick sehe ich erstmal: AGND und AVCC nicht
angeschlossen.
Außerdem keine 100n an den VCC/GND-Anschlüssen des AVR (auch wenn das
hier vermutlich nicht die Ursache ist).
RW vom Display an GND? Laut Plan nicht...
Gruß aus Berlin
Michael
> Das Problem ist, dass das Display einfach nicht reagiert, d.h. egal was> das Programm hin sendet, es bleiben die schwarzen Balken in Zeile 1 und> 3.
Hast du schon mal den Kontrast zurück genommen???
Also erst einmal danke für die vielen Feedbacks.
RW liegt an GND, mir hats nur die Leitung anscheinend auf dem Schaltplan
zerschossen beim schön hinschieben für den Screenshot. Aber an der
Leiterplatte ist Pin 5 des Display Steckers mit GND verbunden.
@ Krapo
das ist nur das Kommentar (das ist vom Tutorial so übernommen). Die
Portanpassung ist dort auf PC2 gemacht (unterster Pin), siehe Quelltext.
Die 100nF habe ich "manuell" noch eingefügt, danke für die Hinweis.
@mo.mo
Die LEDs spielen hier keine Rolle, aber dennoch ist das auch egal, je
nachdem ob ich die acitve low oder active high ansteuere.
@Jochen
ja, mit dem Poti habe ich den Kontrast schon zurückgenommen.
Sven schrieb:> @mo.mo> Die LEDs spielen hier keine Rolle, aber dennoch ist das auch egal, je> nachdem ob ich die acitve low oder active high ansteuere.
Solange +5V die höchste Spannung in deiner Schaltung ist, sind die LEDs
zumindest falschrum eingezeichnet. Das hat nichts mit active Low oder
High zu tun.
Ok, das stimmt.
Ich habe nun das Display an die Ports wie im Tutorial auf dem Steckbrett
angeschlossen (und auch dessen Code verwendet), habe das gleiche
Problem.
Noch eine Idee oder kann auch das Display defekt sein?
Hallo,
ich bin leider immernoch nicht weiter.
Ich vermute, dass die Initialisierung nicht richtig ist.
Hier ist das Datenblatt:
http://www.csd-electronics.de/data/pdf/DEM16481SYH-LY.pdf
Dort steht zumindest bei der 4-bit Initialisierung: "wait for more than
30ms after power on". Das Tutorial sieht nur 15ms Sekunden vor. Das habe
ich schon einmal erhöht auf 50ms. Allerdings immernoch ohne Erfolg.
Die init() Funktion aus dem Tutorial sieht auch zwischen Display ON/OFF
Einstellungen und Display clear keine Pausen vor. Das Datenblatt aber
mind. 39us. Kann es daran liegen?
Da ich mich noch nicht so gut auskenne, wäre ich sehr dankbar, wenn
jemand mal die Initialisierung des Tutorials mit dem Datenblatt
abgleichen könnte.
Meine Taktfrequenz stimmt, ich habe nebenbei mal eine LED mit delays an
und ausschalten lassen...
Besten Dank.
Sven schrieb:> Das Datenblatt aber> mind. 39us. Kann es daran liegen?
Durchaus möglich. Wenn das Datenblatt eine Initialisierungssequenz
vorgibt, dann bilde sie doch nach.
Gruß Oliver
Ich habe immernoch das Problem.
Die Initialisierungsroutine habe ich mir mal genau angeschaut und
angepasst. Die Wartezeiten habe ich großzügig gehalten, aber dennoch
zeigt das Display keine Reaktion, Zeile 1 und 3 mit schwarzen Balken.
Die Datenbits werden gesendet, wenn ich mit dem Messgerät auf DB4 und
DB7 messe, ändern sich die Spannungen mit Programmablauf auf 0V und 5V
durchweg....
Anbei nochmals der aktuellste Code.
Hat jemand eine Idee? Oder kann man irgendwie testen, ob das Display
bzw. dessen Controller noch funktionsfähig ist?
Danke.
>Hat jemand eine Idee? Oder kann man irgendwie testen, ob das Display>bzw. dessen Controller noch funktionsfähig ist?
Ja, mit korrektem Code.
Welchen Controller verwendest du? Stimmt die Pinbelegung?
Mach mal ne Tabelle AVR Pins zu LCD.
Controller ist ein ATMEGA8 und läuft mit 8Mhz externen Takt (intern habe
ich auch versucht). Die Taktfrequenz stimmt ebenso, da ich testweise mal
mit einem delay eine LED für 2 Sekunden angeschaltet habe und die
leuchtet auch 2 Sekunden.
Der Schaltplan mit Pin Belegung ist ganz oben im Thread. Dieser ist
korrekt, nur Pin5 des Wannensteckers R/W ist mit Ground verbunden auf
der Leiterplatte (das ist leider im Schaltplan aus Versehen gelöscht).
Aber hier gerne nochmal die Pin Config:
PC0 AVR ist mit RS Display verbunden (Pin4)
PC1 AVR ist mit E Display verbunden (Pin6)
PC2 AVR ist mit DB4 verbunden
PC3 AVR ist mit DB5 verbunden
PC4 AVR ist mit DB6 verbunden
PC5 AVR ist mit DB7 verbunden
Pin 1 und Pin 5 Display liegen auf GND
Pin 2 auf 5V (vom Festspannugsregler)
Pin 3 ist mit einem Schleifer vom Poti verbunden und ist auf ca. 0.46V
(gemessen) eingestellt, Kontrast ist damit ok.
Sämtliche Pins habe ich mit dem Multimeter auf Durchgang gemessen. Und
im Betrieb messe ich auch wechselnde Pegel an den Datenbits.
Bis auf die 3 Software-Resets und die boot-Zeit am Anfang ist die
Initialisierungsroutine meines Erachtens identisch mit der aus dem
Tutorial. Die Boot-Zeit habe ich entsprechend erhöht und die 3
Software-Resets auskommentiert (mit diesen hat es aber auch nicht
funktioniert).
Ich würde mal behaupten, dass es korrekt angeschlossen ist. Ich habe ein
Flachbandkabel von Pin1 bis Pin 16 der Reihe nach angelötet und wie man
oben im Schaltplan sieht, den dazugehörigen Wannenstecker geroutet.
Wannenstecker ist auch richtig herum montiert und wie gesagt, es hat
alles Durchgang.
Die Leiterplatte habe ich mit EAGLE erstellt, d.h. Schaltplan und Board
sind konsistent und ist auch vom Leiterplattenhersteller gemacht (also
nicht selbst geätzt).
Anbei 2 Fotos vom Display.
Einmal mit anliegender Spannung und den besagten Streifen in Zeile 1 und
3.
>Einmal mit anliegender Spannung und den besagten Streifen in Zeile 1 und>3.
Nicht initialisiert, was soll man dazu mehr sagen.
Wie sieht es unter der Platine aus? Liegt Pin5 vom
LCD (RW) wirklich auf GND? Keine Kurzschlüsse zwischen
den Leitungen?
Ich habe gemessen, Pin5 liegt auf GND und hat Durchgang zu Pin1.
Kurzschluss ist auch keiner vorhanden, habe beim Löten auch aufgepasst,
Platine ist wie gesagt auch vom Leiterplattenhersteller und daher sehr
sauber geäzt ohen Brücken (habe auch mit der Lupe nachgesehen).
Ich glaube langsam wirklich, dass das Display bzw. der Display
Controller einen weg hat. Ach ja, habe auch schon verschieden (neue)
Atmega8 versucht, am AVR liegt es auch nicht.
Vielleicht sollte ich einfach mal ein neues LCD bestellen.
Trotzdem vielen Dank Holger für die Unterstützung bei der Fehlersuche.
Falls dir aber noch etwas einfällt, ich versuche gerne noch etwas.
Hallo Holger,
ich wollte nochmal Rückmeldung geben.
Habe mir ein neues LCD bestellt (gleiches) und mit gleichem Code (oben
gepostet) läuft es nun.
Es scheint wohl wirklich das Display selbst gewesen zu sein, kein
Verdrahtungs- oder Software Fehler.
Gruß
Sven