Hola amigos del foro "todopic"!
Al igual que NANO1985 puedo decir que este es otro proyecto de mi lista finalizado.... aun que esto no es tan cierto!
Por fin pude hacer funcionar el reader TMS3705, diseñe la antena tal como aparece en una de las notas de aplicacion, debo decir que aunque muy "artesanal" funciono desde el principio sin necesidad de modificaciones.
El verdadero problema siempre fue lograr comunicarme con el reader por medio del pic ya que como otros ya han comentado en este hilo si se utiliza la USART por Hardware no es posible tener control sobre la linea TX(esta la debemos poder controlar para poder dar el tiempo al reader de energizar la antena durante +/- 50ms para cargar el condensador delTAG), el terminal TX del pic debera estar a 0 durante el tiempo de carga del TAG.
Lo mismo paso con la USART por software... el compilador activa el pin TX por defecto para cumplir la funcion de USART( debo decir que si entendemos la comunicacion serial RS232 desde el principio buscariamos otra solucion que no sea la USART por hardware ni por software a menos que nos permita controlar el pin TX y los compiladores con librerias para USART por Software normalmente cumplen con el estandar de la norma lo que quiere decir que la linea TX por defecto sera pusta a 1 logico.... pues del otro extremo del enlace, el otro equipo (PC, PIC , ETC) estara revisando cuando esta linea TX pase a 0 logico lo cual le indica que empezara a recibir bytes de informacion)
Como la tasa de transmision Baudios(BPS) del reader no es estandar (15625Bps) lo que hice fue algo mas sencillo y a la vez un poco rudimentario. Como lo harias con un pic sin USART!
Como lograrias comunicarte con este periferico(reader TMS3705) si no cuentas con un pic con Usart incluido en Hardware o si no existieran librerias predefinidas para la comunicacion serial? Si tienes un pic con Hardware dedicado para usart pero ya lo tienes ocupado cumunicandote con un pc y como no utilizaras un tasa de transferencia estandar las librerias o el mismo hardware no te permiten tener control sobre los terminales TX y RX del pic?... en esta caso la prioridad es el TX!
Pues si se puede hacer... y en microcontroladores basicos como el PIC16f84 sin necesidad de librerias podemos encontrar muchos ejemplos de como lograrlo!. Lo que si les aseguro es que haciendolo de esta manera si no entendian plenamente el estandar RS232, ahora si lo entenderan, pero lo mas importante... tendran el control sobre los terminales de que utlisen pa la comunicacion serial, esto es TX y RX!
Habiendo dicho esto solo quiero comentar que en mi proyecto despues de recibir el Byte Diagnostico desde el reader(el que me indica si el sistema de la antena funciona o no) que efectivamente es AF, puedo leer varios tipos de tags, ademas de esto la informacion la envio al PC para saber que es lo que estoy recibiendo desde el Reader y finalmente hago el calculo del CRC de los bytes de datos del tag y lo comparo con el CRC enviado por el tag para asegurarme que no hay errores en la comunicacion, este calculo del CRC funciona perfectamente!
Consejos:
Necesitan tener pleno control sobre los pines de TX... yo intente por Hardware USART y librerias de Software USART y nunca logre controlar este pin del microcontrolador.
A diferencia de lo que se ha dicho en alguna parte de este hilo no toda la informacion que se resive desde el reader viene invertida... por ejemplo, el Byte Diagnostico para saber que la antena funciona ok es:0xAF(10101111)... si esta informacion llegara invertida este seria 0x50(01010000) , pero esto solo sucede con la informacion que se resive desde el TAG... el Byte diganostico proviene del Reader solamente. Tambien se ha dicho que se deben intercambiar lso Nibles es decir tomando como ejemplo el Byte diagnostico supuestamente recibiriamos 0x05 (00000101) si esto fuera enviado desde el TAG( es ejmplo, recordemos que el Byte diagnostico no procede del tag) y tendriamos que cambiar los nibles y negarlos o invertirlosm asi:
Tag-->0x05-->Reader--->0x05-->{PIC -->0x05-->0x50-->0xAF}.
Los nibles no necesitan ser intercambiados pues el tag envia el bit menos significativo de cada Byte y en la misma forma el PIC va guardando la informacion, por ejemplo si uno de los Bytes enviados por el TAG es 0x50 eso es lo mismo que recibe el PIC.... pero el valor real de este Byte seria 0xAF pues la informacion viene invertida.....
Espero haya sido de ayuda!!!!
