LCD Ansteuerung fehlerhaft

#3361883
Lesenswert?

Hallo zusammen,

gestern habe ich es erfolgreich geschafft mein Display "TC1602A-08" von 
Pollin ans laufen zu bekommen.
Leider habe ich ein Problem bei der Übertragung. Wenn ich das Programm 
kompiliere und übertrage erscheint beim ersten mal die korrekte 
Darstellung. Übertrage ich es erneut kommt in der ersten Zeile ein 
zufälliges Wirwar ab Zeichen 4. Übertrage ich es dann noch ein mal, 
erscheint wieder der korrekte Text. Und das wechselt sich irgendwie nach 
Lust und Laune ab.
(Die zufälligen zeichen variieren allerdings)

Wisst ihr woran das liegen könnte?

Ich habe extra schon alle Jumper von meinem Evaluations Board entfernt 
weil ich dachte irgendwas hackt mir da rein aber keine Besserung.

Gruß

Jo
Angehängte Dateien:
#3361915
Lesenswert?

micha schrieb:
> Ohne source-code und Schaltplan kann man da eigentlich gar
> nichts sagen....

AVR-GCC-Tutorial/LCD-Ansteuerung

Ich nutze die Routinen und das Beispielprogramm dieses Artikels.
Angeschlossen ist das Display im 4 Bit Modus

Dennis schrieb:
> Timing passt nicht

Habe den uC ausgelesen und die Frequenz auf 8 MHz gestellt.
ISP Clock Speed steht bei 1,2 kHz

Oder was meinst du genau?
#3361924
Lesenswert?

Aus deinem Posting von gestern

>  Dannach ging es zwar noch nicht aber durch eine erhöhung
> des ISP Clockspeed hat es dann funktioniert.

? ISP hat damit nichts zu tun.
Du stellst da einen Zusammenhang her, der nicht existiert. Das war 
maximal Zufall, dass es nach dem Erhöhen der ISP Clockspeed funktioniert 
hat.

Check noch mal deine Verkabelung. Kabelbruch, schlechte Lötstellen.
Auch gehen mir da ein wenig zu viele Kabel zum LCD. Die Lötstellen am 
LCD für die unteren 4 Datenbits bleiben einfach leer, wenn du das LCD im 
4-Bit Modus ansteuerst. Was hast du mit den entsprechenden Kabeln 
gemacht?
#3361947
Lesenswert?

Karl Heinz Buchegger schrieb:
> Was hast du mit den entsprechenden Kabeln
> gemacht?

Die restlichen 4 Datenleitungen habe ich auf Masse gelegt.

Karl Heinz Buchegger schrieb:
> die restlichen Zeiteinstellungen ein wenig höher stellen.
> Gibt ja neben der Boot-Time noch ein paar andere.

Ja da habe ich mich noch nicht ganz dran getraut, werde ich aber jetzt 
mal probieren

Karl Heinz Buchegger schrieb:
> Und hast du das auch KONTROLLIERT, ob der µC danach auch tatsächlich mit
> ca. 8Mhz läuft?

durch erneutes auslesen?!
oder verstehe ich das jetzt was falsch?

gruß
#3362005
Lesenswert?

Johannes Berger schrieb:

>> Und hast du das auch KONTROLLIERT, ob der µC danach auch tatsächlich mit
>> ca. 8Mhz läuft?
>
> durch erneutes auslesen?!
> oder verstehe ich das jetzt was falsch?


AM e3infachstenb ist es, wenn dir der µC selber unmissverständlich 
mitteilt, ob das jetzt 8Mhz sind oder nicht.
Dann gibt es auch keine Fuse-Bits die man fehlinterpretieren könnte

einfach eine LED blinken lassen, wobei die Pausen mit _delay_ms gemacht 
werden.
1
#define F_CPU 8000000
2

3
....
4

5
int main()
6
{
7

8
  ...
9

10
  while( 1 )
11
  {
12
    LED einschalten
13
    _delay_ms( 1000 );
14
    LED ausschalten
15
    _delay_ms( 1000 );
16
  }
17
}

_delay_ms ist als in Software realisierte Zeitschleife, sensitiv darauf, 
dass die Angabe von F_CPU auch tatsächlich mit der Wahrheit 
übereinstimmt.

Und dann sieht man es schon. Brennt die LED tatsächlich 1 Sekunde und 
ist 1 Sekunde aus .... dann stimmen die 8Mhz mit der Realität überein. 
Sind es aber eher .... 8 Sekunden ein und 8 Sekunden aus, dann passt das 
nicht (dann läuft der µC mit 1Mhz und nicht mit 8).

Das sieht man mit freiem Auge.

Spann den µC dazu ein, dass er dir hilft!
#3362052
Lesenswert?

Karl Heinz Buchegger schrieb:
> Spann den µC dazu ein, dass er dir hilft!

Super Idee. Aber klar, muss man erst mal drauf kommen :)

Habe den kleinen Versuch aufgebaut und stelle fest das der µC wie 
geplant auf 8MHz läuft.

Und auch ein erhöhen der BOOTUO_MS  etc. hat noch nichts ergeben.

Nur das die Fehler jetzt wandern und noch mehr variieren.
Vor allem wenn ich das Display nach einer bestimmten Zeit lösche und 
einen neuen text ausgebe kommt erst der richtige Murks.
#3362067
Lesenswert?

Johannes Berger schrieb:

> Und auch ein erhöhen der BOOTUO_MS  etc. hat noch nichts ergeben.

Wen das LCD initialisiert, dann ist das auch der falsche Ansatzpunkt.
Da ist die Boot-Zeit schon lange vorrüber.

Die anderen, die die Pulslängen des Enable Pulses, bzw. die Verzögerung 
bis zur Erzeugung des Pulses steuern, das sind die, die jetzt gefragt 
sind.


Um dir etwas die Angst zu nehmen:
Beim LCD hast du es mit Mindestzeiten zu tun!
D.h. du kannst die Zeiten alle beliebig lange machen. Auch Stunden, wenn 
du willst. Das spielt alles keine Rolle. Aber du kannst sie nicht 
beliebig kurz machen!

Im LCD werkelt selbet ein µC. Und der muss mit den Signalen bzw. 
Signalpegeln mitkommen können. Wenn dein Ansteuerprogramm langsamer als 
dieser µC agiert, dann ist das egal. Nur schneller darf es nicht sein.
#3362079
Lesenswert?

Karl Heinz Buchegger schrieb:
> Im LCD werkelt selbet ein µC. Und der muss mit den Signalen bzw.
> Signalpegeln mitkommen können. Wenn dein Ansteuerprogramm langsamer als
> dieser µC agiert, dann ist das egal. Nur schneller darf es nicht sein.

Gut zu wissen, ich werde mich mit dieser Thematik noch ein wenig genauer 
befassen und versuchen das Problem mit feintuning zu lösen.
(Testweise alle Werte auf 100 ergeben auch nur Mist, also muss es ja die 
goldene Mitte sein)

Auf jeden Fall vielen vielen Dank für die Antworten und die Hilfe :)

Gruß Jo

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