Buenas tardes me gustaría hacer una consulta a ver si alguien da con el problema, debe de ser una tontería que no veo.
Estoy programando una UART entre dos dispositivos, dispongo de un analizador lógico, y desde el PIC32MX mando el mensaje y el dispositivo responde correctamente, lo se por que lo veo en el analizador lógico el problema es que el PIC32MX no detecta que tiene datos para leer, y por lo tanto no me entero de lo que llega del dispositivo.
la configuracion de la UART es :
UARTConfigure(UART_MODULE_ID, UART_ENABLE_PINS_TX_RX_ONLY);
UARTSetFifoMode(UART_MODULE_ID, UART_INTERRUPT_ON_TX_NOT_FULL | UART_INTERRUPT_ON_RX_NOT_EMPTY);
UARTSetLineControl(UART_MODULE_ID, UART_DATA_SIZE_8_BITS | UART_PARITY_NONE | UART_STOP_BITS_1);
UARTSetDataRate(UART_MODULE_ID, GetPeripheralClock(), 4800);
UARTEnable(UART_MODULE_ID, UART_ENABLE_FLAGS(UART_PERIPHERAL | UART_TX | UART_RX));
y esta es la función la cual llamo directamente despues de enviar para leer la respuesta a mi mensaje:
UINT32 GetDataBuffer(char *buffer, UINT32 max_size)
{
UINT32 num_char;
num_char = 0;
while(num_char < max_size)
{
UINT8 character;
while(!UARTReceivedDataIsAvailable(UART_MODULE_ID));
character = UARTGetDataByte(UART_MODULE_ID);
if(character == '\r')
break;
*buffer = character;
buffer++;
num_char++;
}
return num_char;
}
el programa se queda esperando en while(!UARTReceivedDataIsAvailable(UART_MODULE_ID)); no tengo ni idea de porque, ya que como he dicho en el analizador logico veo que el dispositivo responde y ademas correctamente, sin embargo el PIC se queda perpetuamente esperando.
muchas gracias y un saludo.