Распродажа

Курс программирования микроконтроллеров AVR с нуля

От регистров ATmega8 до готового устройства: программирование AVR на языке C по даташиту

ЛУЧШИЙ КУРС в Инфраструктура
(27) Смотреть сводку отзывов

Первоначальная цена составляла 1,190 грн.Текущая цена: 490 грн.

-60%
Вы экономите: 700 грн (60%)
До конца акции:01дн09час57мин26сек

−20% при покупке от 2 курсов — активируется автоматически

Курс начинается с объяснения бита, байта и АЦП с нуля и разбирает базовые конструкции C внутри программы, а не Arduino-библиотеками. Каждая схема сначала проверяется в Proteus и только потом переносится на реальный ATmega8 программатором USBasp с проверкой мультиметром и осциллографом.

  • Настраиваете порты, таймеры, прерывания, АЦП, ШИМ, UART и I²C ATmega8 на уровне регистров по даташиту, без библиотек Arduino
  • Собираете и проверяете каждую схему в симуляторе Proteus, а затем переносите прошивку на реальный контроллер программатором USBasp
  • Доводите до результата практические узлы: динамическую индикацию, вольтметр, термометр на DS18B20, ЖК-дисплей, регулятор на ШИМ и шаговые двигатели
Add to Cart
Курс программирования микроконтроллеров
Курс программирования микроконтроллеров AVR с нуля
1,190 грн Первоначальная цена составляла 1,190 грн.490 грнТекущая цена: 490 грн.
  • 91 час 5 минут видео
  • 63 урока в 35 модулях
  • Скачивается на компьютер
  • Доступ навсегда, без дедлайнов
  • Сертификат по запросу

Цифровой видеокурс для самостоятельного изучения, без обратной связи с преподавателем. После оплаты курс появится в вашем аккаунте на сайте, а ссылка на материалы придёт на email.

Покупка занимает минуту
  1. Добавляете курс в корзину.
  2. Вводите почту и пароль — это ваш аккаунт, в нём курс будет храниться постоянно.
  3. Оплачиваете любым удобным способом — их больше восьми.
  4. Курс сразу открывается в аккаунте, ссылка дублируется на почту.

Доступ навсегда: вернуться к курсу можно и через год. Вопросы — чат на сайте или info@siluette.com.ua.

Курс ведётся на русском языке: видео и материалы русскоязычные. Украинская версия курса появится позже.

Что вы сможете после курса

  • Настраивать порты ввода-вывода ATmega8 на вход и выход и менять отдельные линии масками и побитовыми операциями, не задевая остальные
  • Использовать таймеры-счётчики и оба типа прерываний — внешние и по таймеру — вместо блокирующих задержек
  • Снимать показания АЦП и датчиков TMP36, DS18B20 и SHT3x и переводить их в напряжение, температуру и влажность
  • Строить динамическую индикацию на семи- и четырёхразрядных индикаторах и выводить текст и числа на символьный ЖК-дисплей LCD 1602
  • Настраивать ШИМ для регулировки яркости и скорости, обмениваться данными по UART и I²C/TWI и сохранять настройки в EEPROM
  • Подключать и программно управлять униполярным и биполярным шаговыми двигателями, проверяя схему мультиметром и осциллографом

Кому подойдёт курс

Начинающим с нуля

Материал начинается с объяснения, что такое бит, байт, системы счисления и АЦП, прежде чем переходить к коду. Базовые конструкции языка C — функции, массивы, switch-case — разбираются внутри курса, а не считаются заранее известными.

Тем, кто вырос из Arduino

Курс не использует Arduino IDE и готовые библиотеки: код пишется в Atmel Studio на уровне регистров AVR по даташиту ATmega8, с ручной настройкой портов, таймеров и интерфейсов.

Тем, кто хочет собирать реальные устройства

Курс держит «железную» часть: сборку схем на макетной плате с перемычками, прозвонку контактов мультиметром и проверку сигналов осциллографом при настройке ШИМ, а не только код в симуляторе.

Курс не подойдёт тем, кто хочет паять печатные платы, работать с другими семействами микроконтроллеров вроде STM32, PIC или ESP, или получить готовый прибор без разбора кода и схемы.

Как проходит обучение

  • Каждая схема сначала собирается и проверяется в симуляторе Proteus — Ошибки видно и их исправляют до того, как деталь попадёт на реальную плату
  • Готовая схема переносится на реальный ATmega8 программатором USBasp — Навык доводится до работающего устройства, а не остаётся в симуляторе
  • Код пишется на уровне регистров AVR по даташиту ATmega8, без библиотек Arduino — Понимание переносится на другие модели AVR после чтения их документации
  • Материал закрывает тему дважды в разной подаче: последовательные практические занятия и отдельный блок с разделением теории и практики по темам — Сложную тему можно закрепить вторым проходом с другого ракурса
  • Каждый практический узел доводится до проверяемого результата — от вывода на индикатор до сравнения показаний с мультиметром — Есть понятный критерий, что схема и код работают правильно

Что понадобится

  • Atmel Studio (AVR Studio) и Proteus — бесплатные программы для написания C-кода, компиляции и симуляции схем
  • Микроконтроллер ATmega8 в DIP-корпусе, макетная плата с перемычками, программатор USBasp и USB-UART преобразователь
  • Мультиметр и осциллограф для проверки распиновки, сигналов ШИМ и последовательной связи на реальной плате

Почему самому обычно не выходит

Самостоятельное освоение AVR обычно упирается в разрыв между Arduino-скетчами и реальными регистрами микроконтроллера: готовые библиотеки скрывают DDR, PORT, TCCR и ADMUX, поэтому при переходе к работе по даташиту без готовых функций непонятно, с какого регистра начинать и как читать таблицы AVR.

Вторая сложность — отделить ошибку программы от ошибки монтажа. Без привычки сначала проверять схему в симуляторе, а потом переносить её на реальную плату программатором USBasp, трудно понять, не работает ли код или перепутано подключение. А протокол 1-Wire для датчика DS18B20 вообще не имеет аппаратной поддержки на ATmega8 и требует программной реализации по временным слотам — самостоятельно разобраться в этом по отрывочным примерам сложно.

Что изменится

До курса

  • Arduino-скетчи работают, но что происходит внутри регистров ATmega8 — непонятно
  • Схема в симуляторе Proteus работает, а на реальной макетной плате — нет
  • АЦП, ШИМ и прерывания выглядят как разрозненные термины без общей логики настройки
  • Протоколы 1-Wire, I²C и UART кажутся готовыми чёрными ящиками, которые нельзя разобрать
  • Непонятно, где искать ошибку — в коде или в монтаже схемы

После курса

  • Порты, таймеры и прерывания настраиваются на уровне регистров по даташиту ATmega8, без готовых Arduino-функций
  • Схема сначала проверяется в Proteus, а затем переносится на реальный ATmega8 программатором USBasp с проверкой мультиметром и осциллографом
  • АЦП, ШИМ и прерывания складываются в общий алгоритм: настройка регистра, событие, обработка
  • 1-Wire, I²C/TWI и UART собираются вручную по временным слотам и регистрам, поэтому протокол перестаёт быть чёрным ящиком
  • Ошибка программы и ошибка монтажа проверяются раздельно: поэтапно в симуляторе, затем прозвонкой мультиметром и эхо-тестами

Как устроен путь

  1. Основы и инструменты Изучаете биты, байты, системы счисления и порты ввода-вывода, осваиваете Atmel Studio, Proteus и программатор USBasp на простых схемах со светодиодами и кнопками.
  2. Таймеры, АЦП и индикация Настраиваете таймеры-счётчики, внешние и таймерные прерывания, снимаете показания АЦП и строите динамическую индикацию на семи- и четырёхразрядных индикаторах без блокирующих задержек.
  3. Интерфейсы и датчики Подключаете символьный ЖК-дисплей LCD 1602, обмениваетесь данными по UART и I²C/TWI, считываете показания датчиков DS18B20 и SHT3x и настраиваете ШИМ для регулировки яркости и скорости.
  4. Готовые устройства Собираете завершённые практические узлы — вольтметр, термометр с терморегулятором, регулятор на энкодере, шаговые двигатели и таймер обратного отсчёта с сохранением настроек в EEPROM — и проверяете их мультиметром и осциллографом.

Программа курса

