Программирование микроконтроллеров

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

Программирование микроконтроллеров для начинающих

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

Для кого предназначен курс

Данный курс рассчитан главным образом для начинающих, поэтому подробно рассмотрено назначение каждого символа в коде, предполагая что ранее слушатель не имел никакого опыта в программировании; изучаем «даташиты», подробно рассматриваем периферию: таймер-счетчик, прерывания, АЦП, ШИМ, интерфейсы и т.п. Выполняем анализ ошибок,  наиболее часто допускаемых начинающими, рассматриваем альтернативные варианты кода и многое другое.

Какой тип микроконтроллеров будем изучать

Изучать программирование мы будем на примере микроконтроллеров AVR. Для обучающих целей за базовый МК принят ATmega8. Плюс несколько последних занятий будут посвящены микроконтроллерам STM32.

Изучать в качестве первого микроконтроллера  STM32 по личному и опыту других программистов я не рекомендую. Проще и продуктивней начинать изучение с 8-ми битных МК, например таких как ATmega8, ATmega48, ATmega16, ATmega8535, ATmega328, ATtiny2313, ATtiny13 и т.п. Кроме того, работу МК линейки AVR можно эмулировать в программе Proteus. Благодаря этому можно изучать работу и выполнять отладку микроконтроллеров не имея в наличии самих МК, что очень удобно как в обучающих, так и в практических целях.

В дальнейшем я собираюсь проводить курсы по программированию микроконтроллеров STM32, поскольку они сейчас пользуются наибольшим спросом среди программистов встроенных систем. И в целях экономии времени, чтобы не дублировать самого себя, я буду строить занятия с учетом того, что у слушателей уже имеется хотя бы минимальный опыт программирования МК AVR, и мне не придется уделять много времени снова рассказывая, что собой представляют функции, операторы, массивы, побитовые операции или, например, порты ввода-вывода, таймеры, АЦП, ШИМ, UART, SPI и т.п. Все эти и многие другие вопросы рассмотрены в данном курсе. 

На каком язык программирования будем писать программы

В основном микроконтроллеры программируют на таких языках: C, С++, Python, а также на Ассемблере. Знать ассемблер – это хорошо, но опыт показывает, что программирование микроконтроллеров для начинающих выглядит гораздо интересней и увлекательней на языке C. Поэтому в данном курсе особое внимание уделяется языку C, причем С излагается с учетом того, что у слушателей ранее не было никакого опыта программирования вовсе, то есть мы будем изучать C от самых базовых понятий до вполне приличного уровня.

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

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

