FILTROS Y MASCARAS........
Hola yo de nuevo.... ahora quiero explicar lo que es el filtro y las mascaras.... no se si esta explicacion venga como anillo al dedo o si ya lo tienen claro en el foro. por si las dudas ahi les va.
recuerdan cual es el objetivo de una interrupcion?? pues con los filtros y las mascaras pasa algo similar, cuando un mensaje viaja por el bus lleva un identificador pero en el caso del bus CAN dicho identificador debe ser comprobado por cada nodo que integra la red pero esto roba consumo de tiempo ya que todo mensaje generara una activacion en la bandera de recepcion del bus y si a esto le agregamos que en el bus se transfieren cientos de mensajes pues esto produciria una comprobacion exaustiva por cada nodo para estar "escuchando" el bus en todo momento, degradando el procesamiento del PIC, recordemos que el pic no debe fijar toda su atencion en el bus, solo debe poner atencion o "escuchar" los mensajes con los identificadores que le interesan.
y es aqui donde entra en accion el criterio de arbitraje y mascaras.... pero nada mejor que un ejemplo:
SUPONGAMOS QUE SE USA CAN ESTANDAR CON IDENTIFICADOR DE 11 BITS
supongamos que deseamos programar el nodo A para que reciba mensajes con un identificador que vayan del 0x7F0 al 0x7FF.
COMO LE HACEMOS?? pues simple primero aplicamos la mascara.... si ponemos a 1 los bits del registro mascara indicamos que esos mismos bits del mensaje son los que queremos poner a prueba en el filtrado.... son los bits a los que debe enfocarse el filtrado...
entonces si nos fijamos segun lo explicado en las mascaras podemos ver que la variacion se da en los ultimos 4 bits y no nos importa que valor tenga ya que si vienen presedidos del 7F entonces este mensaje MERECE LA ATENCION DEL PIC.... entonces eso quiere decir que los bits a poner a prueba son estos osea el 7F....
hasta aqui termina la chamba de la mascara entonces podemos concluir que el valor a introducir en la mascara para este caso es..... 111 1111 0000 ... indicando que los bits a poner a prueba del identificador son el 7F y los ultimos 4 bits no nos interesa ponerlos a prueba ya que no nos importan si tienen 1's o 0's .....
sigue el filtro y esto tambien es algo sencillo... pues aqui es muy facil... el filtro tambien es un registro de 11 bits al igual que la mascara y es obvio que lo encontremos partido por que el pic trabja solo registros de 8 bits.... pues bueno el registro filtro debe tener en 1 los bits que queremos que sean 1 en el identificador y 0 en caso contrario...
pues como los primeros 4 bits no importa si son ceros o unos pues en el registro filtro tmpoco importa y es indistinto poner un cero o un uno.... pero en los bits que la mascara selecciono (7F) si es importante poner lo correspondiente... en este caso en particular pues la cosa nos quedaria asi....
filtro= 111 1111 XXXX donde X no importa si es 0 o uno.....
espero que haya quedado claro...
recapitulando para aceptar identificadores de mensaje del 7F0 al 7FF, el regisro mascara y filtro queda asi...
mascara= 111 1111 0000
filtro = 111 1111 XXXX
suponiendo el caso de que el rango identificador sea distinto al anterior por ejemplo del 6F0 al 6F0 la cosa quedaria asi...
mascara= 111 1111 0000
filtro = 101 1111 XXXX
espero se haya entendido..... por mi es todo.... solo no se si alguien en el foro pueda explicarme el CODIGO DE REDUDANCIA CICLICA por que no se que valor es X en el polinomio generador... si tengo una idea que el polinomio cambia con cada transferencia valida y supongo que esto se traduce en mayor seguridad para el bus y lo vuelve complicado de implementar de otro modo que no sea por controladores CAN que ya incluyan dicho modulo CRC..... la verdad es que este tema no lo toque a fondo por que no encontre una corrida paso a paso del polinomio y por que los pics ya lo incluyen y no es necesario calcularlo por que como digo ya viene en el silicio....
y tambien el tema de la sincronizacion... no lo pude entender muy bien.... de hecho en mi tesis hace 2 años use el programa bit timing calculator que me evito muchos problemas.. comprendi lo general pero no pude comprenderlo a fondo.... pues es todo por mi ojala exista respuesta y si no a investigar y suerte... aa y los codigos se los dare muy pronto por aki desentierre algunos discos
OJALA Y HAYA SIDO DE UTILIDAD ESTE POST. SALUDOS