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.
Las GPIOs 10, 11, 12 y 13 están reservadas para el conexionado con el
integrado MCP2515 de la siguiente manera:
- pin SCK de MCP2515 con d13 de PIC
- pin SI de MCP2515 con d11 de PIC
- pin SO de MCP2515 con d12 de PIC
- pin CS de MCP215 con d10 de PIC
- GND y Vcc de MCP2515 con GND y 5V de PIC
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.
[Sketch del emisor CAN para
IDE de Arduino]
[Librería SPI]
[Librería
mcp_can]