Embedded Systems - Courses

What is Embedded?

An Embedded System is combination of hardware and software where hardware part is programmable through software and performs specific functions at specific time or action. A computer system with a dedicated function often with real-time computing constraints is called Embedded System. It is embedded as part of a complete device often including hardware and mechanical parts. By contrast, a general-purpose computer, such as a personal computer (PC), is designed to be flexible and meets a wide range of end-user needs. Embedded systems control many devices in common use today.

Modern embedded systems are often based on microcontrollers (i.e CPUs with integrated memory and/or peripheral interfaces) and ordinary microprocessors (using external chips for memory and peripheral interface circuits). These are very common, especially in more complex systems. The processor(s) used may range from general purpose to very specialized in certain class of computations or even custom designed for different applications e.g. common standard class of dedicated processors is the digital signal processor class (DSP in short).

Embedded systems range from portable devices such as digital watches and MP3 players, to large stationary installations like traffic lights, factory controllers, and largely complex systems like hybrid vehicles, MRI, and avionics. Complexity varies from low, with a single microcontroller chip, to very high with multiple units, peripherals and networks mounted inside a large chassis or enclosure.

The most common Microcontroller 8051

Intel Corporation introduced 8051, an 8-bit microcontroller in 1981.This microcontroller had 128 bytes of RAM, 4K bytes of on-chip ROM, two timers one serial port and 4 ports (each 8 bits wide) all on a single chip. That is why it was also referred to as “system on-chip”. The CPU can work for only 8 bits of data at a time because 8051 is an 8-bit processor. In case the data is larger than 8 bits then it has to be broken into parts so that the CPU can process conveniently. Most manufacturers have put 4Kb of ROM even though the quantity of ROM can be extended up to 64 Kb.

8051 Micro controller has been in use in a wide number of devices, mainly because it is very easy to integrate it into a project or a new device. The following are the main areas of focus:

  • Energy Management: Efficient metering systems help in controlling energy usage in homes and industrial applications. These metering systems are made capable by incorporating microcontrollers.
  • Touch screens: A touch-screen is an electronic visual display that the user can control through simple or multi touch gestures by touching the screen with a special stylus/pen and-or one or more fingers. Portable electronics such as cell phones, media players and gaming devices are examples of microcontroller-based touch screens.
  • Automobiles: 8051 Microcontroller finds wide acceptance in providing automobile solutions. They are widely used in hybrid vehicles to manage engine variants. Additional functions such as cruise control and anti-brake system have been made more efficient with the use of microcontrollers.
  • Medical Devices: Medical devices such as blood pressure and glucose monitors, ECG machine etc. uses microcontrollers to display the data, thus providing higher reliability in providing medical results.
What is AVR Microcontroller?

AVR was developed in the year 1996 by Atmel Corporation. The AVR architecture was conceived and developed by two students at the Norwegian Institute of Technology (NTH) Alf-Egil Bogen Blog (www.alfbogen.com) and Vegard Wollan. AVR derives its name from its developers and stands for Alf-Egil Bogen Vegard Wollan RISC microcontroller, also known as Advanced Virtual RISC. The AT90S8515 was the first microcontroller which was based on AVR architecture however the first microcontroller to hit the commercial market was AT90S1200 in the year 1997.

AVR microcontrollers are available in three categories:

  • TinyAVR – Less memory, small size, suitable only for simpler applications
  • MegaAVR – These are the most popular ones having good amount of memory (upto 256 KB), higher number of inbuilt peripherals and suitable for moderate to complex applications.
  • XmegaAVR – Used commercially for complex applications, which require large program memory and high speed.

The AVR Microcontroller is a modified Harvard architecture 8-bit RISC single chip microcontroller which was developed by Atmel in 1996. The AVR was one of the first microcontroller families to use on-chip flash memory for program storage, as opposed to one-time programmable ROM, EPROM, or EEPROM used by other microcontrollers at the time.

Note: "AVR" in this article generally refers to the 8-bit RISC line of Atmel AVR Microcontrollers.

What is PIC Microcontroller

PIC is a family of modified Harvard architecture microcontrollers made by Microchip Technology, derived from the PIC1650 originally developed by General Instrument's Microelectronics Division. The name PIC initially referred to "Peripheral Interface Controller" now it is "PIC" only.

