Memfault State of IoT Report

Embedded - Where to start and how to continue?

When the whole world is talking the magic words 'Embedded' and 'Microcontrollers', there definitely are a whole bunch of engineers who are more into hardware and have the eternal hesitation on how to plunge into the embedded world.



These folks are good in hardware, very analytical in their approach and have all the ingredients to become experts in this part of the geek world.


Fifteen years back, I belonged to  this league of engineers. Projects were becoming more complex and CMOS logic ICs were becoming nostalgia. For a typical sequential timer project which we did for the tyre industry, we required around 70 chips for the whole logic. It was simply becoming a nightmare.

I spoke to a friend who said, the same logic can be realised just with a single chip if we use a new technology, the microcontroller.

  • What is this microcontroller?
  • Can it really do what it is said to be capable of?
  • What if it doesn't work and it becomes too late to meet the deadline?
  • They say, it needs to be programmed- how is it done?
  • Too many confusing and contradicting thoughts….


I woke up in the middle of a summer  night and said to myself, I am going to change the situation. It is time to learn something new. If this new technology does not work, so be it. Let me try.


If it works for so many people, then why not for me?


This is where my embedded journey started.


I am sharing my experiences during this journey as tips , which may give this fraternity of engineers and technicians a fresh practical insight.


Do a thorough web search:

Search for sites which provide tutorials for beginners. Some of these sites may give you valuable practical information. This will help you in zeroing on the microcontroller. Mostly, you would clearly know which microcontroller aptly suits your purpose.

A good site is : http://www.kmitl.ac.th/~kswichit/

Enrol into forums:


Become a member in embedded community forums. These are treasures waiting for you. People like you post queries and get answers. Follow each thread and note down what is relevant.

For the first two weeks, just read, read and read all the relevant threads. Remember not to post any queries until you are satisfied that you have read all the relevant threads. This is because normally when we start posting queries , we do not give due attention to a very matching thread which has already been discussed. We will be on wild goose chase to only find later that the same query has been answered already.

Selecting your Microcontroller:

By this time you would have come to a conclusion on which microcontroller you need to start with. However, select a micro which is simple or appears simple to you. It always is best to start simple but firm. Typically, you could select  89C2051 or ATTiny2313 or a simple PIC.

Hardware Tools:

As your micro is a programmable chip, search for programming hardware from web again. You will be surprised to find that entry cost of making a hardware programmer for these chips is miniscule or almost nil. A programmer is a gadget through which you download your program or code into the chip from your computer.

Hardware programmers details are available at sites like:

http://www.kmitl.ac.th/~kswichit/ , www.8052.cometc.

Software Tools:

A very good starting point could be www.mcselec.com, where you can download good compilers. BASCOM-8051  and BASCOM-AVR from this site are for the 8051 and AVR family of microcontrollers respectively. These compilers can catapult you suddenly from a hard-core hardware engineer to a decent embedded engineer. These are almost plain-english like and you do not feel like you are programming. If you want to print your name in a LCD Module, you just write – Lcd “Your Name” and bingo, it displays. You could download and use it free for upto 4 Kilobytes ( I guess)  of code which satisfies most your entry level evaluation requirements.

For those who want to use PIC microcontrollers, a similar nice compiler is available which is called PICBASIC.

If you want to learn Embedded C, you can always trust the SDCC which is fully open-source and is getting better by the day through efforts of open-sourrce champions. Active forums are available where you could post your queries and get answers.

As you probable are already a good electronics engineer, you must be aware of good soldering practices and electro-static protection. Please follow all those rules when handling a microcontroller.


From where you are now, all you need to take is, probably a very small step compared to whatever you have learnt so far.

Memfault State of IoT Report
[ - ]
Comment by rbhaskaruniMay 15, 2011
This one of nicest blog, which is also realistically written and very step by step, like building Rome in a day. This reminds my journey in electronics,. I would recommend this article, for any one who are starting their embedded journey.
[ - ]
Comment by arulkumarMay 16, 2011
I agree with the above statement. Hats Off..
[ - ]
Comment by nitin_salve2010October 11, 2011
sir i have a problem with 16x2 lcd interfacing i wrote the code as below but either display goes blank or it shows the first row fully dotted please help code: #include sbit RS=P2^0; sbit RW=P2^1; sbit EN=P2^2; sbit busy=P1^7; void delay(); void init(); void clear(); void wait(); void wait() { int j,k=100; busy=1; do { EN=0; RS=0; RW=1; EN=1; for(j=1;j<=100;j++); k--; } while((busy==0)||(k==0)); busy=0; EN=0; RW=0; } void init() { RW=0; RS=0; EN=0; P1=0x38; EN=1; delay(); EN=0; wait(); P1=0x0E; EN=1; delay(); EN=0; wait(); P1=0x06; EN=1; delay(); EN=0; wait(); } void clear() { RS=0; P1=0x01; EN=1; delay(); EN=0; wait(); } void delay() { int i,j; for(i=1;i<=1;i++) { for(j=1;j<=1275;j++); } } void main() { char dis[]="HELLO SUNANDA"; int x; init(); while(1) { clear(); RS=1; for(x=1;dis[x]!='\0';x++) { P1=dis[x]; EN=1; delay(); EN=0; wait(); } } }
[ - ]
Comment by karthi1729January 19, 2012
sir i want know the Name the board which has exnoys processor
[ - ]
Comment by ashukulkarniAugust 29, 2012
Good blog for starters!
[ - ]
Comment by jkvasanDecember 19, 2012
All the best.

To post reply to a comment, click on the 'reply' button attached to each comment. To post a new comment (not a reply to a comment) check out the 'Write a Comment' tab at the top of the comments.

Please login (on the right) if you already have an account on this platform.

Otherwise, please use this form to register (free) an join one of the largest online community for Electrical/Embedded/DSP/FPGA/ML engineers: