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. I see 3 methods to get it :
- 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
IMHO , the 3rd method is the more efficient.
AtMega automotive serie
- 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.
more infos on this atmel products :
see Noduino development
Possible LIN transceiver
- CAN support is a feature request of openservo project : http://openservo.com/Software_Feature_Requests
OpenServo 2.1 is based on AVR ATmega168 .
- http://ecomodder.com/wiki/index.php/MPGuino , this community need CAN support too.