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

Re: stkeyb mit pcflcd nach Wechsel auf 4x20 LCD Kategorie: I²C-Bus (von André H. - 16.05.2005 9:16)
Als Antwort auf stkeyb mit pcflcd nach Wechsel auf 4x20 LCD von Dramet - 16.03.2005 17:07
Ich nutze:
C-Control II Unit, C164CI-ControllerBoard, CC2-Application-Board, CC2-StarterBoard, CC2-ReglerBoard, OSOPT V3.0
Hallo,

> Ich habe osopt3.hex und unitdriver.hex geladen.

Zuerst solltest Du Dir im klaren sein, was Du an Module und treibern benötigst !!!!!
unitdriver.hex wäre das erste, was ich löschen würde.
Das ist ein 500%ig veralteter Treiber für die 1000%ig veralteten original Module.
Was Du benötigst ist:
- OSOPT V3.0 (osopt_v3-0.hex , so heiÃ?t die Datei des OS, und nicht anders)
- sys0002.hex
Das sind ersteinmal die Grundvoraussetzungen.

> ich habe an meinem Application Board das standard 2x16 LCD und die Standard Folientastatur
> in Kombination der Module stkeyb und lcdext betrieben.

Dann, was hat das Modul stkeyb.c2 mit dem Appl.Board zu tun ???
Das Modul ist ausschlie�lich für die CC2-Station gedacht.


> Nachdem ich jetzt ein 4x20 LCD an einem i2cTerminal (1042er) angeschlossen habe, sind
> Tastatureingaben nur noch sehr zögerlich möglich.

Was hei�t zögerlich. Wie sehen Deine Routinen zum Abfragen aus ?

> In der Datei stkeyb.c2 habe ich alle lcdext Aufrufe nach pcflcd geändert und bin auf folgendes Problem
> gestoÃ?en:
>
>   if key == 10               // Eingabe löschen
>    {
>     value=0;
>     pcflcd.WriteCmd(0b100);
>     pcflcd.fill(0x20,i);  // gibt es nicht mehr !
>     pcflcd.WriteCmd(0b110);
>     pcflcd.cursorright();
>     i=0;
>    }

>
> Da es in pcflcd.c2 auch keine fill Funktion mehr gibt, kann ich leiber keine
> Fehleingaben mehr löschen.

Es ist richtig, daÃ? es in pcflcd.c2 kein fill() gibt.
Die Funktion fill() gibt lediglich eine Anzahl Zeichen hintereinander aus.
das WriteCmd(0b100) sorgt dafür, da� der Cursor decrementiert wird, und somit nach
rechts wandert. Es ist quasi ein Backspace.

Für das Modul pcflcd.c2 müsste die vier Zeilen der obigen Routine folgendema�en aussehen:
byte c;
 i2c.cstart(pcflcd.PCF);
 i2c.write(pcflcd.light or 0x4);// HighNibble
 i2c.write(pcflcd.light);
 i2c.write(0x44 or pcflcd.light);   // LowNibble
 i2c.write(0x40 or pcflcd.light);
 for c=0 ... <i
 {
  i2c.write(0x25 or pcflcd.light);
  i2c.write(0x21 or pcflcd.light);
  i2c.write(0x05 or pcflcd.light);
  i2c.write(0x01 or pcflcd.light);
 }
 i2c.write(pcflcd.light or 0x4);// HighNibble
 i2c.write(pcflcd.light);
 i2c.write(0x64 or pcflcd.light);   // LowNibble
 i2c.write(0x60 or pcflcd.light);
 i2c.write(0x14 or pcflcd.light); // HighNibble
 i2c.write(0x10 or pcflcd.light);
 i2c.write(0x44 or pcflcd.light); // LowNibble
 i2c.write(0x40 or pcflcd.light);
 i2c.stop();


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: