Forum: Mikrocontroller und Digitale Elektronik LCD 16x2 Problem


von Anfänger (Gast)


Angehängte Dateien:

Lesenswert?

Hallo,
Habe ein LCD 16x2 an einem Atmega8 über das STK500 angeschlossen. 
Verwende die Beispielprogramme aus dem AVRGCC Tutorial. Hatte vor ein 
paar Monaten schon mal ein LCD 16x2 an einem Atmega8 und dem AVRISP MKII 
betrieben das auch super funktionierte. (mit dem gleichen 
Beispielprogramm aber AVR Studio 4)

Bin jetzt auf das STK500 und AVR Studio 6 umgestiegen und jetzt 
funktionierts nicht so wie ich will... wie so oft :-)

Habe ein Bild angehängt wo normalerweise nur in der ersten zeile "Test" 
und in der zweiten Zeile auch "Test" angezeigt werden soll. Bei jedem 
Reset wird ein anderer Text angezeigt und manchmal auch gar nichts. An 
was kann das liegen.

Habe alle Anschlüsse vom Display überprüft und es liegt kein Kurzschluss 
vor.

Gruß
Dominik

von holger (Gast)


Lesenswert?

>An was kann das liegen.

Display wird überfahren bzw. zu schnell angesteuert.

von Lucas (Gast)


Lesenswert?

Hast du an dem Beispielprog nur die eine Stelle von 'Hello World!' in 
Test geändert? Und schau mal, ob du nicht noch irgendwelche Delays oder 
Befehle anpassen musst.

von Anfänger (Gast)


Lesenswert?

Ja hab nur die Stelle von "Hello World!" in "Test" geändert.
F_CPU 3686400 muss ich nicht ändern wenn ich keinen externen Quarz 
benütze oder? Mein ISP Clock ist auf 113,92kHz eingestellt.

von Anfänger (Gast)


Lesenswert?

Wenn ich kein externes Makefile benütze dann muss ich doch auch nicht 
dies anhängen oder? (MCU=atmega8) Das macht doch AVR Studio beim 
erstellen von einem Projekt selber.

Was ist hiermit gemeint?
//    lcd-routines.c in SRC = ... Zeile anhängen

von Lucas (Gast)


Lesenswert?

In welchem Kontext steht das denn?

Und mit der Frequenz: "Standardmäßig" sind die Fuses (hfuse = 0xd9, 
lfuse = 0xe1) auf 1MHz eingestellt, dass wäre dann: "F_CPU 1000000", les 
aber am besten mal die Fuses aus und sag uns wie sie lauten.

Grüße,
Lucas

von Werner (Gast)


Lesenswert?

Anfänger schrieb:
> F_CPU 3686400 muss ich nicht ändern wenn ich keinen externen Quarz
> benütze oder?

Halbwegs korrektes Timing kannst du bei der Einstellung aber nicht 
erwarten, da der interne Oszillator keine 3.7MHz hat.

von Anfänger (Gast)


Lesenswert?

Hab die Fuses ausgelesen...
High = 0xD9
Low = 0xE1
hab daraufhin die Frequenz auf "F_CPU 1000000" gestellt aber der Fehler 
ist genauso wie vorher noch da.

von Lucas K. (lucas_k)


Lesenswert?

Hast du die Leitungen für das LCD auch an die richtigen Pins 
angeschlossen? Wichtig ist, dass sie am selben Port hängen, wenn du den 
Queltext nicht veränderst.

Schau vor allem, ob der R/S Pin deines Displays richtig verbunden ist.

von Anfänger (Gast)


Lesenswert?

Ja hab sie am PortD wie im Tutorial angeschlossen.
Habe auch gerade alle nochmal nachgemessen und keinen Fehler gefunden.
Werde jetzt nochmal ein neues LCD ausprobieren und schauen ob sich was 
ändert.

von Anfänger (Gast)


Lesenswert?

Hab jetzt auch nochmal ein neues Display ausprobiert aber hat sich 
nichts geändert.

von holger (Gast)


Angehängte Dateien:

Lesenswert?

Hier mal eine HEX Datei für dich zur Schaltungskontrolle.

von Anfänger (Gast)


