Программирование мк avr. Программирование микроконтроллеров AVR: подключение и настройка оборудования

Как подключить микроконтроллер AVR для программирования. Какое оборудование потребуется для программирования AVR. Как собрать тестовую схему с микроконтроллером AVR на макетной плате. Какие программаторы можно использовать для AVR.

Содержание

Необходимое оборудование для программирования микроконтроллеров AVR

Для начала работы с микроконтроллерами AVR потребуется следующее базовое оборудование:

  • Сам микроконтроллер AVR (например, ATmega168)
  • Макетная плата для сборки схемы
  • Соединительные провода
  • Источник питания 5В (можно собрать на основе стабилизатора 78L05)
  • Программатор для загрузки прошивки в микроконтроллер
  • Светодиод и резистор для индикации работы программы

Рассмотрим подробнее ключевые компоненты этого набора.

Выбор программатора для AVR

Программатор — это устройство, которое позволяет загружать прошивку в микроконтроллер. Для AVR доступны следующие варианты программаторов:

Кабель DAPA

DAPA (Direct AVR Parallel Access) — самый простой и дешевый вариант. Представляет собой кабель для подключения микроконтроллера к параллельному порту компьютера. Основные особенности:


  • Очень низкая стоимость (можно собрать самостоятельно)
  • Требуется наличие параллельного порта на компьютере
  • Подходит только для низкоскоростного программирования
  • Есть риск повреждения порта компьютера при неправильном подключении

Arduino в качестве программатора

Плата Arduino может быть использована как программатор для AVR. Для этого нужно:

  • Загрузить в Arduino скетч программатора
  • Подключить выводы Arduino к программируемому микроконтроллеру

Это удобный вариант, если у вас уже есть Arduino.

USBtinyISP

Популярный USB-программатор на базе ATtiny2313. Основные преимущества:

  • Подключается через USB
  • Невысокая стоимость
  • Можно купить готовый или собрать самостоятельно

Профессиональные программаторы Atmel

Программаторы от производителя микроконтроллеров — самый надежный, но и самый дорогой вариант. Их особенности:

  • Поддержка всех режимов программирования, включая высоковольтное
  • Возможность восстановления «убитых» микроконтроллеров
  • Высокая скорость программирования
  • Значительная стоимость

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


Сборка тестовой схемы на макетной плате

Для первого знакомства с AVR удобно собрать простую схему на макетной плате. Она будет включать:

  • Микроконтроллер ATmega168
  • Стабилизатор напряжения 78L05 для питания 5В
  • Фильтрующие конденсаторы
  • Светодиод и токоограничивающий резистор

Порядок сборки схемы:

  1. Установить стабилизатор напряжения и подключить его выводы
  2. Добавить фильтрующие конденсаторы (100 мкФ на входе, 10 мкФ на выходе)
  3. Установить микроконтроллер, соблюдая ориентацию
  4. Подключить питание к выводам VCC и GND микроконтроллера
  5. Подключить светодиод через резистор к одному из выводов порта

Подключение программатора к собранной схеме

Для программирования микроконтроллера нужно подключить 6 линий:

  • VCC — питание
  • GND — земля
  • MOSI — линия данных от программатора к МК
  • MISO — линия данных от МК к программатору
  • SCK — тактовый сигнал
  • RESET — сброс микроконтроллера

Эти линии нужно соединить с соответствующими выводами на программаторе и микроконтроллере. После этого схема готова к загрузке первой программы.


Какой код загрузить для проверки работоспособности?

Для проверки правильности сборки схемы и работы программатора удобно использовать простую программу мигания светодиодом. Она будет включать и выключать светодиод с определенным интервалом.

Базовый алгоритм такой программы:

  1. Настроить вывод микроконтроллера на выход
  2. В бесконечном цикле:
    • Включить светодиод
    • Подождать 1 секунду
    • Выключить светодиод
    • Подождать 1 секунду

Если после загрузки этой программы светодиод начнет мигать — значит, схема собрана правильно и программирование работает.

Типичные ошибки при первом программировании AVR

При первых попытках запрограммировать микроконтроллер AVR нужно обратить внимание на следующие моменты:

  • Правильность подключения всех выводов программатора
  • Наличие стабильного питания 5В на микроконтроллере
  • Корректность выбора модели микроконтроллера в настройках программатора
  • Правильность установки фьюзов (настроек микроконтроллера)

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


Заключение

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


