Embedded C Firmware Programming on Atmel AVR 8-bit Atmega328p Microcontroller
Learn Register Level Firmware Development in Embedded C for GPIO, I2C, SPI, UART, Timer, PWM, ADC, Memory, Interrupt and more…

Key Points

  • MOVE FORWARD TOWARDS A SUCCESSFUL FIRMWARE DEVELOPER
  • HARDWARE USED > ARDUINO UNO / NANO / MEGA
  • IDE USED > PROFESSIONAL GRADE ATMEL STUDIO
  • THERE WILL BE NO SUBSTANDARD ARDUINO STYLE PROGRAMMING
  • THERE WILL BE NO 3RD PARTY LIBRARIES
  • THERE WILL BE NO BLIND CODING
  • YOU WILL LEARN LAYERED PROGRAMMING ARCHITECTURE
  • YOU WILL LEARN PROFESSIONAL CODING STANDARDS
  • YOU WILL LEARN EMBEDDED C
  • YOU WILL LEARN DEBUGGING AND SAVE THE COST OF A DEBUGGER
  • YOU WILL LEARN REGISTER LEVEL PROGRAMMING
  • YOU WILL LEARN TO WRITE YOUR OWN PERIPHERAL DRIVER
  • YOU WILL LEARN BOTH THEORY AND LAB EXPERIMENTS
  • YOU WILL BE ENABLED TO MAKE YOUR OWN PROJECT / PRODUCT

Who can take this course?

  •  School students, college students, professionals, and hobbyists.
  •  Anyone who wants to dive into Register Level Microcontroller Peripheral Programming using Embedded C.
  • Anyone who uses Arduino and wants to know about its in-depth working.
  • Anyone who wants to make IOT / Embedded projects or products.

Brief Description

This course explains in accessible, understandable detail the internal working of the AVR Atmega328p Microcontroller and its Peripherals. Most Microcontrollers work similarly so what you learn in this course can easily be used for other Microcontrollers such as Atmega8, 16, 32, 2560, PIC, MSP, NXP etc. After taking this course, you will be able to develop your own projects and products employing the AVR and similar Microcontrollers.
We will be coding and conducting lab experiments for each and every peripheral in an in-depth and step by step manner and will develop software drivers completely from scratch using the hardware registers by employing information from the datasheet and reference manual of the Microcontroller.

In many industries such as consumer appliance, automotive, and aerospace, Microcontrollers are widely used and programs for them are written in Register level using either Embedded C or C++. An understanding of Microcontroller’s internal working and peripheral programming is therefore essential for designing a successful project or product related to these industries. This will be one key takeaway from this course.

  • The average salary for Firmware developer $61,118 PA.
  • Used by top industries across various business verticals. Ex: Amazon, Intel Corporation, Microsoft, Microsemi Corporation, Samsung, LG, Bosch etc.

How is this Course Different From Other Arduino Courses?

In this course, we will be employing Arduino Hardware, which is widely available, inexpensive, and reliable, but we will not be using Arduino IDE or any of its precooked libraries, which are simplistic in design and below professional industry standards. Rather we will be designing our own superior software from scratch using the professional Atmel Studio. In the process, we will learn the use of Serial COM port for debugging the Arduino Hardware, which does not have its own debugger. This will save you the cost of buying an external debugger like the ATMEL ICE. I will cover important topics like Interrupt, which you can use to make your own scheduler including different Industry standard communication protocols.

Pros of using Arduino Hardware Board

  • Arduino Uno / Nano / Mini has 8-bit AVR AtMega328p Microcontroller and Arduino Mega has 8-bit AVR AtMega2560 with all necessary hardware required for up and running.
  • Very cheap hardware.
  • Widely available around the globe.
  • No need for separate expensive programmer hardware, internal bootloader takes care of serial programming.

Cons of using Arduino style Programming

  • Arduino IDE is not professional.
  • 3rd party libraries.
  • No Register level learning.
  • No learning about Microcontroller’s internal and on-chip peripherals like GPIO, SPI, UART, TIMER etc.
  • Not industry standard and never recommended for a product design.

My Promise

You can proceed in this course with confidence as I always will be available to answer your questions and assist your understanding. I love to share my knowledge with others and I warmly welcome you to this course!

Curriculum for this Course

