Forum: Mikrocontroller und Digitale Elektronik Probleme mit HD44780 1602 LCD Module


von Florian (Gast)


Lesenswert?

Hallo, habe mir ein Lcd Display bei Amazon 
gekauft(http://www.amazon.de/HD44780-Module-Display-Anzeigen-Zeichen/dp/B009GEPZRE/ref=cm_cr_pr_product_top?ie=UTF8&colid=3111L7ZK065AX&coliid=I2N9JBUN7ODL00).

Ich habe dann LCD Libary von LCD Peter Fleury geladen und das alles in 
ein Projekt eingefügt.

In der lcd.h habe ich folgendes gesetzt:
#define XTAL 16000000
#define LCD_IO_MODE      1
#define LCD_PORT         PORTD

Avr und Display sind wie folgt verbunden:

PD0 -> Pin11
PD1 -> Pin12
PD2 -> Pin13
PD3 -> Pin14
PD4 -> Pin4
PD5 -> Pin5
PD6 -> Pin6

Versorgungsspannung ist am Display angeschlossen und auch der Kontrast 
ist eigenstellt.

Das Projekt wird ohne Probleme kompiliert und auf den AVR geladen.

solange der AVR nocht nicht läuft, zeigt das Display die obere Zeile 
an(16Kästen). Schaltet man jetzt den AVR an, dann erscheint auch die 2. 
Zeile, allerdings wird der Kontrast dann total schelcht, so dass man die 
beiden nur schwer erkennen kann. In beiden steht aber kein Text, sondern 
nur 16 Kästchen eben.
Woran liegt das denn?
Wie kann mein AVR den Kontrast verändern? der Wird doch über ein Poti an 
Pin3 eingestellt oder liege ich da falsch?

Habe ich hier irgend etwas Falsch verkabelt? oder in lcd.h falsch 
eingestellt?

Ich verwende Eclipse mit dem AVR Plugin und das STK500.
Die Verbindungen für die Pins wurden über die EXPAND1 Buchse des STK500 
angeschlossen. Der verwendete AVR ist ein ATMEGA515 (derjenige, der beim 
kauf im STK500 bereits drinne steckt)

Wäre schön, wenn mir hier jemand weiterhelfen könnte, da ich meinen 
Fehler bei der Sache seit Stunden nicht finden kann....

Schöne Grüße

Florian

von Spess53 (Gast)


Lesenswert?

Hi

>Wie kann mein AVR den Kontrast verändern? der Wird doch über ein Poti an
>Pin3 eingestellt oder liege ich da falsch?

Ja. Aber wie hast du das Poti angeschlossen?

MfG Spess

von Teo D. (teoderix)


Lesenswert?

Florian schrieb:
> und auch der Kontrast
> ist eigenstellt.

> Wie kann mein AVR den Kontrast verändern? der Wird doch über ein Poti an
> Pin3 eingestellt oder liege ich da falsch?

Wie jetzt?
Hast du da ein Poti dran o. nicht?
Richtig einstellen macht erst nach der Initialisierung Sinn.

von Spess53 (Gast)


Lesenswert?

Hi

Das Ja bezog sich auf

>der Wird doch über ein Poti an Pin3 eingestellt

MfG Spess

von Florian (Gast)


Lesenswert?

Spess53 schrieb:
> Hi
>
>>Wie kann mein AVR den Kontrast verändern? der Wird doch über ein Poti an
>>Pin3 eingestellt oder liege ich da falsch?
>
> Ja. Aber wie hast du das Poti angeschlossen?
>
> MfG Spess

+5V-----|
             |---Pin 3
GND-----|

Habe ḿal versucht es auf zu zeichnen, hoffe das hilft.

Bei dem Poti handelt es sich allerdings um ein 22kOhm, man sollte ja 10k 
verweden, habe ich aber leider nicht da.

Gruß Florian

von Spess53 (Gast)


Lesenswert?

Hi

>Habe ḿal versucht es auf zu zeichnen, hoffe das hilft.

Wenn es so verschaltet ist passt das so. Ändert sich etwas, wenn du an 
dem Poti drehst?

MfG Spess

von Florian (Gast)


Lesenswert?

Ja, es ändert sich.
Allerdings nur zum schlechteren :D
Das poti ist am maximalausschlag. damit ist der Kontrast ohne avr gut, 
sobald der dran ist, wird der Kontrast wie beschrieben sehr schlecht.

Was kann ich denn da machen?
Glaubst du es liegt nur am Kontrast?
Sprich der AVR und das Display tun was sie sollen, nur ich kann es nicht 
sehen?

von c-hater (Gast)


Lesenswert?

Florian schrieb:

> Avr und Display sind wie folgt verbunden:
>
> PD0 -> Pin11
> PD1 -> Pin12
> PD2 -> Pin13
> PD3 -> Pin14
> PD4 -> Pin4
> PD5 -> Pin5
> PD6 -> Pin6

Das nützt nix, wenn man weder die Belegung der Display-Pins kennt noch 
die Konfiguration der Software. Eine echte Null-Information.

> Habe ich hier irgend etwas Falsch verkabelt? oder in lcd.h falsch
> eingestellt?

Ganz offensichtlich.

> Wäre schön, wenn mir hier jemand weiterhelfen könnte, da ich meinen
> Fehler bei der Sache seit Stunden nicht finden kann....

Poste die Konfuguration der Ausgänge für die Lib, das Datenblatt des 
Displays und einen Schaltplan des Gesamtwerks einschließlich der 
Stromversorgung. Dann kann man eventuell weiterhelfen.

von spess53 (Gast)


Lesenswert?

Hi

>Ja, es ändert sich.
>Allerdings nur zum schlechteren :D
>Das poti ist am maximalausschlag. damit ist der Kontrast ohne avr gut,
>sobald der dran ist, wird der Kontrast wie beschrieben sehr schlecht.

Definiere mal 'schlecht'?

>Das poti ist am maximalausschlag.

Fragt sich nur an welchem.

Ein nicht initialisiertes Displsy zeigt in der oberen Zeile einen 
Balken. Nach einer erfolgreichen Initialisierung verschwindet, bei 
korrekt eingestelltem Kontrest, dieser Balken.

Mess mal die Spannung am Kontrasteingang. Die sollte nur ein paar 100mV, 
gegen GND gemessen, betragen.

MfG Spess

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Florian schrieb:
> Das poti ist am maximalausschlag.
An welchem der beiden?
Es gibt Displays, die brauchen eine negative Spannung am Vee Pin 
(insbesondere die mit ertweitertem Temperaturbereich). Die Vee wird 
meist mit Bezug auf Vcc angegeben und ist negativ. Wenn dein display 
eine Vee von z.B. -6V will, dann brauchst du bei 5V Vcc bezogen auf 
Masse eine Spannung voc -1V am Vee Pin.

Wie ist das bei deinem Display? Hast du da ein Datenblatt dazu?

von Florian (Gast)


Lesenswert?

spess53 schrieb:
> Hi
>
>>Ja, es ändert sich.
>>Allerdings nur zum schlechteren :D
>>Das poti ist am maximalausschlag. damit ist der Kontrast ohne avr gut,
>>sobald der dran ist, wird der Kontrast wie beschrieben sehr schlecht.
>
> Definiere mal 'schlecht'?
>
Solange kein AVR angeschlossen ist, sieht man den Balken gan eindeutig, 
sobald der AVR dann an ist, kann man die beiden Balken gerade so noch 
erkennen.

>>Das poti ist am maximalausschlag.
>
> Fragt sich nur an welchem.
>
> Ein nicht initialisiertes Displsy zeigt in der oberen Zeile einen
> Balken. Nach einer erfolgreichen Initialisierung verschwindet, bei
> korrekt eingestelltem Kontrest, dieser Balken.
>
> Mess mal die Spannung am Kontrasteingang. Die sollte nur ein paar 100mV,
> gegen GND gemessen, betragen.

Werde ich machen, sobald ich wieder Zuahuse bin :)
Ich lade dann auch mal Bilder vom Display hoch, damit man sehen kann, 
was ich mit "schlechtem" Kontrast meine.

