This course covers the introduction of embedded systems with microcontrollers and programmable logic devices. The architecture, programming, system development/simulation tools are introduced. Complete digital systems with different peripherals and data communication are designed, simulated and implemented. 

We will cover the AVR microcontroller for most part of the course. Specifically, Atmega328p (the microcontroller you can found the Arduino UNO boards) will be studied.

Who Should Attend This Course:

Undergrad students (5th semester and onwards) from the following disciplines can benefit from this course:

    • Mechatronics engineering
    • Electrical/electronics engineering 
    • Computer engineering
    • Computer science
    • Computer Science (Robotics)

Credit/Contact Hours:

  1. Theory (2 credit hours, 2 contact hours)
  2. Lab (2 credit hours, 6 contact hours)

The Course Learning Objectives (CLO) include:

  1. DESCRIBE AVR based microcontroller architecture, its internal registers, and instruction set (Learning domain: Cognitive, Level 2, PLO 1)
  2. PERFORM timer programming, serial port programming and interrupt programming both in C and assembly language (Learning domain: Cognitive, Level 3, PLO 1)
  3. DESIGN and IMPLEMENT embedded controller for a mechatronics systems (Learning domain: Psychometer, Level 5, PLO 2)

It meets the following Program Learning Objectives (PLO):

  1. Engineering Knowledge
  2. Design/Development of Solutions

Course Outline:

    • Introduction to Microprocessors and Microcontrollers
    • Architecture of a modern microcontroller
    • Software/firmware development tools, 
    • Programming languages; Assembly and C, Simulation tools like Proteus, 
    • Digital systems design using internal resources, external peripherals and devices, Implementation of data communication; RS-232, I2C, SPI etc. 
    • Introduction to embedded systems, 
    • Hardware architecture for embedded systems: Microcontrollers, Programmable logic devices like, Programmable array logic (PAL) and its variants, and Field Programmable Gate Arrays (FPGA) and its variants, 
    • Programming of embedded systems with Microcontroller and FPGA, Introduction to Verilog.

Labs include (offered in a separate course on this LMS):

Learn to read datasheets/manuals in order to develop practical applications. Assembly and C language based microcontroller (AVR) interfacing for interrupt and data based applications involving LED/ LCD, GPIO ports, communication ports, A/D, and D/A interfacing. Example project can be input voltage based speed control of DC Motor / stepper motor using PWM.

Teaching Methodology:

  1. Lecturing
  2. Written Assignments

Assessment (Theory):

  1. Assignments 
  2. Quizzes 
  3. Mid Term Exam
  4. Final Exam
Assessment (Lab): 

  1. Weekly lab reports 
  2. Viva voce 
  3. Project work

Text and Reference books: 

  1. Muhammad Ali Mazidi, Sarmad Naimi, and Sepehr Naimi, “The AVR Microcontroller and Embedded Systems: Using Assembly and C” published by Pearson Custom Electronics Technology
  2. Frank Vahid and Tony D. Givargis, “Embedded System Design: A Unified Hardware/Software Introduction”, John Wiley & Sons.
  3. Embedded System Design. Hardware/ Software System, by P. Marwedel, Latest edition
  4. FPGA prototyping by VHDL examples: Xilinx Spartan-3 version, By Pong P. Chu - Wiley-Interscience, Latest edition.
  5. Introduction to Embedded Systems - A Cyber-Physical Systems Approach, E. A. Lee and S. A. Seshia, Latest edition 
  6. Introduction to Embedded Systems: Using ANSI C and the Arduino Development Environment. By David Russel, Latest edition