RTOS: MQX 3.8.1
Use the following code to send a start condition and address.
// set transmit mode: bit 4 = 1;
MCF_I2C0_I2CR |= MCF_I2C_I2CR_MTX;
// send ACK after receive
MCF_I2C0_I2CR &= ~MCF_I2C_I2CR_TXAK;
// set MSTA to 1 to generate START condition
MCF_I2C0_I2CR |= MCF_I2C_I2CR_MSTA;
// set slave address
MCF_I2C0_I2DR = address;
//* wait for bus busy *//
loop_count2 = 0;
while(!(MCF_I2C0_I2SR & MCF_I2C_I2SR_IBB)) //if bus is idle, wait until busy
if(loop_count2 > LOOP_TIMEOUT)
// wait until transfer finish
_lwsem_wait( &i2c_ready_semaphore );
MCF_I2C0_I2DR = *(unsigned char *)(data + i); //load data onto i2c bus.
This code works fine, but if I remove the _time_delay(5), the start condition and address do not get sent but the data does. For our application, we read a lot of bytes of data. It would be a big time saver if we could remove the time delay. Any idea what is going on here?