>
> MfG Spess

Danke schonmal für die hilfe :)

von Florian (Gast)


Lesenswert?

Lothar Miller schrieb:
> Florian schrieb:
>> Das poti ist am maximalausschlag.
> An welchem der beiden?
> Es gibt Displays, die brauchen eine negative Spannung am Vee Pin
> (insbesondere die mit ertweitertem Temperaturbereich). Die Vee wird
> meist mit Bezug auf Vcc angegeben und ist negativ. Wenn dein display
> eine Vee von z.B. -6V will, dann brauchst du bei 5V Vcc bezogen auf
> Masse eine Spannung voc -1V am Vee Pin.

Wo soll man denn -1V her bekommen?

>
> Wie ist das bei deinem Display? Hast du da ein Datenblatt dazu?

Ja, habe ich. Werde es im Laufe des Tages mal hochladen.

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Florian schrieb:
> Wo soll man denn -1V her bekommen?
Man könnte eine Batterie einbauen...

In der Praxis nimmt man aber einen Oszillator, zwei Dioden, zwei 
Kondensatoren:
Beitrag "ICL 7660 Spannungsinverterschaltung"

von ein (Gast)


Lesenswert?

Lothar Miller schrieb:
> Florian schrieb:
>> Wo soll man denn -1V her bekommen?
> Man könnte eine Batterie einbauen...
> In der Praxis nimmt man aber einen Oszillator, zwei Dioden, zwei
> Kondensatoren:
> Beitrag "ICL 7660 Spannungsinverterschaltung"

Puh, das mit dem LCD habe ich mir dann wohl etwas einfacher vorgestellt 
als es ist :D

Aber ohne diese Beschaltung werde ich das Teil wohl kaum vernünftig zum 
laufen bekommen oder?

von spess53 (Gast)


Lesenswert?


von Florian (Gast)


Lesenswert?

spess53 schrieb:
> Hi
>
> Die Kommentare in deinem Link
>
> http://www.amazon.de/HD44780-Module-Display-Anzeig...
>
> deuten nicht auf eine negative Kontrastspannung hin.
>
> MfG Spess

dann werde ich es später mal mit einer Batterie Probieren und hoffen, 
dass das hiflt....

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

