CAN AVR
Contents
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 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
- CAN support is a feature request of openservo project : http://openservo.com/Software_Feature_Requests
OpenServo 2.1 is based on AVR ATmega168 .