diff --git a/c/src/lib/libbsp/arm/raspberrypi/i2c/i2c.c b/c/src/lib/libbsp/arm/raspberrypi/i2c/i2c.c index 9bf90ec..070e05a 100644 --- a/c/src/lib/libbsp/arm/raspberrypi/i2c/i2c.c +++ b/c/src/lib/libbsp/arm/raspberrypi/i2c/i2c.c @@ -64,6 +64,9 @@ typedef struct static int rpi_i2c_bus_transfer(rpi_i2c_bus *bus) { + int i; + volatile int delayvar; + while ( bus->remaining_bytes >= 1 ) { /* If reading. */ if ( bus->read_transfer ) { @@ -90,6 +93,9 @@ static int rpi_i2c_bus_transfer(rpi_i2c_bus *bus) /* Generate interrupts on the TXW bit condition. */ BCM2835_REG(BCM2835_I2C_C) |= (1 << 9); + for ( i = 0; i < 512; i++) + delayvar++; + /* Sleep until the TX FIFO has free space for a new write. */ bus->task_id = rtems_task_self(); if (