PICs are popular with both industrial developers and hobbyists alike due to their low cost, wide availability, large user base, extensive collection of application notes, availability of low cost or free development tools, and serial programming (and re-programming with flash memory) capability.

PIC and PIC micro are registered trademarks of Microchip Technology. It is generally thought that PIC stands for Peripheral Interface Controller, although General Instruments' original acronym for the initial PIC1640 and PIC1650 devices was "Programmable Interface Controller". The acronym was quickly replaced with "Programmable Intelligent Computer".

The Microchip 16C84 (PIC16x84), introduced in 1993, was the first Microchip CPU with on-chip EEPROM memory. This electrically erasable memory made it cost less than CPUs that required a quartz "erase window" for erasing EPROM.

What is the difference between Microprocessor and Microcontroller

Architecture: Microprocessor has ROM, RAM, secondary storage memory I/O peripherals, timers; counters etc. placed on a board and connected through buses where as in the microcontroller all these peripherals are combined in a single integrated circuit (IC).

CPU SPEED: Processors are better in speed than controllers because of the clock. Processors can have high clock rate, even if they become heated due to over clock rate the heat sink will stop from overheating. Controllers may be slow when compared to the processors but they are reliably fast. The execution speed will always depend upon the clock. If we take the overall performance and application execution speed microcontroller will be faster because all the peripherals are inbuilt. Processors will be slow because it has to get every resource from outside of the cpu through buses

Design Time: To design an application microcontroller will take less time when compared to the processor. The interfacing between the peripherals and programming them will be easy when compared to the processor.

Protection: If you programmed the microcontroller it is hard to get the program from the Rom by other users. The rom will be locked and it is very hard to retrieve the program from the rom of microcontroller. Processor will not give that much protection to its program.

Cost: cost of microprocessors and implementing microprocessor based systems will be costly when compared to the microcontroller based system. The microprocessor system will never be a compact system. Most of the microcontroller based systems are compact systems.

Applications: processors are mainly used in computation systems, defense systems, network communications etc. microcontrollers are mainly used in embedded application like watches, mp3 player, keyboards, mouse, washing machine, digital cameras, pen drive, remote, microwave, cars, bikes, telephone, mobiles, etc.

Difference between C & Embedded C

Embedded C is a set of language extensions for the C Programming language by the C Standards committee to address commonality issues that exist between C extensions for different embedded systems. Historically, embedded C programming requires nonstandard extensions to the C language in order to support exotic features such as fixed-point arithmetic, multiple distinct memory banks, and basic I/O operations. Though C and embedded C appear different and are used in different contexts, they have more similarities than the differences. Most of the constructs are same; the difference lies in their applications.

  • C is used for desktop computers, while embedded C is for microcontroller based applications.
  • C takes more resources of a desktop PC like memory, OS, etc while programming on desktop systems what embedded C does not. Embedded C has to use the limited resources (RAM, ROM, I/Os) on an embedded processor. Thus, program code must fit into the available program memory. If code exceeds the limit, the system is likely to crash.
  • Compilers for C (ANSI C) typically generate OS dependent executable files. Embedded C requires compilers to create files to be downloaded to the microcontrollers/microprocessors where it needs to run. Embedded compilers give access to all resources which is not provided in compilers for desktop computer applications.
  • Embedded systems often have the real-time constraints, which is usually not there with desktop computer applications.
  • Embedded systems often do not have a console, which is available in case of desktop applications.

Embedded systems programming is different from developing applications on a desktop computers. Key characteristics of an embedded system, when compared to PCs, are as follows:

Embedded devices have resource constraints (limited ROM, RAM, stack space, less processing power). Components used in embedded system and PCs are different; embedded systems typically uses smaller, less power consuming components. Embedded systems are more tied to the hardware. Two salient features of Embedded Programming are code speed and code size. Code speed is governed by the processing power, timing constraints, whereas code size is governed by available program memory and use of programming language. Goal of embedded system programming is to get maximum features in minimum space and minimum time.

Embedded systems are programmed using different type of languages:

  • Machine Code
  • Lower level language, i.e., assembly
  • Higher level language like C, C++, Java, Ada, etc.
  • Application level language like Visual Basic, scripts, Access, etc.

