Der RP6 hält nach einigen Sekunden alle Motoren an, lässt die vier roten LEDs blinken und gibt folgendes aus:

Code:
##### EMERGENCY SHUTDOWN #####
##### ALL OPERATIONS STOPPED TO PREVENT ANY DAMAGE! #####

### ENCODER (OR MOTOR) MALFUNCTION! ###
Affected channel:LEFT!

(s. task_motorControl() function in RP6Lib!)
You need to check Encoder/Motor assembly (or your software).

The Robot needs to be resetted now.
Das hier ist mein Programmcode:

Code:
#include "RP6RobotBaseLib.h"      

#include "RP6I2CmasterTWI.h" 

#define   SRF02   0xE2

uint8_t srfbuffer[2]; 
uint16_t distance = 200;

void obstacle(void)
{
	moveAtSpeed(0,0);
}


// Main: 

int main(void) 
{ 
   initRobotBase(); 
   setLEDs(0b111111); 
   mSleep(1000); 
   setLEDs(0b100100); 
   I2CTWI_initMaster(100);
   moveAtSpeed(100,100);
    
   // Main loop 
   while(true) 
   { 
	  task_motionControl();
	  task_ADC();
	  
      I2CTWI_transmit2Bytes(SRF02, 0, 81); 
      mSleep(65); 
      I2CTWI_transmitByte(SRF02, 2); 

      I2CTWI_readBytes(SRF02, srfbuffer, 2);
      distance = (srfbuffer[0] << 8) + srfbuffer[1]; 
	  
	  if( (distance < 50))
		obstacle();

      //writeString_P("\n distance:"); 
      //writeInteger(distance,DEC);
	  
	  mSleep(500);
    
   } 
    
   return 0; 
}
Wenn ich moveAtSpeed(100,100) durch moveAtSpeed(0,100) ersetze passiert dasselbe, nur dass der Affected Channel dann RIGHT ist.

Das Selftest-Programm läuft einwandfrei, d.h. ein Hardwarefehler ist auszuschliessen.