
PIC vs. AVR - gnosis
http://www.ladyada.net/library/picvsavr.html
======
eck
I've programmed both, though, not a PIC for many years now... PICs are just
_weird_.

The AVR is a pretty typical Harvard RISC: 32 registers, memory load/store,
direct/indirect jumps, stack pointer pointing at ram, etc. It's still 8/16
bit, so some pairs of 8 bit registers work like 16 bit registers.

The PIC has one accumulator register; ram is a set of (manually selected)
register banks. Instructions operate on the accumulator and an operand in the
selected bank. The stack is _totally_ _separate_ from other RAM, so it's fixed
size (8 maybe?) and can only be used with call/return.

I don't want to be judgmental; there's certainly some strange virtues to PIC,
like the lack of any real state to save/restore on ISR entry/exit; but they
really just don't fit my mental concept of a CPU.

Exercise for the reader: Given the stack and register bank selection, which
one of these has better C compilers?

(Still, if you're learning something new, gamble is right: ARM is the future.)

~~~
theatrus2
PIC is clearly designed for non-C assembly code, with all global variables.
Its ancient.

PIC32 is actually a MIPS core (sorta, kinda, maybe). It actually uses GCC to
compile (good luck on compiling your own GCC though). However, there isn't
much appeal with CM3 now on the scene.

------
gamble
ARM.

Seriously, Cortex-M3 microcontrollers are _much_ more powerful than any AVR or
PIC at the same price, with roughly the same level of complexity as a high-end
PIC/AVR.

ARM already dominates high-end embedded systems, and is quickly penetrating
the low end. Atmel and Microchip both see the writing on the wall; control of
Atmel's ARM line was a major factor in Microchip's failed hostile takeover bid
for Atmel several years ago. If you have any professional interest in embedded
systems, it may be a better bet to invest time in ARM rather than an 8-bit
architecture.

There are a few arguments left in favor of PIC/AVR: ultra low power
consumption, pin count, and price for the low-end chips, DIL package
availability, and support for hobbyists in the forums. I'm not sure a
difference of $1/unit and a few uW/MHz is relevant for hobbyists, and the
Arduino is probably a better solution for people who aren't comfortable
working with SMD. (Which honestly isn't that hard, anyway...)

~~~
dkersten
How do the low-end ARM devices compare to 16bit and 32bit AVR and PIC
offerings?

Recently, I have been doing a lot of development for both the (8bit)
AT90USB162 and the (16bit) PIC24HJ. The PIC24HJ range of 16bit PIC
microcontrollers packs an awesome punch at 40 MIPS, has mostly 1-cycle
instructions and two hardware SPI peripherals (which, for me, is important. On
the other hand, the AT90USB162 only has one). I have been interested in ARM,
though, so am wondering if it would be worth switching before I become to
reliant on other microcontrollers.

~~~
theatrus2
There is no 16bit AVR.

Cortex-M3 runs circles around any 8-bit parts in most settings - single cycle
instructions, hardware multiply and divide, 32bit registers, good interrupt
processing support. There are even power efficient parts (Energy Micro EFM32,
STM32L, etc). The other nice part about CM3 is the family support: Its one
compiler toolchain and one debugger toolchain. With CMSIS (a software library
standard) its "easy" (if you don't use a specific peripheral in a specific
way) to move code across vendors as well.

PIC24 is a good half step, but the proprietary toolchains are a major turn
off. PIC32 is at least a MIPS core (with some vague gesturing on Microchip's
part for their GCC port - good luck actually building their horrible code dump
though), but doesn't appear to be energy-use competitive with CM3 or CM0.

~~~
dkersten
Do you have a recommendation for a specific CM based microcontroller?
Preferably one that is well stocked on mouser and has USB support.

Also, any tips on getting started? How do I program them? Ideally, I'd get an
in circuit programmer, rather than a development/demo board.

~~~
flashingleds
The LPC1768 is quite popular and you should never have problems with stock. I
got started with a $30 development board from NGX (google "1768 blueboard")
paired with a $30 USB jtag programmer from the same store. The older LPC2148
was also quite popular for hobbyists, but it's ARM7 not CM3.

Since I was more interested in learning the micro then screwing around with
toolchains, I just spent the money and got a personal license for Rowley
Crossworks ($150). It took me under an hour to go from software installation
to flashing an LED, so I'm pretty happy with that decision.

------
limmeau
No mention of MSP430?

Some of them come in DIL packaging (at least the little ones). The
architecture has a GCC port and two free-as-in-small-glasses-of-beer
commercial IDEs. The assembly language is bearable. The cheapest development
board (with single-stepping debugger support) is $4.30.

~~~
yardie
Have they sorted out the Mac support? I have one and haven't been able to get
the toolchain to communicate with my MacPro. and no way am I booting into
Linux just to push firmware.

------
flashingleds
"PIC vs. AVR" means two different things depending on your context. The
intelligent context is discussing which family best suits somebody new to
microcontrollers (which thankfully is what this link is about). The moronic
context is entrenched hobbyists arguing about why the family they chose is
superior.

Anybody who reads this headline and already understands what the acronyms mean
is probably going to assume it's the latter.

------
asciilifeform
PIC - because of its simplicity.

On the PIC, I get the feeling of being "master of all I survey." The
instruction set and system architecture fit in a magazine-sized booklet.

The AVR, on the other hand, is a ball of goo, quite like the x86.

------
ladyada
good god, i wrote this nearly -five- years ago

please do not take it seriously at this point, its completely outdated

~~~
eande
The time stamp from the webpage is "May 17, 2011 20:07"!

But if it is outdated a PIC-AVR-ARM update would be interesting. Personally I
used all three, but prefer nowadays PIC because of the wide-ranging
PIC24&dsPIC and Microchips great stacks offering.

------
Palomides
for me, an architecture with a GCC port is a big selling point (between these
two, that's AVR)

------
swalberg
The thing that got me into PICs was a generous sample program. You could sign
up and get sent a few parts at no cost.

~~~
phirephly
No cost, plus a $50 programmer. What is the PIC equivalent of the $20
USBtinyISP?

~~~
dkersten
I got a PICKit 2 on ebay for about $10.

------
rcfox
This article manages to mention just about every insignificant detail (who
cares about the crappy IDEs they ship with?) and almost none of the actual
properties of the chip!

You would expect at the very least memory comparisons, clock speeds, and power
consumptions. Maybe a mention of timers, ADCs, UARTs, etc.

~~~
chamakits
I think it concentrated more on the aspects of how pleasant each is to use.
The analysis was light on the technical side because ladyada targets more
hobbyists (like myself :D ) and prototype creation rather than people that
want to create a product that will be manufactured, reproduced and distributed
on a large scale.

Though I haven't used PIC personally though, I have used AVR before, and found
it quite pleasant and flexible, though in all fairness I can't compare it to
PIC. I will say though that there seems to be more resources and documentation
on PIC than AVR (I bough a really good book on embedded devices that was based
on PIC, and though the examples were helpful universally, they were targeting
the PIC crowd specifically.)

------
guan
I know that a lot of people hate Arduinos, but I like the flexibility of
prototyping on an Arduino, moving the same code to a raw ATmega328, and then
(for teeny projects) maybe port to an ATtiny for cost and space savings.

------
st3fan
One thing that Lady Ada forgets to mention is that Microchip is working on
MPLAB-X. A cross-platform version of their MPLAB IDE. I've used it on both
Windows and OS X and it works well.

It runs on Wind, OSX and Linux.

This might be their way to get back into AVR territory. At least when it comes
to hobbyists/makers.

