Como has probado hasta ahora? Porque por lo que entiendo el PIC debe enviar un Byte de Inicio (0x01 o 0x81) y luego de terminada la transmisión el módulo envía el byte de diagnostico mientras TXCT este en 0 o después de 20 ms de cambio de fase.
ésto es lo que estoy haciendo....
tengo un puerto serie emulado de 19200 baudios en los pines del puerto B 0,1 que mandan a la pc los datos que recibiré en un futuro jejeje si es que puedo...
y un segundo puerto serie que es la propia usart del micro... que está configurado en 15625 baudios para poder efectuar la comunicacion con el TMS3705...
acá va el firm,...
unsigned short Dato=0, *Rec;
unsigned char Mje_ini[] = "Inicia";
unsigned char Mje_AntOK[] = "Antena Sintonizada!";
unsigned char Mje_AntNOP[] = "Error en antena!";
void Text_To_Usart(unsigned char *m) //FUNCION QUE MANDA UN MENSAJE POR EL PUERTO
{ //SERIE EMULADO EN EL PORTB
unsigned char j;
j = 0;
while(m[j] != 0)
{ // Send TEXT to serial port
Soft_Uart_Write(m[j]);
j++;
}
Soft_Uart_Write(0x0A); // salto de linea
Soft_Uart_Write(0x0D); // Retorno de carro
}
void main() //PROGRAMA PRINCIPAL
{
delay_ms(1000);
PORTC = 0b01000000;
TRISC = 0b10111100;
PORTB = 0b00000000;
TRISB = 0b11011111;
delay_ms(1000);
Soft_Uart_Init(PORTB, 0, 1, 19200, 0); // PC <----> uC 19200baudios
Text_To_Usart(Mje_ini); // muestra en el terminal de la Pc el mje "inicia"
//lo que me indica que el puerto funciona correctamente
//////////////////////////// INICIA CONFIGURACION DEL TMS3705 //////////
PORTC.F6=0; // baja linea TX
delay_us(50); // 50us pasa al modo IDLE
PORTC.F6=1; // levanta linea TX
delay_us(2050); // espera el Tinit = 2.05ms o 2050uS
PORTC.F6=0; // baja linea TX
Usart_Init(15625); // inicializa usart uC <---> RFiD a 15625 Baudios
//--------------------------------------------------------------------
delay_us(2140);
DB: Usart_Write (0b10000001); // manda configuracion
while (Usart_Data_Ready()==0) // espera byte de diagnostico
{
PORTC.F0=1; // enciende led rojo que indica la espera
PORTC.F1=0; // mas que nada, es un indicador
}
Dato = Usart_Read();
Soft_Uart_Write(Dato);
if (Dato==0xAF)
{
PORTC.F0=0;
PORTC.F1=1; //enciende led verde como indicador
}
else goto DB; //si no es el caracter esperado vuelve
delay_us(49360); //retardo de aproximadamente 50uS
Usart_Init(15625); //habilita el puerto serie nuevamente
PORTC.F6=1; //coloca en 1 la linea TX
////ESPERA LA TRAMA DE DATOS Y MANDA POR EL PUERTO SERIE EMULADO EN EL PORTB ///
TD: while (Usart_Data_Ready()==0)
{
PORTC.F0=1;
PORTC.F1=0;
}
PORTC.F0=0;
PORTC.F1=1;
Dato = Usart_Read();
Soft_Uart_Write(Dato);
goto TD;
for ( ; ; );
}
MUCHAS GRACIAS SUKY por seguirme...
saludos