Hallo, bin Anfänger und benötige Hilfe. Ich habe ein SD21-Servoboard am I2C-Bus des RP6 angeschlossen. Ich erhalte im Terminal folgende Fehlermeldung: "RP6 CONTROL M32 I2C Master Servoboard SF21 I2C ERROR - TWI STATE: 0x20". Wo liegt der Fehler?
Das Program sieht wie folgt aus:

Code:
#include "RP6ControlLib.h" 		// The RP6 Control Library. 
								// Always needs to be included!

#include "RP6I2CmasterTWI.h"

/*****************************************************************************/

#define I2C_RP6_BASE_ADR 10		// The default address of the Slave Controller 
								// on the RP6 Mainboard
#define I2C_SD21_BASE_ADR 0xC2								
uint8_t i; 
/*****************************************************************************/
// I2C Error handler
void I2C_transmissionError(uint8_t errorState)
{
	writeString_P("\nI2C ERROR - TWI STATE: 0x");
	writeInteger(errorState, HEX);
	writeChar('\n');
}
/*****************************************************************************/
// Initiirung SD21
// uint8_t servo = 1	// 1 ... 21
// uint8_t speed = 10	// Geschwindigkeit 0...255
// uint16_t angle = 1500;	//Min 1000, 0 1500, Max 2000


// SD21 Sendefunktion
void I2C_SD21(uint8_t servo, uint8_t speed, uint16_t angle) // vollstaendig
// void I2C_SD21(uint8_t speed, uint16_t angle)
{
uint8_t transmitBuf[4];
transmitBuf[0] = (servo -1)*3; 	// Register 0-2 = Servo1, 3-5 = Servo2, ...
transmitBuf[1] = speed; 	// Geschwindigkeit 0...255
transmitBuf[2] = (angle & 0xff);	// Low Byte Position
transmitBuf[3] = ((angle >> 8) & 0xff);	// High Byte Position

// I2CTWI_transmitBytes(I2C_SD21_BASE_ADR,&transmitBuf[0],4);
I2CTWI_transmitBytes(I2C_SD21_BASE_ADR,transmitBuf[0],4);
}

int main(void)
{
	initRP6Control(); // Always call this first! The Processor will not work
	initLCD(); // Initialize the LC-Display (LCD)
			   // Always call this before using the LCD!
			   
	writeString_P("\n\nRP6 CONTROL M32 I2C Master Servoboard SF21\n"); 

	// IMPORTANT:
	I2CTWI_initMaster(100); // Initialize the TWI Module for Master operation
							// with 100kHz SCL Frequency
							
	// Register the event handlers:
	I2CTWI_setTransmissionErrorHandler(I2C_transmissionError);

	// Play two sounds:
	sound(180,80,25);
	sound(220,80,25);

	setLEDs(0b1111); // Turn all LEDs on!

	showScreenLCD("################", "################");
	mSleep(500);
	showScreenLCD("I2C-Master", "Funktion auf den Schaltern");
	mSleep(1000);
	// ---------------------------------------
	setLEDs(0b0000); // All LEDs off!
	
	while(true) 
	{
		uint8_t key = checkReleasedKeyEvent(); 
		
		if(key)
		{
			switch(key)
			{
				case 1: // Servo 1 in Mittelstellung
					setLEDs(0b0001);
					showScreenLCD("Servo 1 Mitte","Tempo 10");
					I2C_SD21(1,10,1500);
				break;
				case 2: // Servo 1 in linker Anschlag
					setLEDs(0b0010);
					showScreenLCD("Servo 1 links","Tempo 10");
					I2C_SD21(1,10,1000);
				break;
				case 3: // Servo 1 in rechter Anschlag
					setLEDs(0b0011);
					showScreenLCD("Servo 1 rechts","Tempo 10");
					I2C_SD21(1,10,2000);
				break;
				case 4: // Servo 1 10x alternierend mit Stopwatch
					startStopwatch1();

					for(i = 0; i < 10; i++)
					{
					 I2C_SD21(1,10,2000);
						if(getStopwatch1()>2000)
						{
						 I2C_SD21(1,10,1000);
						 setStopwatch1(0);
						}
					}
				break;
				case 5: // Servo 1 alternierend mit msleep BLOCKIERT
					for(i = 0; i < 10; i++)
					{
					 I2C_SD21(1,10,2000); // 2s blockiert
					 mSleep(2000);
					 I2C_SD21(1,10,1000);
					}					
				break;				
			}
		}
	}
	return 0;	  
	
}