Assembly language uses mnemonic words with the binary machine codes that the processor uses to code the instructions. Assembly language seems to be an obvious choice for programming embedded devices. However, use of assembly language is restricted to developing efficient codes in terms of size and speed. Also, assembly codes lead to higher software development costs and code portability is not there. Developing small codes are not much of a problem, but large programs/projects become increasingly difficult to manage in assembly language. Finding good assembly language programmers is a difficult task nowadays. Hence higher level languages are preferred for embedded systems programming.

Use of C in embedded systems is driven by following advantages:

  •  It is small and simple to learn, understand, program and debug.
  • C Compilers are available for almost all embedded devices in use today, and there is a large pool of experienced C programmers.
  • Unlike assembly, C has advantage of processor-independence and is not specific to any particular microprocessor/ microcontroller or any system. This makes it convenient for a user to develop programs that can run on most of the systems.
  • As C combines functionality of assembly language and features of high level languages, C is treated as a 'middle-level computer language' or 'higher level assembly language'.
  • It supports access to I/O and provides ease of management of large embedded projects.
  • Many of these advantages are offered by other languages also, but what sets C apart from others is the fact that it is a middle level language; it provides direct hardware control without sacrificing benefits of high level languages.
  • Compared to other high level languages, C offers more flexibility because C is relatively small, structured language; it supports low-level bit-wise data manipulation.
  • Compared to assembly language, C Code written is more reliable and scalable, more portable between different platforms (with some changes). Moreover, programs developed in C are much easier to understand, maintain and debug. Also, as they can be developed more quickly, codes written in C offers better productivity. C is based on the philosophy programmers know what they are doing’; only the intentions are to be stated explicitly. It is easier to write good code in C & convert it to an efficient assembly code (using high quality compilers) rather than writing an efficient code in assembly itself. Benefits of assembly language programming over C are negligible when we compare the ease with which C programs are developed by programmers.
  • Objected oriented language, C++ is not apt for developing efficient programs in resource constrained environments like embedded system. Virtual functions & exception handling of C++ are some specific features that are not efficient in terms of space and speed in embedded systems. Sometimes C++ is used only with very few features, very much as C.
  • Ada, also an object-oriented language, is different than C++. Originally designed by the U.S. DOD, it didn't gain popularity despite being accepted as an international standard twice (Ada83 and Ada95). However, Ada language has many features that would simplify embedded software development.
  • Java is another language used for embedded systems programming. It primarily finds usage in high-end mobile phones as it offers portability across systems and is also useful for browsing applications. Java programs require Java Virtual Machine (JVM), which consume lot of resources. Hence it is not used for smaller embedded devices.

RS-232 is asynchronous serial communication protocol widely used in computers and digital systems. It is called asynchronous because there is no separate synchronizing clock signal as they are in other serial protocols like SPI and I2C.

In telecommunications, RS-232 is a standard for serial communication transmission of data. It formally defines the signals connecting between a DTE (data terminal equipment) such as a computer terminal, and a DCE (data circuit-terminating equipment, originally defined asdata communication equipment), such as a modem. The RS-232 standard is commonly used in computer serial ports. The standard defines the electrical characteristics and timing of signals, the meaning of signals, and the physical size and pinout of connectors. The current version of the standard is TIA-232-F Interface between Data Terminal Equipment and Data Circuit-Terminating Equipment Employing Serial Binary Data Interchange, issued in 1997.

An RS-232 serial port was once a standard feature of a personal computer, used for connections to modems, printers, mice, data storage, uninterruptible power supplies, and other peripheral devices. However, RS-232 is hampered by low transmission speed, large voltage swing, and large standard connectors. In modern personal computers, USB has displaced RS-232 from most of its peripheral interface roles. Many computers do not come equipped with RS-232 ports and must use either an external USB-to-RS-232 converter or an internal expansion card with one or more serial ports to connect to RS-232 peripherals. RS-232 devices are widely used, especially in industrial machines, networking equipment and scientific instruments.

RS-232 was first introduced in 1962 by the Radio Sector of the EIA. The original DTEs were electromechanical teletypewriters, and the original DCEs were (usually) modems. When electronic terminals (smart and dumb) began to be used, they were often designed to be interchangeable with teletypewriters, and so supported RS-232. The C revision of the standard was issued in 1969 in part to accommodate the electrical characteristics of these devices.

