Estoy intentando comunicarme con SIM900
con PIC18F2520
. Puedo enviar comandos AT usando UART pero también quiero recibir su respuesta como OK
o ERROR
.
A continuación se muestra el código para la interrupción de RX
#pragma code rx_interrupt = 0x8
void rx_int(void)
{
_asm goto rx_handler _endasm
}
#pragma code
#pragma interrupt rx_handler
void rx_handler(void)
{
while (!DataRdyUSART()); //if data is ready to receive
for(k=0;k<=20;k++)
{
Rx[k] = getcUSART(); //read a byte from UART
}
UARTSend("We have read everything"); //I have a put a breakpoint here
if(strstr(Rx,"OK") != NULL)
{
UARTSend("OK received"\n);
}
PIR1bits.RCIF = 0; //Clear the interrupt flag
}
Arriba está el código que estoy usando para recibir datos de SIM900. En el modo de depuración, envío UARTSend("AT\r");
. He puesto un punto de interrupción en UARTSend("We have read everything");
. En esta línea, busco el búfer Rx en la variable, pero no tiene OK
, en cambio tiene pocos caracteres aleatorios, mientras que en el terminal obtengo la respuesta adecuada.
Entonces, cómo leer la respuesta de SIM900. El enfoque lo estoy utilizando correctamente o no. Por favor, ayuda.