63 урока · 35 модулей · 91 час 5 минут видео · От первого включения светодиода до законченных устройств на ATmega8 — по даташиту, шаг за шагом.

  • Собираете схему в Proteus, размещаете одноразовую настройку портов до основного цикла, задаёте частоту тактирования и программную задержку, а затем переносите готовую прошивку на реальный ATmega8 программатором USBasp.

    • Первая программа: настройка портов и задержки2:34:26

      Урок разделяет одноразовую настройку микроконтроллера, которая выполняется в main до while, и постоянно работающий алгоритм внутри самого цикла while. Схема собирается в Proteus из ATmega8, светодиодов и резисторов, а затем прошивка переносится на реальный контроллер через программатор USBasp. Разбирается связь между двоичным значением порта PORTD и состоянием светодиодов, частота тактирования и задержка `_delay_ms` с директивой `F_CPU`.

  • Настраиваете смешанный порт с кнопкой и светодиодами, включаете внутреннюю подтяжку и читаете фактическое состояние линии через регистр PIN, отличая его от заданного уровня PORT.

    • Работа с кнопкой и портами ввода-вывода2:33:36

      Настраивается смешанный порт микроконтроллера ATmega8: часть линий работает на вывод для управления светодиодами, а отдельная линия — на вход для кнопки, с поразрядной настройкой регистра направления DDR через маску. Кнопка подключена между входом и землёй с использованием внутренней подтяжки через PORT, поэтому нажатие соответствует активному нулю, а фактическое состояние линии считывается через регистр PIN. Алгоритм читает PIN по маске и ветвлением if/else переключает состояние светодиодов при нажатии и отпускании кнопки.

  • Определяете тип и распиновку одноразрядного семисегментного индикатора мультиметром, собираете схему с резисторами и выводите цифры от 0 до 9 для общего анода и общего катода.

    • Одноразрядный семисегментный индикатор2:07:27

      Разбираем устройство одноразрядного семисегментного индикатора: распиновку, сегменты A–G и точку DP, различие общего анода и общего катода. В Proteus собираем схему с ATmega8 и резисторами, определяем тип индикатора мультиметром и выводим цифры через маску байта на порту с учётом задержек через util/delay и F_CPU.

  • Осваиваете тип данных массив, храните в нём цифровые маски и выводите счётчик на индикатор, обращаясь к элементам массива по индексу.

    • Счётчик на семисегментном индикаторе2:37:33

      Урок разбирает работу с массивами на примере счётчика на семисегментном индикаторе для микроконтроллера ATmega8: тип данных, объявление, нумерация элементов с нуля и переприсваивание значений. Показано, как заполнить массив двоичными значениями и вывести их на порт через цикл for. Программа проверяется в Atmel Studio и в схеме Proteus.

  • Учитесь устанавливать, сбрасывать и переключать отдельный бит порта масками через операции И, ИЛИ, НЕ и исключающее ИЛИ, не затрагивая остальные линии.

    • Побитовые операции с портами микроконтроллера2:22:13

      Разбираем побитовые операции для управления отдельными разрядами порта микроконтроллера без изменения остальных линий: установку бита через ИЛИ с маской, сброс через И с инвертированной маской и переключение через исключающее ИЛИ. Практика — в Proteus на модели ATmega8 с светодиодами на порту D и прошивкой в Atmel Studio, где проверяются регистры DDRD и PORTD, маски со сдвигом и мигание отдельных светодиодов.

  • Собираете смешанный порт с кнопкой и светодиодом, читаете отдельный бит регистра PINB, переключаете светодиод операцией исключающего ИЛИ и разбираете разницу между удержанием кнопки и дребезгом контактов.

    • Кнопка на смешанном порту: проверка бита и XOR2:38:27

      Урок разбирает работу со смешанным портом ATmega8, где кнопка подключена к PB0, а светодиод — к PB1. Показано, почему проверка всего регистра PINB ненадёжна и нужно читать состояние отдельного бита через маску, а переключение светодиода по нажатию кнопки реализуется операцией XOR. Отдельно разбирается различие между удержанием кнопки и дребезгом контактов и способы защиты от многократного срабатывания.

  • Собираете динамическую индикацию с транзисторными ключами для индикатора с общим катодом и вводите таймер-счётчик 0 как способ отсчитывать время без блокирующей задержки.

    • Динамическая индикация и первый счётчик-таймер2:30:21

      Урок завершает схему динамической индикации на семисегментном индикаторе: транзисторные NPN-ключи подключают общий катод разряда к земле, порт D выдаёт маску сегментов, а порт B выбирает активный разряд. Вводится Timer/Counter 0 — восьмибитный счётчик с предделителем, который позволяет отсчитывать время без блокирующей задержки и переключать светодиоды по сравнению со значением таймера.

  • Сравниваете таймеры-счётчики 0, 1 и 2, подбираете таймер и предделитель под нужный интервал и разбираете ограничения опроса регистра счёта в основном цикле.

    • Таймеры-счётчики 0, 1 и 2: сравнение режимов2:33:53

      Урок расширяет работу с таймерами ATmega8: сравнивает восьмибитный счёт Timer/Counter 0 и Timer/Counter 2 с шестнадцатибитным Timer/Counter 1, разбирает регистры управления, предделитель и старший/младший байты счётчика. Показана разница между опросом порога TCNT в основном цикле и обработкой переполнения через флаги и прерывания. Отдельно разбираются подавление дребезга кнопок и ошибка подключения PNP-транзистора в симуляции Proteus.

  • Настраиваете внешнее прерывание по даташиту: тип события в регистре MCUCR, разрешение источника в GICR, глобальный флаг в регистре статуса и обработчик, который освобождает основной цикл от постоянной проверки кнопки.

    • Внешнее прерывание INT02:25:39

      Урок показывает настройку внешнего прерывания INT0 в ATmega8: выбор типа события в MCUCR, разрешение источника через GICR и глобальное разрешение прерываний битом I в SREG. Разбирается обработчик ISR для вектора INT0_vect с функциями sei() и cli() из avr/interrupt.h, а также причина дребезга кнопки и перескакивания цифр на индикаторе при её удержании. Используется одноразрядный индикатор с общим катодом на порту B и кнопки на порту D.

  • Настраиваете таймер-счётчик на прерывание по переполнению через регистр маски прерываний и обработчик, который срабатывает независимо от основного цикла программы.

    • Прерывание по переполнению таймера2:11:14

      Разбираем прерывания от таймер-счетчиков на примере ATmega8: настройку регистра маски прерываний, разрешение прерывания по переполнению первого 16-битного таймера и включение глобальных прерываний в статусном регистре. Программу повторяем в Atmel Studio и проверяем схему в Proteus.

  • Настраиваете прерывание по совпадению таймера-счётчика с заданным значением и автоматический сброс счётчика, чтобы получать повторяющийся интервал точной длительности.

    • Таймер в режиме сравнения2:19:09

      Урок продолжает тему прерываний от таймер-счётчиков и разбирает режим сравнения на примере первого таймер-счётчика ATmega8. Показана настройка регистра OCR1A, прерывания по совпадению значений и автоматическое обнуление счётчика при срабатывании. Программа проверяется в Atmel Studio и Proteus.

  • Разносите сегменты индикатора между несколькими портами, когда часть выводов занята кварцем, прерываниями и UART, и сравниваете обработку выбора через if-else и через switch-case.

    • Распределение сегментов и switch-case2:15:30

      Разбираем, как распределить выводы микроконтроллера ATmega8 под сегменты динамической индикации, если один порт занят кварцем, прерыванием или интерфейсом UART и не может быть отдан целиком. Настраиваем порт D на выход и переходим от знакомого оператора if-else к оператору switch-case, сравнивая их работу на одном и том же примере. Разбираем роль оператора break внутри switch-case и проверяем схему в Atmel Studio и Proteus.

  • Разбираете, что такое аналого-цифровой преобразователь, его частоту дискретизации, разрядность и опорное напряжение, и делаете первое измерение напряжения потенциометра.

    • Первый эксперимент с АЦП2:37:11

      Разбираем аналого-цифровой преобразователь микроконтроллера ATmega8: как аналоговое напряжение превращается в цифровое значение и для чего это нужно на практике. Проходим ключевые параметры АЦП — частоту дискретизации, разрядность и опорное напряжение, разбираем внутренний и внешний источники опорного напряжения. Схему собираем и проверяем в Atmel Studio и Proteus, меняя напряжение потенциометром и наблюдая результат преобразования.

  • Настраиваете источник опорного напряжения АЦП, собираете делитель напряжения и переводите числовое значение АЦП в вольты с типом данных с плавающей точкой.

    • Пересчёт АЦП в вольты1:54:32

      Подключаем к микроконтроллеру ATmega8 семисегментный индикатор и настраиваем источник опорного напряжения АЦП — внутренний либо внешний через вывод питания. Собираем делитель напряжения и переводим считанное с АЦП значение в вольты через переменную типа float. Проверяем схему и программу в Atmel Studio и Proteus.

  • Расширяете вольтметр на диапазон выше 5 вольт и знакомитесь с аналоговым компаратором ATmega8, который сравнивает два напряжения без преобразования в число.

    • Многодиапазонный вольтметр2:57:20

      Ранее собранный на ATmega8 вольтметр расширяется с одного фиксированного диапазона (до 5 вольт) до нескольких — через резисторный делитель на входе АЦП, с пересчётом показаний АЦП в вольты по коэффициенту деления и разрядности. Разбирается аналоговый компаратор: его устройство на основе операционного усилителя и работа со сравнением двух напряжений в отличие от измерения через АЦП.

  • Разбиваете код на функции с аргументами и возвращаемым значением, осваиваете прототип функции и порядок её объявления до и после main.

    • Функции языка C2:03:37

      Урок показывает путь от схемы в Proteus до реальной прошивки ATmega8: собирается схема со светодиодами и резисторами, создаётся проект в Atmel Studio, а настройка направлений и начального состояния портов размещается в main до while, чтобы не повторяться в бесконечном цикле. Разбирается связь между двоичным значением PORTD и состоянием восьми линий порта, а также понятие тактов и частоты тактирования: для расчёта задержки библиотекой util/delay частота задаётся директивой F_CPU до подключения заголовочного файла. Готовая прошивка записывается в реальный микроконтроллер через программатор USBasp, который не заменяется USB-TTL-конвертером.

  • Переключаетесь между несколькими каналами АЦП регистром ADMUX, подключаете аналоговый датчик температуры TMP36 и выносите код измерения в отдельные функции и файлы.

    • Два аналоговых канала и TMP362:38:43

      Подключаем к микроконтроллеру датчик температуры TMP36 и переключаемся между несколькими каналами АЦП через регистр AdMux, вынося смену канала в отдельную функцию. Код разбивается на функции и разносится по отдельным файлам проекта. Показания температуры пересчитываются из напряжения на выводе датчика по переводным коэффициентам, схема и программа проверяются в Proteus и Atmel Studio.

  • Разбираете устройство EEPROM ATmega8, регистры адреса и данных EEAR, EEDR и EECR и сохраняете значение, которое не теряется при отключении питания.

    • Чтение и запись EEPROM2:10:06

      Урок разбирает энергонезависимую память EEPROM микроконтроллера ATmega8: чем она отличается от оперативной памяти и почему запись и чтение данных требуют указания адреса ячейки через регистры EEAR (EEARH и EEARL) и EEDR. Также показано, где найти параметры EEPROM в даташите микроконтроллера. Практическая часть — повторение программы в Atmel Studio и проверка схемы в Proteus.

  • Разбираете назначение fuse-битов ATmega8 по даташиту, подключаете внешний кварцевый резонатор и настраиваете источник тактирования вместо внутреннего RC-генератора.

    • Fuse-биты и тактирование1:59:00

      Разбираем назначение fuse-битов микроконтроллера ATmega8 и сверяем их текущее состояние с документацией на примере вкладки Fuse в программаторе. Настраиваем тактирование: подключение внешнего кварцевого или керамического резонатора, выбор частоты и соответствующих значений CKSEL, работа от внутреннего RC-генератора. Проверяем результат в Atmel Studio и схеме Proteus.

  • Собираете 4-битный интерфейс LCD 1602 на контроллере HD44780, настраиваете линии RS и Enable и пишете собственные функции инициализации, отправки команды и символа.

    • Подключение символьного LCD 16023:39:37

      Разбирается символьный дисплей LCD 1602 на контроллере HD44780 и подключение его к ATmega8 через четырёхбитный интерфейс по линиям D4–D7 с сигналами RS и Enable. Схема сначала собирается в Proteus с моделью LM016L: проверяются контраст через потенциометр, назначение выводов VSS, VDD, VE, подсветка через резистор, а затем пишутся функции инициализации, отправки команды и данных для базовой библиотеки вывода символов и строк.

  • Дополняете библиотеку LCD функциями вывода строки и числа, задаёте позицию курсора для обновления поля без хвостовых цифр и собираете бегущую строку программно.

    • Дополняете библиотеку LCD функциями вывода строки и числа, задаёте позицию курсора для обновления поля без хвостовых цифр и собираете бегущую строку программно.

      • Вывод чисел на LCD 16022:13:26

        Занятие продолжает работу с LCD 1602: числовые переменные и строки преобразуются в последовательность кодов символов для вывода на экран. Число раскладывается на десятичные разряды делением с остатком, а строка выводится посимвольно из массива с учётом завершающего нулевого символа. Позиция вывода задаётся адресом курсора, что позволяет обновлять отдельные поля экрана и организовать движение текста программным способом.

  • Настраиваете асинхронный обмен USART ATmega8 по даташиту, подключаете линии TXD и RXD к виртуальному терминалу и передаёте строку побайтово с проверкой готовности регистра передачи.

    • Настраиваете асинхронный обмен USART ATmega8 по даташиту, подключаете линии TXD и RXD к виртуальному терминалу и передаёте строку побайтово с проверкой готовности регистра передачи.

      • UART: передача данных от AVR2:24:17

        Урок вводит асинхронную последовательную передачу данных через USART ATmega8: режим, скорость в бодах и формат кадра берутся из даташита, а выводы TXD/RXD соединяются с Virtual Terminal в Proteus. Строка отправляется байт за байтом через регистр UDR с проверкой флага готовности буфера, без записи завершающего нулевого символа C-строки в терминал. В конце UART сопоставляется с SPI и I²C/TWI как один из интерфейсов обмена данными микроконтроллера.

  • Принимаете байты через USART по флагу готовности, собираете строку с учётом символов возврата каретки и перевода строки и распознаёте простые команды, полученные из терминала.

    • Принимаете байты через USART по флагу готовности, собираете строку с учётом символов возврата каретки и перевода строки и распознаёте простые команды, полученные из терминала.

      • UART: приём команд с компьютера1:53:03

        USART переводится из режима одностороннего вывода в приём: программа дожидается флага готовности данных USART и только тогда читает байт из регистра UDR, а эхо принятого символа в терминал служит проверкой соединения, скорости и формата кадра. Принятые байты накапливаются в буфере ограниченного размера до служебных символов CR и LF, после чего строка превращается в C-строку и сравнивается с образцами команд для выбора действия программы.

  • Подключаете стандартный вывод C — printf и sprintf — к USART микроконтроллера и на практике соединяете ATmega8 с компьютером через USB-UART преобразователь CH340G, проверяя канал эхо-тестом и закороченными линиями передачи и приёма.

    • Подключаете стандартный вывод C — printf и sprintf — к USART микроконтроллера и на практике соединяете ATmega8 с компьютером через USB-UART преобразователь CH340G, проверяя канал эхо-тестом и закороченными линиями передачи и приёма.

      • Потоковый вывод через UART1:41:41

        Урок связывает низкоуровневую передачу USART со стандартным вводом-выводом C: создаётся функция вывода символа через USART, поток stdout перенаправляется на неё через fdevopen, после чего printf и sprintf используются для вывода строк и переменных. Разбирается разница между printf (вывод сразу в поток) и sprintf (сборка строки в массив, полезно для LCD), а также ограничения — объём памяти и время передачи каждого символа. Проверка выполняется в Proteus через Virtual Terminal.

      • Как подключить МК по UART к ПК19:18

        Урок показывает поэтапное подключение ATmega8 к компьютеру через USB–UART-преобразователь CH340G: проверка перемычки питания 3,3/5 В, перекрёстное соединение TXD/RXD и объединение общего провода, loopback-тест самого преобразователя до подключения микроконтроллера. Терминал настраивается на параметры 9600 бод, 8N1, после чего командами с ПК управляют выводами порта PB микроконтроллера. Диагностика неисправностей идёт по порядку: питание и драйвер, loopback, COM-порт и параметры терминала, затем провода и прошивка.

  • Разбираете двухпроводную шину I²C/TWI ATmega8 — линии SDA и SCL, адресацию устройств, подтягивающие резисторы и последовательность старт, адрес, данные, подтверждение, стоп — на примере обмена с EEPROM.

    • Разбираете двухпроводную шину I²C/TWI ATmega8 — линии SDA и SCL, адресацию устройств, подтягивающие резисторы и последовательность старт, адрес, данные, подтверждение, стоп — на примере обмена с EEPROM.

      • Основы шины I²C/TWI2:37:04

        Урок вводит двухпроводную шину I²C/TWI и разбирает её электрическую и протокольную основу на примере AVR и внешней EEPROM: линии SDA и SCL, роли ведущего и ведомого, семибитную адресацию, подтягивающие резисторы и последовательность START–адрес–данные–ACK–STOP. Разбирается архитектурное отличие от UART — общая шина на несколько ведомых устройств вместо отдельных линий на каждое, а также поиск регистров и таблицы кодов состояний TWI в даташите ATmega8. EEPROM используется как учебное ведомое устройство для отработки адресации, передачи байтов и чтения.

  • Подключаете датчик SHT3x к шине I²C, принимаете два байта измерения, собираете 16-битное значение и рассчитываете температуру и влажность по формулам даташита.

    • Подключаете датчик SHT3x к шине I²C, принимаете два байта измерения, собираете 16-битное значение и рассчитываете температуру и влажность по формулам даташита.

      • Датчик температуры и влажности по I²C2:02:31

        Урок разбирает чтение датчика SHT3x по протоколу I²C/TWI: подключение линий SDA и SCL к ATmega8, отправку команды измерения и приём байтов температуры и влажности. Старший и младший байты каждого результата объединяются в 16-битное значение, которое переводится в температуру и относительную влажность по формулам даташита. Результат выводится на семисегментный индикатор после завершения полного измерительного цикла, а не по каждому принятому байту.

  • Разбираете назначение широтно-импульсной модуляции, различаете частоту, период и коэффициент заполнения и сравниваете быстродействующий и фазокорректный режимы таймера-счётчика 1.

    • Разбираете назначение широтно-импульсной модуляции, различаете частоту, период и коэффициент заполнения и сравниваете быстродействующий и фазокорректный режимы таймера-счётчика 1.

      • Режимы и частота ШИМ2:28:43

        Урок объясняет назначение ШИМ и связывает режимы таймера AVR — Fast PWM и Phase Correct PWM — с частотой и средней мощностью нагрузки на примере ATmega8. Рассматриваются регистры OCR1A/OCR1B и ICR1, роль предделителя и вершины счёта, а также различие между частотой, периодом и коэффициентом заполнения. Настройка проверяется в Proteus осциллографом и светодиодом.

  • Собираете измерительную схему с четырёхразрядным индикатором, определяете направление вращения энкодера по двум каналам и связываете его значение с регистром сравнения ШИМ.

    • Собираете измерительную схему с четырёхразрядным индикатором, определяете направление вращения энкодера по двум каналам и связываете его значение с регистром сравнения ШИМ.

      • ШИМ и четырёхразрядная индикация2:18:27

        Собираем измерительную схему с четырёхразрядным индикатором на общем катоде и подключаем энкодер для управления коэффициентом заполнения ШИМ. Разбираем динамическую индикацию, определение направления вращения энкодера по двум квадратурным каналам через внешнее прерывание и запись значения в регистр сравнения OCR1A с учётом верхней и нижней границ. Показания АЦП с потенциометра используем для грубой настройки, энкодер — для точной, а светодиод и индикатор — для наглядного контроля результата.

  • Проверяете реальный энкодер и его кнопку на макетной плате, ограничиваете диапазон регистра сравнения и получаете рабочий регулятор яркости или скорости с обратной связью по индикатору.

    • Проверяете реальный энкодер и его кнопку на макетной плате, ограничиваете диапазон регистра сравнения и получаете рабочий регулятор яркости или скорости с обратной связью по индикатору.

      • Практическое управление ШИМ энкодером1:21:25

        Урок подключает энкодер и связывает его вращение с ШИМ: событие на канале A вызывает внешнее прерывание, а состояние канала B определяет направление, изменяя счётчик. Отдельная кнопка энкодера обрабатывается вторым внешним прерыванием. Значение счётчика записывается в регистр OCR1A и меняет коэффициент заполнения ШИМ в диапазоне 0…1023, регулируя среднюю мощность нагрузки, а результат отображается на индикаторе.

  • Разбираете физику позиционирования шагового двигателя, подключаете униполярный двигатель 28BYJ-48 через драйвер ULN2003 и составляете полношаговую и полушаговую последовательности с регулировкой скорости энкодером.

    • Разбираете физику позиционирования шагового двигателя, подключаете униполярный двигатель 28BYJ-48 через драйвер ULN2003 и составляете полношаговую и полушаговую последовательности с регулировкой скорости энкодером.

      • Занятие 312:28:00

        Урок разбирает устройство шагового двигателя на примере униполярного 28BYJ-48 и его подключение через драйвер ULN2003 к микроконтроллеру AVR, включая проверку распиновки мультиметром. Рассматриваются полношаговый и полушаговый режимы переключения обмоток, а скорость вращения регулируется энкодером через изменение задержки таймера.

  • Сравниваете полношаговый и полушаговый режимы униполярного двигателя, а затем подключаете биполярный шаговый двигатель через мостовой драйвер с раздельным силовым и логическим питанием.

    • Занятие 323:13:38

      Урок завершает программное управление униполярным шаговым двигателем, сравнивает полношаговый и полушаговый режимы переключения обмоток через таймер и энкодер, а затем показывает подключение и запуск биполярного двигателя через мостовой драйвер. Разбираются распиновка драйвера, перемычка питания логики, сглаживающие конденсаторы и стабилизатор, а также типичные ошибки подключения и помехи от двигателя.

  • Реализуете протокол 1-Wire побитово по временным слотам, поскольку у ATmega8 нет аппаратного блока 1-Wire, формируете последовательность сброса и импульса присутствия и передаёте первые байты датчику DS18B20.

    • Реализуете протокол 1-Wire побитово по временным слотам, поскольку у ATmega8 нет аппаратного блока 1-Wire, формируете последовательность сброса и импульса присутствия и передаёте первые байты датчику DS18B20.

      • Занятие 331:38:24

        Урок вводит программную реализацию протокола 1-Wire на микроконтроллере ATmega8 и строит обмен с датчиком DS18B20: линия данных с подтягивающим резистором, reset и импульс присутствия, передача и приём байтов по временным слотам с временным запретом прерываний. Для одного датчика адресация упрощена командой Skip ROM. Схема собрана в Proteus и включает ATmega8, DS18B20 и светодиод индикации присутствия.

  • Запускаете преобразование в DS18B20, читаете и объединяете байты его памяти, выводите положительную и отрицательную температуру с десятичной точкой и собираете терморегулятор с гистерезисом.

    • Запускаете преобразование в DS18B20, читаете и объединяете байты его памяти, выводите положительную и отрицательную температуру с десятичной точкой и собираете терморегулятор с гистерезисом.

      • Занятие 342:54:37

        Урок завершает обмен с датчиком DS18B20: запускает преобразование температуры, выдерживает время по разрядности датчика и считывает два байта scratchpad. Значение обрабатывается с учётом дробной части и знака (для отрицательной температуры используется дополнительный код) и выводится на четырёхразрядный семисегментный индикатор с десятичной точкой. На основе измеренной температуры строится терморегулятор с гистерезисом, включающий и отключающий нагрузку через реле или транзисторный ключ.

  • Тот же материал курса в другой подаче — теория и практика разделены по узким темам, от портов и систем счисления до ШИМ и EEPROM, для закрепления после последовательных занятий.

    • Разбираете, что входит в микроконтроллер и чем он отличается от микропроцессора, осваиваете связку Atmel Studio, Proteus и AVRDUDE и настраиваете первый вывод ATmega8 на светодиод.

      • МИКРОКОНТРОЛЛЕРЫ – Новая эра электроники9:12

        Урок разбирает, что входит в микроконтроллер и чем он отличается от микропроцессора: память, порты ввода-вывода, таймеры-счётчики, АЦП, ШИМ и интерфейсы обмена данными. Рассматриваются корпуса DIP, SOIC, QFP/TQFP и QFN и критерии выбора микроконтроллера для обучения — на этой основе выбран ATmega8 в DIP-корпусе.

      • Avr studiо, proteus, программатор8:10

        Урок показывает путь разработки программы для AVR: постановка задачи, составление алгоритма, написание кода на C в AVR Studio, компиляция, проверка схемы в Proteus и запись прошивки в ATmega8 программатором.

      • Бит _ Байт _ Системы счисления15:41

        Урок объясняет битовую организацию данных: бит, байт, диапазон значений восьмибитного регистра и запись чисел в двоичной, десятичной и шестнадцатеричной системах. Показана связь разрядов регистра с настройкой портов микроконтроллера.

      • Порты ввода-вывода19:05

        На примере схемы с ATmega8 урок показывает настройку вывода порта D через регистры DDR и PORT, подключение светодиода через токоограничивающий резистор, компиляцию программы в AVR Studio, проверку в Proteus и прошивку контроллера.

      • Proteus _ AVRDUDE _ Отладка и прошивка микроконтроллеров AVR10:06

        Урок показывает сборку виртуальной схемы AVR в Proteus: выбор ATmega8, светодиода и резистора, подключение HEX-файла после компиляции в AVR Studio и проверку работы схемы. Рассматривается назначение AVRDUDE при переносе прошивки на физический контроллер.

    • Формируете программные задержки на мигающих светодиодах, собираете светодиодную гирлянду с кнопками, подключаете семисегментный индикатор и осваиваете массивы, логические и побитовые операции.

      • Формирование задержек времени микроконтроллера14:55

        На примере поочерёдного мигания двух светодиодов, подключённых к порту D, урок показывает формирование программных задержек через библиотеку util/delay.h и директиву F_CPU, а также отличие такой задержки от аппаратного таймера-счётчика.

      • Светодиодная гирлянда на микроконтроллере19:05

        Урок показывает подключение двух кнопок к PB0/PB1 и восьми светодиодов к порту D через резисторы: кнопки считываются как входные уровни и переключают режимы движения огней, записываемые в PORTD.

      • Семисегментный индикатор14:04

        Урок разбирает устройство одноразрядного семисегментного индикатора: сегменты a–g, различие индикаторов с общим анодом и общим катодом и подключение сегментов через резисторы к порту ATmega8 по данным его распиновки.

      • Массивы18:00

        На примере счётчика с кнопками урок заменяет отдельные значения PORTD для каждой цифры одним массивом семисегментных кодов, объясняет объявление массива в C и обращение к его элементам по индексу от 0 до 9.

      • Логические операции20:22

        Урок разбирает логические операции И, ИЛИ, НЕ, исключающее ИЛИ и сдвиг как способ изменять или проверять отдельные биты регистра, не затрагивая остальные, — на примере регистров портов ATmega8.

      • Побитовые операции20:40

        Практическое занятие показывает установку и сброс отдельных битов PORTD побитовыми операциями ИЛИ и И с масками в Proteus и на реальном ATmega8, не изменяя состояние остальных выводов.

    • Разбираете таймеры-счётчики 0, 1 и 2 ATmega8, настраиваете внешние прерывания и прерывания по переполнению таймера и подключаете внешний кварцевый резонатор с настройкой fuse-битов.

      • Таймер-счетчик 0 ATmega829:09

        Урок разбирает устройство восьмибитного Timer0 ATmega8: регистр TCNT0, переполнение после 255, роль предделителя и частоты F_CPU в расчёте временного интервала, а также поиск нужных регистров и режимов в даташите.

      • Таймер-счетчик 1, 2 ATmega820:28

        Урок сравнивает Timer1 и Timer2 ATmega8: шестнадцатибитный Timer1 и восьмибитный Timer2, выбор источника тактирования и предделителя, назначение регистра сравнения и различие режимов по переполнению и по сравнению.

      • Внешние прерывания микроконтроллера25:24

        Урок объясняет механизм внешнего прерывания и настройку INT0/INT1 на выводах PD2/PD3: регистры GICR и MCUCR, выбор реакции по уровню или фронту, глобальное разрешение прерываний и оформление обработчика ISR.

      • Прерывания от таймер-счетчика ATmega817:30

        На примере световой последовательности на шести светодиодах урок настраивает прерывание по переполнению Timer1: бит TOIE1 в TIMSK, глобальное разрешение прерываний и обработчик ISR, работающий независимо от основного цикла программы.

      • Кварцевый резонатор _ Настройка фьюзов20:19

        Урок показывает подключение внешнего кварцевого резонатора 8 МГц к выводам XTAL1/XTAL2 с конденсаторами и настройку фьюзов CKSEL ATmega8, а также необходимость согласовать директиву F_CPU с выбранной частотой тактирования.

    • Собираете четырёхразрядный семисегментный индикатор с общими сегментами и отдельным выбором разряда, программируете мультиплексирование и переносите переключение разрядов на прерывание таймера с кнопками управления числом.

      • Динамическая индикация _ Часть 1 _ Программирование МК AVR17:25

        Урок объясняет устройство четырёхразрядного семисегментного индикатора и принцип динамической индикации: сегменты подключаются к порту D, а разряды — к порту B, поочерёдное включение разрядов создаёт видимость одновременного отображения всех цифр.

      • Динамическая индикация _ Часть 2 _ Программирование МК AVR18:26

        Урок программирует четырёхразрядную динамическую индикацию на ATmega8: массив семисегментных кодов, разбор числа по разрядам и поочерёдный вывод цифр на PORTD/PORTB с задержкой между переключениями разрядов.

      • Динамическая индикация / Часть 3 / Программирование МК AVR9:23

        Урок переписывает динамическую индикацию с задержек на обработчик прерывания по переполнению Timer0 (регистры TCCR0, TIMSK, TCNT0, функция sei(), ISR(TIMER0_OVF_vect)) и добавляет две кнопки на PC4/PC5 для увеличения и уменьшения выводимого числа с автоповтором при удержании.

    • Собираете таймер обратного отсчёта с кнопками управления и звуковым сигналом, настраиваете АЦП ATmega8 для пороговой индикации и строите цифровой вольтметр с резистивным делителем.

      • Интересный таймер на микроконтроллере19:58

        Урок собирает таймер обратного отсчёта на ATmega8 с четырьмя кнопками (изменение секунд, старт, сброс), четырёхразрядным индикатором и звуковым генератором на транзисторах BC547/BC557, включаемым по завершении отсчёта через вывод PC2.

      • Аналогово-цифрофой преобразователь АЦП _ Программирование МК AVR32:03

        На примере измерения напряжения потенциометра урок настраивает АЦП ATmega8 через регистры ADMUX и ADCSRA на входе ADC1 и включает один из трёх светодиодов в зависимости от диапазона напряжения, имитируя индикацию заряда батареи 1,5 В.

      • Умный ВОЛЬТМЕТР своими руками _ Программирование МК AVR11:25

        Урок превращает измерение через АЦП на входе ADC1 в цифровой вольтметр с резистивным делителем: результат пересчитывается в напряжение и сравнивается с порогом 1,5 В для включения светодиода, показания сверяются с мультиметром в Proteus.

    • Разбираете назначение ШИМ и настраиваете быстродействующий и фазокорректный режимы таймера-счётчика 1, а затем учитесь менять не только коэффициент заполнения, но и частоту сигнала через верхнюю границу счёта.

      • Широтно-импульсная модуляция AVR _ Часть 1 _ Программирование МК AVR15:36

        Урок вводит понятие широтно-импульсной модуляции: связь коэффициента заполнения и частоты импульсов с мощностью на нагрузке (яркость светодиода, скорость двигателя, тон динамика) и аппаратную реализацию ШИМ через Timer1/Timer2 и выходы OC1A/OC1B ATmega8.

      • Быстродействующая ШИМ AVR _ Часть 2 _ Программирование МК AVR17:00

        Урок настраивает быстродействующую ШИМ (Fast PWM) на Timer1 ATmega8 через регистры TCCR1A, TCCR1B и OCR1A/OCR1B, выводит сигнал на PB1/PB2 (OC1A/OC1B) и проверяет изменение яркости светодиода в Proteus.

      • ШИМ с точной фазой _ Часть 3 _ Программирование МК AVR26:08

        Урок сравнивает быстродействующую и фазокорректную ШИМ Timer1 и добавляет изменение коэффициента заполнения OCR1A кнопками с ограничением на минимум и максимум, наблюдая изменение яркости светодиода в Proteus.

      • ШИМ с точной фазой и частотой _ Часть 4 _ Программирование МК AVR20:57

        Урок добавляет к регулированию заполнения ШИМ изменение частоты сигнала через верхнюю границу счёта (регистр ICR1) Timer1 ATmega8: OCR1A задаёт коэффициент заполнения, а изменение TOP — период импульсов; кнопки меняют оба параметра раздельно.

    • Разбираете регистры EEAR, EEDR и EECR энергонезависимой памяти ATmega8 и применяете их к таймеру обратного отсчёта, чтобы пользовательская настройка сохранялась между включениями.

      • EEPROM настройки _ Часть 1 _ Программирование МК AVR29:24

        Урок объясняет устройство EEPROM ATmega8 для хранения настроек без питания: регистры EEAR, EEDR, EECR и последовательность разрешения и запуска записи через биты EEMWE и EEWE, а также чтение сохранённого байта.

      • EEPROM AVR _ Часть 2 _ Программирование AVR20:28

        На основе проекта таймера обратного отсчёта урок показывает сохранение установленного значения секунд в EEPROM ATmega8 и его восстановление после включения контроллера, с учётом ожидания завершения записи и ограниченного ресурса перезаписи памяти.

  • Знакомитесь с ATmega8 как учебной платформой, связкой Atmel Studio и Proteus, регистрами направления и уровня порта и полным циклом от исходного кода до прошивки реального микроконтроллера на первом простом примере со светодиодом.

    • Основы программирования микроконтроллеров AVR3:40:43

      Вводный урок задаёт модель работы с AVR на примере ATmega8: связка Atmel Studio и Proteus, порты ввода-вывода и регистры DDR/PORT, компиляция кода на C и загрузка прошивки в виртуальную схему со светодиодом и резистором. Разбирается нумерация битов портов, а также назначение выводов VCC, GND и RESET.

