# Basic Micro controller list for begineers

#### selvamurugan_t

Joined Aug 8, 2016
18
Hi

I want to start my Embedded C programming carrier in properly.For that I required a flow of micro controller list for update my knowledge.

I have experience with
PIC16F877A,
AT89C51,
ATMEGA328P

please list down 8 bit ,16 bit,32 bit micro controller for learning

#### Marley

Joined Apr 4, 2016
411
I recommend the ATmega328 and Visual Studio 7 (which is a free download). You will need an isp programming tool - AVRISP MK2 or the AVR Dragon.

Plenty of documentation, help and examples online.

Atmel also make 32 bit mcus. Can be developed and programmed with the same tools. No Atmel 16bit devices as far as I know.

#### Marley

Joined Apr 4, 2016
411
Sorry, it's Atmel Studio 7 - uses visual studio technology underneath I think.

#### selvamurugan_t

Joined Aug 8, 2016
18
can you refer some basic microcontroller list which will help me to improve my programming skill

#### MrSoftware

Joined Oct 29, 2013
2,015
Sorry, it's Atmel Studio 7 - uses visual studio technology underneath I think.
Ah yes, it can plug into Visual Studio for the user interface part, but runs the Atmel compiler underneath. Which is good, because Visual Studio is actually the nicest IDE I've used personally.

#### JohnInTX

Joined Jun 26, 2012
4,496
can you refer some basic microcontroller list which will help me to improve my programming skill
If you are trying to improve your programming skills using embedded C, the particular processor is less important than you think.

It is a common error with inexperienced programmers to fire up the IDE and throw code at it. Programming should be approached first from a problem-solving point of view, not slapping code onto a chip and trying to make it work. You can improve your skills without a chip at all. Get a good reference on C, another on data structures and something on 'structured programming'. Start coding examples in whatever programming environment you have (IDE, compiler etc.) and use the simulator to step through the code. Focus on programming as problem solving - you should be able to describe your program and trace its execution with a pencil and paper. Once you get proficient with the basic concepts, you can pick a chip and add the particulars.

For example, you can code a flashing LED on paper - the 'hello world' of the embedded business. It might look like this:

C:
void main(void){
init_system();
while (1){
LEDon();
delay_awhile();
LEDoff();
delay_awhile();
}// while
}// main
Note that there are no processor-specific things here, just the description of what is to be done and how the solution is implemented. You can trace the code flow with your finger. Do the same with more complicated tasks. Defer any IO and chip-specific stuff until later. You might decide that this is a crude way of flashing an LED and change it. Maybe describe the LED flasher as an array of patterns like here
That one is for Arduino but the concept works on any processor.

Finally when you want to give it a try, fill out the chip-related functions (init, LED IO etc) and step it in the simulator, watching the PORT variables to see the LED bit go on and off. If you keep your processor-specific stuff as independent functions, you can move your code from chip to chip fairly easily.

There's lots more to getting good at programming but one sure way to be a lousy programmer is to just throw code at it to see what works. Rule 1 is that if you can't solve the problem on paper, you can't implement it in code.

Just my .02
Good luck!

#### dannyf

Joined Sep 13, 2015
2,197
For what you are trying to do the easiest is to start on an arduino: simple, low cost, lots of accessories and a huge base of code samples.

As you get more comfortable with toolchains and embedded programming, moving to a platform that supports hardware debuggers woukd be a plus. St discovery, nucleo, or ti launchpads woukd be some of the choices there.

As you are coding in C, the core makes minimum difference.

#### dannyf

Joined Sep 13, 2015
2,197
For what you are trying to do the easiest is to start on an arduino: simple, low cost, lots of accessories and a huge base of code samples.

As you get more comfortable with toolchains and embedded programming, moving to a platform that supports hardware debuggers woukd be a plus. St discovery, nucleo, or ti launchpads woukd be some of the choices there.

As you are coding in C, the core makes minimum difference.