Hallo,
ich versuche mit dem Master des PIC von einem Slave zu lesen.
Das erste Byte bekomme ich noch mit, danach bekomme ich nur ich einen High Pegel auf der Datenleitung und den Clock auf der Clockleitung.
Im Beispiel, von MPLAB, wird nur ein Byte gelesen, ich möchte aber vier oder mehr Bytes lesen.
Hat Jemand ein Beispiel in dem mehrere Bytes von der I2C gelesen werden?
Oder sieht Jemand den Bug den ich gemacht habe?
Hier der angepasste Code:
void I2CRead(int device, char adr, unsigned char* data,int length)
{
int result=0;
int i=0;
I2C_7_BIT_ADDRESS slave;
//Start Einleiten
result = StartTransfer(device, FALSE);
// Adresse und R/W senden
I2C_FORMAT_7_BIT_ADDRESS(slave, adr, I2C_READ);
result = TransmitOneByte(device, slave.byte);
Wait();
//Daten lesen
while(i<length)
{
if(I2CReceiverEnable(device, TRUE) == I2C_RECEIVE_OVERFLOW)
{
DBPRINTF("Error: I2C Receive Overflow\n");
}
else
{
while(!I2CReceivedDataIsAvailable(device));
*data = I2CGetByte(device);
Wait();
data++;
i++;
}
}
StopTransfer(device);
}
Gruß Robert