CAN AVR

From RepRap
Revision as of 11:24, 29 December 2008 by Ronan (talk | contribs) (ard'ware)
Jump to: navigation, search

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 :

  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 :
    • 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.

IMHO , the 3rd method is the more efficient.

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

see Noduino development

Possible LIN transceiver

JTAG

Of course, JTAG interface is not useful for user who don't need bootloader flashing and embedded software developing

share work with others open source projects

OpenServo 2.1 is based on AVR ATmega168 .