ComputerKind
04.01.2008, 17:24
Ich habe meinen RP6 jetzt seit ein paar Tagen und wollte jetzt mein eignes Programm mit dem Erweiterungsmodul schreiben. Es sagt ihm lediglich, dass er 10 cm vorwährts fahren soll. Auf dem RP6 läuft das Slave-Programm, dass sich bei den Beispielen befindet. Den Großteil hab ich von den Beispielprogramm kopiert, jedoch kommt immer die Fehlermeldung "I2C ERROR - TWI STATE: 0x20".
Der Code ist Folgender:
#include "RP6ControlLib.h" // The RP6 Control Library.
// Always needs to be included!
#include "RP6I2CmasterTWI.h" // I2C Master Library
// Include our new "RP6 Control I2C Master library":
#include "RP6Control_I2CMasterLib.h"
// I2C Requests:
/**
* The I2C_requestedDataReady Event Handler
*/
void I2C_requestedDataReady(uint8_t dataRequestID)
{
checkRP6Status(dataRequestID);
}
/************************************************** ***************************/
// I2C Error handler
/**
* This function gets called automatically if there was an I2C Error like
* the slave sent a "not acknowledge" (NACK, error codes e.g. 0x20 or 0x30).
*/
void I2C_transmissionError(uint8_t errorState)
{
writeString_P("\nI2C ERROR - TWI STATE: 0x");
writeInteger(errorState, HEX);
writeChar('\n');
}
int16_t main(void)
{
initRP6Control();
sound(180,80,25);
sound(220,80,25);
I2CTWI_initMaster(100);
I2CTWI_setRequestedDataReadyHandler(I2C_requestedD ataReady);
I2CTWI_setTransmissionErrorHandler(I2C_transmissio nError);
move(100,FWD,DIST_CM(10),false);
while(1)
{
task_checkINT0();
task_I2CTWI();
}
return 0;
}
Könnt ihr mir sagen, wo ich den Fehler gemacht hab?
Der Code ist Folgender:
#include "RP6ControlLib.h" // The RP6 Control Library.
// Always needs to be included!
#include "RP6I2CmasterTWI.h" // I2C Master Library
// Include our new "RP6 Control I2C Master library":
#include "RP6Control_I2CMasterLib.h"
// I2C Requests:
/**
* The I2C_requestedDataReady Event Handler
*/
void I2C_requestedDataReady(uint8_t dataRequestID)
{
checkRP6Status(dataRequestID);
}
/************************************************** ***************************/
// I2C Error handler
/**
* This function gets called automatically if there was an I2C Error like
* the slave sent a "not acknowledge" (NACK, error codes e.g. 0x20 or 0x30).
*/
void I2C_transmissionError(uint8_t errorState)
{
writeString_P("\nI2C ERROR - TWI STATE: 0x");
writeInteger(errorState, HEX);
writeChar('\n');
}
int16_t main(void)
{
initRP6Control();
sound(180,80,25);
sound(220,80,25);
I2CTWI_initMaster(100);
I2CTWI_setRequestedDataReadyHandler(I2C_requestedD ataReady);
I2CTWI_setTransmissionErrorHandler(I2C_transmissio nError);
move(100,FWD,DIST_CM(10),false);
while(1)
{
task_checkINT0();
task_I2CTWI();
}
return 0;
}
Könnt ihr mir sagen, wo ich den Fehler gemacht hab?