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

Logikfehler? Kategorie: Programmierung (von Markus H - 5.01.2012 9:45)
Ich nutze:
C-Control II Unit, OSOPT V3.1
Hallo Gemeinde,

nach dem ich nun wieder etwas Zeit gefunden habe, habe ich meine C-Control
aus der Versenkung geholt und bin gleich auf ein Problem gestoÃ?en:

Ich betreibe am PCF 8574AP i2c Modul von André eine 4x4 Matrix Tastatur und ein
4x20 Display, mit den Tasten A bis D möchte ich durch das "Menü" blättern,
funktioniert auch soweit ganz gut, was noch nicht funktioniert:
Ich möchte das Display nur alle ca. 3 sec. aktualisieren, bzw, wenn ich eine Taste drücke
sollte das Display aktualisiert werden.

Hier mein Code:

//---------
thread display
//---------

{
pcflcd.setpcf(8);
pcflcd.init();
timer2 = system.timer();
loop
{
if system.timer() - timer2 >= 3000 or pcfkeyb.getchar(5) != 0 //Macht mir Probleme!
{
loop
{
if men == 1
   {
   if umen == 1
      {
      pcflcd.clear();
      pcflcd.goto(1,0);
      pcflcd.print("Startmenue");
      pcflcd.goto (2,0);
      pcflcd.print("Waermeerzeugung:");
      pcflcd.put(0x20); // Space
      pcflcd.print(globvar.betriebsmodus);
      }
   if umen > 1 umen = 1;
   if umen < 1 umen = 1;
   }

if men == 2
   {
   if umen == 1
      {
      pcflcd.clear();
      pcflcd.goto(1,0);
      pcflcd.print("Startmenue10");
      }

   if umen == 2
      {
      pcflcd.clear();
      pcflcd.goto(1,0);
      pcflcd.print("Startmenue11");
      }
   if umen > 2 umen = 1;
   if umen < 1 umen = 2;
   }

if men == 3
   {
   if umen == 1
      {
      pcflcd.clear();
      pcflcd.goto(1,0);
      pcflcd.print("Startmenue20");
      }

   if umen == 2
      {
      pcflcd.clear();
      pcflcd.goto(1,0);
      pcflcd.print("Startmenue21");
      }
   if umen > 2 umen = 1;
   if umen < 1 umen = 2;
   }
if men > 3 men = 1;
if men < 1 men = 3;
timer2 = system.timer();
break;
}
}
}
}


ich hab bei der "or" Verknüpfung schon einiges mit Klammern rumprobiert,
das Display wird immer nur auf Tastendruck aktualisiert!
Lasse ich den Ausdruck "pcfkeyb.getchar(5) != 0" weg, wird das DP alle 3 sec. aktualisiert!
Evtl. kann mir jemand weiter helfen.
Weiter wäre es schön, wenn ich auch die Taste "0" benützen könnte ;-)

Vielen Dank und schöne Grü�e,

Markus H



    Antwort schreiben


Antworten:

Re: Logikfehler? (von André H. - 5.01.2012 13:33)
    Re: Logikfehler? (von Markus H - 5.01.2012 15:20)
        Re: Logikfehler? (von André H. - 8.01.2012 19:37)
            Re: Logikfehler? (von Markus H - 9.01.2012 19:45)