spess53 schrieb:
> Die Kommentare ...
> deuten nicht auf eine negative Kontrastspannung hin.
Aber auf einen recht knappen Bereich um 0V:
1
Wenn man grade kein 10k Poti zur Hand hat, kann man auch V0 an GND anschließen.

Florian schrieb:
> dann werde ich es später mal mit einer Batterie Probieren und hoffen,
> dass das hiflt....
Du könntest auch einfach mal Vcc für das Display auf 5,5V hochdrehen...

von Florian (Gast)


Lesenswert?

Lothar Miller schrieb:
> spess53 schrieb:
>> Die Kommentare ...
>> deuten nicht auf eine negative Kontrastspannung hin.
> Aber auf einen recht knappen Bereich um 0V:Wenn man grade kein 10k Poti
> zur Hand hat, kann man auch V0 an GND anschließen.

Das habe ich auch versucht, damit ist der Kontrast so wie wenn ich das 
Poti auf Anschlag drehe.

> Florian schrieb:
>> dann werde ich es später mal mit einer Batterie Probieren und hoffen,
>> dass das hiflt....
> Du könntest auch einfach mal Vcc für das Display auf 5,5V hochdrehen...

Warum 5,5V ? steht dass da irgendwo ? :/
Bruacht das Display 5,5 und nicht 5V?

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Florian schrieb:
> Das habe ich auch versucht, damit ist der Kontrast so wie wenn ich das
> Poti auf Anschlag drehe.
Irgendwei logisch, wenn du den masseseitigen Angschlag meinst...

>> Du könntest auch einfach mal Vcc für das Display auf 5,5V hochdrehen...
> Warum 5,5V ? steht dass da irgendwo ? :/
Nein, man braucht dafür die Grundrechenarten + und -:
> Bruacht das Display 5,5 und nicht 5V?
Weil sich Vee auf Vcc bezieht, und bei Vee=-5V noch nicht ausreichend 
Kontrast das ist, könnte der Kontrast bei Vee=-5,5V ausreichen. Und eine 
Vee von -5,5V erreicht man am einfachsten, wenn man Vcc auf +5,5V 
erhöht...

von Florian (Gast)


Lesenswert?

Lothar Miller schrieb:
> Florian schrieb:
>> Das habe ich auch versucht, damit ist der Kontrast so wie wenn ich das
>> Poti auf Anschlag drehe.
> Irgendwei logisch, wenn du den masseseitigen Angschlag meinst...
>
Ja, und dass ist auch die Potistellung, bei der der Kontrast am besten 
ist.


>>> Du könntest auch einfach mal Vcc für das Display auf 5,5V hochdrehen...
>> Warum 5,5V ? steht dass da irgendwo ? :/
> Nein, man braucht dafür die Grundrechenarten + und -:
>> Bruacht das Display 5,5 und nicht 5V?
> Weil sich Vee auf Vcc bezieht, und bei Vee=-5V noch nicht ausreichend
> Kontrast das ist, könnte der Kontrast bei Vee=-5,5V ausreichen. Und eine
> Vee von -5,5V erreicht man am einfachsten, wenn man Vcc auf +5,5V
> erhöht...

Okay, das werde ich auch mal testen....


Ich habe außerdem auch schon Versucht das Display mit den Vorgaben von 
hier:
http://www.mikrocontroller.net/articles/AVR-GCC-Tutorial/LCD-Ansteuerung

zum laufen zu bekommen.

Hier war der Kotrast gut, man konnte auch Zeichen lesen. Das Problem 
dabei war aber, dass keine Buchstaben sondern Kreise etc angezeigt 
wurden.

Allerdings trat hier das Kontrastproblem nicht auf.....

von spess53 (Gast)


Lesenswert?

Hi

>Allerdings trat hier das Kontrastproblem nicht auf.....

Dann hast du auch kein Problem mit dem Kontrast. Da würde ich eher auf 
ein Timingproblem tippen. Mach mal die Delayzeiten größer.

MfG Spess

von Florian (Gast)


Lesenswert?

>>Allerdings trat hier das Kontrastproblem nicht auf.....
>
> Dann hast du auch kein Problem mit dem Kontrast. Da würde ich eher auf
> ein Timingproblem tippen. Mach mal die Delayzeiten größer.

Welche Dateien soll ich denn jetzt benutzen, die lcd.c und.h von Peter 
Fleury
oder die aus der Anleitung hier im Forum?

um wie viel soll ich die zeiten verlängern?

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Florian schrieb:
> um wie viel soll ich die zeiten verlängern?
So, dass sie zum Datenblatt deines Displays passen...

> Welche Dateien soll ich denn jetzt benutzen, die lcd.c und.h von Peter
> Fleury oder die aus der Anleitung hier im Forum?
Nimm die, die schon funktioniert hat, und suche den Fehler. Und zwar 
systematisch. Software entwickelt man nicht, indem man irgendwas 
irgendwo herkopiert und hofft, dass es dann geht...

> Das Problem dabei war aber, dass keine Buchstaben sondern Kreise
> etc angezeigt wurden.
Was hast du gesendet, und was wurde angezeigt?
Wurde jedesmal, wenn du ein 'a' anzeigen wolltest der selbe "Kreis" 
angezeigt?
Findest du diesen Kreis in der Zeichentabelle des Displays?
Wie passt der Wert dieses Zeichens zum Wert des Zeichens 'a'?
Was passiert bei einem 'b'?

