Hallo

Die PollSwitch()-Funktion "lügt" häufig, vor allem wenn die Tasten bei laufenden Motoren abgefragt werden. Die Chance dass ein falscher Wert genau 0 oder 32 ist ist bedeutend geringer als ein falscher Wert ==32 oder != 32.

Mehrfachabfrage der Tasten bei Motorstörungen:

Code:
#include "asuro.h"


#define FULL_L 80
#define FULL_R 60

/* vorwärts */
void MotorFwd(void)
{
  MotorDir(FWD,FWD);
  MotorSpeed(FULL_L,FULL_R);
}
/* rückwärts */
void MotorRwd(void)
{
  MotorDir(RWD,RWD);
  MotorSpeed(FULL_L,FULL_R);
}

/* bremsen */
void MotorStop(void)
{
  MotorSpeed(0,0);
}


int main(void)
{
	char t1, t2;

   Init();

   while(1)

   {
		t1=PollSwitch();
		t2=PollSwitch();

      if((t1==t2) && (t2==0))
      {
         MotorDir(FWD,FWD);
         MotorSpeed(65,255);
      }

      if((t1==t2) && (t2==32))
      {
         MotorDir(FWD,FWD);
         MotorSpeed(100,200);
      }

      if((t1==t2) && (t2==33))
      {
         MotorDir(RWD,RWD);
         MotorSpeed(255,255);
         Msleep(1000);
      }

      if((t1==t2) && (t2!=32))
      {
         MotorDir(RWD,RWD);
         MotorSpeed(255,255);
         Msleep(1000);
      }
   }
}
Gruß

mic