Re: Problem mit lcdext Kategorie: Programmierung (von André H. - 22.07.2003 12:53) | |
Als Antwort auf Re: Problem mit lcdext von Rolf - 22.07.2003 11:55
| |
Hallo Rolf, > Wenn ich Dich richtig vestehe, ist aber in lcdext.clear(); ein implizites lcdext.line(1); > eingebaut was durch Timingprobleme jedoch nicht erfolgreich ausgeführt wird. Nein. Clear ist ein eigenes Kommando. DAs kann man in derFunktion auch gut erkennen: function clear() { WriteCmd(0x01); sleep 3; } Das Kommando "1" wird mit RS low zum LCD gesendet. Dieses löscht daraufhin den DDRAM und setzt den Cursor wieder auf HOME. Was durch die Wartezeit von 2ms passiert ist, lässt sich leicht erklären: clear() wurde korrekt ausgeführt. Nur war das isplay danach noch nicht bereit für neue Daten, soda� ein paar Zeichen "verschluckt" wurden. > (Das ist der Nachteil von asm-Treibern.... ich müste mich jetzt erst in den asm-Code vortasten... > um mir selbst solche Fragen beantworten zu können...) ;-) Das ist überhauptkein Nachteil. WriteCmd() sendet ein Kommanto-Byte zum LCD. WriteCmd(0x01); sendet das Kommando "1" welches clear bedeutet. (Nachzulesen in jedem Standard-LCD-Datenblatt.) �brigens macht die ASM-Routine zu WriteCmd() nichts anderes als folgendes: function WriteCmd (byte cmd) { ports.set(RW, 0); ports.set (RS, 0); ports.setn (Data, cmd shr 4);// HighNibble ports.pulse(En); ports.setn (Data, cmd); // LowNibble ports.pulse(En); } und die für put() nichts anderes als dieses: function put(byte char) { ports.set(RW, 0); ports.set (RS, -1); ports.setn (Data, char shr 4);// HighNibble ports.pulse(En); ports.setn (Data, char); // LowNibble ports.pulse(En); } MfG André H. Antworten bitte nur ins Forum! Fragen per EMail auf Forum-Postings werden nicht beantwortet! Das macht meine Heizung gerade | |
Antwort schreiben Antworten: Re: Problem mit lcdext (von Rolf - 22.07.2003 14:11) |