von spess53 (Gast)


Lesenswert?

Hi

>Welche Dateien soll ich denn jetzt benutzen, die lcd.c und.h von Peter
>Fleury
>oder die aus der Anleitung hier im Forum?

Da das mit der Lib hier aus dem Forum schon fast geklappt hat, würde ich 
die nehmen.

>um wie viel soll ich die zeiten verlängern?

Kannst du ruhig mal verdoppeln.

MfG Spess

von ein (Gast)


Lesenswert?

>> um wie viel soll ich die zeiten verlängern?
> So, dass sie zum Datenblatt deines Displays passen...

>>um wie viel soll ich die zeiten verlängern?
> Kannst du ruhig mal verdoppeln.

Müssen die Zeiten jetzt genau auf die im Datenbaltt angegebenen 
abgestimmt sein oder nur mindestens so lange und danach ist es egal ob 
ich 2 oder 5 mal so lange warte?

von mikel (Gast)


Lesenswert?

Für mich hört sich das an, als ob das Display in einer Schleife ständig 
upgedated wird, statt statt nur einmalig bei einer Änderung.

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

mikel schrieb:
> Für mich hört sich das an, als ob das Display in einer Schleife ständig
> upgedated wird
Das wäre ja ok, so mache ich das auch. Im Timertick wird jede ms 1 
Zeichen rausgeschrieben. Das klappt tadellos, und es gibt keine 
"Zeichenleichen", für die sich keiner zuständig fühlt, die aber nie 
überschrieben werden...

Nur darfst du das Display nicht jedesmal löschen, denn das dauert 
"ewig" und flackert wie die Hölle...

von spess53 (Gast)


Lesenswert?

Hi

>Müssen die Zeiten jetzt genau auf die im Datenbaltt angegebenen
>abgestimmt sein

Nein. Das sind die Ausführungszeiten der Befehle. Die Wartezeiten müssen 
größer wie die Asusführungszeiten sein.

> oder nur mindestens so lange und danach ist es egal ob
>ich 2 oder 5 mal so lange warte?

Ja, aber du must zwischen den einzelnen Zeiten unterscheiden

#define LCD_BOOTUP_MS           15
Wartezeit nach Reset. Kann beliebig groß gemacht werden

#define LCD_ENABLE_US           20
Länge Enable-Impuls. Da sind 450ns Minimum. 20µs sind also mehr als 
genug

#define LCD_WRITEDATA_US        46
#define LCD_COMMAND_US          42
Das sind die Befehle zum Schreiben der Daten und der meisten Befehle.

#define LCD_CLEAR_DISPLAY_MS    2
#define LCD_CURSOR_HOME_MS      2
#define LCD_SET_4BITMODE_MS     5
Das sind Befehle die länger dauern.


An deiner Stelle würde ich erst mal LCD_BOOTUP_MS, LCD_WRITEDATA_US und 
LCD_COMMAND_US verlängern.

MfG Spess







Das ist die Zeit, die der Displaycontroller zur Ausführung eines Befehls 
braucht.

von spess53 (Gast)


Lesenswert?

Hi

Streich den letzten Satz.

MfG Spess

von klaus (Gast)


Lesenswert?

für mich hört sich dein Problem danach an, dass die Initialisierung 
falsch ist. Die kommt nur bis zum 2 zeilen Befehl und danach kommt der 
display off und display clear befehl, der braucht aber anders als die 
anderen 1.53ms wartezeit, nicht 37us! Den Fehler hatte ich auch schon. 
Ausserdem nusst du das Display nach der initialisierung auch wieder 
anschalten!

von spess53 (Gast)


Lesenswert?

Hi

>für mich hört sich dein Problem danach an, dass die Initialisierung
>falsch ist.

Das ist aber bei der anscheinend häufig benutzten LCD Libary von P. 
Fleury aufgetreten. Dort sollte die Initialisierung prinzipiell stimmen.

MfG Spess

von klaus (Gast)


Lesenswert?

klaus schrieb:
> display clear befehl, der braucht aber anders als die
> anderen 1.53ms wartezeit

den return home meine ich, den hab ich jedenfalls bei mir nach der 
eigentlichen initialisierung drin drin.

klaus schrieb:
> nach der initialisierung auch wieder
> anschalten!

das ist dass was ich jedenfalls am Anfang vergessen hab und dann hatte 
ich auch einfach nur schwarze balken und sonst nichts

von Florian (Gast)


Lesenswert?

Danke für die vielen Antworten!

Ich werde mal versuchen die Wartezeiten an zu passen und die anderen 
Sachen, die genannt wurden überprüfen.

Ich hoffe, dass es an einer der Sachen hier liegt.

Melde mich auf jeden Fall heute Abend ob es klappt oder nicht, vlt. hat 
dann jemand noch mehr Ideen woran es liegen kann....

von Teo D. (teoderix)


Lesenswert?

Falsche Busbreite Initialisiert, 4 statt 8bit o. umgekehrt, wär noch ne 
Möglichkeit.

von Florian (Gast)


Lesenswert?

> Falsche Busbreite Initialisiert, 4 statt 8bit o. umgekehrt, wär noch ne
> Möglichkeit.

#define LCD_IO_MODE      1

sollte doch 4bit sein oder?

