Hallo

Die TWI-Variablen werden in RP6I2CmasterTWI.c definiert. Normalerweise sollte man die dann mit "extern" importieren können, aber ich kanns nicht. Auch nicht, wenn man das "static" bei den Definitionen entfernt: http://openbook.galileocomputing.de/...tionen_012.htm

Code:
//Servoansteuerungs Test

#include "RP6RobotBaseLib.h"
#include "RP6I2CmasterTWI.h"
#include "RP6I2CmasterTWI.c" // oje :(

#define PCF8574_Schreiben 0b01110000

void I2C_transmissionError(uint8_t errorState)
{
   writeString_P("I2C ERROR - TWI STATE: 0x");
   writeInteger(errorState, HEX);
   writeChar('\n');
}

void senden(uint8_t adresse, uint8_t daten)
{
   TWI_msgSize = 2;
   I2CTWI_buf[0] = adresse;
   I2CTWI_buf[1] = daten;
   TWI_statusReg.all = 0;
   TWCR = (1<<TWEN)|(1<<TWIE)|(1<<TWINT)|(0<<TWEA)|(1<<TWSTA)|(0<<TWSTO);
   task_I2CTWI();
}

void ServoAnsteuern( uint8_t grad)
{
	if(getStopwatch1() >= 20)  // Alle 20 ms Impuls senden
	{
		setStopwatch1(0);
		senden(PCF8574_Schreiben, 0b00001000);  // Signal auf High
		sleep(grad); // Signaldauer
		senden(PCF8574_Schreiben, 0b00000000); // Signal auf Low
	}
}

int main(void)
{
	uint8_t grad = 15; // = 1,5ms -> normalerweise Mittelstellung

	initRobotBase();
	I2CTWI_initMaster(100);
	I2CTWI_setTransmissionErrorHandler(I2C_transmissionError);
	startStopwatch1();

	while(true)
	{
		ServoAnsteuern(grad);
	}
	return 0;
}
Das kann ich wenigstens Fehler- und Warnungsfrei übersetzen. Im makefile muss man dann natürlich RP6I2CmasterTWI.c rausschmeisen.

Gruß

mic