- 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.
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.
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 C
Time needed: 30 days.
- Course Introduction and Welcome
1. Course Introduction and Welcome
2. Motivation to learn AVR Microcontroller
3. Prerequisite S/W and H/W
- 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
- 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
- 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
- IO Ports and Programming Lab
1. GPIO Concepts
2. AVR GPIO Registers
3. AVR GPIO Programming Input and Output
4. Switch / Push Button Interfacing
5. 7 Segment LED Display Interfacing
6. Running LED Light
7. IR Reflective Module / Sensor Interfacing
8. Keypad Interfacing
9. LED Matrix Interfacing
- Timer, Counter, PWM and Programming Lab
1. Timer 0
2. Timer 1
3. Timer 2
4. Using a timer for System Delay
5. PWM LED Brightness Control
6. PWM Motor Control
7. Buzzer interfacing and Music Generation
8. Input Capture Example
9. Servo Motor interfacing
10. Interrupt based example
- SPI Communication and Programming Lab
1. SPI working
2. SPI loopback example
3. SPI Slave Master Example
4. Interrupt Based Example
- 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
- I2C or TWI Communication and Programming Lab
1. I2C Overview
2. Different Modes of Operation
3. Simple example
4. Interrupt based example
- Analog Comparator
1. Analog Comparator working
- 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
- Memory Programming
1. EEPROM Programming
2. Flash Programming
- 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
13. WiFi Interfacing
14. NRF24L01 Interfacing
15. SD Card Interfacing
17. Microphone Interfacing
18. Hall Effect Sensor
19. RFID / NFC Interfacing
20. GPS Interfacing
21. GSM Module Interfacing
22. Xbee Interfacing
23. Relay Interfacing
1. Multi-Processor Mode
2. Sleep Modes
3. Capacitive Touch