Hallo Leute, ich brauche noch mal eure Hilfe. Dieses Mal geht es um ein LCD Display, das ich verwende. Ich habe mich an folgender Seite (inklusive Pinbelegung) orientiert: http://www.jennaron.com.au/avr/lcd.html Da der C Code schon etwas älter ist, habe ich ihn auf die neue WINAVR Version angepasst (sbi(), cbi() etc. umgeschrieben). Auch habe ich die eigene Delay Funktion durch _delay_ms() ersetzt. Meinen kompletten Ordner findet ihr im Anhang. Den originalen Code habe ich auskommentiert in den Files drinnen stehen, damit man besser verfolgen kann, was ich wie geändert habe. Folgende Situation/Problem: Möchte ich nun meinen uC flashen und Zeichen auf dem Display ausgeben, funktioniert das nur manchmal. Das heißt, dass manchmal gar nichts passiert. Manchmal werden aber auch nur schwarze Balken angezeigt. Meistens (ca. 70% der Fälle) gibt das LCD den richtigen Wert aus. Ich frage mich jetzt, woran das liegen könnte bzw. ob ich irgendwelche Timings/Wartezeiten nicht eingehalten habe. Ich verwende einen Atmega8 mit internem RC Osc. 1MHz und die Taktfrequenz ist auch auf 1MHz in den Projekteinstellungen festgelegt. Wäre nett, wenn jemand eine Idee dazu hätte. Die main Funktion ist in LCD1.c definiert, die Funktionen zur Initialisierung etc. sind in lcd16.c definiert. Danke und Gruß
Hi, ich habe eben die LCD Routinen vom AVR-GCC Tutorial geladen. Hier funktioniert alles wunderbar. Was mich sehr wundert, ist, dass bei den Routinen auf dieser Seite wesentlich weniger Speicher im uC verwendet wird. Zum Vergleich: Die Routinen aus dem Ursprungspost belegten knapp 30% meines Speichers. Die Routinen vom AVR-GCC Tutorial belegen weniger als 8%. Was ist an den Routinen im Ursprungspost so schlecht bzw. speicherintensiv? Gruß
Hallo, er verwendet float. Wozu man das bei einer LCD Ansteuerung braucht, entzieht sich meiner Kenntnis. Ich habe mir das dann auch nicht mehr weiter angeschaut. Gruß Andreas Edit: Gerade gesehen, dass er das nur zum Testen verwendet. Falls Du also dieses Testprogramm verwendest, ist der Speicherverbrauch klar..
Hi, Andreas B. schrieb: > Hallo, > er verwendet float. > Wozu man das bei einer LCD Ansteuerung braucht, entzieht sich meiner > Kenntnis. Ich habe mir das dann auch nicht mehr weiter angeschaut. > > Edit: Gerade gesehen, dass er das nur zum Testen verwendet. Falls Du > also dieses Testprogramm verwendest, ist der Speicherverbrauch klar.. Danke fürs Drückergucken. Dann werde ich die LCD Routinen vom AVR-GCC Tutorial verwenden und mich dort mal hineinfuchsen. Gruß
al3ko schrieb: > Möchte ich nun meinen uC flashen und Zeichen auf dem Display ausgeben, > funktioniert das nur manchmal. Kein Wunder, die Init ist fast nur ein riesen NOP. Nirgends wird das E-Bit getriggert, also ins LCD geschrieben. Ein Schreiben erfolgt erst bei "SendCommand(0x28);" Die meisten LCD-Fehler beruhen darauf, daß man das Init so fehlerträchtig wie möglich machen will. Es werden die kühnsten Bitverzwirbelungen gemacht, anstatt einfach die Send-Nibble Funktion zu benutzen, die man ja später fürs Byte-Senden verwendet. Damit hätte man die Fehlerquellen auf nur eine einzige Funktion reduziert. Peter
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.