von Florian (Gast)


Angehängte Dateien:

Lesenswert?

Hallo

Habe alles Ausporbiert, was oben geschrieben wurde.
Die Wartezeiten verlängert( verdopllet).
etc.

Aber irgendwie Klappt das alles nicht.....

Auf der Rückseite des Lcdś steht C1602-A-V1.2

gibt man das bei google ein, dann bekommt man das Datenblatt im Anhnag.

Habe da mal die Pin belegung Kontrolliert und auch die Zeiten.
Die Pins sind die Selben wie im Lcd Tutorial angegeben, und die 
Angegebenen Zeiten liegen auch weit unter den Eingestellten.
1
// Die Zeiten die kommentiert sind, waren die Standardeinstellungen von lcd-routines.h
2
#define LCD_BOOTUP_MS           30//15
3
#define LCD_ENABLE_US           40 //20
4
#define LCD_WRITEDATA_US        90 //46
5
#define LCD_COMMAND_US          90 //42
6
7
#define LCD_SOFT_RESET_MS1      10 //5
8
#define LCD_SOFT_RESET_MS2      2 //1
9
#define LCD_SOFT_RESET_MS3      2 //1
10
#define LCD_SET_4BITMODE_MS     10 //5
11
12
#define LCD_CLEAR_DISPLAY_MS    4 //2
13
#define LCD_CURSOR_HOME_MS      4 //2

Was auf dem Display passiert scheint reiner Zufall zu sein.
Manchmal Passiert nichts, dann sieht man auf einmal die 2. Zeile, dann 
erscheinen Buchstaben. Einmal sprang auch der cursor bei jedem Reset des 
Avr um ein Zeichen weiter.......

Was mache ich Falsch?

von holger (Gast)


Lesenswert?

>Was mache ich Falsch?

Das kann dir niemand sagen ohne deinen kompletten Code
und ein Foto von deinem Aufbau gesehen zu haben.

von Florian (Gast)


Angehängte Dateien:

Lesenswert?

So hier ein Bild vom Aufbau und der Komplette Code.

Auf dem Display wird So etwas "ähnliches" Angezeigt, wie es sein sollte.
Man kann ein Test und ein Hel erkennen, wenn man den Avr mehrmals 
resetet...

Habe am code nur die Ausführungszeiten geändert.

Hoffe damit kann mir jemand weiter helfen.

SChöne Grüße

von Florian (Gast)


Lesenswert?

Florian schrieb:
> So hier ein Bild vom Aufbau und der Komplette Code.
>
> Auf dem Display wird So etwas "ähnliches" Angezeigt, wie es sein sollte.
> Man kann ein Test und ein Hel erkennen, wenn man den Avr mehrmals
> resetet...

Das ist allerdings nicht reproduzierbar, habe gerade 40 mal resetet und 
Kein "Test" mehr finden können... Es sieht so aus als würden die Zeichen 
jedes mal ein Stück weiter geschoben werden.

von Mr. Tom (Gast)


Lesenswert?

Florian schrieb:
> So hier ein Bild vom Aufbau

Ein Bild von der Größe lade ich gar nicht erst runter.

von Sebastian H. (technik_freak)


Lesenswert?

Dein Bild ist sehr groß (7,2MB), besser währe ein kleineres.

Versuche einmal, deine Zeiten soweit zu verlängern, dass Du mittels LEDs 
die Initialisierung verfolgen kannst (wird u.a. gemacht, wenn es noch zu 
Timing-Problemen kommt, was teilweise sein kann, da manche Zeichen nicht 
richtig übermittelt werden)

von J.-u. G. (juwe)


Lesenswert?

Aus der von Dir geposteten lcd-routines.h:
1
#define F_CPU 1600000
Läuft Dein AVR wirklich mit 1,6MHz?
Das widerspricht Deiner Angabe im 1. Post.

von Mr. Wu (Gast)


Lesenswert?

Florian schrieb:
> Bei dem Poti handelt es sich allerdings um ein 22kOhm, man sollte ja 10k
> verweden, habe ich aber leider nicht da.

Warum soll es 10k sein, wenn im Datenblatt 20k steht?
Und ob 20 oder 22 ist nun wirklich egal ...

von Florian (Gast)


Angehängte Dateien:

Lesenswert?

>Versuche einmal, deine Zeiten soweit zu verlängern, dass Du mittels LEDs
>die Initialisierung verfolgen kannst (wird u.a. gemacht, wenn es noch zu
>Timing-Problemen kommt, was teilweise sein kann, da manche Zeichen nicht
>richtig übermittelt werden)

Alle zeiten auf eine halbe sekunde oder sowas stellen und dann an die 
pins die das LCD Steuern Leds anschließen?

Wie kann ich daraus dann den Fehler erkennen ?

J.-u. G. schrieb:
> Aus der von Dir geposteten lcd-routines.h:#define F_CPU 1600000
> Läuft Dein AVR wirklich mit 1,6MHz?
> Das widerspricht Deiner Angabe im 1. Post.

Nein, der Läuft mit 16MHZ, aber das war nicht der Fehler, habe es gerade 
geändert. Aber danke für den Tipp.


Hat noch jemand eine Idee?
Eigentlich kann es doch gar nicht so schwer sein ein LCD display 
anzustuern??