Частые вопросы

Здесь собраны ответы почти на все вопросы, которые задают перед покупкой. Нажмите на вопрос, чтобы раскрыть ответ.

Об этом курсе

  • Нет: материал начинается с объяснения бита, байта и систем счисления, а базовые конструкции языка C — функции, массивы, switch-case — разбираются внутри курса, а не считаются заранее известными.

  • Нет, пайки и изготовления печатных плат в курсе нет — все схемы собираются на макетной плате с перемычками.

  • Да, курс написан для перехода от Arduino-скетчей к работе на уровне регистров: код пишется в Atmel Studio по даташиту ATmega8, без библиотек Arduino IDE.

  • Нет, весь курс построен на одном ATmega8 в DIP-корпусе; другие семейства — STM32, PIC, ESP — не рассматриваются.

  • Микроконтроллер ATmega8, макетная плата с перемычками, программатор USBasp, USB-UART преобразователь, мультиметр и осциллограф — на них схема переносится после проверки в Proteus.

  • В курсе для нескольких датчиков DS18B20 используется отдельный вывод микроконтроллера на каждый датчик, а не поиск по ROM-адресу на общей шине.

Доступ и материалы

  • Сразу после оплаты, в ту же секунду и автоматически. Ждать подтверждения не нужно. Доступ приходит двумя путями сразу. Первый: на почту, указанную при оформлении заказа, приходит письмо со ссылкой на материалы. Второй: та же ссылка появляется в вашем аккаунте на сайте, в разделе «Загрузки», и остаётся там постоянно.

  • Все видео и дополнительные файлы лежат в облачном хранилище. Ссылка на него — в вашем аккаунте на сайте, раздел «Загрузки», и в письме, которое пришло после оплаты. Аккаунт здесь — не формальность, а способ доставки: курс остаётся в нём навсегда. Даже если письмо потерялось или вы вспомнили о покупке через год, ссылка будет на месте.

  • Скачивать можно и нужно. Мы рекомендуем сохранить видео на компьютер и смотреть оттуда. Причина простая: облачное хранилище не рассчитано на просмотр видео. Иногда оно позволяет включить ролик прямо в браузере, но качество при этом заметно хуже исходного. На своём компьютере вы увидите курс таким, каким его записывали.

  • Бессрочно. Курс остаётся вашим навсегда, возвращаться к нему можно сколько угодно раз. Если через год или два ссылка вдруг перестанет открываться по техническим причинам — напишите на info@siluette.com.ua, мы её восстановим.

  • Прежде всего: доступ у вас есть в любом случае. Войдите на сайт и откройте раздел «Загрузки» — ссылка на курс уже там, независимо от того, дошло письмо или нет. Чаще всего письмо теряется из-за опечатки в адресе при оформлении заказа. Ещё стоит заглянуть в папку «Спам». Не разбирается — не тратьте время: напишите на info@siluette.com.ua или в чат в правом нижнем углу сайта, мы поможем.

  • Лучше всего на компьютере или ноутбуке: скачайте видео и откройте любым привычным плеером. Понадобятся установленные видеокодеки — на большинстве компьютеров они уже есть. Скачать курс можно на сколько угодно устройств. А вот телефон мы не советуем, и по двум причинам. На маленьком экране плохо видно детали, особенно если в уроке показывают интерфейс программы. И на телефонах часто нет кодеков для форматов, в которых записаны видео.

