Electronic – arduino – If one has used PIC uC, how different is it to migrate to using a different uC like say Arduino or ARM

arduinoarmmicrocontrollerpicprogramming

There seem to be quite many vendors making uC and some uC are more popular than others say for example Arduino and PIC because of their low cost and abundant features and ARM because of its high performance. What I wish to know is, how different is it to move to ARM uC after one has used a PIC and has understood its peripherals and the language/compiler (C++ with CCS C Compiler for example).

Do ARM, Arduino or other uC from TI and other perhaps less known names have big difference in what they can do compared with a PIC?

Let me make the question more simple. Suppose I have done a project using PIC that makes use of its timer, ADC, comparator, SPI and I2C peripherals. Now suppose that I wish to move to a new microcontroller altogether, lets say ARM or Arduino. I understand that the toolset (IDE) used with these other microcontrollers to compile code shall be different, but in what are the things one shall have to learn before being able to migrate such a project to other microcontrollers? I am not sure if ARM and Arduino microcontrollers have such peripherals or if they have more peripherals not found in PIC. I read somewhere that ARM has some graphics engine as well, it sure looked like a wierd block diagram of the processor.

I suspect that one shall have to learn a new plethora of functions and method to write ISR e.t.c, but I am not sure of the full list which I think is not very long.

Best Answer

All microcontrollers can be programmed in a C-like language, all of them have the same basic peripheral types and comparable cores as far as features go. When you stay within the realm of real-time MCUs, they are pretty easy to jump between.

Probably the biggest differences are simply in the idiosyncracies of the tools. If you are accustomed to the ease of having preprogrammed bootloaders in your AVRs (down to pre-programmed USB bootloaders in the -U parts), you may have some trouble with having to buy a compatible JTAG programmer for certain ARM chips. If you're accustomed to the rich debugging features of JTAG-enabled chips, it may be a bit of a culture shock to go back to in-bound debugging in low-end PICs and AVRs. But that's something you get used to after using a toolchain for a while. Also, with some chips there is quite a significant cost associated with using their tools, e.g. Freescale and Renesas.

Don't be afraid to choose a different chip once in a while and learn to work with it. It will broaden your view and enable you to use more optimal MCUs in the future

Addendum: this doesn't really apply when you go to non-realtime processors like the ARM A-series, x86 and Cell. These are very difficult to program for on a low level, tools are expensive and the chips are hard to get and implement.