CAN AVR
About
CAN ( Controller-area network ) on AVR chipsets. for information about CAN/CANopen stack , go here CANopen. for general information about CAN chipsets and physical topics , go CAN.
ard'ware
Usual Arduino AtmegaXXX have no CAN controller.
- AVR using SPI/UART/... connecting to a CAN controller like MCP2515 :
- Emulate the CAN controller with external interrupt register and threading support :
- Use automotive serie of AtMega that have CAN controller :
- ATmega16M1
- ATmega32M1
- ATmega64M1
- ATmega32C1
- ATmega64C1
M serie has one 12-bit High Speed PSC (Power Stage Controller) :
- Non Overlapping Inverted PWM Output Pins With Flexible Dead-Time
- Variable PWM duty Cycle and Frequency
- Synchronous Update of all PWM Registers
- Auto Stop Function for Emergency Event
supported by avr-libc , it that can be useful.
They have JTAG _AND_ ISP. Using ATmega let us in the arduino community , our tool set and knowledge.
So the more valuable is ATmega64M with 64kb like sanguino but the cheapest could fit needs of most people. We perharps need to add a DIP switch to configure CAN ID and a CAN transceiver.
more infos on this atmel products at http://atmel.com/products/canvan
To reduce cost, on a distributed network, we don't need the electronic part to program/debug in each node so we can make a minimalist board, like arduino mini pro. Such header board card should cost around ~8€ and can easily be integrate in our electronic parts.
Possible CAN transceiver
interface between the CAN protocol controller and the physical bus. The device provides differential transmit capability to the bus and differential receive capability to the CAN controller.
- NXP : PCA82C250
- ATMEL : ATA6660
- Microchip : MCP2551
There is a lot of pin out compatible chip.
LIN+CAN transceiver in one chip :
Possible LIN transceiver
JTAG
- AVR Dragon low cost JTAG/ICSP ( 50 $ ) , see :
- AVR JTAG ICE clone , kits start at 15 € , a good choice for DIY guy.
- low cost parallels jtag ( 5$ ) , slow but cheap ( for occasional needs as bootloader flashing ).
Of course, JTAG interface is not useful for user who don't need bootloader flashing and embedded software developing