My point is not to start a flame war, or have an opinion based fight. I really just need advice based off of my experience.

I am pretty experienced with using an arduino, I understand C, & C++ fluently. What is a 8 bit microcontroller I could start with that would give me a solid foundation and understanding? I understand the programming and theory, but I am lacking practical experience. Besides the chip, do I need an IDE? or an IDE & a compiler?

  • 1
    \$\begingroup\$ I think that you need to move on to 32bit arhitectures, ST or NXP microcontrollers. It'll be hard at the beginning, but worth later. Great board on which to start is STM32F429i-Discovery board :) \$\endgroup\$
    – Laki
    Commented May 29, 2015 at 13:25
  • \$\begingroup\$ IMO, much better to learn on an 8-bit (or other simple) platform, then move later. There are just fundamental ideas that are harder to learn on an ARM Cortex. \$\endgroup\$ Commented May 29, 2015 at 13:30
  • \$\begingroup\$ So, why not use an ATMega and leverage your experience with the Arduino? Or if you want something more minimalist and close to the metal, maybe a PIC and use assembly or assembly + C (the appropriate family would depend on what you want to do). \$\endgroup\$ Commented May 29, 2015 at 13:34
  • \$\begingroup\$ I guess I am lacking with practicality, so, I need a microcontroller, and IDE and a linker? Is that correct? \$\endgroup\$
    – Adam
    Commented May 29, 2015 at 13:52
  • \$\begingroup\$ Take a look at this: stackoverflow.com/questions/2843700/… \$\endgroup\$
    – codedude
    Commented May 29, 2015 at 13:54

4 Answers 4


"Arduino" as a hardware platform is useful because of the range available for almost every niche, even if you choose not to use the Arduino IDE & toolchain & bootloader - you can install your own standard AVR8 toolchain (i.e. GCC + AVRDUDE + avrlibc + linker + etc, there's usually packages available to make installing all this easay), or Atmel's Windows-only-based 'Atmel Studio', and other options, & use an AVR device programmer, and your own preferred text editor. With this you can take off the Adruino 'training wheels', get dirty with the MCU's registers, and really understand how to drive it.

The same can be said of just about every other mainstream MCU family, there's usually cheap development boards available for virtually all of them, though without so much of the community & hobbyist-level hardware add-ons that surrounds the Arduino. Each will have a toolchain of their own.

I would recommend sticking with 8-bit MCUs for a while - get to know how to really drive them without the Arduino training wheels, because this will hold you in good stead to deal with the substantially greater complexity you'll encounter in 32bit MCUs.

The IDE is just a pretty GUI layer on top of the underlying toolchain, and is optional, but ideal for beginners - setting up a toolchain & make system is not easy unless you're already familiar with it from other programming work. Opinions vary greatly on which IDEs are 'best' (from those available within a given brand/family of MCU), but reality is that few if any are 'best'. Although if you start using a JTAG debugger device (as distinct from a simpler in-circuit device programmer) to step through you code & set break-points & inspect registers & memory etc, then an IDE really helps here.

  • 2
    \$\begingroup\$ +1 for mentioning Atmel Studio. If you choose to go the Arduino route, STAY AWAY FROM THE ARDUINO IDE! It will only make learning uCs harder, because the Arduino IDE is over-simplified and uses a butchered version of C. \$\endgroup\$
    – DerStrom8
    Commented May 29, 2015 at 14:03

I made a comment above that expressed my opinion that 8-bit (or simple) microcontrollers are a better jumping off point than ARM Cortex for beginners.

Despite that earlier comment, I just ran a student through an independent study using an STM32F4 as his very first controller, and it went OK.

The main problem is the relative sizes of the user bases. If you go with a PIC or AVR, (dev board and compiler choice make little difference) and you don't know what you're doing, you get on the web and poof, there's the answer you're looking for, and more help than you could possibly need to get you to the right place.

Not so with an ARM Cortex. Even selecting a compiler and IDE, and then getting the toolchain running can be very tricky. There are enough online resources such that someone who knows what's going on can get needed guidance. IMO, someone who does not know what is going on can have a very hard time.

If you have buddies who can help, do what you want. If you're a novice, and trying to make a go of it using just online support tools, go with a PIC or AVR toolchain. You're just shooting yourself in the foot if you're a novice in it alone and unsupported trying to start with an ARM Cortex. When you're ready, the tools are out there for you to make the switch.


in my opinion, you can start smt8 discovery kit then you can try smt32. These kits also has debug. For ide, you can download ST Visual Develop and Cosmic CxSTM8 32K 4.3.13. Cosmic licance is free for 32k memory. This is ide and linker.


My first microcontroller was the PIC18F1330, which is a very decent chip and great for beginners. I had to buy the chip ($2) and the PICkit (2 or 3) for $35-$45, but then I was ready to go. I used MPLab 8.6 and the C18 compiler, though I think I heard that C18 is being phased out. XC8 is taking its place.

All of the software is available from the Microchip website for free, and there is a lot of help documentation out there. The library references built into the compiler/MPLab are also very thorough.

MPLab v8.92 (I recommend staying away from X at this point--it's still very buggy): http://ww1.microchip.com/downloads/en/DeviceDoc/MPLAB_IDE_8_92.zip

XC8 v1.34: http://www.microchip.com/mplabxc8windows


Not the answer you're looking for? Browse other questions tagged or ask your own question.