Im Anhang nochmal ein Komprimiertes Bild.
Sorry! hatte ich vergessen.

von Sebastian H. (technik_freak)


Lesenswert?

0,5s sind OK, denn Du kannst erkennen, ob deine Zeichen richtig gesendet 
wurden und es gibt dem Displaycontroller Zeit, diese zu verarbeiten und 
darzustellen.

von Spess53 (Gast)


Lesenswert?

Hi

>Aus der von Dir geposteten lcd-routines.h:
<#define F_CPU 1600000
>Läuft Dein AVR wirklich mit 1,6MHz?
>Das widerspricht Deiner Angabe im 1. Post.

Die falsche Frequenzangabe dürfte wohl die Ursache des Dilemmas sein.

16MHz können es nicht sein, da kein Quarz gesteckt ist. Der Controller, 
ich tippe auf einen ATMega8515, kann nur 1, 2, 4 und 8 MHz. Der Jumper 
OSCSEL steht zwar auf 'On Board Oszillator selected', aber damit kann 
man weder 1,6MHz und schon gar nicht 16 MHz einstellen.

MfG Spess

von Paul B. (paul_baumann)


Lesenswert?

Das kommt selten vor, aber eben doch:

Hast Du nicht noch ein anderes Display zum Ausprobieren?
Ich hatte 4 gleiche Displays gekauft -Eines davon war defekt. Jetzt
rate mal, welches ich als Erstes eingelötet hatte...
;-)

MfG Paul

von Spess53 (Gast)


Lesenswert?

Hi

>Nein, der Läuft mit 16MHZ

Kann nicht sein.

MfG Spess

von Teo D. (teoderix)


Lesenswert?

Mach doch mal bitte eine (scharfes) Bild von der angelöteten 
Stiftleiste.

von Florian (Gast)


Angehängte Dateien:

Lesenswert?

Spess53 schrieb:
> ich tippe auf einen ATMega8515, kann nur 1, 2, 4 und 8 MHz


Ach du Scheiße! Das jab ich total Verpeilt..... aber deswegen Klappt es 
trozdem nicht :/
Habe es mit

#ifndef F_CPU
#define F_CPU 1000000 Bzw 2,4 und 8Mhz
#endif

Immerhin habe ich so schonmal ein ello orld! auf die Anzeige 
gebracht.... aber immer noch ist alles jedes mal anders wenn man den Avr 
neu Startet...

Teo Derix schrieb:
> Mach doch mal bitte eine (scharfes) Bild von der angelöteten
> Stiftleiste.

Bild ist im Anhang.

von Teo D. (teoderix)


Lesenswert?

Löte das mal sauber nach!

von Spess53 (Gast)


Lesenswert?

Hi

>Immerhin habe ich so schonmal ein ello orld! auf die Anzeige
>gebracht.... aber immer noch ist alles jedes mal anders wenn man den Avr
<neu Startet...

Dann lies endlich mal die Fuses aus und sag, mit welcher Frequenz dein 
AVR wirklich läuft.

MfG Spess

von Florian (Gast)


Lesenswert?

Spess53 schrieb:
> Dann lies endlich mal die Fuses aus und sag, mit welcher Frequenz dein
> AVR wirklich läuft.

Hier die Ausgabe:
1
avrdude: Version 5.11.1, compiled on Oct 18 2011 at 21:17:35
2
         Copyright (c) 2000-2005 Brian Dean, http://www.bdmicro.com/
3
         Copyright (c) 2007-2009 Joerg Wunsch
4
5
         System wide configuration file is "/etc/avrdude.conf"
6
         User configuration file is "/home/florian/.avrduderc"
7
         User configuration file does not exist or is not a regular file, skipping
8
9
         Using Port                    : /dev/ttyS0
10
         Using Programmer              : stk500
11
         AVR Part                      : ATMEGA8515
12
         Chip Erase delay              : 9000 us
13
         PAGEL                         : P00
14
         BS2                           : P00
15
         RESET disposition             : dedicated
16
         RETRY pulse                   : SCK
17
         serial program mode           : yes
18
         parallel program mode         : yes
19
         Timeout                       : 200
20
         StabDelay                     : 100
21
         CmdexeDelay                   : 25
22
         SyncLoops                     : 32
23
         ByteDelay                     : 0
24
         PollIndex                     : 3
25
         PollValue                     : 0x53
26
         Memory Detail                 :
27
28
                                  Block Poll               Page                       Polled
29
           Memory Type Mode Delay Size  Indx Paged  Size   Size #Pages MinW  MaxW   ReadBack
30
           ----------- ---- ----- ----- ---- ------ ------ ---- ------ ----- ----- ---------
31
           eeprom         4    20   128    0 no        512    0      0  9000  9000 0xff 0xff
32
           flash         33     6    64    0 yes      8192   64    128  4500  4500 0xff 0xff
33
           lfuse          0     0     0    0 no          1    0      0  4500  4500 0x00 0x00
34
           hfuse          0     0     0    0 no          1    0      0  4500  4500 0x00 0x00
35
           lock           0     0     0    0 no          1    0      0  4500  4500 0x00 0x00
36
           calibration    0     0     0    0 no          4    0      0     0     0 0x00 0x00