Оплата и возврат

  • Банковской картой Visa, MasterCard или Prostir, через Google Pay, Apple Pay, Masterpass, Visa Checkout, платёжный QR-код, Botpay в Telegram или Privat24. Есть и оплата частями: Монобанк (3 или 4 платежа), А-Банк (2, 3 или 4 платежа и рассрочка), Банк Глобус (8 платежей), «Скибочка» от OTP Bank (3 платежа), мгновенная рассрочка и оплата частями от ПриватБанка.

  • Да. Платёжная система принимает карты из Евросоюза и любых других стран. Одна деталь, о которой часто забывают: банк может попросить подтвердить платёж — в мобильном приложении или кодом из СМС. Если оплата не проходит, проверьте приложение банка и сообщения.

  • Добавьте в корзину два курса или больше — скидка применится автоматически ко всем товарам в корзине. Два курса: минус 20% на оба. Пять курсов: минус 20% на все пять. Скидка сочетается с любыми акционными ценами и действует на весь каталог без исключений.

  • Цифровые товары возврату и обмену не подлежат. Это общее правило для всех электронных товаров в Украине — постановление Кабинета Министров № 172 от 19 марта 1994 года. При этом мы всегда на связи. Если доступ не открывается, ссылка перестала работать или файлы повреждены — напишите на info@siluette.com.ua, укажите дату и номер заказа. Восстановим. Если что-то непонятно в самом курсе, тоже пишите — подскажем.

  • Пока нет. Мы работаем только с частными покупателями — безналичной оплаты по счёту от юридических лиц сейчас нет.

Как проходит обучение

  • Нет. Все курсы — это записи уроков для самостоятельного изучения: преподаватель не отвечает на вопросы и не проверяет домашние задания. Именно поэтому курсы стоят намного дешевле обучения с куратором. Вы получаете тот же материал, но занимаетесь сами и в своём темпе.

  • Да, цифровой сертификат — по запросу и бесплатно. Напишите на info@siluette.com.ua, укажите имя и фамилию ровно в том виде, в каком хотите видеть их в сертификате, и мы пришлём его в течение суток.

  • Для большинства курсов — нет. Они рассчитаны на начальный уровень и объясняют с азов. Если курс требует подготовки, это сказано в его описании.

  • Нет. Ни дедлайнов, ни расписания, ни сгорающего доступа. Скачали — смотрите когда удобно, с любыми перерывами.

  • Курс покупается для личного использования, и мы просим относиться к этому по-человечески: за каждым уроком стоит работа, а цена и так сильно снижена.

Поддержка

  • Лучше всего на info@siluette.com.ua. Есть и чат в правом нижнем углу сайта, но почта надёжнее: там можно всё описать подробно и приложить скриншоты. Просьба: опишите, что именно вы делали и что пошло не так, и приложите снимок экрана с ошибкой. Так мы решим вопрос сразу, а не будем полдня выяснять, что произошло.

  • В рабочее время, с 9:00 до 19:00, на почту обычно отвечаем в течение часа, в чате — за пару минут. После 19:00 тоже случается, но время ответа не обещаем.