Программирование микроконтроллеров ⋆ diodov.net

Сегодня практически все электронные устройства содержат микроконтроллеры или микропроцессоры: начиная от простейшей музыкальной открытки и до сложнейших космических кораблей, не говоря уже об охвативших весь мир гаджетах. Поэтому современный радиолюбитель или электронщик очень отличается от тех, которые были 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 и т.п.
  • Приобретете новую профессию и в дальнейшем сможете работать программистом микроконтроллеров.

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

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

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

После оплаты курса автоматически загрузится страница с ссылками на скачивание материалов.

Внимание! Только для жителей России! В связи с войной в Украине платежи из России не проходят привычным образом, то есть невозможно осуществить оплату курса по кнопке «Оплатить». Также не возможен перевод с карты на карту. Однако оплату можно выполнить в криптовалюте либо картой через любой сайт-обменник на мой криптокошелек: USDT: TT2ogf7hBUWgtxmH6AnC3CoSf7vynx5jeZ

Сеть: TRC20

Сумма платежа 160 $

Если Вы не имеете криптокошелька, можно зарегистрироваться, как вариант, на сайте binance, который имеет функционал для покупки, продажи, перевод и торговли криптовалютой: https://accounts. binance.com/ru/register?ref=429200663

После перевода денег сделайте скрин экрана или копию чека, подтверждающего оплату и отправьте ее на мою почту: [email protected] и я Вам вышлю ссылки на скачивание материалов курса. Также, если возникнут вопросы, пожалуйста, обращайтесь ко мне по вышеуказанной почте.


Оплатить
160 USD

Контакты:

e-mail: [email protected]

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

Программирование микроконтроллеров AVR: от Arduino к ассемблеру

Ревич Юрий Всеволодович

Артикул2684
ISBN 978-5-9775-4076-6
Количество страниц 448
Формат издания 165 x 233 мм
Печать Черно-белая
Серия Электроника

921 ₽
783 ₽

# AVR# ассемблер# электроника и схемотехника#Arduino

  • Описание
  • Детали
  • Отзывы (1)

Описание

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

Даны готовые рецепты для программирования большинства основных функций современной микроэлектронной аппаратуры.

Ревич Юрий Всеволодович – инженер-электронщик, журналист и писатель с многолетним стажем. Основной круг интересов – проектирование микроэлектронных устройств от принципиальной схемы до пользовательского интерфейса, информационные технологии, их влияние на современное общество, технологические инновации, история компьютеров. Автор 16 книг, в том числе «Занимательной электроники», выдержавшей 5 изданий в течение 15 лет, а также нескольких сотен публикаций в журналах, газетах и сетевых изданиях, в том числе ряда статей на портале Habr. ru.

Детали

Артикул2684
ISBN978-5-9775-4076-6
Количество страниц448
Серия Электроника
ПереплетМягкая обложка
Печать Черно-белая
Год2020
Габариты, мм233 × 165 × 19
Вес, кг0.412

  • Новинки на 2 недели раньше магазинов
  • Цены от издательства ниже до 30%
  • Акции и скидки только для подписчиков
  • Важные новости БХВ

ПОЛЕЗНАЯ РАССЫЛКА КНИЖНЫХ НОВОСТЕЙ

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


Рекомендуем также

  •  Гадре Д., Мэлхотра Н.

    Нет в наличии

    Занимательные проекты на базе микроконтроллеров tinyAVR

    325 ₽
  •  Иго Том

    Умные вещи: Arduino, датчики и сети для связи устройств: Пер. с англ. 3-е изд.

    1650 ₽
    1402 ₽
  •  

    Изучаем Arduino: инструменты и методы технического волшебства – Бумажная книга

    660 ₽
  •  

    Ассемблер – это просто. Учимся программировать. 2-е изд – Бумажная книга

    656 ₽

Программирование AVR 02: Аппаратное обеспечение

Вы можете написать самый красноречивый код в истории встраиваемых систем, но без возможности запустить его на оборудовании он будет бесполезен. В этой части серии руководств мы рассмотрим:

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

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

Дорожная карта серии:

  • Программирование AVR 01: Введение
  • Программирование AVR 02: Аппаратное обеспечение
  • Программирование AVR 03: Чтение и компиляция кода
  • Программирование AVR 04: Запись кода

Программаторы

Как я уже говорил, если вы хотите получить это на чипе, вам нужен программатор. Вариантов огромное количество, но я расскажу о самых простых и недорогих. Мы сосредоточены на внутрисистемном программировании (ISP), что означает, что вы можете программировать чип, не удаляя его из схемы.

Кабель DAPA

Прямой параллельный доступ к AVR или кабель DAPA — невероятно простой и дешевый метод программирования. Вы можете построить его очень быстро, заплатив несколько долларов за детали, но удобство сопряжено с несколькими подводными камнями. Во-первых, на вашем компьютере должен быть параллельный порт; то, чего нет у современных ноутбуков и некоторых современных настольных компьютеров. Но если у вас есть старый компьютер, на котором он есть, это поможет вам быстро начать программирование.

Фактически, первый прототип AVR, который я сделал, был с одним из этих кабелей. То есть, пока я не обнаружил еще один глюк. Это запрограммирует только низкоскоростные чипы. Если вы попытаетесь запустить часы чипа на полной скорости (путем изменения настроек предохранителя… подробнее в части 3), вы больше не сможете использовать кабель DAPA для связи с ним. Также существует возможность повреждения параллельного порта или, что еще хуже, если вы сделаете что-то не так. Но если вы все равно хотите пойти на это, вот как я построил свой.

Он подключается к компьютеру с помощью разъема DB25. Как вы можете видеть на схеме, я использовал резисторы на 1 кОм на контактах Reset, SCK, MISO и MOSI для защиты по току. Я не использовал резистор на выводе заземления. Я использовал кусок ленточного кабеля, припаяв один конец к каждой из пяти сигнальных линий, показанных на схеме. На другом конце ленточного кабеля я использовал корпус разъема с шестью слотами, заполнив один из них заглушкой, чтобы можно было отслеживать сигналы. Его легко подключить к штырьковому разъему или к перемычкам, как показано выше. Оглядываясь назад, возможно, было бы лучше использовать разъем IDC 2 × 3 и маршрутизировать сигналы с использованием стандарта AVR ISP (из AVR: In-System Programming PDF). Если вы пойдете по этому пути, скорее всего, вы скоро обновитесь, так что не мучайтесь над деталями дизайна.

Arduino


Было бы упущением пропустить использование Arduino в качестве программатора. Они вездесущи среди встраиваемых систем, и если у вас их еще нет, вы можете попытаться найти кого-нибудь, кто одолжит вам их ненадолго. Все, что требуется, — это написать скетч программатора AVR на Arduino и установить соединения для программирования. Мы рассмотрим этот метод позже в посте.

USBtinyISP


USBtinyISP — это внутрисистемный программатор, основанный на ATtiny2313, который использует соединение USB (посмотрите, откуда взялось это название?). Это неплохой выбор для вашего первого программиста. Если вы уверены в своих навыках, вы можете собрать схему самостоятельно и использовать кабель DAPA, чтобы загрузить прошивку для программирования на чип. Или вы можете просто купить его у Adafruit Industries. Но если вы думаете, что серьезно относитесь к разработке AVR, вам следует подумать о том, чтобы выложить дополнительные деньги на профессионального программиста.

Профессиональные программисты


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

Мы используем AVR Dragon практически для всего. Но STK500 — очень популярная плата, даже несмотря на то, что для ее использования необходим последовательный порт. Он имеет разъемы для чипов, кнопки и светодиоды для встроенного прототипирования. Dragon оставляет опции открытыми с незаполненными сокетами и использует USB-соединение.

Если вы в этом надолго, ничто не заменит ни один из этих вариантов.

Мы должны хотя бы упомянуть MKII, программатор, который предлагает ISP так же, как USBtinyISP, но также предоставляет JTAG, провод отладки и некоторые другие. У нас нет опыта работы с этим устройством, поэтому вам придется провести собственное исследование, если вы хотите узнать больше. Что касается других программистов, используйте Google или проверьте комментарии к этому сообщению, поскольку люди обычно не любят держать в секрете свой предпочтительный выбор программиста.

Загрузчик

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

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

Установка нашей тестовой схемы

Хватит разговоров, давайте что-нибудь построим! Нам нужны четыре вещи: микроконтроллер, что-то для его питания, какой-то способ его программирования и что-то, чтобы показать нам, что он работает.

