Embedded Programming With Atmega328

Learn embedded C, assembly & mixed programming, AVR microcontroller internals, GPIO, EEPROM & more

Last updated 2022-01-10 | 4.6

- AVR Micro-controller architecture & it's working - Instruction execution
- pipelining
- stack pointer & interrupts
- C
- AVR assembly programming & implement mixed language projects
- Arguments and return values passing from a function to another
- how memory & CPU registers are allocated during program execution

What you'll learn

AVR Micro-controller architecture & it's working - Instruction execution
pipelining
stack pointer & interrupts
C
AVR assembly programming & implement mixed language projects
Arguments and return values passing from a function to another
how memory & CPU registers are allocated during program execution
How hardware manages program stack and management of local & global variables
Interrupts
interrupt vector table (IVT) and interrupt service routine (ISR)
IVT & ISR programming
Build environment setup
GNU tools & utilities & build automation using GNU Make
Setup in-circuit programmer and USB-Serial adapter
flash & configure ATmega328 micro-controller
GPIO Programming
4x4 keypad interfacing & driver development

* Requirements

* Prior exposure to computer architecture
* digital circuit & C programming is good to have but not mandatory
* Curiosity & enthusiasm to learn
* Development board components
* PC & open source software

Description

>>> Your Search for In-depth Embedded System Programming Course ends here!! <<<

If you want to know how to kick start embedded programming skill and level up your career, read on. Hello, my name is Arabinda Verma and I have spent more than 15 years in research & software development, trained hundreds of graduates in programming and software engineering. When I ask students to tell me what their biggest challenge while learning Embedded Programming is, they all say the same thing: “Fundamentals are not clear.” To really become comfortable with embedded systems, students need guidance, mentorship, and practice. This isn’t always the case in programming schools and universities despite the high investments in time and money that they require.

This made me design this course, which will take you from the basics of embedded training to the advanced microcontroller architectures.


Why this course?

Embedded systems might appear complex to newcomers or even experienced programmers. With a different pedagogic approach, this course will help you become familiar with different aspects of this area, which will prove particularly helpful regardless of your experience in programming.

The course helps you build a sound understanding of C & Assembly programming. It discusses the architecture of the ATMega328 microcontroller and how software and hardware interact. You will gain here foundational knowledge, applied skills, hands-on programming exercises, proper guidance and mentorship.

I strongly believe that even the most complex contexts can be broken down to be assimilated by all students, regardless of their level.

Plus a 30 DAY MONEY BACK GUARANTEE if you're not satisfied for any reason.


What you will gain from this course?

You will rig-up the development board using the basic electronic components like capacitors, resistors, LEDs, microcontroller etc. And interface the development board with PC through USB-serial adapter and in-circuit programming. You shall setup the development environment on PC, configure the microcontroller and flash the bootloader.

You will learn memory management through the C compiler, microcontroller architecture, instruction execution, interrupt handling and cross-language programming. You shall implement programs using the C and Assembly programming languages and implement pre-main functionalities to bring up the development board. These topics not only introduce you to the programming but also prepare you to deal with the ecosystem of programming an embedded system.


What other students are saying about this course?

Lots of students have already taken the right decision by enrolling in the course. Following is what they are saying.

"........ Arabinda Verma has done an excellent job of making the basic of microcontroller for anyone who is struggling in developing embedded concepts. Furthermore, after completing internal's and peripherals very clear through his tutorials. It serves as a good foundation course the course I am more confident in writing my own drivers for the microcontroller. For the best result, I would suggest to purchase any hardware board of AVR architecture and implement the code discussed in the tutorials. I am also looking forward to Arabinda's other tutorial. Happy Learning :)" -Yousuf

"Awesome course for beginners to build foundation of embedded system and C programming. The best part of the course is to build the development board on the breadboard and run/test programs........." - Akash

"Very useful course to learn and understand embedded systems." - Ajaganna


Planned updates to this course

On the demand of our student’s we are continuously bringing updates that could help you more in this topic. Updates to this course are life time free for enrolled students Let’s talk more about this in the discussions section inside this course.