Отзывы покупателей

Что говорят покупатели

Покупатели считают курс понятным практичным и подходящим для начального уровня. Сильными сторонами называют пошаговые объяснения работу в симуляторе и большое количество практики. Повторяющиеся претензии связаны с медленным темпом слишком подробными объяснениями и отдельными сложными местами в вычислениях настройках и регистрах.

  1. Ксения

    31.08.2026 Подтвержденный клиент

    Первую схему в симуляторе собрала без особых проблем, а вот с прошивкой сначала запуталась. Изменила программу, но в виртуальной схеме продолжал работать старый вариант. Оказалось, что после правки нужно снова собрать проект и указать свежий файл контроллеру. Ещё проверила полярность светодиода и номер вывода, потому что при правильной программе он всё равно не загорался. Удобно, что весь поиск ошибки разбит на понятные шаги. Сначала схема и питание, потом файл, настройки и код. После такой проверки стало ясно, чем отличается симуляция от настоящей прошивки и зачем не перескакивать сразу к сложным причинам.

  2. Артем

    20.08.2026 Подтвержденный клиент

    Общая шина сначала казалась мне странной, особенно после привычного соединения двух устройств отдельными проводами. На примере с памятью стало понятнее, как несколько устройств могут работать через одни линии и почему каждому нужен свой адрес. Отдельно проверил подтягивающие резисторы, общий провод и порядок обмена. Самая полезная часть для меня это разбор подтверждения после каждого шага. Раньше программа просто ждала неизвестно чего, а теперь понимаю, что нужно проверять результат передачи и искать причину отсутствия ответа. После чтения этого материала уже не путаю линии данных и тактирования.

  3. Светлана

    15.08.2026 Подтвержденный клиент

    Дольше всего возилась с тем, чтобы понять разницу между адресом ячейки и данными. Сначала записывала значение, а потом при чтении получала не то, что ожидала. Когда стала отдельно проверять адрес, содержимое и готовность памяти, ошибка нашлась довольно быстро. Понравилось, что объяснение не ограничивается готовой строкой кода. Видно, почему запись нельзя запускать бесконечно и зачем ждать завершения операции. В Proteus удалось проверить сохранение значения после перезапуска схемы. Теперь гораздо яснее, где хранить настройку, которая должна пережить отключение питания.

  4. Тамара

    07.08.2026 Подтвержденный клиент

    Отдельно понравилось, что многоразрядный индикатор объясняют не как готовую магию, а через его устройство. Я сначала перепутал общие выводы цифр с линиями сегментов и получил странную картинку. Пришлось свериться с документацией и проверить распиновку, после этого стало понятнее, что именно подключать. Интересно наблюдать, как цифры появляются по очереди, хотя глазами виден сразу весь результат. Слишком большая пауза сразу выдала мерцание, а после уменьшения интервала изображение стало нормальным. Еще полезно разобрали разницу между общим анодом и общим катодом, потому что без этого легко получить инверсное свечение. Практика оставила ощущение, что схему действительно можно собрать, а не просто повторить набор действий.

  5. Григорий

    29.07.2026 Подтвержденный клиент

    Теперь не хочется переписывать весь байт ради одной линии. Маски и простые операции разобраны на понятных примерах, так что в голове наконец стало спокойнее.

  6. Анастасия

    23.07.2026 Подтвержденный клиент

    Тема сначала показалась сухой, но после примеров с отдельными битами стала намного яснее. Понравилось, что объясняют спокойно и без лишней суеты.

  7. Вадим

    16.07.2026 Подтвержденный клиент

    Стало понятнее, как таймер отсчитывает время сам, без длинной паузы в программе. Пример со светодиодом хорошо показывает результат.

  8. Николай

    10.07.2026 Подтвержденный клиент

    Попробовал отправлять строку в терминал и сначала получил набор непонятных символов. Оказалось, частота в проекте и настройки терминала не совпадали. После исправления текст пошёл в правильном порядке, символ за символом. Полезно, что отдельно разбирается ожидание готовности перед отправкой, иначе часть сообщения действительно пропадает. Потом вынес передачу одного символа в отдельную функцию и стало проще собирать сообщения. На длинной строке заметно, что программа ждёт завершения передачи и в это время занята только этим. Для первого примера это нормально, но ограничение стоило обозначить заметнее, потому что поначалу кажется, будто канал работает полностью независимо.

  9. Юлия

    02.07.2026 Подтвержденный клиент

    События на кнопке теперь воспринимаю не как постоянную проверку, а как отдельный сигнал. Объяснение получилось последовательным и понятным.

  10. Дмитрий

    23.06.2026 Подтвержденный клиент

    С энкодером сначала было больше возни, чем ожидал. В симуляции направление определялось аккуратно, а на макетной плате пришлось проверить контакты и немного разобраться с дребезгом. После этого значение стало меняться в обе стороны без хаотичных скачков. Отдельно проверил кнопку и увидел, что она действительно меняет параметр. Потом связал этот параметр с яркостью светодиода, и уже было понятно, что происходит не просто изменение числа, а регулировка длительности импульса. Хорошо, что отображение значения оставили рядом с управлением. Так проще заметить пропущенные шаги и выход за границы. Практика получилась цельной и вполне прикладной.

Показано 10 из 27

Оставить отзыв