proba definiendolo como
int8 sendATcommand(char *ATcommand, char *expected_answer, unsigned int timeout);
Sino fijate en la linea que te da error, no tengo la menor idea cual puede ser ese error, ni donde puede estar.
Si compilo, pero no funciona... nuca entra en el segundo do { if(!kbhit(uart1))...} (se supone que es cuando no hay datos pendientes por recibir?)
Pero, lo hice de esta forma:
// Interrupcion int_RDA
#int_RDA // Interrupción por recepción de datos UART1
void RDA_isr1(void) { // Interrupción recepción serie USART
c=0x00; // Inicializo caracter recibido
if(kbhit(uart1)){ // Si hay algo pendiente de recibir ...
c=getc(uart1); // lo descargo y ...
buffer1[xbuff1++]=c; // Añade carácter recibido al Buffer
}
}
// Función de envío del comando
int8 sendATcommand(char *ATcommand, char *expected_answer)
{
int answer=0,i;
clear_buffer1();
do{
fprintf(uart1,"%s",ATcommand); // Enviar Comando AT
if (strstr(buffer1, expected_answer)>0){ // Verifica la respuesta que debe tener
answer=1;
clear_buffer1();
}
} while (!answer);
return answer;
}
//******* Borrar Buffer1 ****************
void clear_buffer1(void){ // Inicia a \0 buffer1
int i; //
for(i=0;i<30;i++){ // Bucle que pone a 0 todos los caracteres en el buffer
buffer1
=0x00; //
} //
xbuff1=0x00; // Inicializo el indice de siguiente carácter
}
Será necesario el timeout?, porque pienso que bastaría con un retardo después de enviar el comando para esperar la respuesta.