Since the requirements of devices such as computers, printers, test instruments, POS terminals and so on were not considered by the standard; designers implementing an RS-232 compatible interface on their equipment often interpreted the requirements idiosyncratically. Common problems were non-standard pin assignment of circuits on connectors, and incorrect or missing control signals. The lack of adherence to the standards produced a thriving industry of breakout boxes, patch boxes, test equipment, books, and other aids for the connection of disparate equipment. A common deviation from the standard was to drive the signals at a reduced voltage. Some manufacturers therefore built transmitters that supplied +5 V and -5 V and labeled them as "RS-232 compatible".?

In RS232 there are two data lines RX and TX. TX is the wire in which data is sent out to other device. RX is the line in which other device put the data that is needed to be sent to the device.

Later personal computers (and other devices) started to make use of the standard so that they could connect to existing equipment. For many years, an RS-232-compatible port was a standard feature for serial communications, such as modem connections, on many computers. It remained in widespread use into the late 1990s. In personal computer peripherals, it has largely been supplanted by other interface standards, such as USB. RS-232 is still used to connect older designs of peripherals, industrial equipment (such as PLCs), console ports and special purpose equipment.


A digital sensor is an electronic or electrochemical sensor, where data conversion and data transmission are done digitally. Sensors are often used for analytical measurements, i.e. the measurement of chemical and physical properties of liquids.

Typical measured parameters are pH value, conductivity, oxygen, redox potentials and others. Such measurements are used in the industrial world and give vital input for process control. Sensors used to be of analogue type, but today more and more digital sensors are used.

Digital sensors have been developed to overcome the traditional disadvantages of analog sensors. Digital sensors are mainly used in water, waste water and industrial processes. They measure parameters such as pH, redox potential, conductivity, dissolved oxygen, ammonium, nitrate, SAC, turbidity. A digital sensor system also consists of the sensor itself, a cable, and a transmitter. The differences to analog sensor systems are: a) The sensor has an electronic chip. The measuring signal is directly converted into a digital signal inside the sensor. The data transmission through the cable is also digital. This digital data transmission is not sensitive to cable length, cable resistance or impedance, and is not influenced by electromagnetic noise. Standard cables can be used. b) The connection between sensor and cable can be contactless and done by inductive coupling. Humidity and related corrosion is no longer an issue. Alternative fibre optic cables may also be an option for long or electromagnetically hostile connections. c) The sensor can be calibrated apart from the system.

  • ARM - an acronym for: Advanced RISC Machines. At its inception ARM stood for Acorn RISC Machine, UK. However in 1987 the ARM became the first commercial RISC processor. In 1990, the research section of Acorn separated from the parent company and formed: ARM Ltd. (Advanced RISC Machines Limited).
  • ARM is leading provider of 16/32-bit microprocessor. The company licenses its high performance, low-cast, power-efficient RISC (Reduced Instruction Set Computer) processor, peripherals and system chip designs to leading international electronics company.
  • It has uniform and fixed instruction, good speed and power consumption ratio, high-code density, mostly single cycle execution and speed from 1Mhz to 1.25Ghz.
  • ARM does not make ICs!
  • ARM grant license of core to different silicon vendor like ATMEL, NXP, Cirrus logic etc.
  • Examples: lpc2148 from NXP, AT91RM9200 from ATMEL.
  • ARM processor used in many domain but mainly used in handheld devices, Robotics, Automation and Consumer electronics etc.

This is ARM7 family processor, which has:

T=Thumb instruction set
D=Debug unit
M=multiplier unit
I=Trace circuit inside the core (Embedded trace microcell)
This is basic core and all cores have TDMI.


ARM9xx core.
Enhanced instruction set for DSP (Synthesizable).

Embedded Systems & Robotics
  • Embedded & Robotics Technology - overview
    • Introduction to Embedded & Robotics
    • What, Where, Why Embedded & Robotics?
    • Future & Scope in Embedded & Robotics
    • Technical Introduction of Elements in Robotics
    • Actuators, Motors, Controllers, Sensors, etc
Basic Linux
  • Linux – Basic Part
    • Introduction : OS
    • Introduction : Linux OS
    • Basic Linux
      • Commands
      • Managing Disk files and directories (folders)
      • Managing documents – inputs and outputs
    • Text Editors - vim
    • Shell Programming – scripting in linux
    • Make, Makefile
    • Configurations management systems
    • Labs, Exercises
Basic Electronics
  • Basic Electronics – Basic Part
    • Components
      • Inductors
      • Capacitor filters
      • Resistive voltage dividers
      • Capacitors
      • Diodes
      • Resistors
      • Battery
      • Switches
      • Voltage regulator and IC’s
      • Breadboard and PCB’s
      • Transistor and Sensors
      • Sockets and Cables
      • Headers and Shrink Wraps
      • Multimeter
    • Exercise and labs
Digital Design
  • Digital Design – Basic Digital
    • Basics of Digital Design
      • Digital vs. Analog
      • Number System – bit, boolean, signed, unsigned
      • Compliments – 1’s and 2’s
      • Boolean Algebra & basic logic gates
    • Understanding Combinational Logic/Circuit Designing
      • Logic Gates & Logic Technologies
      • Designing Combinational circuits – examples
    • Understanding Sequential Logic/Circuit Designing
      • Clocks, synchronous & asynchronous circuits
      • FSM’s
      • Sequential Circuit Designing – Examples
C & DS
  • Introduction to C language
  • Basic Building Blocks of C
  • Control Flow
  • Conditions –
    • If, if – else, nested if
    • Switch-case-break
    • Loops – for, while, do – while
    • Break, continue
    • Labels and goto statement
  • Modular Programming
  • Advanced Modular Programming
  • Input / Output
  • Advanced Data Types
    • Pointers & Arrays
    • Strings & Enumerations
    • Structures & Unions
    • User defined data types – typedef
  • Data Structures Creation
    • Arrays
    • Linked lists
    • Stacks
    • Queues & priority queues
    • Hash tables
Micro-Controller & Processor (I/O ports programming)
  • Microcontroller & Microprocessors
    • Microcontrollers
    • AVR Microcontroller
    • IO Programming
      • LEDs, Switches, Buzzer, Seven Segment Interfacing
    • Timers & counters

  • Interfacing & Implementation
    • ADC Programming
    • Serial Communication
      • Data Communication
      • Types of Communication
      • Serial Vs Parallel
      • Protocols in Communication
      • RS-232
      • USART Serial Communication
    • SPI Communication
    • I2C Communication
Wireless Technology
  • Introduction to Wireless Technology
  • Different Wireless Modules
  • Bluetooth Module
  • RF Wireless Module
  • Interfacing of RF Module
  • DTMF Theory
  • MT 8870 IC Description
  • RF ID Module
  • GSM Module
  • Anatomy of robots
  • Control less or remote controlled robots
  • Robot construction and its steps
  • Actuators and controlling devices
  • Introduction to 32 bit ARM processor and Micro-controllers
  • Different types and Families
  • LPC21xx Series
    • Architecture
    • PIN Configuration
    • PIN Connect Block
    • Simple GPIO
    • Timers 0 & 1
    • UART0 & UART1
    • Real Time Clock (RTC)
    • Watchdog Timer
    • A/D Convertor
Linux Internals & Device Drivers
  • Linux Internals & Device Drivers
    • Linux Internals
      • Booting, kernel, process management, file IO, buffered IO
      • Memory management, signals and interrupts, debugging
      • IPC, POSIX threads
      • Network programming, exception handling
      • System calls, process scheduling, kernel synchronization
      • Timing measurements, VFS
    • Device Drivers
      • Linux device interface
      • Method of access of devices in linux
      • Hello program understanding & modeling
      • Kernel symbol table & parameters
      • SCULL : the character device driver
      • Pseudo driver development
  • Device Drivers
    • Kernel data structures
    • Device operations
    • Memory allocation, memory management
    • Device control & operations
    • Concurrency, race condition & its synchronization
    • Timers & delays
    • Interrupt handling & synchronization
    • device driver development for serial controllers
    • PCI drivers
    • Memory mapping
    • DMA
    • Block device drivers
Coming Soon...
Coming Soon...

Student's Testimonials...

Contact Us

3ST Technologies Pvt. Ltd.
C-65, Upper Ground Floor,
Sector 2, Noida - 201301
(Behind Nirulas Hotel, Near Sector 15 Metro Station)
P: +91 120 4104290
    +91 7042595865/64/63
    +91 9899026065
E: contact@3sttechnologies.com