From RepRap
Jump to: navigation, search


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.


Usual Arduino AtmegaXXX have no CAN controller. I see 3 methods to get it :

  1. AVR using SPI/UART/... connecting to a CAN controller like MCP2515 :
  2. Emulate the CAN controller with external interrupt register and threading support :
  3. 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

share work with others open source projects

OpenServo 2.1 is based on AVR ATmega168 .