
Learn bare metal programming for AVR microcontrollers, read datasheets, and interface sensors, actuators, and displays. Covering timers, interrupts, and SPI, UART, and I2C communications, with hands-on projects and software setup.
Learn how to set up the bare metal AVR development environment using Microchip Studio, generate hex files from C code, and understand offline and web installer options.
Learn to use Proteus for simulating AVR microcontroller circuits and PCB designs, and simulate programs before loading them onto hardware in upcoming videos.
Explore how embedded systems fuse software and hardware to control devices with microcontrollers, memory, sensors, actuators, and power supplies. Classify systems by real-time requirements and networked or mobile use.
Explore the general architecture of microcontrollers, distinguish microcontrollers from microprocessors, and learn how on-chip memory, input output ports, and communication protocols enable compact embedded systems.
Explore the ATmega16 microcontroller's features and pin diagram. Learn about its internal architecture and peripherals like ADC, timers, PWM, and communication interfaces.
Create your first microcontroller project in Microchip Studio for the ATmega16, write a hello world style test, understand an infinite loop, and build to generate a hex file for flashing.
Understand core embedded system terminologies, including binary representation, bits, nibble, byte, word, registers, and data and address buses used in Atmega microcontrollers.
Learn how the atmega 16 uses the direction register to set each port pin as input or output, enabling input and output operations and interfacing with leds and push buttons.
Learn how to use the AVR port register to drive LEDs, set pins as outputs with the direction register, and toggle port C with 0xff and 0x00, including pull up.
Create a Proteus simulation of an ATmega16 with eight leds on port C, each with 1k resistors, and write a C program in Atmel Studio to blink them every second.
Write a C program to blink leds at a one-second interval on an atmega16 using microchip studio with a 16 mhz external crystal, then simulate hex in protest model.
Master bit-level control by applying masking to reset or set specific bits in AVR registers, using port A and port C examples with masks like 0xF7 and 0x02.
Learn to read external signals via input port programming on an Atmega 16, using DDR and pin registers, masking pin A to drive port C LEDs with a pull-up resistor.
Simulate switch-based LED control on port C with an Atmega16 in Microchip Studio; read PA3, mask 0x08, and blink eight LEDs with 500 ms delays when pressed.
Explore push button configurations and pull-up and pull-down circuits, with internal pull ups on Atmega 16 via DDR and PORT, driving port C LEDs with two switches for four states.
Bare-metal avr programming: simulate switches on port a with pull-ups, read SW1 and SW2 via 0x20 and 0x40, and blink port c LEDs with 0x55 and 0xaa on atmega16.
Explore how interrupts enable immediate microcontroller responses, compare polling with interrupt-driven design, and implement external and internal interrupts with proper ISR, flag and enable bits, and volatile variable considerations.
Configure external interrupts on avr microcontrollers, detailing int0, int1, and int2 edge and level triggering, relevant registers, and a practical rising-edge interrupt example with an led and switch.
Explore programming and simulating external interrupt 0 for atmega16, configure rising and falling edges, implement a minimal ISR with a volatile flag, and flash LEDs via port c in response.
Explore how Atmega 16 timers and counters count internal and external pulses, operate in up or down modes, and generate pwm via prescalers and compare match registers.
Explore the AVR timer0 registers (tcnt0, tccr0, and ocr0) and configure prescalers and modes—normal, ctc, pwm variants, and overflow/compare-match interrupts.
Calculate TC and T0 values and prescaler settings in the normal mode of an 8-bit timer to generate precise delays, from microseconds to seconds, considering overflow and repeats.
Implement a 50 microsecond delay with timer0 on ATmega16 and visualize the pb3 port b pulse in a simulator; use a modular design with system_init, timer0_init, timer0_delay and prescaler eight.
In this course, you will learn the bare metal programming concepts of AVR series microcontrollers and their simulation using Proteus software. You will learn to interface different components with AVR microcontrollers. You will also learn to design complete systems based on different components. We will use Proteus to design the system on software and to analyze and verify the working of our firmware before downloading the firmware to actual hardware. You will also learn to upload the firmware on real hardware with the help of different IDEs such as ATMEL Studio and others. We will be interfacing different components such as push buttons, analog and digital sensors, LCD, relays etc. We will also implement different communication protocols such as UART, SPI and I2C and will send different data to other microcontrollers. We will also do some small projects in order to complete the learning.
----------Some highlights---------------
1. Well-explained theoretical concepts.
2. Teaching with the flavor of hardware implementation.
3. Learn to apply theoretical concepts in practice.
4. Learn different types of sensors and their interfacing.
5. Interfacing different actuators and displays.
6. Implementing different communication protocols.
7. Learn to implement timers in real-case scenarios.
8. Learn to use interrupts in your program for better control applications.
Highly use of modular programming concepts.