hallo hab ein Problem mit meinem LCD . Es handelt sich um ein Wintek WD-C2704 von Pollin , 4*27 chars Mir ist bewusst das ich nicht die Standart routine aus dem tutorial verwenden kann und das es im Forum schon Beiträge dazu gibt. Hab aber leider keinen gefunden der auf mich zutrifft. Hier das Problem: Hab den Code so umgeändert das er beide Controller enabled. Mein System ist ein AtMega32 und das LCD ist so angeschlossen : RS - PD4 RW - GND E1 - PD5 E2 - PD6 DB0-3 - NC DB4 - PD0 DB5 - PD1 DB6 - PD2 DB7 - PD3 Mein Problem ist nun das das LCD zwar irgendwie was anzeigt aber dies ändert sich nach jedem Reset und ist nicht das was es eigentlich ausgeben soll. Hab schon einige Variationen bzgl der Enable Routine getestet wie nops einfügen oder die 2 controller einzeln zu aktivieren, jedoch nichts führte zum Erfolg ... Was das LCD zb ausgibt ist auf den Bildern zu sehn, der Source ist auch angehängt. Hoffe jemand kann mir helfen. MFG Stefan
Danke für die schnelle Antwort. das Ergebnis sieht so aus auf meinem Display (siehe Anhang) mit 4 Mhz . Mit 8 Mhz siehts noch schlimmer aus MFG Stefan
>das Ergebnis sieht so aus auf meinem Display (siehe Anhang) mit 4 Mhz >. Mit 8 Mhz siehts noch schlimmer aus Naja, wenigstens kommt der zweite Text komplett an. Wenn auch an der falschen Stelle:( Irgendwas stimmt da mit deiner Hardware nicht. Der Source wurde für 16MHz compiliert und funktioniert so auch mit zwei 2x40 Displays. Timing sollte für 4 oder 8 MHz also stimmen. Zieh mal das andere Display ab.
Das andere Display dürfte nicht das Problem sein da es nicht am µC hängt. ich vermute das es irgendwie ein Timing Problem ist weil mit meinem Prgramm hat er ja auch Test angezeigt manchmal nur nicht da wo er soll.
hat keiner eine Lösung für mich ? hab noch ein wenig weiter experiementiert und die clock frequency auf 1 Mhz runter sowie 3 nop's vor dem enable und 5 ms pause vor dem lcd init. Das ganze hat es etwas besser gemacht, das LCD zeigt nun manchmal Test an aber scheinbar willkürlich, nach jeden Reset ist was anderes möglich. Ausserdem kann es doch nicht sein das ich nur mit 1 Mhz arbeiten kann oder ? im Anhang hab ich nochmal die 2 asm files hoffe jemand kann mir helfen Stefan
Was mir damals schon aufgefallen sind: Wieviel Meter an Datenkabel und Leiterstegen sind zwischen Display und Controller?
>Ausserdem kann es doch nicht sein das ich nur mit 1 Mhz arbeiten kann >oder ? Du hast irgendwo ein Hardwareproblem. Wie lang sind die Leitungen?
Also insgesamt dürfte die Leitungslänge zwischen Display und µController 40-50 cm betragen. Sind die Displays da so empfindlich ?
Sieht nach einem Timing Problem aufgrund langer Leitungen und ggf. parasitärer Kapazitäten aus. Versuch doch mal in lcd_enable ein paar delays einzubauen und sieh, ob es dann besser geht.
1 | lcd_enable:
|
2 | rcall delay50us ; extra delay |
3 | sbi PORTD, 5 ; Enable high |
4 | sbi PORTD, 6 |
5 | rcall delay50us ; extra delay |
6 | cbi PORTD, 5 ; Enable wieder low |
7 | cbi PORTD, 6 |
8 | rcall delay50us ; extra delay |
9 | ret
|
>Versuch doch mal in lcd_enable ein paar delays einzubauen und sieh, ob >es dann besser geht. Mach mal ne Serienterminierung 10-50 Ohm an E und die Datenleitungen und sieh dann obs besser geht. Oder schlicht und ergreifend: Mach das Kabel kürzer;)
Danke für euere Antworten, habe das kabel gekürzt und nun scheint es stabil zu funktionieren. Allerdings bin ich nun an einem programmier Problem angekommen. Wie schaffe ich es die beiden Displayhälften unabhängig von einander anzusteuern ? Mit dem Programm lcd_text_0_asm schaffe ich es das sowohl auf der oberen als auch auf der unteren Display hälfte Test 123 ausgegeben wird. Daraufhin hab ich mir gedanken gemacht und versucht die Routinen so umzuschreiben das es sozusagen jeweils 2 daten command init Befehle usw gibt. Allerdings wenn ich dieses Programm (lcd_text.asm) auf den µC spiele kommt unsinn dabei raus. Kann jemand vielleicht mal schauen wo der Fehler liegen koennte bzw wenn das Problem mit 2 Controlern schonmal gelöst worden ist mir den Source (in ASM ?) zukommen lassen ? Danke schonmal
Hi >Kann jemand vielleicht mal schauen wo der Fehler liegen koennte bzw wenn >das Problem mit 2 Controlern schonmal gelöst worden ist mir den Source Du brauchst einfach zwei LCD-Enable-Routinen. Für jeden Controller eine. Mit deiner Routine beschreibst du beide Controller gleichzeitig. MfG Spess
spess53 schrieb: > Du brauchst einfach zwei LCD-Enable-Routinen. Für jeden Controller > eine. Ja das weiss ich und ich habe versucht das ganze mit dem Programm lcd_text.asm versucht zu realisieren, allerdings funktioniert das nicht. Das Display zeigt dann nur auf einer hälfte Zeichen an. Finde den Fehler allerdings nicht.
Hi Ich sehe in deinen Programmen immer nur ein lcd_enable. E1 und E2 gleichzeitig anzusprechen funktioniert nur in der LCD-Init. Um etwas auf dem LCD auszugeben darfst du je nach Zeile nur E1 oder E2 ansprechen. MfG Spess
Hallo Vielen Dank nochmal an alle die mir geholfen haben. also ich habe nun das (oder die Probleme) gefunden weswegen das LCD nicht das machte was es soll. 1. Leitungen gekürzt (waren wohl doch zu lang) 2. Die übrigen Datenleitungen DB0-DB3 auf GND gelegt 3. Spannungsversorgung statt externes Netzteil Spannungsversorgung vom Eval-Board genommen Ich dachte mir ich poste es mal falls noch jemand ähnliche Probleme mit diesem Display hat. Viele Grüße Stefan
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.