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.
						
					
Lesezeichen