Atmel v Microchip v Freescale

Having now worked with all three uControllers and their respective IDEs, I thought it would be beneficial to start a milestone summary of my observations.To begin, I recently went back to the Microchip PIC family on account of their superior battery life (ultra low watt sleep) - which it seems is a full order of magnitude better than freescale or atmel. I note that microchip has recently? added a C compiler to the free IDE, in addition the PICs now come with a matrix multiplier which increases the speed of multiplication to a single cycle, this they say is on par with DSP speeds, and I think quite relevant to the UAV community as these applications are multiplication-intensive, and often cpu bound.IDEFreescale - nice processor wizard makes setting up peripherals easy - step-through debugging. Supports real USB devices.Atmel (Arduino) IDE sucks frankly, no step-through debugging, 2 processor selection. - Arduino is stuck in FTDI-landMicrochip - now supports step through debug on all modern flash uControllers from C source. Supports real USBCyprus Psoc. Frankly I wet my pants. PSoC has cool features like a programmable gain Op Amp, and now some higher current outputs and HighSide drivers integrated? - but the complexity and learning curve look steep, in addition to which the noise aspects of the PGA seem unusable for a wheatstone bridge for example. It's more of a Machine descriptor IDE, than a sequential language. Reminds me of the Parallax Propeller, but the Cogs are analog.ADCFreescale 12 bitsAtmel / Microchip 10 bitsCyprus - Include signal conditioning onboard, (ie gain and filters)?Propeller fuggetabouditUSBMicrochip will sublet it's USB Id'sFreescale, good USB Support, USB ID's are prohibitively expensive.Atmel/Arduino (fuggetaboudit)Learning CurveArduino is far and away the winner here.Next are the PIC Basics - which are easy but expensive.Freescale in C is not bad - free with excellent entry level packages (ie Spyder).Microchip recently bought Hi-Tech (pdfsucks) so I expect the PIC in C to improve. It's already free and usable, though installation requires it's own webinar.I'd like to hear how these observations may compare to others out there who have used multiple toolchains for entry-level ucontroller projects.
E-mail me when people leave their comments –

You need to be a member of diydrones to add comments!

Join diydrones