Lesenswert?

holger schrieb:
> Hier mal eine HEX Datei für dich zur Schaltungskontrolle.

Tut mir leid wenn ich jetzt so blöd Frage aber was muss ich mit der Hex 
Datei machen??? Bin noch anfänger zum Thema uC

Muss ich einfach die Hex Datei auswählen und übertragen???

Habs versucht manchmal ist nur eine Zeile weiß hinterlegt und manchmal 
beide...was sollte den passieren?

von ich (Gast)


Lesenswert?

Eigentlich solltest Du sowas wie "Hello World" sehen,. denke ich mal.

@Holger: Display an welchen Port? 4-Bit oder 8-Bit? Frequenz?

von holger (Gast)


Lesenswert?

>Tut mir leid wenn ich jetzt so blöd Frage aber was muss ich mit der Hex
>Datei machen??? Bin noch anfänger zum Thema uC
>
>Muss ich einfach die Hex Datei auswählen und übertragen???

Ja.

>Habs versucht manchmal ist nur eine Zeile weiß hinterlegt und manchmal
>beide...was sollte den passieren?

Es sollte eigentlich "Line1" in der ersten Zeile und "Line2"
in der zweiten Zeile zu sehen sein.

Ich hab das für den ATMega8 kompiliert mit folgender
Pinbelegung wie im Tutorial:

RS      PORTD4
E       PORTD5
RW      an Masse GND
LCD_D4  PORTD0
LCD_D5  PORTD1
LCD_D6  PORTD2
LCD_D7  PORTD3

von Werner (Gast)


Lesenswert?

Anfänger schrieb:
> hab daraufhin die Frequenz auf "F_CPU 1000000" gestellt aber der Fehler

Falls du das mit einer "#define"-Anweisung gemacht hast, geht das 
schief, weil 1000000 nicht in eine 16-Bit Zahl passt.
1
#define F_CPU 1000000UL
wäre da passender.

von holger (Gast)


Lesenswert?

>@Holger: Display an welchen Port? 4-Bit oder 8-Bit? Frequenz?

Natürlich 4Bit, PORTD siehe oben. Frequenz absichtlich 16MHz
und nicht 1MHz damit die delays auf jeden Fall passen.

von Anfänger (Gast)


Lesenswert?

Hab jetzt gerade nochmal alle Anschlüsse nachgemessen...lötstellen 
zusätzlich unterm mikroskop angeschaut...nochmal ein neues Display 
ausprobiert...einen neuen Atmega8 gesteckt... und habe immer noch das 
selbe problem.

Werd Morgen mal einen Bekannten ein Display mitgeben der es mal 
ausprobieren soll.

Aber danke trotzdem für eure Hilfe.

von holger (Gast)


Lesenswert?

So, für alle Zweifler:

Mal eben ein 2x16 Display per Jumper Wires
angepappt. Quarz 10MHz. Steckte da halt grad drin.
Das blind programmierte Programm reingebrutzelt.
Also die HEX Datei aus dem Anhang.

Anzeige:

Line1
Line2

von holger (Gast)


Lesenswert?

Kleine Anmerkung bevor ich schlafen gehe:

Hängt da evtl. ein MAX232 an PD0 und PD1?
Den musste ich bei meinem Board rausziehen damit es geht.

von Anfänger (Gast)


Lesenswert?

Wo sollte der max232 sein? Meinst du bei RS232? Da ist nichts gesteckt.

von Anfänger (Gast)


Angehängte Dateien:

Lesenswert?

Hab jetzt das STK500 einmal an meinem alten PC über rs232 kabel und 
nicht am laptop über usb to serial prolific adapter angesteckt und wenn 
ich jetzt die Hex datei auf meinen mikrocontroller übertragen will 
bekomm ich zwei Fehler die ich mit dem gleichen Programm am Laptop nicht 
hatte.

von Anfänger (Gast)


Lesenswert?

So jetzt hab ich mal mein Programm mit dem AVR ISP MK2 übertragen und 
siehe es funktioniert... :-) Muss ich irgendwelche fuses,... beim stk500 
ändern damit es funktioniert?
Irgendwelche ideen?

Danke

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.