Hola nuevamente,
Me encuentro ante un pequeño(
) problema. Tengo q enviar un codigo entre PICs si o si mediante RS232 (aunque se q seria mas logico usar IC2). El codigo consiste en palabras en hexa (o decimal), de hasta 4 bytes de longitud.
En otros post vi q usaban las fuciones putc(), printf(), etc. pero solo sirve para codgo ASCII, no?
Hasta ahora, cuando mandaba o recivia algo entreba en un loop q chequeba los flags para ver si habia terminado de mandar (o recivir). Los programitas funcionan bien hasta cierto punto en el que el micro q denomino master deja de recibir. Por supuesto ya verifique q la señal llega correctamente, pero los flags q verifico en el soft parecen no ser afectados.
Aca les mando las subrutinas de recepcion y transmision (estoy usando el entorno del MLAB):
void transmit (int palabra) //Transmite una palabra por el puerto serie
{
TXREG = palabra;
while(TXSTAbits.TRMT==0)
{}
}
int recieve () //Recibe una palabra del puerto serie
{
int a=0;
RCSTA = 0b10000000;
RCSTA = 0b10010000;
while(PIR1bits.RCIF==0)
{
a++;
if (a==10000) //time out trucho a los 0.5 seg
{
return 0;
}
}
return RCREG;
}
Supongo q deberia manejar el tema por interrupciones, no? Pero sigo con la duda de q estoy haciendo mal, y por otro lado si tengo q mandar y recibir byte por byte. Si alguien tiene alguna sugerencia o rutina q me ayude seran muy bien recivida.
Muchas gracias, Nyquist.