|
They're both 8-bit microncontrollers. They both have comparable feature sets in terms of peripherals and configurations-- timers, ADCs, serial interfaces, PWM outputs, etc. The PICs have been around longer and have a larger selection of chips. The difference, as it applies to why I chose AVRs after working with PICs for a couple years, is the architecture and instruction sets.
The PICs are "simple" in that there are only 30-some ASM instructions to learn, which has often been a selling point. However, AVRs were specifically designed for higher level languages (such as C) and thus a branch of GNU Utilities was built for them. This is great for us Linux nerds. You can program your microcontrollers using your favorite Linux IDE (I use Gedit) and compile/program the chip with a simple makefile based on GCC and the other GNU tools. You can even do some debugging with gdb.
I am very, very glad I switched. Although I had to get setup with a new programmer and learn new register names and the like-- it was worth it. And they're similar enough that it's not a huge effort to learn the other.
I use microcontrollers for robotics projects, and in one particular robot was able to switch from a PIC16F877 to an AVR ATMega8 without having to change much of the circuit. And it was much easier coding in C and using gcc-- a compiler for which I have grown accustomed to it's error messages and general usage.
|