Part Number: TM4C1294NCPDT
Tool/software: Code Composer Studio
Currently, I2C is implemented as I2C_MODE_BLOCKING and do not have any timeout!.
This is known issues with TI-RTOS (See: https://e2e.ti.com/support/embedded/tirtos/f/355/t/490300)
I think, the following command locked the task, in function I2CTiva_transfer in I2CTiva.c file,
Semaphore_pend(Semaphore_handle(&(object->transferComplete)),
BIOS_WAIT_FOREVER);
I did manualy Semaphore_post in my other task when task locked detected. I think this is not a suitable way.
Is there any solution ?
/*
* Problem : when I2c device is locked task also locked.
* Bug fixed : task locked resolved.
* But device is still locked !
*/
if(i2cDev.getHandle()){
/* Indicate transfer complete */
I2CTiva_Object *object = ((I2CTiva_Object*) i2cDev.getHandle()->object);
Semaphore_post(Semaphore_handle(&(object->transferComplete)));
}
must include "I2CTiva.h" file.
#include <ti/drivers/i2c/I2CTiva.h>