Time needed: 30 days.

  1. Course Introduction and Welcome

    1. Course Introduction and Welcome
    2. Motivation to learn AVR Microcontroller
    3. Prerequisite S/W and H/W

  2. Software and Hardware Setup

    1. Why Atmel Studio for Arduino programming
    2. Installing Atmel Studio
    3. Installing Arduino Drivers
    4. Configuring Atmel Studio to flash Arduino UNO / NANO / MEGA
    5. Configuring Atmel Studio to use USB ASP for flashing
    6. Write the first Blinky Test Application
    7. Flash the Blinky Application 
    8. Quiz

  3. Introduction to Embedded Systems

    1. What is Embedded Systems?
    2. Embedded System vs General Purpose System
    3. A case study of an Embedded System
    4. Microprocessor vs Microcontroller
    5. Product Development Lifecycle of Embedded Systems
    6. Quiz

  4. AVR Architecture and Atmega328p

    1. AVR Microcontroller Family
    2. AVR Architecture
    3. Atmega328p features
    4. Block Diagram
    5. Pin Configuration and IO Multiplexing
    6. AVR CPU
    7. AVR Memories
    8. System Clock 
    9. Power Management and Sleep Modes
    10. System Control and Reset
    11. Interrupt and External Interrupt

  5. IO Ports and Programming Lab

    1. GPIO working
    2. GPIO Registers
    3. GPIO Programming Input and Output
    4. LED Interfacing
    5. Switch / Push Button Interfacing 
    6. 7 Segment LED Display Interfacing 
    7. Running LED Light
    8. IR Reflective Module / Sensor Interfacing
    9. Keypad Interfacing
    10. LED Matrix Interfacing 

  6. Timer, Counter, PWM and Programming Lab

    1. Timer, Counter and PWM working
    2. Timer 0
    3. Timer 1
    4. Timer 2
    5. Using a timer for System Delay
    6. PWM LED Brightness Control
    7. PWM Motor Control
    8. Buzzer interfacing and Music Generation
    9. Input Capture Example
    10. Servo Motor interfacing
    11. Interrupt based example

  7. SPI Communication and Programming Lab

    1. SPI working 
    2. SPI looopback example
    3. SPI Slave Master Example
    4. Interrupt Based Example

  8. UART Communication and Programming Lab

    1. UART working and overview
    2. UART loopback example
    3. UART Tx Rx example
    4. UART as SPI 
    5. Interrupt Based Example

  9. I2C or TWI Communication and Programming Lab

    1. I2C Overview
    2. Different Modes of Operation 
    3. Simple example
    4. Interrupt based example

  10. Analog Comparator

    1. Analog Comparator working
    2. Example

  11. ADC and Programming Lab

    1. ADC Overview
    2. ADC Registers
    3. ADC Conversion Programming 
    4. Potentiometer to PWM example
    5. Temperature Sensor LM35 Interfacing
    6. Interrupt example

  12. Memory Programming 

    1. EEPROM Programming
    2. Flash Programming

  13. Modules and Hardware Interfacing 

    1. Light Sensor
    2. Temperature Sensor
    3. Atmospheric Pressure Sensor or Barometer Interfacing 
    4. IR / Photo Interruptor
    5. Ultrasonic Senor or Range Finder
    6. Tilt / Gyroscope Sensor
    7. Accelerometer Interfacing 
    8. LCD 16×2 Interfacing
    9. PCD8544 Nokia GLCD Interfacing 
    10. TFT Display Interfacing
    11. Stepper Motor Interfacing 
    12. Bluetooth 
    13. WiFi  Interfacing 
    14. NRF24L01 Interfacing 
    15. SD Card Interfacing 
    16. Thermistor 
    17. Microphone Interfacing 
    18. Hall Effect Sensor 
    19. RFID / NFC Interfacing 
    20. GPS Interfacing 
    21. GSM Module Interfacing 
    22. Xbee Interfacing 
    23. Relay Interfacing 

  14. Advance Topics 

    1. Multi-Processor Mode
    2. Sleep Modes
    3. Capacitive Touch 

 

2 Comments

Yogesh Modi · November 12, 2018 at 3:10 am

How can i take this course?

    Crazy Engineer · November 12, 2018 at 8:21 am

    Hi Yogesh, Thanks a lot to check this course. I am currently writing the Tutorial and it is in progress. It will take a couple of Months to complete. This Course is completely Industry Specific. I am writing and hosting each topic one after another. So You can come back to the page each week and see a new topic and follow the sequence. Till then you can explore other free websites for tutorials. I will let you know when I finish the write-up.

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.