Comments

  • I've use Freescale HC08's and Cypress PSOC, and been looking closely at Atmel.

    All three of these MCUs have similar instruction sets. It appears that Atmel and Cypress chose the Motorola route when designing their processors. That is, the Motorola-style instruction set vs the Intel-style instructions set. So it is relatively easy to switch between the assembly languages.

    The Freescale instruction set is almost the same as we were using in the '80's, and was based upon the PDP11 minicomputer. It is a beautiful instruction set, that is very orthagonal. That is, you have a collection of instructions (add, increment, etc), and a collection of addressing modes (register, stack, ram, rom, etc) and these combine to form a matrix. I think this is the best instruction set for writing an operating system, because you are always using tables (arrays) for function pointers and such, and the indexed addressing modes are so handy for this. It's really easy to work with the stack as well, this is I suppose why Freescale says their instruction set generates efficient C code.

    On the other end of the scale, PIC seems entirely unsuitable for an OS. A great little bit twiddler, super fast, and cheap, so good for small single-purpose applications.

    Atmel is perhaps about 5x as fast as the freescale. I like the single cycle instructions, as these will take the jitter out of your timer interrupts. I generally work with a single foreground process (a main loop) and a single background process (a timer interrupt, typically 100 microseconds or less). With Freescale, the time til the interrupt is serviced will depend upon the number of cycles of the instruction that is executing when the interrupt occurs. The variance in cycle count per instruction is I think between 1 and 9 cycles. That translates into timing jitter. A subtle point I suppose.

    Cypress is a wonderful thing, with it's programmable hardware blocks. It took me 3 weeks to figure out how to use it, about 3x as long as I would have expected. You need to have some low-level hardware design experience to make good use of the programmable hardware.

    I like the Freescale and Cypress IDEs. Don't know about Atmel, never tried it.

    Freescale has great support, and tons of info on their web site. I have not been able to use the Cypress web site with Safari. I tried their phone support once, and got someone who knew nothing. By contrast, Freescale has some very switched on application engineers.

    I am sticking with Freescale for the moment, just because I feel more confident the company will be around. With ARM moving into 8-bit territory, there is bound to be a shakedown in 8 bit market.














    Atmel has the speed. I would guess typically 5x the speed of Freescale. It has this great instruction set with just about every instruction being a single cycle. This takes the timing jitter out of your timer interrupt.
  • @bGatti
    No worries, I am a little biased towards AVR's, but like Marby said, there is such a great community behind them ( www.avrfreaks.net ). Atmel is buying a lot of new companies lately too, like QTouch and Meshnetics, so the future is looking good. I am glad Microchips recent bid to buy them out failed.
    Atmel has seen how they have done things wrong in the past, and are trying to fix that. You can often pick up their development tools for half price, recently the $300 JTAGICE MKII was selling for $150, probably below cost.
    One sore point with Atmel at the moment is a XMega, it is taking a *very* long time to come to market, we have been hearing and waiting for it for years, and sadly, I think it will come too late.

    @Eric Jay
    I am talking about programming an AVR on a breadboard. See, you paid for the development board which essentially included the programmer on the board. Like you say, this changes with ArduPilot.

    I think Arduino is great, for hardware :-) I have lots of Arduino boards here as they make great AVR dev/breakout boards. Of course I have never used them with Arduino though :-D

    I will say something on propellor too, although I don't want to say too much :-)
    The Propellor has it's 160MIPS and its 8 COG's, but should people really be comparing a Propellor to an AVR or an ARM, in a "160MIPS > 50MIPS" fashion? I am skeptical.
    See, the propellor has little to no onboard peripherals, meaning something that on an AVR/ARM, would be done in hardware, like generating a PWM pulse, needs to be done in software on the Propellor. Interfaces like SPI and I2C, which are all included as hardware peripherals on an AVR/ARM, needs to be "bit-banged" on the Propellor. Once you use a "cog" each for PWM, SPI, I2C, USART etc, your only left with 80MIPS, even less if you use more "cogs" to do more "peripheral" functions.

    So is there really so much of a benefit of the 160MIPS over say, an ARM7 which does 60MIPS, but also has the hardware peripherals to do many things "in the background"?

    One thing I forgot to mention, XMOS ( www.xmos.com ). They look very interesting. Think Propellor, but 32 "real-time programs", 1600MIPS. They are pretty amazing little chips for the size.
  • Cypress PSoC 1 is neat, but wait 'til you see PSoC3 (8051) and PSoC5 (ARM CM3). Faster, industry standard processors, more programmable digital, new IDE, flexible analog routing, and better analog blocks.

    See the Cypress 2008 Annual Report and 2009 Proxy Statement for more info.

    Disclaimer: I am a chip designer at Cypress Semiconductor on the PSoC3/5 design team.
  • "I often wonder how much credit the statement "arduino needs no programmer" has. Who here has actually programmed an arduino without ANY purchased hardware, like usb<->serial adapters.?"

    Maybe I'm doing it wrong, but I have used nothing but a regular old Male A to Male B USB cable to connect my Arduino directly to my PC. No additional hardware. Of course, that changes with the ArduPilot.

    I'm not in the same league as most of you guys here. As Chris says, the Arduino has blown away all others BECAUSE they appeal to guys like me that can make the thing work for a variety of projects with very little fuss. Guys who are heavily involved in microcontrollers don't NEED Arduino, but it wasn't really intended for them.

    I used to program PIC chips for ham radio projects, but if I went to lunch I had to be retrained. I doubt I could get all the makeshift crap back together to program one right now. But those little Arduinos are easy enough that I can get back up to speed quickly if I go do something else for while. (And life is all about doing something else for awhile).

    Eric
  • 3D Robotics
    I think that community is as important as technology. I do take the points about the limintations of the Arduino IDE and AVR chips, but the Arduino user base, energy, ideas and libraries puts all the others to shame. There's a lot to be said for cheap, easy and fun!

    For amateur development, Arduino has blown away all the others in terms of the installed base. Someday something will unseat it, but I don't see it yet.

    BTW, one other platform that I've been hearing more about is the Beagle board, a TI open source effort around a n ARM core. It's still early days, but worth watching:
  • Angus...
    Thanks for the AVR perspective. Yes - I was at first enamored of the Arduino, and in fact gave away two boards to friends which I think might find Microcontrollers exciting. I guess I'm deeply disappointed that Arduino is a serial board in a USB world (and no FTDI does not make it USB) - it makes it virtual serial.
    I agree that the Atmel community is remarkably good - as to why the AVR Studio was ignored, I want to assure anyone it wasn't to dis the Atmel, I just never got around to that one, which is why I proposed this thread - can't do everything. One thing I noticed about the new atmels are interupt modules which can perform tasks independant of the main loop. To be honest I have an AVRbadge, which doesn't come with either a serial or a usb connection for reprogramming, compared to the Freescale Spyder which /is/ a USB dongle with step through debugging out of the box.
  • Developer
    What pieces are need for Cortex M3 development, entry level start up costs?
  • I came to the arduino from Xilinx Spartan FPGA's, and even though the FPGA is more powerful and uses a far superior language (VHDL > C), I have been having more fun with the arduino because of no hassle linux support (ISE Webpack RPMs are annoying to set up on Debian) and easy to use libraries.

    The AVR's may not score the highest, but they have the best community and I think that they are the most fun to use.
  • Expected a chip with an integrated IMU & microcontroller to materialize by 2007 but it never happened. The money for microcontroller development just isn't there compared to treasuries & green tech.
  • I used a freescale DSP once for controlling autoflight. The DSP did look good on paper, the A/D converted with 12 bits, but way too noisy, the actual precision was 9,5 bits (worse than an AVR or PIC). The MAC was too short for the A/D´s 12 bits, and I had to code the IIR in assembly of a dsp I was very anxious to dump, it was a very bad experience - certainly my last with freescale. The worst part was when I got a broken float library in the only (and expensive) C compiler - have you ever tried to do coordinates calculations with integers? And Kalman filters? That one I will not forget anytime soon. From then on, I discard everything that is not GCC (and everything that is freescale). I am pretty happy with atmel and arm´s (always with gcc), I used large numbers of the small PICs, programmed in assembly, they are good machines, the internal reset caused me great deals of heartburn (I trusted them...), the freescale reset was very good, never tried the avr´s, will never try the arm´s (using lpc´s right now, with plans to try the stm32).
This reply was deleted.