Оборудование:

  • Макет без пайки
  • Соединительные провода
  • Микроконтроллер ATmega168
  • 78L05 регулятор напряжения
  • Электролитический конденсатор 100 мкФ
  • Электролитический конденсатор 10 мкФ
  • Светодиод
  • Резистор 180 Ом (подойдет любой резистор от 180 до 330 Ом)
  • Программатор (мы покажем и DAPA, и Arduino)

Что мы делаем

Короче говоря, мы собираемся мигать светодиодом в качестве нашей первой встроенной программы. Для этого требуется несколько компонентов: источник питания, сам микроконтроллер, светодиод и его токоограничивающий резистор.

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

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

Схема цепи

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

Вы также можете заметить, что микросхема на схеме обозначена как AVR-MEGA8. Используемый нами ATmega168 совместим по выводам с ATmega8. Это означает, что вы можете поменять местами один на другой, и все 28 контактов будут там, где они должны быть, так что это не вызовет проблем.

Рекомендуется добавить несколько компонентов, которых здесь нет. Для развязки должно быть два конденсатора по 0,1 мкФ; они отфильтровывают колебания на шинах питания, называемые шумом. Один между VCC и GND, другой между AVCC и AGND (как можно ближе к контактам). На контакте сброса также должен быть подтягивающий резистор, который позволяет невероятно небольшому количеству тока просачиваться на контакт на уровне 5 В. Это микросхема от случайного сброса, когда она плавает (не подключена, поэтому нет четкого значения 0 или 5 В). Я опустил эти части для простоты, и это не должно быть проблемой с этим простым проектом. Но по мере того, как ваши проекты становятся все более сложными, пренебрежение этими соображениями вернется к вам.

Схема, собранная на макетной плате

Я начал сборку схемы с добавления стабилизатора напряжения на макетную плату. Затем подключите заземляющую ножку к шине заземления в верхней части макетной платы, а выходную ножку — к шине напряжения на макетной плате. Я также добавил два провода, которые я в конечном итоге подключу к положительной и отрицательной клеммам 9-вольтовой батареи.

Важно прочитать техническое описание вашего регулятора напряжения (пример: LM7805), чтобы выяснить, какой провод является входом, заземлением и выходом. Ваш регулятор может отличаться от моего, так как они поставляются в разных упаковках. На изображении выше входной провод находится слева, земля — посередине, а выходной — справа.

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

Убедившись, что у меня есть стабильный источник 5 В, затем отключив аккумулятор, я добавил микроконтроллер ATmega168 на плату. Обратите внимание, что ямочка указывает налево. Это важно, так как стандартная ориентация и нумерация выводов DIP-корпуса показывают, что контакт 1 теперь находится внизу слева, что позволяет нам легко найти другие нужные нам контакты.

К микросхеме также подключено питание и земля. Контакт 7 (VCC) и контакт 20 (AVCC) были подключены к 5V. Контакт 8 (GND) и контакт 22 (AGND) подключены к земле.

Последним шагом является подключение светодиода к выводу 0 на порту D. Наша схема говорит нам, что мы хотим подключить положительный вывод светодиода к выводу 2 на ATmega168, а отрицательный вывод должен быть подключен к незанятому ряд на макетной плате (убедитесь, что вы не присоединяете его к контакту 1). Светодиоды обычно имеют небольшую выемку, приплюснутую на одной стороне пластикового корпуса, чтобы обозначить отрицательную ножку устройства. Последняя часть головоломки — соединить отрицательную сторону светодиода с землей с помощью нашего резистора.

На изображении выше я подключил 9-вольтовую батарею, но ничего не произошло. Это потому, что на чипе еще нет прошивки, чтобы светодиод мигал. Нам нужно будет исправить это на следующем шаге.

Программирование нашей тестовой схемы

Еще раз проверьте все соединения и приступим к программированию микроконтроллера.

Подключение к программатору

Всего шесть подключений для программирования нашего чипа:

  • Напряжение
  • Земля
  • Мастер в ведомом выходе (MISO)
  • Главный выход Ведомый вход (MOSI)
  • Сброс (RST)
  • Ведомые часы (SCK)

Это справедливо для любого программиста, использующего внутрисистемное программирование. Есть даже стандартизированный 6-контактный разъем, который я проектирую в большинстве своих схем, чтобы вы могли легко повторно подключить программатор к печатной плате и обновить прошивку в будущем. Но в этом примере мы просто используем несколько перемычек для соединения. Одна вещь, о которой следует помнить, это использовать только один источник напряжения при программировании. Вы должны либо отключить питание вашей схемы во время программирования, либо не подключаться к линии напряжения на вашем программаторе.

