Академический Документы
Профессиональный Документы
Культура Документы
Ahora con respecto al micro, este soporta las especificaciones 2.0A y 2.0B, es decir
todos los tipos de mensajes anteriormente mencionados, mensajes con identificador
estndar y extendido, tramas de error, etc., lo nico que no soporta, son las
caractersticas del bus, es decir, no tiene los pines CANH y CANL, por el contrario
tiene los pines can tx (salida de datos) y can rx (entrada de datos), los cuales van
conectados al circuito integrado MCP2551 de microchip, que es un transceptor del
protocolo CAN, y transforma los datos del pin tx en los niveles lgicos respectivos para
CANH y CANL, y viceversa, para el caso de rx, por ahora veamos los modos en los que
puede trabajar el PIC 18F458:
Todos estos modos en que trabaja del micro se seleccionan mediante los bits REQOP
del registro CANCON<7:5>, con excepcin del modo de reconocimiento de errores que
se hace con los bits RXM del registro RXBnCON, ya se ver esto en detalle.
El PIC 18f458 contiene 3 buffers de transmisin, de los cuales cada uno ocupa 14 bytes,
para enviar un mensaje:
El bit TXREQ del registro TXBnCON (siendo n el numero del buffer (de 0 a 2))
debe estar en cero indicando que el buffer est limpio y sin mensajes pendientes.
Como mnimo, los registros TXBnSIDL, TXBnSIDH y TXBnDLC deben haber
sido cargados, si es un mensaje con identificador extendido, el bit EXIDE del
registro TXBnSIDL debe estar en uno, y los registros TXBnEIDH y TXBnEIDL
deben haber sido cargados.
Se deben habilitar o deshabilitar las interrupciones.
Si hay datos presentes, estos deben ser cargados en los registros TXBnDm,
donde n es el numero del buffer, y m el nmero del byte del dato.
Esto le dice al mdulo que buffer que contenga un mensaje listo va a ser enviado antes
que cualquier otro, no tiene nada que ver con el arbitraje del bus en el protocolo, para
asignar esta prioridad se editan correspondientemente los registro TXPRI1:TXPRI0 del
registro TXBnCON, la mxima prioridad es 3 (11 en binario), si dos buffers tienen la
misma prioridad, el del nmero ms alto ser transmitido primero.
Iniciando transmisin:
Para iniciar la transmisin de un mensaje, el bit TXREQ del registro TXBnCON se debe
colocar en uno, estando en uno los bits TXABT, TXLARB y TXERR se ponen en 0,
ms sin embargo no significa que inici la transmisin, significa que est listo pero que
el mdulo espera a que el bus est disponible, luego iniciar la transmisin con el
mensaje de mayor prioridad que est listo. Cuando la transmisin se ha completado
exitosamente, el bit TXREQ se pone en cero por hardware, TXBnIF del registro PIR3 se
pondr en uno generando interrupcin si fue habilitada, en cambio, si la transmisin del
mensaje ha fallado, el bit TXREQ seguir en uno indicando que el mensaje est
pendiente y, dependiendo de la condicin, se pondrn en uno los bits que al iniciar la
transmisin se pusieron en cero.
Si el mensaje comenz a ser transmitido pero encontr un error, el bit TXERR se pondr
en uno, IRXIF se pondr en uno generando interrupcin si fue habilitada, pero si por el
contrario lo que hizo fue perder el arbitraje, entonces el bit TXLARB se pondr en uno.
Recepcin de un mensaje:
RXB0 es el buffer de mayor prioridad, tiene dos filtros de aceptancia, y obviamente una
mascara, RXB1 es el de menor prioridad, tiene 4 filtros y una mascara, es decir, en total
el micro puede tener simultneamente 6 direcciones, las cuales dependiendo
exclusivamente de la mscara podrn aceptar los mensajes que tengan dichos
identificadores, los bits FILHIT0 del registro RXB0CON y los bits FILHIT2:FILHIT0
dicen que filtro de aceptancia fue el que habilit la recepcin del mensaje.
Si RXB0 contiene un mensaje vlido, y existe otro mensaje valido listo para ser
recibido, puede ocurrir una sobrecarga, a menos que el bit RXB0DBEN del registro
RXB0CON est en uno, permitiendo que el mensaje sea transferido al buffer RXB1.
Los bits RXM del registro RXBnCON determinan que tipo de mensaje es tomado como
valido, en 00 reciben todos los mensajes con cualquier tipo de identificador pero sin
errores, en 01 recibe mensajes con identificador estndar, en 10 recibe mensajes con
identificador extendido solo s el bit EXIDE del registro RXFnSIDL est en uno,
cuando los bits RXM estn en 11, los buffers aceptan todo tipo de mensaje, incluyendo
los que contengan error, en este caso, la porcin del mensaje recibida antes de la trama
de error ser escrita en el buffer.
Son usados para determinar si un mensaje va a ser cargado en el buffer o no, cuando un
mensaje vlido es recibido, el identificador es comparado con el filtro, si es igual,
entonces ser cargado al buffer respectivo.
Las mscaras son usadas para determinar que bit del filtro es comparado con el identificador
del mensaje, es decir, que bits tienen que ser exactamente igual al del filtro, si el bit 0 de la
mascara vale 0, entonces no importar el contenido del bit 0 del identificador del mensaje as
en el filtro sea un valor contrario al del mensaje, pero si est en uno, el bit del identificador del
mensaje tiene que ser exactamente igual al del filtro, o de lo contrario todo el mensaje ser
rechazado
Las mscaras y los filtros solo pueden ser ledos y modificados en modo de
configuracin, de resto se leern como cero.
Rata de Baudios:
Todos los dispositivos deben trabajar a una misma frecuencia de transmisin, se deben
de ajustar el prescaler de baudios, y el nmero de tiempo de quanta en cada segmento.
Nominal bit rate es el nmero de bits transmitidos por segundo, asumiendo una
transmisin ideal con un oscilador ideal, y es definido a un mximo de 1Mbps, no lo
intenten a ms por que no sirve, ya lo prob.
En la frmula del nominal bit time, las sumas deben dar como mnimo 8Tq y mximo
25 Tq.
Algunas reglas
____________________________________________________________________
Si creen que es muy dificil hacer todos estos calculos, pues, les tengo la solucin, aqui
hay un pequeo programita en javascript, que les calcula la frecuencia a la que trabajar
el micro, solo llenen los valores, donde dice frecuencia, es la frecuencia del oscilador
del micro (en Mhz), tengan en cuenta que no incluyo si tienen pll activado, en dicho
caso, coloquen la frecuencia final, el brp, es el prescaler, el tq, es
phase_seg1+phase_seg2+prop_seg+sjw, los tiempos de quanta, aqui esta:
Frecuencia BRP
Tq Rango
No est de ms decir que la casilla de seleccion, solo escojan el rango en la que deseen
que salga la respuesta, si les parece que este mtodo no es bonito, por que por cosas de
la vida no les gusta guardar paginas webs, entonces bajen este archivo de excel, tiene
una formula que hace lo mismo que este programita en javascript, la unica diferencia es
que el prescaler est ya dado en la tabla, y el rango tambien, fijense, aqui est:
link1
Y si por cosas de la vida, no tienen excel, y no pueden conseguir open office, pues, aqui est la
otra solucin, un pequeo programilla .exe que le calcula los valores, casi igual que este en
javascript, ya pase a la version 2, mejore los botones y eso, slo cuestiones grficas, de resto es
lo mismo, aqui est:
link1
Un programa en ensamblador
Este programa es lo ms sencillo del mundo, uno de los dos micros es el transmisor, lo
nico que hace es enviar una secuencia de 0 a 9, y espera a que el otro micro lo reciba,
si el otro no lo recibe, este se queda enviando el dato tooooodaaa la vida, hasta que
alguien le conteste.
El programa receptor solo hace, esperar por los datos y revisar si le han llegado, luego
los muestra por el puerto provisto para esto, lo mismo hace el transmisor, entonces, si
ves que ambos cambian a la vez, es por que qued bien montado, el cristal usado es de
4Mhz, el programa funciona de maravilla, se los aseguro, aqui est el plano, muy mal
hecho , y a parte tiene un error, nada ms fijensen que CANH esta conectado con
CANL, que absurdo, lo hice por cuestiones de diseo pero no ca en cuenta, si se me
queda tiempo, lo vuelvo a hacer, pero bueno, que se le hace:
Si es transmisor,
Si es receptor,
Si no quieren bajar los archivos y desean verlos de una, aqui estn en su versin de
html, peguenle una hojeada, y si no les sire, pues, ni modo, que pena hacerte perder el
tiempo...
Can Tx
Can Rx