PIC como emisor de tramas CAN

Para la programación del PIC como emisor de tramas, hemos programado el microcontrolador de forma genérica, empleando la librería existente sobre el bus CAN de alta velocidad (según norma ISO 11898) y el conexionado al módulo MCP2515.

Las entradas se han configurado con la resistencia interna pull-up del PIC, de forma que trabaja con lógica de control negativa (activación con 0V y desactivación con 5V).

Todas las entradas GPIOs configuradas sólo emiten una única trama en su activación y en su desactivación, con la finalidad de no sobrecargar el bus con tramas repetidas.

Hemos definido las GPIOs impares (d3, d5, d7 y d9) como entradas activables por un interruptor que establece el envío de una trama de identificador dado en su activación y otra en su desactivación.

Hemos definido las GPIO pares (d2, d4, d6 y d8) como entradas activables por un pulsador que establece el envío de una trama de identificador dado (de activación) y su opuesta (de desactivación) para cada una de sus pulsaciones. Para ello hemos empleado una variable de control de estado de la salida y otra de control de estado del pulsador.

Emisor CAN

 

Las GPIOs 10, 11, 12 y 13 están reservadas para el conexionado con el integrado MCP2515 de la siguiente manera:

Conexionado PIC-MCP2515

Para los datos de las tramas se ha elegido como identificador, en cada caso, el número de la entrada digital que se emplea para la activación o desactivación. El campo de datos de la trama está formado en todos los casos por un único byte, siendo su valor de activación 0x61 en entradas pares y 0x08 en impares. Y su valor para la desactivación es 0x0F en entradas pares e impares.

Trama ID03-08

Trama ID03-0F


 
[Sketch del emisor CAN para IDE de Arduino]
[Librería SPI]
[Librería mcp_can]