Wednesday, November 25, 2009

Are you a PIC fanatic or an AVR lover?

Twenty years ago life was easy. Nobody really used the term embedded yet and there were only a few microprocessors to choose from. The choice was roughly limited to Intel’s 8051, the 6809 from Motorola, MOS Technology’s 6502, the Z80 by Zilog and maybe the H8 from Hitachi. These were all 8 bit processors. Personally I was a fan of the 6502 and I did not like the 8051. As a hobbyist building a computer system was rather a challenge because of the complicated board design due to the external memory and peripherals, but soldering was easy.
The integration of memory and peripherals into the chip turned the microprocessor into a microcontroller and made board design much simpler. The PIC that was introduced by Microchip somewhere in the early nineties was simple, some had EPROM on-board, and was cheap and easy to come by, which made it a good choice for hobbyists. The AVR introduced by Atmel a bit later was one of the first to include flash program memory which made it a good choice for hobbyists too.
Nowadays embedded has become a buzz word thanks to the thousands of different microcontrollers on the market. 8 bit, 16 bit, 24 bit, 32 bit, you name it, and it can be had. Some of the oldies are still around, like the 8051 in many incarnations, or the Z80 (by Rabbit Semiconductor). They are now faster of course and come with more options, but they are essentially the same as 20 years ago. Today building a microcontroller system is easy and within reach of most hobbyists, although the soldering has become somewhat more difficult.
Choosing a microcontroller on the other hand has become complicated. If we stick to the hobbyists we see two large user groups: PIC users and AVR users. Of course lots of hobbyists use other controllers, but these two families are probably the most popular. Now which family do you use? Are you a PIC fanatic or an AVR lover? Both families have flash memory and free development tools, both are cheap and easy to get. So how did you get into AVR or PIC? I have not been able to choose between the two, maybe you can help me? You can post your comments on this blog.


  1. Hi chip eater...
    do you have more pictures?


  2. I came to the PIC because I realy like the MikroE EasyPick3 board. Now I am using a EasyPick5 wich support almost every MicroChip Pic.

    If I had to make a choose again it would be difficult because the same board is also availabel for the Atmel AVR.

  3. For my little projects I use PIC 16F84 or 16F628. I like them because they are popular, cheap, there are a lot of examples and tutorials in internet, the programmer is cheap to buy or easy to make and the MPLAB IDE is free. But the first reason was I found a book in spanish about 16F84 very easy to understand. I miss more book written in my own language.

  4. I use PIC, after reading a series of simple pullout articles in another magazine.

    I also use 8051, which I learned in college.

    My point here is I've stuck with what I learned on, and I learned on what was most easily accessible (cheap/available) at the time.

    I'm by no means a platform evangalist, If another platform was as easily accessible as either of these were at the time, then I don't need a massively compelling reason to begin learning it.

    It's the accessiblity of self-educational materials that influences me most

  5. I have been using the Atmel 90S2313, ATTiny2313, ATMega88 and ATMega32U4 chips for small commercial contracts and hobby projects. Economical tools, eg Bascom compiler, and the AVRFreaks newsgroup with its real world embedded engineers have been big pull factors in the selection of the Atmel product range. I have had no regrets in standardising on this microcontroller family.

  6. As the other i use most of time PIC 16 & 18 for small project and the PIC32 with graphics library for my test to write some games on this CPU.For my
    Robotics project i use 3 x M16C CPU (1 x TinyDisplay + 2 x TinyBrick) where i can easy use the RS485 communication ;)
    The only bad thing about PIC32 is that we cant use sdram , and it's why i just get a gp2x wiz , this open source console contain ARM + 3D cpu with everything you can need without to have to devellop a full board yourself.Now we just have to made a little board for use external I/O etc and you get the perfect little electronic platform :)

  7. I use Atmel just because I am familiar with it's architecture and range of products.

  8. µC are like girls.
    You fall in love.
    You get used to.
    Sometimes you want to get rid off them...

  9. Advanced Virtual RISC 8 bits fanatic and MEGA-AVR lover :-)
    I'm using mainly BASCOM-AVR and AVR Studio/AVR-GCC.

    I sometimes use the PIC18 MCUs and MPLAB C18 or MikroC compiler.

  10. TI's MSP430 is a great family:
    - very clean instruction set;
    - good C compilers available;
    - lots of devices to choose from with various combinations of memory and peripherals;
    - very easy to interface with Chipcon RF transceivers (now owned by TI);
    - AND very low power, perfect for battery operation.

    My only gripe is that TI have never embraced the open-source philosophy. The mspgcc toolchain is excellent, but suffers from lack of support from TI. However, the offical IDE "Code Composer Studio" is free up to 16KB, which is enough for most applications. And it is based on Eclipse, which is the industry standard.

  11. Advanced Virtual RISC 8 bits fanatic and MEGA-AVR lover.
    I’m using mainly BASCOM-AVR and AVR Studio/AVR-GCC.

    I sometimes use the PIC18 MCUs and MPLAB C18 or MikroC compiler.

  12. I began using a pic following a programmer in Elektor. I'm an enthusiast and not working in this line of bussiness. Finding programming software was hard because the software mentioned in the article wasn't available anymore. Anyway I wanted to build a frequency meter initially. The pic16f84 as so many start with was great for this. I downloaded hi-tech picc and started programming.

    I've now programmed 16f84, 16f870, 16f628 and 630, 689 and 10F200.

    My applications:
    Thermostat 2
    Camera timer
    charger timer
    Running led present

    I've stuck with the pic because there's a very steep learning curve for any uC brand. You need:
    - hardware programmer
    - Software programmer
    - compiler or assembler
    - documentation
    - intimate knowledge about the device
    - Good forum for support for both compiler and the device you're programming
    - Good example code, libraries for LCD, i2c, button handling etc.

    Pics are generally well covered with any of the above. Avr has also good tools but it would take a lot of time and effort to switch. I've thought about it as some AVRs have some unique features like multiple PWM outputs (most pics have only one or two). The newer generation of pics however do have more and many other features borrowed from other micro controllers. The lineup of microchip is sufficiently broad that I don't feel the need to switch.

    I've build up a library of routines and functions that just work and are hard to port to another brand uC. It's much faster to start up a new project with the pic with my current, tested library than getting or building a new programmer for an avr for example, researching for good C compilers, programming software etc. See what I mean?

    Someone that has set his teeth into avr or any other controller will feel the same way. I could imagine that commercial projects will just look at what controller does the job and just find/hire a developer to make it happen.

    Programming software and windows version compatibility changes over the years. Some stop developing the software so you have to look for other software to program newer devices. Especially the case for JDM programmers. I had to use 4 different programming apps over the years because of this. That's trouble enough as it is, so switching to another controller would put me through this all over again, plus all the other stuff I need to have before it's worthwhile to program on them.

  13. I love the MSP430, it's real 16bit, perfect orthogonal register set, low power, cheap, free mspgcc compiler, easy to program and has a nice line up for all applications...

  14. I`m an Avr lover. When I started with microcontrolers I chose Atmel because it`s been easy to learn programing with Bascom.

  15. I'm a PIC lover.
    I started with the PIC16F84 years ago, it was simple to use, some BASIC languages available and it wasn't expensive. Later I switched to PIC16F876 and now I use the PIC24F family with the Microchip C compiler. When I switched to the PIC24F family I did a lot of research on AVR but stayed with PICs because of the cheap and easy to get demo boards, I already know that they work :), but most important because of the much better developed USB support.

  16. The AVR was developed at the university of NTNU in Norway. I'm studying there, so I'm of course an AVR lover. (We get AVR's for free... ;) )

  17. I started with PICs, then AVRs, and lately been spending most of my time with Parallax's 8 core Propeller chip. I prefer the AVRs because of the flat memory architecture and the availability of good cheap/free development tools (other than assembler). Same goes for Parallax who provide free dev tools as well. Atmel really seems to "get" the new "maker" community more so than Microchip making it a more comfortable fit for the things I do. Parallax also gets this in a major way and I've never seen a more customer focused company than Parallax. Their forums are top-notch and have done a great job of keeping them friendly for people of all levels to get involved. For many who are timid about joining in, this can make a big difference in what platform you decide to go with. For me building modules with the AVR chips and gluing them together with the Propeller chip has been a great (and powerful) way to go.

  18. I thought the choice is mostly made between the programming languages used. With PIC you can use C(++) to program however I think the largest part of the PIC users use Basic and their choice to use PICs was influenced by the fact that they could use Basic and the many online resources for this.

    Most AVR users use C(++) to program it and in that community it's the most used programming language, again with a hugh amount of online resources.

    The usage of Basic for PIC makes it a microcontroller widely used by people starting with programming for the first time. AVR users are most of the time already longer into programming before they start using microcontrollers.

  19. I started with DSP F240 then went to dspic (and not PIC), because I need computation power and 16 bits. I found that ICD2 and pickit2 are very cheap developping tools compared to TI.
    We can program in C.
    There is a good forum and now dspic 33F are very versatile (assigning functions to pins).
    I still develop on TMS F28xxx

  20. I use the family 9S08 of freescale with the open source bdm and code warrior.
    it's easy to use code warrior with the C or the C++.
    with the family 9s08 i can work on the usb, the CAN, lin , ....

  21. I'm teacher from Highschool of Telecommunication and Broadcasting technology in Prague ( We are teaching microprocesor technology from the 8080 and Z80 times. The embedded world we have entered in the era of Intel 8048 processor, so logically it has continued with Atmel 8051 clones.

    But then first PICs with flash technology came to market. PIC16F84 was very nice processor for education purposes (easier instruction set, nice integrated peripherials) and there was one great plus. It was possible to ask for the free samples for our students to build various kind of the school projects or even their own constructions. And this factor was very strongly motivating them to learn how to program such devices. At that time we have switched in our curricula from Atmel to PIC.

    Today we are teaching 8 to 16 bit PICs and dsPICs, programming in assembler and Microchip C30, and we are one of the members of Microchip Academy Programme.

    The support from Microchip (free development tools, nice evaluation boards and programmers which are always fully open, so our students can build them themselves, availability of many application notes and code examples allover the Internet etc.) seems ideal to us for the teaching in the broad ranges of project difficulty (it begins with the simple obligatory "blinking LED" projets for every course attendant and ends with long term facultative projects like PIC based simple web server etc.).

    Due to Microchip policy it is not possible to ask Microchip free samples for individuals in our country today (at least one have to pay posting charges), but as member of Microchip Academy Programme we have twice asked for samples for the school projects and both times they have sent us sample bunches for whole classes immediatelly.

    So that's why we are PICmaniacs :-)

  22. I did a lot of programming on a 6502 in the past. I was a big fan of that CPU and I actually still have a device running on a 6502 today.
    When I got a job, I programmed on a 6301 CPU, which was a Hitachi version of the 6801 with built-in peripherals. Today we mainly use PIC processors at work. I hate those CPUs actually. We program them in assembler, but PICs really are bad for assembler programming with all this bank switching stuff. Bugs guaranteed!
    My personal preference goes to the Freescale V2 Coldfire microcontroller series. Powerful CPUs and a great development environment! Odd that coldfire hasn't been mentioned yet!

  23. I use AVR.
    Principal advantage: dev tools are available for win/mac/linux (I'm a Mac user) with a really good compiler (avr-gcc).
    Now I develop on the Arduino platform (AVR too) which has a really good community.

  24. I love AVRs for the following reason:

    -I got used to use STK2000 which is very easy to implement

    -CodeVisionAVR is very helpful IDE, it writes most of the code and you just complete it :)

  25. Although I use it for many years, I am not a C lover and I prefer Pascal (Delphi/Lazarus). It was natural to seek for Pascal compiler in embedded world, too. I have decided to do a research and evaluate what's available in embedded world and then make a decision. I had no particular preference, and I was open minded and determined to choose the best compiler, and then adopt it's hardware platform. After a lot of time spent, I have chosen E-Lab's PICco Pascal, but even before I started to be really productive, E-Lab has switched to AVR and made AVRco Multitasking Pascal with tons of drivers and libraries and powerful simulator and debugger. That's how I ended up in an AVR world, and I haven't regretted ever since.

  26. Microchip PIC is good as

    - Free MPLAB IDE
    - Free C Compiler
    - Free resources to make a good programming tool
    - Good application notes
    - Complete new project at lowest cost


  27. It's PIC for me. Electrically sound and rugged, it is pretty hard to break a PIC. And also reasonably understandable from the programming side of things. Nevertheless I think AVR is good stuff as well. I'm not too fond of Cypress though, rubbish USB solutions and open collector pin drivers, yuck.

  28. My prefered CPU is AVR.
    AVR, is most orthogonal and compatible through all the familly.
    We found excellents open sources multiplatforms tools compilers debuggers, etc..

  29. I use the AVR and the BASCOM compiler with my students at a secondary school in Auckland, New Zealand. Each year 200+ students develop simple and complex projects. I chose Bascom and AVR because the chips are very cost effective and the BASCOM compiler is free up to 4KB code size! check out

  30. At my current workplace we use PICs, programmed in assembler and C. They seem indestructible, and the datasheets are well written. I used Motorola's 68HC11 a long time ago and found it also enjoyable and very well documented.

  31. I use PSoC, which provides several analog and digital functions along with a microcontroller core. This is a fascinating architecture, where you can switch functionalities on-the-fly, e.g. change a capacitive detection module into an ADC to measure some external signals and the switch ack to original function.
    Initial microcontroller architecture was Cypress specific, but new family (PSoC3) is 8051-based.

  32. I started with PIC16F84A, and then i fall in in love with PIC.
    the reasons are

    -Free Development tools
    -lot of book written for PIC
    -i think PIC is smarter then AVR

    AVR actually steal the idea of PIC

    although AVR has many open source

  33. I started on Commodores and Apples simply because of the price of used systems in the early 1990s, so that colored my preferences for quite a while. I moved to the PC around 1996 and emulated my old Apple IIe games. ;)

    I was interested in the BASIC stamps just because of my love for the implementations on the Apple II/Commodore 64&128 systems but I never actually bought one of the PICs to try out. The same thing applies to looking at the DSPs from TI. I got intimidated by how hard it would be to solder one, and the prices for premade boards.

    Recently, I looked into devices with the least number of pins, supporting USB or other more up-to-date protocols/interfaces and the 18F series looks interesting. I just want USB+REALLY small pin counts to make for easy projects for other people to duplicate. Something like a "first uC project" chip. The PIC18F2455 (28p) has even less pins than an 8088 or 6502 (40p). The PIC18F14K50 (20p) has half as many! At prices below $5 in single quantities and ease of assembly, these are ideal for classrooms.

    For performance, those are obviously too slow for something like a CD-ROM/Hard drive emulator or MP3 player. I'll have to wait until I run into the limits of these chips before I go to the better ones. I've essentially started over in my assembly language knowledge with the PICs and 8051-based micros. BTW: Harvard architecture is cool. :)