Zur Übersicht - INFO - Neueste 50 Beiträge - Neuer Beitrag - Suchen - FAQ - Zum CC1-Forum - Zum CC-Pro-Forum

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)