RobotMichi
25.09.2010, 13:52
Hallo,
ich habe folgendes Programm für die M32 geschrieben, das die Lichtsensorenwerte von der Base ausliest:
#include "RP6ControlLib.h"
#include "RP6I2CmasterTWI.h"
#define RP6_I2C_ADDR 10
void I2C_transmissionError(uint8_t errorState)
{
writeString_P("\nI2C ERROR - TWI STATE: 0x");
writeInteger(errorState, HEX);
writeChar('\n');
beep(200, 50);
}
void readLightSensors(void)
{
uint8_t Lichtsensoren[4];
I2CTWI_transmitByte(RP6_I2C_ADDR, 13);
I2CTWI_readBytes(RP6_I2C_ADDR, Lichtsensoren, 4);
clearLCD();
setCursorPosLCD(0,0);
writeIntegerLCD(Lichtsensoren[0] + (Lichtsensoren[1]<<8), DEC);
setCursorPosLCD(1,0);
writeIntegerLCD(Lichtsensoren[2] + (Lichtsensoren[3]<<8), DEC);
}
int main(void)
{
initRP6Control();
initLCD();
//I2C-Bus initialisieren
I2CTWI_initMaster(100);
I2CTWI_setTransmissionErrorHandler(I2C_transmissio nError);
startStopwatch1();
while(true)
{
if(getStopwatch1()>100)
{
readLightSensors();
setStopwatch1(0);
}
}
return 0;
}
Am Anfang bekomme ich immer drei Fehlermeldungen im Terminal:
I2C ERROR - TWI STATE: 0x20
I2C ERROR - TWI STATE: 0x20
I2C ERROR - TWI STATE: 0x48
danach funktioniert das Programm tadellos.
Woran könnte das liegen?
lg
Michi
ich habe folgendes Programm für die M32 geschrieben, das die Lichtsensorenwerte von der Base ausliest:
#include "RP6ControlLib.h"
#include "RP6I2CmasterTWI.h"
#define RP6_I2C_ADDR 10
void I2C_transmissionError(uint8_t errorState)
{
writeString_P("\nI2C ERROR - TWI STATE: 0x");
writeInteger(errorState, HEX);
writeChar('\n');
beep(200, 50);
}
void readLightSensors(void)
{
uint8_t Lichtsensoren[4];
I2CTWI_transmitByte(RP6_I2C_ADDR, 13);
I2CTWI_readBytes(RP6_I2C_ADDR, Lichtsensoren, 4);
clearLCD();
setCursorPosLCD(0,0);
writeIntegerLCD(Lichtsensoren[0] + (Lichtsensoren[1]<<8), DEC);
setCursorPosLCD(1,0);
writeIntegerLCD(Lichtsensoren[2] + (Lichtsensoren[3]<<8), DEC);
}
int main(void)
{
initRP6Control();
initLCD();
//I2C-Bus initialisieren
I2CTWI_initMaster(100);
I2CTWI_setTransmissionErrorHandler(I2C_transmissio nError);
startStopwatch1();
while(true)
{
if(getStopwatch1()>100)
{
readLightSensors();
setStopwatch1(0);
}
}
return 0;
}
Am Anfang bekomme ich immer drei Fehlermeldungen im Terminal:
I2C ERROR - TWI STATE: 0x20
I2C ERROR - TWI STATE: 0x20
I2C ERROR - TWI STATE: 0x48
danach funktioniert das Programm tadellos.
Woran könnte das liegen?
lg
Michi