Hi Leute, hab wirklich schon den ganzen Tag das Forum durchstöbert aber nichts gefunden das mir hilft. Ich hab ein XMC1100 Entwicklungskid von Infinion (muss leider das verwenden da der Prof das so will) Ich möchte das LCD162C CB CB erstmal im 8Bit modus betreiben da aktuell noch soviele Pins frei sind.. später wenns mal läuft könnte evtl auch auf 4Bit umgestellt werden. Ich habs folgender maßen angeschlossen und die pins so inital. P0_9_set_mode(OUTPUT_PP_GP); //Display Enable PP = Push PULL mode P0_12_set_mode(OUTPUT_PP_GP); //Display Datamode P1_2_set_mode(OUTPUT_PP_GP); //Display Data0 set P1_3_set_mode(OUTPUT_PP_GP); //Display Data1 set P1_4_set_mode(OUTPUT_PP_GP); //Display Data2 set P0_0_set_mode(OUTPUT_PP_GP); //Display Data3 set P0_1_set_mode(OUTPUT_PP_GP); //Display Data4 set P0_2_set_mode(OUTPUT_PP_GP); //Display Data5 set P0_3_set_mode(OUTPUT_PP_GP); //Display Data6 set P0_4_set_mode(OUTPUT_PP_GP); //Display Data7 set den RW pin habe ich auf GND gelegt (vorerst) dann erstmal alle Pins auf Low gezogen und danach die Init sequenz abgefahren wie im datasheet beschrieben. Leider passiert nichts :( Es sind nur die 16 Schwarzen kästchen in der 1sten reihe zu sehen wie beim anschalten. Ich hab aber erlich gesagt keinen plan an was es liegt. Am timing? Kein plan ich steppe sogar durch und das müsst ja wohl zeit genung sein für das Display. Ich bin auch schon jede mögliche Init durchgelaufen die ich gefundne habe (3mal softreset, 1mal softreset usw.) im Anhang hab ich mal mein C file evtl hat ja wer ne idee was schief läuft.
:
Bearbeitet durch User
> P1_2_set_mode(OUTPUT_PP_GP); //Display Data0 set > P1_3_set_mode(OUTPUT_PP_GP); //Display Data1 set > P1_4_set_mode(OUTPUT_PP_GP); //Display Data2 set > P0_0_set_mode(OUTPUT_PP_GP); //Display Data3 set > P0_1_set_mode(OUTPUT_PP_GP); //Display Data4 set > P0_2_set_mode(OUTPUT_PP_GP); //Display Data5 set > P0_3_set_mode(OUTPUT_PP_GP); //Display Data6 set > P0_4_set_mode(OUTPUT_PP_GP); //Display Data7 set Welcher Teufel hat dich denn da geritten? Du kannst dir das Leben unendlich einfacher machen, wenn du die 8 Datenleitungen vom LCD (die ja ein Byte übertragen) auch so anschliesst, dass du ein auszugebendes Byte auch genau so auf einen Ausgangsport legen kannst, ohne erst vorher eine Bit-Umschaufel-Orgie veranstalten zu müssen. Wenn du keinen kompletten 8-Bit Port mehr frei hast, dann sieh wenigstens zu, dass du eine möglichst hohe 1zu1 Korrespondenz hast.
:
Bearbeitet durch User
> Kein plan ich steppe sogar durch und das müsst ja wohl zeit genung sein für das Display. Würde ich auch so sehen. Steppe nochmal durch aber diesmal kontrollierst du direkt am LCD mit einem Voltmeter (oder einer LED) ob die Pins auch tatsächlich die Pegel haben, die sie haben sollen. Nach jedem Programmschritt in main() an dem sich irgendeine der LCD-Leitungen verändert, kontrollierst du das. (Hintergrund: ich traue deinem Belegungschaos nicht. Da schleichen sich viel zu leicht Fehler beim Strippenziehen ein)
:
Bearbeitet durch User
Karl Heinz schrieb: >> P1_2_set_mode(OUTPUT_PP_GP); //Display Data0 set >> P1_3_set_mode(OUTPUT_PP_GP); //Display Data1 set >> P1_4_set_mode(OUTPUT_PP_GP); //Display Data2 set >> P0_0_set_mode(OUTPUT_PP_GP); //Display Data3 set >> P0_1_set_mode(OUTPUT_PP_GP); //Display Data4 set >> P0_2_set_mode(OUTPUT_PP_GP); //Display Data5 set >> P0_3_set_mode(OUTPUT_PP_GP); //Display Data6 set >> P0_4_set_mode(OUTPUT_PP_GP); //Display Data7 set > > Welcher Teufel hat dich denn da geritten? > > Du kannst dir das Leben unendlich einfacher machen, wenn du die 8 > Datenleitungen vom LCD (die ja ein Byte übertragen) auch so anschliesst, > dass du ein auszugebendes Byte auch genau so auf einen Ausgangsport > legen kannst, ohne erst vorher eine Bit-Umschaufel-Orgie veranstalten zu > müssen. > Wenn du keinen kompletten 8-Bit Port mehr frei hast, dann sieh > wenigstens zu, dass du eine möglichst hohe 1zu1 Korrespondenz hast. Genau das is das Problem ich hab eben leider kein kompletten Port über, das liegt an der bescheuerten Aufteilung des Boards wie man aus dem Bild entnehmen kann. Aber wegen Geschwindigkeit ist es eigentlich egal ob mans umschaufeln muss oder nicht das das Display nur alle 10 Sekunden aktuallisiert wird. Ich bin auch schon mal durchgegangen und habs durchgemessen leider immer mit dem gleichen Ergebnis das es eigentlich stimmen müsste :). An den Pins liegt beim jeweiligen High Pegel 5V an. Aber die Initsequenz stimmt so weit oda? Da irgendwie im Displaydatenblatt was anders steht als im verwendeten Displaycontroller Blatt (KS0070B). Wann und Wo muss der Enablepin genau gesetzt werden? das steht auch nicht wirklich drin? Die Spannungsversorgung (5V) muss bei der Init dauheraft anliegen oda? Das VO hab ich auf Masse gelegt und die Beleuchtung ist erstmals nicht angeschlossen (wurde aber auch schon mit angeschlossen probiert). Ich bin echt am verzweifeln... kann es sein das es Kaputt ist?? Hoffe irgendwer hat noch nen Tipp oder ne Idee
Matthias P. schrieb: > Genau das is das Problem ich hab eben leider kein kompletten Port über, > das liegt an der bescheuerten Aufteilung des Boards wie man aus dem Bild > entnehmen kann. Mag sein. Du hast aber zb >>> P0_0_set_mode(OUTPUT_PP_GP); //Display Data3 set >>> P0_1_set_mode(OUTPUT_PP_GP); //Display Data4 set >>> P0_2_set_mode(OUTPUT_PP_GP); //Display Data5 set >>> P0_3_set_mode(OUTPUT_PP_GP); //Display Data6 set >>> P0_4_set_mode(OUTPUT_PP_GP); //Display Data7 set P0_0 bis P0_4 alle frei. Und was machst du? Du legst sie auf die LCD Bits 3 bis 7, anstatt korrespondierend auf 0 bis 4 > Aber wegen Geschwindigkeit ist es eigentlich egal ob mans umschaufeln > muss oder nicht das das Display nur alle 10 Sekunden aktuallisiert wird. Mir gehst nicht um Geschwindigkeit. Mir gehts um Fehleranfälligkeit. Denn bei derartigen 'welches BIt muss ich beackern, damit am Endgerät der Pin xy sich ändert' macht man schnell mal Fehler. Hatte ich auch alles schon mal. Dachte auch: alles kein Problem, kann ich alles in Software wieder ausbüglen. Aber wenn du das alles kontrolliert hast, dann muss das auch stimmen. > Ich bin auch schon mal durchgegangen und habs durchgemessen leider immer > mit dem gleichen Ergebnis das es eigentlich stimmen müsste :). > An den Pins liegt beim jeweiligen High Pegel 5V an. > > Aber die Initsequenz stimmt so weit oda? Die Initsequenz ist in Ordnung. Sobald du das Byte mit dem Wert 0x30 auf die Datenleitungen raustaktest, müssten das LCD die angezeigten Balken abschalten und in den normalen 8 Bit Modus gehen. > Wann und Wo muss der Enablepin genau gesetzt werden? das steht auch > nicht wirklich drin? Ist ganz einfach. Erst müssen die 8 Datenpins mit den Werten versorgt werden. Und natürlich RS auch richtig stehen. Danach geht Enable einmal auf High und wieder zurück auf Low. Ist ja auch logisch. Mit Enable sagst du der Gegenstelle: Jetzt gilts. Die Werte die jetzt an den Datenleitungen anliegen sind gültig. > Die Spannungsversorgung (5V) muss bei der Init dauheraft anliegen oda? Die SPannungsversorgung muss sowieso immer dauerhaft anliegen. > Das VO hab ich auf Masse gelegt VO? Wer oder was ist VO Meinst du die Kontrastspannung? Das kannst du leicht kontrollieren. Wenn das LCD normale Versorgungsspannung kriegt und nicht initialisiert wird, dann zeigt es eine Reihe Balken an. Diese Balken dienen dazu, damit du den Kontrast einstellen kannst. Normalerweise hat man ja ein Poti für die Kontrastspannung. An dem dreht man so lange, bis man die Balken gut und scharf sieht. UNd dann geht die Programmierarbeit los. Dadurch das man den Kontrast vorher schon eingestellt hat, hat man jetzt auch die Sicherheit, dass man auch tatsächlich etwas sehen müsste, wenn man was ausgibt. Denn - der Kontrast wurde ja anhand der Balken schon eingestellt. > und die Beleuchtung ist erstmals nicht > angeschlossen (wurde aber auch schon mit angeschlossen probiert). Die Beleuchtung hat damit überhaupt nichts zu tun. Die Beleuchtung ist einfach nur eine LED hinter dem Glas.
:
Bearbeitet durch User
Wenn du 100% sicher bist, dass die Verkabelung stimmt, dann ist ein nicht funktionierendes LCD meistens eine Frage des Timings. Der µC ist zu schnell oder das LCD wird überhaupt nach dem Anlegen der Versorungsspannung zu früh angesprochen und dann ist es mit seiner eigenen INitialisierung noch nicht fertig.
Ok Merci für die Hilfe schon mal Karl Heinz. Da mit den Ports 0-4 haste recht das werde ich mal ändern. Wegen Kontrast usw stimmt alles, wollte nur sichergehen das ich da nichts durcheinander gebracht habe :) Ich versuchs am WE nochmal bin mir aber zu 90% sicher das die Pins bzw. die Datenbits richtig gesetzt waren :(. Wegen dem Timing wie gesagt bin komplett durchgesteppt was ja für die wartezeit ausreicht! Aber danke schon mal! Ich meld mich am WE evtl nochmal wenns immer noch nicht klappt :) Wenn irgend jemand noch einen anderen Tipp hat bitte einfach Posten DANKE
Ich würde von Anfang an auf 4-Bit Mode setzten, da hast du auch einen "ganzen" halben Port über.
Servus Wollte nur ein Update geben. Also es Funktioniert jetzt :) war wohl daran gelegen, dass der RS Pin nicht sauber auf LOW gezogen wurde ... frag mich nicht warum, nach dem ich ihn auf GND gesetzt habe gings. Ach ja und ich hab auch auf 4 Bit umgestellt is ja eigentlich unnötig da 8Pins zu verbraten (hab natürlich jetzt P0.0 -> P0.3 verwendet ;)). PS Danke für die Hilfe Karl Heinz auch wenns mich ned wirklich weiter gebracht hat :( egal etz läufts :-P
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.