
Explore AVR microcontrollers using C language through hands-on practice, starting with ports, PWM, and ADC on an ATmega8, assembled on a breadboard, with Atmel Studio installation guidance.
Explore decimal, binary, and hex representations in AVR microcontrollers, using PORTD examples and 8-bit register limits, with conversion tips and the BinHexDec app.
Learn how 8-bit and 16-bit variables work in C for AVR microcontrollers, including binary, decimal, and hex representations, and how to declare global and local variables.
Explore C bitwise manipulation with six operators—bitwise and, bitwise inclusive or, bitwise exclusive or, left shift, right shift, and one's complement—using masks to set, clear, and toggle last bits.
Describe how bitwise shift left, shift right, and one's complement operate in C, with examples of setting a register bit like DDRD by shifting 1 left by 3.
Learn arithmetic and relational operators in C language for AVR microcontrollers, including plus, minus, multiply, divide, remainder, and more and equal, less, less and equal, double equal, no equal.
Explore the if-else statement in C for AVR microcontrollers, learn the syntax, how nonzero expressions select statement 1, and that else-if chains are evaluated in order.
Explore the switch-case statement in C for AVR microcontrollers, showing how an expression matches case labels or integer constants, how optional breaks control flow, and how it compares with if-else.
Explore while and for loops in AVR C: while runs while an expression is non-zero, and for initializes, tests, and updates a variable.
Learn the structure of an AVR C program by including headers like avr/io.h and avr/interrupt, using #define macros, and implementing main with port configuration and a blinking LED loop.
Learn how an 8-bit atmega8 microcontroller handles input/output with PORTx, DDRx, and PINx registers. Explore port operations on PORTD, PORTC, and PORTB and observe simple write-and-simulate examples in AVR Studio.
Explore the input/output ports of a microcontroller and the three registers DDRx, PORTx, and PINx. Learn how DDRD sets pin direction, how PORTD controls output, and how to read input with PIND using bitwise operations such as (1<<3).
Drive led with a button on atmega8 using c; set pd0 as input and pb2 as output, so pressing turns led on (low) and releasing turns led off with resistor.
Toggle the led while the button is held and switch the led state on every press using pd0, pb3, port registers, and a one-second delay.
Explore common electronic components for AVR projects, including resistors, capacitors, LEDs, and transistors. Learn safe wiring practices, resistor values, and pinouts to protect microcontrollers and drive devices.
Build a dc motor control circuit with an ATmega8, pwm speed control, a button input, a potentiometer as adc input, and an led indicator.
Create an Atmel Studio GCC project for Atmega8, configure PB2 as output and PD0 as input with pull-ups, and write code to light the LED when the button is pressed.
Attached driver for AVR ISP MKll programmer for Windows 10.
Learn pulse width modulation with AVR Timer1 to control LED brightness and motor speed, using phase correct 10-bit PWM with inverted OC1B and OCR1A/B duty cycles.
Explore using the AVR ADC to adjust motor speed from a potentiometer on PC5, with PWM output on PB2 OC1B, and configure ADMUX, ADCSRA, reference 2.56 volts, and prescaler 128.
Connect a 7-segment display's anode to +5 volts and its cathodes to PORTD with current-limiting resistors, convert the ADC result to a digit, and display it.
Control the speed of a 12-volt electric motor with an AVR microcontroller using PWM on OC1A via PB1, driven by a transistor and configured with TCCR1A, powered from a supply.
Adjust the LED brightness based on ambient light using a photoresistor. Read light levels with the adc and drive pwm on pb3 to vary the LED brightness.
Learn to implement ADC and PWM on an AVR microcontroller to drive a motor and LED using a button and potentiometer, configuring timer 1 and OCR registers.
Explore the AVR analog comparator, comparing AIN0 and AIN1, outputting ACO or triggering timer input capture or interrupt. Configure ACD, ACBG, ACIE, ACIC, and ACIS for rise, fall, or toggle.
Demonstrate generating timer overflow interrupts with Timer1 on ATmega8, configuring prescaler, top 0xFFFF, and TOIE1 to drive a 1 Hz count on a 7-segment display.
Explore avr microcontrollers practical work with non-volatile eeprom memory to store the motor running time and update it every five seconds, using the work_time variable and a 7-segment display.
Connect a 12-button membrane switch panel to an AVR microcontroller using a 4x5 matrix, with columns as outputs and rows as inputs, scanned to detect pressed keys.
Learn how external interrupts on the atmega8 trigger actions via pins pd2 (int0) and pd3 (int1). Set gicr and mcucr bits, enable global interrupts in sreg, and implement the handler.
Connect an encoder to an Atmega8 AVR microcontroller and drive an LCD display, using a button and encoder contacts to navigate the top, bottom, or both display lines.
Control torque and speed of a direct current motor using an Atmega8 microcontroller. Employ PWM-based speed regulation and torque monitoring via current sensing.
Summarize the dc motor speed and torque control circuit: pwm from pb3, adc sensing at pc0 and pc1, and rc filter (r15, c4) to pc0; displays on portd and portb.
Explore dc motor control with torque monitoring, using display_7.h and motor_control.h, adc channels for speed (channel 1) and torque (channel 0), and pwm via timers to display torque and speed.
Watch the final video demonstration of a ready device, showing how to change motor speed and brake the motor armature, illustrating dc motor control concepts.
Connect the ds18b20 temperature sensor to a one-wire bus on an atmega8 and display readings on an lcd using ds18b20_lib and lcd_lib_4.
Explore how to display information with AVR microcontrollers using C, from LEDs to LCDs and TFTs, including wiring, drivers, and library-based control.
Connect a single led to an atmega8 microcontroller using a 1 kΩ resistor, drive pb2 high, and turn it on with button b1 (pd0) using a pull-up.
Wire a 7-segment 1-digit display to an atmega8, attach two buttons to change the number, using a common anode, port d cathodes with 1k resistors, and 7_segment.h with Numbers[].
Connect plus and minus buttons to an AVR microcontroller, incrementing or decrementing a 0-9 count with pull-ups and updating a 1-digit common-anode LED display.
Connect a 2-digit common-anode 7-segment display to an AVR ATMEL microcontroller, configuring port d as output, driving cathodes on pc2 and pc3 at over 100 Hz to avoid flicker.
Learn to drive a 4-digit 7-segment display from an Atmega8 microcontroller by multiplexing digits with a timer interrupt, achieving a switching frequency of at least 100 Hz to avoid flicker.
Drive a four-digit 7-segment display with a 74HC595 shift register via SPI, transmitting data through MOSI and clocking with SCK, then latching with storage clock.
Connect a 16x2 lcd to an Atmega microcontroller using 8 data lines and rs and e, with rw grounded, via a C library implementing Init, Send_command, and Send_data.
Connect a 16x2 lcd to an avr microcontroller using a 4-bit data bus with rw grounded. Bind data to pa0–pa3 and control lines rs to pa6, e to pa7.
This library allows connection AVR microcontroller to character LCD display using 2 wires only. I2C interface on C language (not for Arduino).
Explore the WG12864 lcd graphic display with two ks0108 controllers, a 64 by 64 screen driven by Atmega16, and the 8-page memory layout for dot addressing.
Learn to control an lcd graphic display on avr microcontrollers by mastering initialization, y axis address, x axis address, page selection, and writing or reading 8-bit data.
Program a graphic LCD with an ATMEGA16 in C, wiring data to port C and control lines to port A, using WriteData and WriteInstructions to initialize and control the display.
Explore the spi serial interface for data exchange and control of external devices, and learn the general principles of communication over a serial interface.
Explore the functional diagram of SPI with Atmega8 as master and slave, showing MOSI, MISO, SCK, and SS connections and how data shifts via the eight-bit transfer.
Explore the simplest SPI usage by sending data to the MAX5400 digital potentiometer to adjust volume, using MOSI, SCK, and SS on an ATmega8 circuit with a 7-segment display.
Explain the avr spi setup: ss pb2, mosi pb3, sck pb5, ddrb outputs. Show data_send() flow: enable spi, lower ss, multiply arg by 28 to 0–252, write spdr, wait spif.
Learn AVR microcontroller UART initialization at baud rate 57600, enabling RX/TX with 8-bit data. Use Button_1 to send the symbol U and a carriage return via UDR in Termite.
Explore how the UART interface uses the ASCII symbol table to transmit characters as numbers or as single-quoted C characters, and how two-digit numbers are sent by tens and ones.
Send strings from an AVR microcontroller to a PC via UART using C, strlen, udre, and udr; receive data with a receiver complete interrupt and TERMITE terminal for data exchange.
Exchange data between a pc and avr via uart by sending strings and displaying received data on an lcd through the pc0–pc3 data bus.
connect the HC-05 module to a pc via uart, power from 3.3 volts, swap tx and rx with a usb-com converter, and use termite to send at commands at 9600.
Connect the hc-05 Bluetooth module to an Android smartphone and exchange data with a PC using a USB-to-UART adapter and a Bluetooth terminal app. The LED indicates a successful pairing.
Connect the atmega8 microcontroller to an android smartphone with the hc-05 bluetooth module, display received data on lcd, and send 'I'm AVR' via uart when the pc5 button is pressed.
Explore the ATxmega 256A3U features, including 32 MHz operation, PLL options, DMA, and seven 16‑bit timers. Learn I/O, ADCs, DAC, comparators, and interfaces like UART, USB, SPI, and TWI.
Learn to configure xmega i/o ports with dir, dirset, dirclr, dirtgl; manage pins via in, out, pinctrl, and the input register; leverage output drivers, interrupts, events, and remappable peripheral functions.
Explore how the data output value register (OUT) controls AVR port pins. Use OUTSET, OUTCLR, and OUTTGL to set, clear, or toggle pins, and read states with IN.
Explore AVR microcontrollers' port interrupts and their configuration registers, including INTCTRL, INT0MASK, INT1MASK, INTFLAGS, REMAP, and PINnCTRL, to manage interrupt levels, sources, masks, and per-pin sense configurations.
Write an avr c program to turn an led on and off by configuring PD0 as output with the DIR register on the ATXMEGA256A3U, using 3.3 volts and 2 mhz.
Blink the LED by configuring PD0 as an output and toggling the OUT register using mask methods like OUTSET, OUTCLR, and OUTTGL.
Explore xmega input pins by wiring a button to port d pin 3 (pd3), configure pull-up with the PIN3CTRL register, and blink an led when bit 3 is cleared.
Connect a 7-segment one-digit display to the XMEGA microcontroller with a common anode at 3.3 volts and 1k resistors, and use two PORTE buttons to change the number.
Learn to wire plus and minus pushbuttons to an AVR microcontroller, use pull-ups, and update a 1-digit 7-segment display by incrementing or decrementing a count from 0 to 9.
Connect a 7-segment four-digit display to a microcontroller with anodes on porte and cathodes on pd0–pd3, using pd5 and pd7 buttons to adjust value, multiplexed by a timer overflow interrupt.
Connect LCD display to XMEGA microcontroller with an 8-wire bus and RS and E lines; use LCD library to show 'The sky is blue' on a two-line, sixteen-column display.
Connect the WG12864 graphic LCD to the XMEGA256A3U and learn how the 128 by 64 dot display maps to pages and segments, with data bytes controlling the dots.
Learn to initialize a graphic lcd display and control it using the instruction table, including reset, start line, y axis and x axis addresses, pages, chip cs1/cs2, and 8-bit data.
Learn to create a simple program to control an LCD display using C language. The lecture covers header file, WriteData and WriteInstructions, chip selection (CS1/CS2), and init_lcd with pulse signaling.
Understand a keypad matrix of four columns and five rows; a pressed button links a column to a row, while the program scans and displays the number on port d.
Configure port interrupts on an XMEGA AVR, setting PD5 and PD7 with pull-ups and falling-edge sense to drive a 7-segment display on PORTE via INT0 and INT1 handlers.
Build an atmega8-based watering machine with two 7-segment displays for active and waiting times, four buttons, non-volatile memory storage, and a 24V peristaltic pump on a breadboard.
Develop a watering machine for indoor plants by wiring buttons, 2-digit 7-segment displays, and a peristaltic pump driven by pwm on pb3; configure timer1 and eeprom for timing.
Develop a watering machine project for indoor plants on an AVR microcontroller in C, wiring displays and motor, and implementing debounced buttons to adjust watering, waiting, and flow settings.
The lecture demonstrates the Timer1 overflow interrupt driving a time-interval system, with Step_waiting and Step_watering, countdown of waiting and watering times, hourly memory in non-volatile memory, and red/green LED indicators.
Learn how the program displays waiting and watering times on a 7-segment display, with settings to adjust times and water flow using button controls and timer interrupts.
Explore how EEPROM stores key variables in a watering machine. Save waiting_time_set, watering_time_set, water_flow, and waiting_time_current every hour to withstand power outages.
Connect a 24-volt peristaltic pump to a microprocessor using a transistor amplifier and pwm on pin pb3. Use Timer1 interrupts and OCR2 settings to turn the pump on and off.
Assemble components on the breadboard and adjust waiting_time_set and watering_time. Start the device to see the red LED blink and green LED while the motor rotates.
Study AVR microcontrollers and C language by building an alarm clock with ATmega8 (upgrade to ATmega32) and learn I/O pins, registers, timers, interrupts, 7-segment display, buttons, and EEPROM.
Examine an AVR circuit with ATmega8, a four-digit 7-segment display and buzzer wired to port D and port C, using mode, stop, plus, minus to cycle hours, minutes, alarm minutes.
Wire a 7-segment display to microcontroller using a header file and a #define numeral array to map segments to pins; configure ports and pull-ups for buttons and buzzer in main.
Configure timer1 overflow with no prescaling, read alarm and current time from eeprom, and use main loop button checks to adjust minutes, hours, and save changes.
Configure Timer1 overflow interrupt to drive a 4-digit seven-segment display, updating digits and showing minutes, hours, or alarm values based on the select variable.
Display functions on AVR microcontrollers using C language, writing to portc cathodes and portd anodes to show minute and hour digits, using minute_alarm, minute_1, minute_2, and numeral array.
Explore timer2 asynchronous mode on the Atmega8, clocked by a 32768 Hz crystal, enable via the assr register, and run a seconds-minutes-hours counter with a button-driven alarm.
Set the time on the breadboard alarm clock, adjusting current and alarm minutes and hours, then test the alarm sound and off button to confirm a finished device.
Attention! All earned funds will go to support the Ukrainian army in the fight against Russian invaders.
This course is for beginner and advanced electronics engineers who want to gain and increase experience in developing embedded systems on AVR microcontrollers. I think that AVR ATMEL microcontrollers are the most advanced 8-bit microcontrollers. All ARDUINO projects are built by using these microcontrollers. After completing the course, the student will receive the necessary knowledge about I/O ports, ADC, PWM, EEPROM, timers, interrupts. Much attention in this course will be paid to interfaces with external devices - sensors, wireless devices, real time clocks, external EEPROM, etc.. We will take a look the UART (USART) serial interface, SPI interface, TWI (two wire interface), the connection by 1-wire bus. The course will consider connections to the microcontroller of various devices - display devices (LED, 7-segment LED displays, LCD), matrix keyboards and so on. Students will get the experience of programming AVR microcontroller on C language. This course includes business projects also. Finished codes sources of this projects I will send students in private messages. The course shows complete programs and videos of working devices. Work projects will be included in this course also. This training course is constantly expanding. Feedback with students. Individual lessons and project support.
I kindly ask you to carefully read the curriculum and description of the course and do not make purchases with the aim of further refund. The course contains enough material in the public domain for you to appreciate the presentation style. Sorry, my english isn't nice))