37
           signature      0     0     0    0 no          3    0      0     0     0 0x00 0x00
38
39
         Programmer Type : STK500V2
40
         Description     : Atmel STK500
41
         Programmer Model: STK500
42
         Hardware Version: 2
43
         Firmware Version Master : 2.01
44
         Topcard         : Unknown
45
         Vtarget         : 5.1 V
46
         SCK period      : 10.9 us
47
         Varef           : 5.0 V
48
         Oscillator      : 3.686 MHz
49
50
avrdude: AVR device initialized and ready to accept instructions
51
52
Reading | ################################################## | 100% 0.01s
53
54
avrdude: Device signature = 0x1e9306
55
avrdude: safemode: lfuse reads as E0
56
avrdude: safemode: hfuse reads as D9
57
58
avrdude: safemode: lfuse reads as E0
59
avrdude: safemode: hfuse reads as D9
60
avrdude: safemode: Fuses OK
61
62
avrdude done.  Thank you.


Wo kann ich denn hier die Frequenz auslesen?

von Spess53 (Gast)


Lesenswert?

Hi
>

Wo kann ich denn hier die Frequenz auslesen?

Dann drösel das mal mit dem Datenblatt auseinander:

>avrdude: safemode: lfuse reads as E0
>avrdude: safemode: hfuse reads as D9

Warum benutzt du kein AVR-Studio?

MfG Spess

von Florian (Gast)


Lesenswert?

Spess53 schrieb:
> Hi
>>
>
> Wo kann ich denn hier die Frequenz auslesen?
>
> Dann drösel das mal mit dem Datenblatt auseinander:
>
>>avrdude: safemode: lfuse reads as E0
>>avrdude: safemode: hfuse reads as D9
>
habe mal E0 D9 hier eingegeben:
http://www.engbedded.com/fusecalc/

d.h. mein Avr steht auf externe Clock... oder?

> Warum benutzt du kein AVR-Studio?
>
Habe Linux als Betriebssystem

von Spess53 (Gast)


Lesenswert?

Hi

>habe mal E0 D9 hier eingegeben:
>http://www.engbedded.com/fusecalc/

Für mich zählt das Datenblatt, nicht solche Pseudotools.

>d.h. mein Avr steht auf externe Clock... oder?

Siehe Datenblatt.

MfG Spess

von Florian (Gast)


Lesenswert?

Spess53 schrieb:
> Hi
>
>>habe mal E0 D9 hier eingegeben:
>>http://www.engbedded.com/fusecalc/
>
> Für mich zählt das Datenblatt, nicht solche Pseudotools.

Sorry, im Datenblatt steige ich bei den Fusebits nicht durch.
Habe gerade Auch bei Eclipse die Fusebits auslesen lasse, dort wird auch 
E0 D9 angegeben und dass es sich dabei um einen externen Oszillator 
handelt.

>>d.h. mein Avr steht auf externe Clock... oder?
>
> Siehe Datenblatt.
>

Kann ich jetzt "einfach" die Fusebits Umschreiben , so dass er auf 8Mhz 
läuft?

von Martin e. C. (eduardo)


Lesenswert?

RW auf Masse gelegt?
eventuell RS und E vertausch?

Wenn du ein Quarz hast probiere einfach mit einem Ext. Quarz

von Florian (Gast)


Lesenswert?

Martin e. C. schrieb:
> RW auf Masse gelegt?
> eventuell RS und E vertausch?

Werde ich nochmal Kontrollieren, glaube aber dass die Verkabelung 
richtig ist.

> Wenn du ein Quarz hast probiere einfach mit einem Ext. Quarz

Habe ich leider nicht...
Habe aber noch andere Avr´s rum liegen(ATMEGA32A-PU und ATMEGA168A-PU)

Soll ich es mal mit einem von diesen Testen?

Warum sind die Fusebits eigentlich auf einen externen Osizlator gesetzt? 
Das ist doch eigentlich nicht der Standard oder?

von Florian (Gast)


Lesenswert?

Hallo, habe heute nocheinmal veruscht das Display zum laufen zu 
bekommen, es funktioniert einfach nicht.... habe es sowohl mit der 
Anleitung hier aus dem Forum Versucht, als auch mit der für die 
Bilbliothek von Peter Fleury.
Ergebniss: keines :/

Habe mittlerweile noch ein weiteres 2x16 Zeichen LCD hier liegen, um 
einen Defekt auszuschließen, aber auch damit funktioniert es nicht.

Außerdem habe ich einen neuen Mikrokontroller eingesetz (ATMEGA32) und 
das ganze nocheinmal neu Zusammengestöspelt. Leider alles ohne 
Erfolg....
Hat noch irgendjemand eine Idee oder kann mir weiter helfen? Ich weiß 
wirklich nicht was ich noch Ausprobieren soll.....
Danke!

von Fabian V. (vogtinator)


Lesenswert?

Vielleicht mal das Steckbrett weglassen?
Kann ja sein, dass das Probleme verursacht, auch wenn ich es mir nur 
schlecht vorstellen kann.

von Florian (Gast)


Lesenswert?

Fabian V. schrieb:
> Vielleicht mal das Steckbrett weglassen?
> Kann ja sein, dass das Probleme verursacht, auch wenn ich es mir nur
> schlecht vorstellen kann.