Подключение Arduino в качестве программатора

Использовать Arduino в качестве программатора очень просто. Первое, что вам нужно сделать, это открыть среду разработки Arduino, а затем открыть пример программного обеспечения: ArduinoISP.pde (в папке examples/ArduinoISP). Прошейте его на Arduino обычным способом. Теперь следуйте инструкциям по нацеливанию AVR на макетную плату (внизу этой страницы). Важно: Выберите один источник питания. То есть либо подключите напряжение на плате Arduino к макетной плате, либо подключите аккумулятор к источнику питания, который мы подключили. Выполнение обоих действий может привести к повреждению вашего оборудования.

Вот как мой выглядел после подключения.

Теперь, когда все готово к работе, переходите к следующему разделу: Прошивка прошивки с помощью AVRdude.

Подключение с помощью кабеля DAPA

В зависимости от того, как вы сконструировали кабель DAPA, сделать пять необходимых подключений будет достаточно просто. Обратите внимание, что кабель DAPA не имеет подключения по напряжению. Целевой процессор должен иметь собственный источник питания (например, источник питания, который мы построили на макетной плате) во время программирования. Вот как выглядит мой кабель DAPA после подключения.

Если вы не уверены в правильности подключения, вернитесь назад и сравните конструкцию кабеля DAPA со схемой. Сопоставьте наши пять соединений: MISO, MOSI, RST, SCK и GND.

Прошивка прошивки с помощью AVRdude

Если вы выполняли домашнее задание из части 1 этой серии, у вас уже должны быть установлены инструменты кросс-компилятора. Сначала загрузите пакет прошивки и перейдите в этот каталог в оболочке или в командной строке. Следующие команды можно использовать в системах Linux и OSX для программирования чипа.

Arduino как программатор:

 avrdude -P usb -b 19200 -c avrisp -p m168 -U flash:w:main.hex 

DAPA как программатор:

 avrdude -P /dev/parport0 -c dapa -p m168 -U flash:w:main.hex 

AVR Dragon в качестве программатора:

 avrdude -P usb -c dragon_isp -p m168 -U flash:w:main.hex 

USBtinyISP в качестве программатора:

 avrdude -P usb -c usbtiny -p m168 -U flash:w:main.hex 

Вы можете получить помощь от программы AVRdude, выполнив:

 avrdude -h 

