Forum: Mikrocontroller und Digitale Elektronik LCD WinAVR gibt nur halbe Texte aus


von Stipo (Gast)


Lesenswert?

He Leute,
Habe heute mein LCD (16x2 HD44780) bekommen und nach eurem Tut 
angeschlossen als auch angesteuert.

4Bit Modus und die Datenleitungen sind PD4-PD7 am Atmega32.

#define LCD_DB        PD4 //Stimmt das so?

Ich kann den Wert der Variable (auch 5 stellig) ohne Probleme ausgeben 
egal wohin ich den Curser setze.

Wenn ich die Buchstaben wie in eurem Beispiel einzeln ausgeben lasse, 
passiert nichts.

Aber wenn ich zB das Wort "Temperatur" als ganzen String ausgeben will, 
schreibt er mir nur "atur".
Genauso bei eurem Bsp mit "Hello World!", schreibt er immer nur orld! 
Und manchmal auch World.

Hat da jemand eine Lösung oder muss ich die ersten 4 Pins eines Ports 
benutzen?

Danke schonmal für eure lehrenden Antworten :)

von vcd (Gast)


Lesenswert?

Stipo schrieb:
> He Leute,
He Stipo
> Habe heute mein LCD (16x2 HD44780) bekommen und nach eurem Tut
nach welchem Tut?
> angeschlossen als auch angesteuert.
>
> Ich kann den Wert der Variable [..]
Welche Variable?
>
> Wenn ich die Buchstaben wie in eurem Beispiel einzeln ausgeben lasse,
> passiert nichts.
Welches Beispiel?
>
> Aber wenn ich zB das Wort "Temperatur" als ganzen String ausgeben will,
> schreibt er mir nur "atur".
> Genauso bei eurem Bsp mit "Hello World!", schreibt er immer nur orld!
Welches Bsp?
> Und manchmal auch World.
Wie manchmal? Regelmäßig, jedes zweite Mal, oder zufällig?
>
> Hat da jemand eine Lösung oder muss ich die ersten 4 Pins eines Ports
> benutzen?
Eine Lösung (oder Vorschläge dazu) kann man erst geben, wenn man 
wenigstens mal das Programm gesehen hat. Mit welchem Controller 
arbeitest du? In welcher Programmiersprache? Wie sieht der Schaltplan 
aus?
>
> Danke schonmal für eure lehrenden Antworten :)
Keine Ursache :-)
Aber ein wenig mithelfen mußt du schon selbst.
Also bitte poste mal den Schaltplan und den Quellcode. Und dann schauen 
wir mal.

von Stipo (Gast)


Lesenswert?

Ja den link hatte ich vergessen :o
bitte vielmals um entschludigung :)

http://www.mikrocontroller.net/articles/AVR-GCC-Tutorial/LCD-Ansteuerung

In C. Habe diese Bsp Kopiert und die Pinbelegung angepasst.

Mit zufällig meine ich komplett zufällig!
Hatte auch einmal "Temperatur" als ganzes Wort stehen.
"Hello World" nur einmal und dann wurden es immer weniger Buchstaben je 
öfters ich das Programm neu gestartet habe :(

Atmega32
Die Pollin AVR NET I/O Schaltung.
Die A&B-Ports benötige ich für etwas anderes. Und PD0-PD1 werden schon 
von der Schaltung benutzt.

von Dietrich L. (dietrichl)


Lesenswert?

Stipo schrieb:
> In C. Habe diese Bsp Kopiert und die Pinbelegung angepasst.

Stimmt auch das Timing? Hast Du den richtigen Prozessortakt angegeben?

Gruß Dietrich

von Stipo (Gast)


Lesenswert?

Habe den selben Wert eingetragen wie in der Makefile. Dieser ist 
momentan auf 8000000.

Oder muss ich den Takt des AVRs dem LCD anpassen?

von vcd (Gast)


Lesenswert?

Stipo schrieb:
> Oder muss ich den Takt des AVRs dem LCD anpassen?

Nein, aber der Eintrag muß der Taktgeschwindigkeit deines Controllers 
entsprechen. Sonst stimmen die Timings innerhalb des Programmes nicht.

von Luca E. (derlucae98)


Lesenswert?

Stipo schrieb:
> Habe den selben Wert eingetragen wie in der Makefile. Dieser ist
> momentan auf 8000000.

Benutzt du einen externen Quarz oder den internen Oszillator?

von Stipo (Gast)


Lesenswert?

Ja da steht die selbe Frequenz.

Was ist hier mit gemeint?


Wichtig ist außerdem, dass die Optimierung bei der Compilierung 
eingeschaltet ist, sonst stimmen die Zeiten der Funktionen _delay_us() 
und _delay_ms() nicht und der Code wird wesentlich länger (Siehe 
Dokumentation der libc im WinAVR).

Wo stelle ich das ein? O.O

von Stipo (Gast)


Lesenswert?

Externer Quartz.
http://www.pollin.de/shop/downloads/D810058B.PDF
Meine Schaltung die ich mit gekauft habe.

von Luca E. (derlucae98)


Lesenswert?

Stipo schrieb:
> http://www.pollin.de/shop/downloads/D810058B.PDF
> Meine Schaltung die ich mit gekauft habe.

Und du hast auch die Fusebits auf externen Quarz gesetzt?

von Max H. (hartl192)


Lesenswert?

Du hast einen 16MHz Quarz. Also trag mal besser 16000000 für die CPU 
Frequenz ein, wenn die Fuses auf externen Quarz gesetzt sind.

: Bearbeitet durch User
von Stipo (Gast)


Lesenswert?

Die Fuses sind wie hier beschrieben gesetzt.
http://www.pollin.de/shop/downloads/D810058B.PDF

Die MHz werde ich ändern. Sobald der PC wieder will -.-

von Stipo (Gast)


Lesenswert?

Habe den takt auf 16000000 gestellt und bis jetzt geht es.

Danke :D

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.