Lcd auf eine Platine löten und dann mit einem mit einem Prot stecker des 
Stk500 verbinden? oder Auch den Controler auf die Platine Löten?


Hatte eigentlich schon jemand anders solche extremen Probleme mit einem 
LCD Modul? So ein Display anzusteuern ist ja eigentlich nicht wirklic 
schwer.... oder?

von Fabian V. (vogtinator)


Lesenswert?

Oder mit den richtigen Kabeln ("Jumperwire" F-F) direkt von Stecker zu 
Display verbinden.
Die LCD-Module halten, zumindest bei mir, ordentlich was aus. Ohne 
Abschirmung 20 cm 8 Kabel zusammengeklebt zum Anschließen benutzt. 
Klappt wunderbar. Nie auch nur ein einziger Bitfehler.

von Dietrich L. (dietrichl)


Lesenswert?

@Florian
Auf dem Bild ist schwer zu sehen, wie die Versorgung von LCD und Board 
miteinander "verheiratet" sind. VCC und GND sind direkt (und nicht über 
lange Umwege) miteinander verbunden?

Und ich würde mal einen Stützkondensator zwischen VCC und GND  hängen, 
direkt am Display.

Gruß Dietrich

von Florian (Gast)


Lesenswert?

Fabian V. schrieb:
> Oder mit den richtigen Kabeln ("Jumperwire" F-F) direkt von
> Stecker zu
> Display verbinden.

Danke, werde ich heute Abend mal testen.

Dietrich L. schrieb:
> @Florian
> Auf dem Bild ist schwer zu sehen, wie die Versorgung von LCD und Board
> miteinander "verheiratet" sind. VCC und GND sind direkt (und nicht über
> lange Umwege) miteinander verbunden?
>
VCC und GND von Controler und Display sind getrennt voneinander.
Der Atmega steckt im Stk500 und das Display bekommt seine 5V über ein 
Labornetzteil. Darf man das so nicht machen?

> Und ich würde mal einen Stützkondensator zwischen VCC und GND  hängen,
> direkt am Display.

Wird gemacht  :)
Ich tue alles damit das Display endlich das tut was ich will :D
Danke für die Hilfe!
> Gruß Dietrich
Gruß Florian

von spess53 (Gast)


Lesenswert?

Hi

>VCC und GND von Controler und Display sind getrennt voneinander.
>Der Atmega steckt im Stk500 und das Display bekommt seine 5V über ein
>Labornetzteil. Darf man das so nicht machen?

Kann man schon, aber nur wenn man die Massen verbindet.

MfG Spess

von Fabian V. (vogtinator)


Lesenswert?

Ja, sonst liegt an den Eingängen des Displays nur der Zufall an,
der ein bisschen von dem ATMega abhing. Würde erklären warum es manchmal 
so ein bisschen funktionierte.

von Florian (Gast)


Lesenswert?

So... habe es jetzt zum gefühlt 100sten mal aufgebaut und.... es 
funktioniert!!
Danke an alle die mir geholfen haben :)

Es muss wohl irgendetwas nicht richtig verbunden gewesen sein... 
außerdem hat die GND Verbindung zwischen DEm Controller und dem LCD 
gefehlt.

Danke nochmal :)

von Paul Baumann (Gast)


Lesenswert?

Florian schrub:
>außerdem hat die GND Verbindung zwischen DEm Controller und dem LCD
>gefehlt.

Na, das wird wohl bald die ganze Ursache gewesen sein.

MfG Paul

von Spess53 (Gast)


Lesenswert?

Hi

>außerdem hat die GND Verbindung zwischen DEm Controller und dem LCD
>gefehlt.

Das nennt man im Volksmund 'Missing Link'.

MfG Spess

von Florian (Gast)


Lesenswert?

Das pasiert mir mit sicherheit so schnell nicht wieder :D

Bin gerade dabei mir eine Platine zurecht zu löten, mit der ich das 
Display direkt an einen Port anschließen kann. Dann muss ich mir in 
Zukunft keine Sorgen mehr um die Verbindungen machen.

von Dietrich L. (dietrichl)


Lesenswert?

Florian schrieb:
> außerdem hat die GND Verbindung zwischen DEm Controller und dem LCD
> gefehlt.

Da sieht man mal wieder, wie man in 60 Beiträgen nach vielen 
"intelligenten" Fehlern suchen kann, und das Problem liegt bei den 
"Basics".

Also was lernt man daraus für die Fehlersuche? Zweifle an allem und 
bleibe offen für alle Fehlermöglichkeiten, auch wenn sie sich noch so 
trivial anhören.
Aussagen wie "Das kann nicht sein!" oder "Ich bin doch nicht blöd!" sind 
in der fortgeschrittenen Phase der Fehlersuche verboten!! Alles kann 
sein und/oder ich bin blöd (sonst hätte ich den Fehler ja schon 
gefunden) ;-))

Gruß Dietrich

von Paul Baumann (Gast)


Lesenswert?

Dietrich schrob:
>..und das Problem liegt bei den "Basics".

Gut, daß nicht noch Transistoren daran beteiligt waren, sonst hätte es 
auch
nach an den Emmitrics oder Kollektrics liegen können...
;-)

MfG Paul

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
Noch kein Account? Hier anmelden.