Это распечатает список доступных команд, или вы можете прочитать онлайн-документацию. Пользователям Windows потребуется изменить часть /dev/* команды , чтобы она соответствовала вашему соединению. Вы должны найти страницу Windows онлайн-руководства особенно полезной для этого. Стандартные имена портов Windows включают com0, com1 и т. д. для последовательных портов и lpt0, lpt1 и т. д. для параллельных портов.

Что касается других флагов, используемых в приведенных выше командах программирования:

При использовании Arduino в качестве программатора ISP вы должны указать скорость, используя ‘-b’. Это значение установлено в скетче Arduino и по умолчанию должно быть 19200.

Вам всегда нужно будет указывать какой чип подключен к программатору. Здесь я использовал «-p m168» для нашего ATmega168. Получите список всех совместимых микропроцессоров, набрав

 avrdude -p ? 

То же самое верно и для указания программатора. Вы можете изменить «-p» на «-c» в приведенной выше команде, чтобы получить список программистов.

Последний параметр в командах, которые мы использовали, говорит программисту записать (это «w») файл «main.hex» во флэш-память. Часть команды используется для многих вещей, включая изменение фьюз-битов на микросхеме. Об этом я расскажу в третьей части серии.

Отладка

В этот момент ваш светодиод должен мигать довольно счастливо. Это что? Это не? Время начать настоящее обучение. Вот список для начала:

  • Вы успешно запрограммировали чип? Вы должны получить сообщение: «258 байт флэш-памяти проверено» и «avrdude готово. Спасибо.»
  • Если у вас возникла ошибка во время программирования, сначала проверьте, подается ли питание на ваш чип.
  • Попробуйте еще раз ввести команду программирования, используя «-v» вместо «flash:w:main.hex». Это просто попытается связаться с чипом вместо того, чтобы писать в него, и очень удобно при работе с программными ошибками
  • .
  • Перепроверьте соединения для программирования, чтобы убедиться, что правильные сигналы подключены к нужным контактам
  • Убедитесь, что у вас есть правильный порт на компьютере и что у вас есть разрешение на использование этого порта. Пользователи Linux могут попробовать обратиться к чипу с флагом -v как ROOT, чтобы узнать, есть ли проблема с правами доступа. Если это работает, вам нужно добавить своего пользователя в группу, имеющую разрешение на доступ к порту, к которому подключен программатор 9.0006
  • Если вы успешно запрограммировали чип, вам следует перепроверить оборудование. Установлен ли светодиод задом наперед, чтобы он не загорался?
  • Отправляйтесь в Google и начните поиск… Обычно это играет роль в процессе разработки, так что не расстраивайтесь. Многие люди уже столкнулись с проблемой, с которой столкнулись вы, и в конце концов они справились.

Заключение

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

Следуйте за ME

@SZCZYS

Ресурсы

Пакет прошивки: загрузка пакета или GitHub Page

Atmel AVR ATMEGA168 DATASHEET (PDF)

AVR DUDE ONLINE DOCUMATION

AVR IN-SYSTSTEST.

Заголовок программирования AVR ISP:

Интерфейсы программирования AVR® — Помощь разработчикам

Интерфейсы программирования AVR®

HVPP

Прежде всего важно понять, что все (см. Исключения ниже) устройства Tiny и Mega на базе AVR включают HVPP (параллельное программирование высокого напряжения) или интерфейс программирования HVSP (последовательное программирование высокого напряжения). Оба требуют приложения «высокого напряжения» (12 В) к контакту сброса, и оба требуют доступа к большому количеству контактов. Для интерфейса HVPP требуется доступ как минимум к 16 контактам, а для интерфейса HVSP требуется доступ как минимум к 8 контактам. По этим причинам эти интерфейсы в основном используются для производственного программирования устройств. На следующей схеме показаны необходимые соединения HVPP для ATmega328PB (см. раздел 33.7 в техпаспорте ):

Хорошие новости для

  • Интерфейсы HVPP или HVSP всегда включены, поскольку их нельзя непреднамеренно отключить настройкой предохранителя или действием пользователя.

плохие новости

  • Они почти никогда не являются реалистичным вариантом программирования, когда Tiny или Mega припаяны к специальной плате, потому что для них просто требуется слишком много контактов.

Интернет-провайдер/JTAG

В дополнение к интерфейсам HVPP или HVSP все (см. Исключения ниже) устройства Tiny и Mega также включают один или два «стандартных» интерфейса программирования: ISP или JTAG.

ISP (внутрисхемное последовательное программирование) позволяет перепрограммировать программную память в системе через последовательный интерфейс SPI. На следующей схеме показаны необходимые подключения к интернет-провайдеру для ATmega328PB (см. раздел 33.9 в техническом описании ):

Хорошие новости для

  • Для этих стандартных интерфейсов требуется только 3 или 4 контакта.

Плохие новости

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

Комбинированные интерфейсы

Все (см. Исключения ниже) устройства Tiny и Mega включают одну из двух следующих комбинаций интерфейсов программирования:

  • HVPP (или HVSP) и ISP
  • HVPP (или HVSP) и ISP и JTAG


Интерфейсы ISP и JTAG являются стандартными программными интерфейсами для устройств Tiny и Mega. Рекомендуется включить заголовок программирования для одного из двух интерфейсов на любой пользовательской плате, чтобы при необходимости можно было удобно перепрограммировать устройство.

Если устройство имеет только интерфейс ISP и отключено с помощью настройки предохранителя, восстановление возможно только через его интерфейс HVPP или HVSP (что, скорее всего, физически невозможно) .

Если устройство имеет интерфейсы ISP и JTAG, и один из этих двух отключен настройками предохранителей, другой интерфейс можно использовать для доступа к части, если доступны необходимые контакты . Интерфейс ISP требует 3 контакта, а интерфейс JTAG требует 4 контакта, поэтому более вероятно, что к любому из этих интерфейсов будет проще получить доступ, чем к интерфейсам HVSP или HVPP.

  • Устройства Tiny4/5/9/10/20/40 не имеют интерфейса HVPP или HVSP. У них всего TPI (крошечный программный интерфейс). Более новые устройства, такие как устройства Tiny417/817/1617 , имеют только UPDI (унифицированный программный и отладочный интерфейс). Пока у вас есть доступ к этим интерфейсам, можно не беспокоиться о том, что эти устройства будут «заблокированы».

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *