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
Wenn die Verkablung OK ist, dann ist es wohl ein Software-Problem. Wie sieht's mit dem Timing aus, machst du einfach delays oder nutzt du das busy-flag? Ohne source-code und Schaltplan kann man da eigentlich gar nichts sagen....
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?
:
Bearbeitet durch User
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?
:
Bearbeitet durch User
Johannes Berger schrieb: > > Oder was meinst du genau? die restlichen Zeiteinstellungen ein wenig höher stellen. Gibt ja neben der Boot-Time noch ein paar andere.
Johannes Berger schrieb: > Habe den uC ausgelesen und die Frequenz auf 8 MHz gestellt. Und hast du das auch KONTROLLIERT, ob der µC danach auch tatsächlich mit ca. 8Mhz läuft?
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ß
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!
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.
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.
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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.