Программа курса включает следующие основные пункты:

  1. Область применение микроконтроллеров (МК). Основная периферия МК. Отличие микроконтроллера от микропроцессора. Порти ввода-вывода микроконтроллера. Настройка портов на выход. Подключение светодиодов. Функция main. Оператор while. Директива препроцессора #include.
  2. Библиотека задержек. Директива препроцессора #define. Прошивка микроконтроллера.
  3. Подключение кнопок к портам микроконтроллера. Настройка портов МК на выход. Подтягивающий и стягивающий резисторы. Высокое входное сопротивление. Проверка состояния пинов порта микроконтроллера.
  4. Семисегментные индикаторы. Подключение одноразрядных семисегментных индикаторов с общим катодом и общим анодом.
  5. Массивы. Оператор for. Типы данных int, char.
  6. Логические операции. Побитовые операции. Установка, сброс, переключение отдельных битов микроконтроллера.
  7. Проверка отдельных битов микроконтроллера. Динамическая индикация.
  8. Подключение динамической индикации посредством транзисторов. Общие понятия о таймер-счетчиках. Настройки нулевого таймер-счетчика. Регистр контроля и счетный регистр таймер-счетчика.
  9. Настройки первого и второго таймер-счетчиков. Отличие 8-ми битного и 16-ти битного таймер-счетчиков. Форматы записи чисел в таймер-счетчики.
  10. Дребезг контактов. Борьба с дребезгом. Настройка работы кнопки в разных режимах. Общие понятия о прерываниях. Внешние прерывания.
  11. Прерывание от таймер-счетчиков. Прерывание при переполнении таймер-счетчика. Динамическая индикация по прерыванию таймер-счетчика.
  12. Прерывание таймер-счетчика при совпадении. Формирование точного интервала времени. Таймер. Секундомер.
  13. Настройка фьюзов. Подключение внешнего кварцевого резонатора к микроконтроллеру.
  14. Оператор switch case. Динамическая индикация с применением switch case.
  15. Сдвиговый регистр 74HC595. Принцип работы. Применение. Подключение к микроконтроллеру. Расширение портов микроконтроллера. Последовательное соединение сдвиговых регистров. Статическая и динамическая индикация с применением сдвиговых регистров.
  16. Разработка частотомера и тахометра.
  17. Аналогово-цифровой преобразователь (АЦП). Принцип работы. Основные параметры. Настройки. Источники опорного напряжения. Расчет схемы подключения.
  18. Настройки работы АЦП по прерыванию. Сборка и настройка вольтметра. Типы данных с плавающей запятой. Явное и неявное преобразование типов данных.
  19. Подключение аналогового датчика температуры TMP36 (LM35). Измерения с нескольких каналов АЦП. Подключение кнопок к выводам АЦП.
  20. Аналоговый компаратор. Принцип действия. Основные параметры. Настройки. Применение. Режимы работы аналогового компаратора.
  21. Энергонезависимая память EEPROM. Основные параметры. Настройки. Организация памяти, запись и чтение данных из EEPROM.
  22. Функции. Типы функций. Создание и подключение подключаемых файлов .h и .c. Определение наибольшего и среднего числа.
  23. Подключение жидкокристаллического дисплея (ЖК) LCD. Настройки. Различие между строками и символами. Код ASCII. Отображение символов и строк на ЖК.
  24. Вывод переменной на ЖК дисплей. Применение функций itoa, dtostrf, sprintf. Вольтметр на ЖК дисплее. Настройки среды для работы с плавающей запятой для функции sprintf.
  25. Матричная клавиатура. Принцип работы. Подключение. Работа с двухмерными массивами данных.
  26. Широтно-импульсная модуляция (ШИМ). Принцип работы. Основные параметры. Настройки. Быстродействующая ШИМ. ШИМ с точной фазой. ШИМ с точной фазой и частотой.
  27. Регулирование ШИМ посредством кнопок и АЦП. Энкодер. Принцип работы. Подключение.
  28. Шаговый двигатель (ШД). Принцип работы и управления униполярным и биполярным ШД. Управление униполярным ШД посредством драйвера ULN2003.
  29. Управление биполярным, униполярным ШД и коллекторным двигателям посредством драйверов LN298N, L293D, DVR8834.
  30. Интерфейс UART. Принцип работы. Настройки. Передача данных.
  31. Прием данных по интерфейсу UART.
  32. Применение функций для работы с UART. Передача данных с АЦП по UART.
  33. Аппаратная реализация интерфейса 1-wire. Подключение датчика температуры DS18B20.
  34. Интерфейс 1-wire. Обмен данными с датчиком температуры DS18B20.
  35. Интерфейс TWI (I2C). Принцип работы. Настройки. Подключение EEPROM 24C256.
  36. Интерфейс TWI (I2C). Подключение датчика температуры и влажности SHT3x.
  37. OLED дисплей. Основные параметры и настройки. Подключение OLED посредством TWI (I2C).
  38. Интерфейс TWI (I2C). Подключение расширителя портов PCF8574. Подключение LCD к МК посредством PCF857.
  39. Интерфейс SPI. Принцип работы. Настройки. Обмен данными между двумя МК.
  40. Интерфейс SPI. Подключение преобразователя MAX6675 и термопары.

Особенность данного курса

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

После курсов

После изучения курса Вас ожидает следующее:

  • Полюбите микроконтроллеры и больше не будете их бояться.
  • Научитесь программировать микроконтроллеры любых типов серии AVR и сможет приступить к МК STM32.
  • Приобретете навыки уверенного программирования на языке C.
  • Научитесь читать и понимать даташиты (техническую документацию) микроконтроллеров, датчиков, радиоэлектронных элементов.
  • Сможете разрабатывать электронные устройства средней сложности на базе микроконтроллеров AVR.
  • Сможете очень быстро и без труда освоить ARDUINO.
  • Будет гораздо проще и интересней изучать микроконтроллеры других серий: STM, PIC и т.п.
  • Приобретете новую профессию и в дальнейшем сможете работать программистом микроконтроллеров.

 

Курс состоит из 40 видеороликов, общей продолжительность более 80 часов, объемом более 130 ГБ. Также к видеозаписям прилагаются сопутствующие материалы ко всем занятиям курса.

Стоимость курса 160 USD

 

По вопросам приобретения курса пишите сюда:

e-mail: zabarylodo@gmail.com

WhatsApp: +380634467738

Telegram: +380955505711

 

Дмитрий Забарило  

35 комментариев

Add a Comment

Ваш адрес email не будет опубликован.