Update 4 (5th, Feb'19): Added EEPROM programming & driver development.

Update 3 (22nd, Jan’19): Added a section for programming challenges solution.

Update 2 (15th, Jan’19): Added section on GPIO

Update 1 (1st, Jan'19): Restructured the course.


My promise!

Now you don’t need to spend hours finding out a right course, instructor, study material for embedded programming. If you are in any way not satisfied, for any reason, you can get a full refund from Udemy within 30 days. The course comes with a ”No questions asked money back guarantee for 30 days". So, there is nothing for you to lose.

Enroll today and jump into the fascinating world of embedded systems to gain top skills and knowledge in this so-promising area of programming.

Who this course is for:

  • Students who want to learn/understand a fairly complex microcontroller based project from scratch
  • Students who are studying embedded system & want to acquire deeper insight
  • Engineers who want to kick-start career in embedded system programming
  • Individual who wants to learn microcontroller & programming
  • Hobbits & electronics enthusiast

Course content

11 sections • 92 lectures

Course Preview Preview 04:17

Course Structure Preview 02:48

Hardware & Software Requirement Preview 02:31

Important: Course Update Preview 00:39

Goal & Content Preview 01:48

AVR Microcontroller Organization Preview 08:04

ATMega328/P Architecture Preview 08:48

Program Stack Preview 04:43

Program Stack Frame Preview 14:55

Interrupts Preview 08:30

Memory Preview 08:46

Instruction Set Preview 10:42

Quiz - ATmega328/P microcontroller

Test your learning of ATmega328/P microcontroller.

Section Round-up Preview 01:27

Goal & Contents Preview 01:06

C & Its Structure Preview 07:08

Identifiers & Keywords Preview 02:48

Quiz - C, its structure, identifiers & keywords

Test your understanding of C, its structure, identifiers and keywords.

Data Types & Array Preview 05:11

Constant & Statement Preview 06:09

Operators, Precedence & Associativity Preview 11:32

Control Statement Preview 14:05

Functions Preview 05:01

Quiz - data types, operators, functions & control statements

Test your learning of data types, operators, functions and control statements.

Section Round-up Preview 01:06

Goal & Content Preview 01:40

Bitwise Operations - C Preview 06:51

Bitwise Operations - Assembly Preview 07:45

Quiz - Test your C skill

Test your C skill

Storage Class Preview 10:29

Volatile Preview 12:25

Macro Preview 06:10

Quiz - Test your C skill

Test your C skill

Inline Function Preview 08:35

Pointers Preview 15:57

Cross Language Programming Preview 09:59

Inline Assembly Programming Preview 08:22

Section Round-up Preview 01:08

Goal & Content Preview 01:45

Interrupts Preview 09:08

IVT Placement - Linker Preview 10:41

IVT Placement - C Code Preview 11:31

External Interrupt Preview 16:46

Pin Change Interrupt Preview 15:38

Section Round-up Preview 01:19

Goal & Content Preview 00:51

GPIO section introduction

Introduction to GPIO on AVR microcontrollers Preview 09:53

You will learn about the General Purpose Input Output port available in the ATmeag328 uC. You will also learn about the registers used to configure, read and write the GPIO ports.   

GPIO Port/Pin Configuration Preview 07:44

You will learn how to configuration GPIO ports and understand read and write operation.   

How to Program GPIO Port? Preview 11:45

You shall interface LEDs and button switches with the GPIO pins and implement a program to control the LEDs using the switches.   

Interface 4x4 Keypad & Develop Driver Program [Part I] Preview 09:21

You will interface the 4x4 keypad with the development board and implement the driver program.

Interface 4x4 Keypad & Develop Driver Program [Part II] Preview 15:05

You will interface the 4x4 keypad with the development board and implement the driver program.

Introduction: EEPROM Programming Preview 08:43

AVR microcontrollers have internal EEPROM for semi-permanent data storage. Like flash memory, EEPROM can maintain its contents when electrical power is removed. The ATmega328/P contains 1K bytes of EEPROM memory. EEPROM stands for Electronically Erasable Programmable Read Only Memory which is a type of non-volatile memory used in various electronic devices to store relatively small amount of data.

EEPROM Operations Preview 10:10

In this lesson, you will learn about the different programming operations of the EEPROM memory.

EEPROM Driver Implementation [1st Approach] - Part I Preview 08:15

In this lesson, you shall implement the EEPROM driver. The driver shall support all the three operating modes those are Erase & write, Erase only and Write only. It exposes four functions to be consumed by the application module. These functions are eeprom_init(), eeprom_read(), eeprom_write() and eeprom_erase().

EEPROM Driver Implementation [1st Approach] Part II Preview 13:14

In the previous lesson, you defined the EEPROM registers, the function prototypes and implemented the functions eeprom_init(). In this lesson, you shall continue with the remaining implementation.

Interrupt Based EEPROM Driver [2nd Approach] Preview 10:50

In the previous lesson you developed EEPROM driver and tested its all the three operations. In this lesson, you shall learn about interrupt based EEPROM driver. We shall modify the earlier implementation to incorporate the interrupt triggered write operation.

In the earlier lesson, we disabled the EEPROM Ready Interrupt bit in the EECR register. If the bit is set, the EEPROM ready interrupt will be triggered constantly when EEPE bit is cleared. That means when the program starts the uC will be executing EEPROM Ready interrupt service routine only and the code in main program is never executed. Note this point, it is important while designing interrupt based EEPROM driver.

Goal & Content Preview 01:41

Peek into Development Environment Preview 04:41

Tool Setup Preview 01:18

Base Circuitry Preview 05:52

In-circuit Programmer Preview 04:04

AVRDUDE Preview 06:36

Playing with Fuse & Lock Preview 08:10

Flashing Bootloader Preview 03:24

Adding USB-Serial Adapter Preview 05:12

Build Process Preview 11:37

Build Automation with Make - 1 Preview 15:30

Build Automation with Make - 2 Preview 12:55

Quiz - GNU make

Test your learning of GNU make

Using Arduino Uno Development Board Preview 00:14

Section Round-up Preview 01:10

Modulo Blink Preview 13:39

Alpha Blink Preview 06:50

Optical Encoder Preview 06:18

Status Register Preview 09:52

Stack Frame Preview 02:55

Hex to BCD Conversion Preview 06:31

BCD Sum Preview 05:29

External Interrupt Preview 02:41

Pin Change Interrupt Preview 03:03

What is Embedded System? Preview 07:07

What is Microcontroller? Preview 07:17

Microcontroller Architecture Preview 07:29

Solution - Module Blink Preview 01:02

Solution - Alpha Blink Preview 01:16

Solution - Optical Encode Preview 01:37

Solution - Status Register Preview 07:49

Solution - Stack Frame Preview 02:58

Solution - Hex to BCD Conversion Preview 03:17

Solution - BCD Sum Preview 02:59

Solution - External Interrupt Preview 03:36

Solution - Pin Change Interrupt Preview 02:46