bugmenot
25.12.2010, 17:09
Ich will die Slave-ID des SRF02 von 0xE0 auf 0xE2 ändern. Dafür habe ich folgenden Code:
// Uncommented Version of RP6Base_I2C_Master_01.c
// written by Dominik S. Herwald
// ------------------------------------------------------------------------------------------
#include "RP6RobotBaseLib.h"
#include "RP6I2CmasterTWI.h"
#define PCF8574_8LEDS_ADR 0x70
void I2C_requestedDataReady(uint8_t dataRequestID)
{
}
void I2C_transmissionError(uint8_t errorState)
{
writeString_P("\nI2C ERROR - TWI STATE: 0x");
writeInteger(errorState, HEX);
writeChar('\n');
}
int main(void)
{
initRobotBase();
writeString_P("Hello!\n");
mSleep(3000);
I2CTWI_initMaster(100);
I2CTWI_setRequestedDataReadyHandler(I2C_requestedD ataReady);
I2CTWI_setTransmissionErrorHandler(I2C_transmissio nError);
powerON();
writeString_P("Starting to change Slave-ID\n");
task_I2CTWI();
I2CTWI_transmitByte(0xE0, 0xA0);
mSleep(50);
I2CTWI_transmitByte(0xE0, 0xAA);
mSleep(50);
I2CTWI_transmitByte(0xE0, 0xA5);
mSleep(50);
I2CTWI_transmitByte(0xE0, 0xE2);
mSleep(50);
writeString_P("Done\n");
return 0;
}
Dieser läuft auch schön bis zum Ende durch(Am Ende wird "Done" ausgegeben). Wenn ich jetzt allerdings den Sensor abfragen will funktioniert das immernoch mit 0XE0, nicht mit 0XE2.
// Uncommented Version of RP6Base_I2C_Master_01.c
// written by Dominik S. Herwald
// ------------------------------------------------------------------------------------------
#include "RP6RobotBaseLib.h"
#include "RP6I2CmasterTWI.h"
#define PCF8574_8LEDS_ADR 0x70
void I2C_requestedDataReady(uint8_t dataRequestID)
{
}
void I2C_transmissionError(uint8_t errorState)
{
writeString_P("\nI2C ERROR - TWI STATE: 0x");
writeInteger(errorState, HEX);
writeChar('\n');
}
int main(void)
{
initRobotBase();
writeString_P("Hello!\n");
mSleep(3000);
I2CTWI_initMaster(100);
I2CTWI_setRequestedDataReadyHandler(I2C_requestedD ataReady);
I2CTWI_setTransmissionErrorHandler(I2C_transmissio nError);
powerON();
writeString_P("Starting to change Slave-ID\n");
task_I2CTWI();
I2CTWI_transmitByte(0xE0, 0xA0);
mSleep(50);
I2CTWI_transmitByte(0xE0, 0xAA);
mSleep(50);
I2CTWI_transmitByte(0xE0, 0xA5);
mSleep(50);
I2CTWI_transmitByte(0xE0, 0xE2);
mSleep(50);
writeString_P("Done\n");
return 0;
}
Dieser läuft auch schön bis zum Ende durch(Am Ende wird "Done" ausgegeben). Wenn ich jetzt allerdings den Sensor abfragen will funktioniert das immernoch mit 0XE0, nicht mit 0XE2.