Микроконтроллеры avr для начинающих — 3

Сайт про изобретения своими руками

МозгоЧины

Сайт про изобретения своими руками

Программирование AVR урок 3 — прошиваем микроконтроллер

Программирование AVR урок 3 — прошиваем микроконтроллер

Продолжим. После того, как мы ознакомились с процессом отладки написанной нами программы в «atmel studio» и виртуально собрали схему с одним светодиодом в «proteus», пришло время собрать схему в «железе» и прошить микроконтроллер.

Для программирования опытного экземпляра (atmega 8) будем использовать программатор USBASP. Он выглядит следующим образом:

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

Первый вывод отмечен на разъеме стрелочкой.


После того, как разобрались с программатором. Переходим к сбору схемы в «железе». Монтируем микроконтроллер на макетную плату. Напоминаю — первая ножка отмечена на МК маленьким кружком.

Задача состоит в том, чтобы соединить выводы программатора с выводами «камня».

Подключаем джамперы в 10 контактный разъем. Задействуем следующие выводы MOSI, RST, SCK, MISO, VTG (VCC), GND.

Надеюсь вы уже скачали datasheet на atmega8. Если нет, его можно скачать здесь. Смотрим на распиновку выводов микроконтроллера.

Соединяем джамперы со следующими выводами:

  • VCC к 7 выводу МК;
  • SCK к 19 выводу МК;
  • MISO к 18 выводу МК;
  • MOSI к 17 выводу МК;
  • GND (10 вывод программатора) к 8 выводу МК;
  • RST к 1 выводу МК;

Для дальнейшем успешной работы, операционная система при первом запуске шайтан-машины (программатора) предложить установить необходимые для работы устройства драйвера.

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

Если вы работаете в windows 7 или выше, могут возникнуть небольшие трудности. Драйвера для программатора достаточно старые, поэтому у них нет цифровой подписи. При попытке установить такой драйвер операционка выдаст, что-то на подобии этого *

«Не удается проверить цифровую подпись драйверов, необходимых для данного устройства. При последнем изменении оборудования или программного обеспечения могла быть произведена установка неправильно подписанного или поврежденного файла либо вредоносной программы неизвестного происхождения. (Код 52)».

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

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

Надеюсь у вас всё получилось и программатор готов к работе.

Переходим к сбору схемы со светодиодом.

Для прошивки микроконтроллера будем использовать программу «avrdudeprog». Она лежит в общем архиве.

Выбираем atmega8 из списка микроконтроллеров. После того, как выбрали МК появиться окошко, которое известит о том, что фьюзы и Lock биты установлены по умолчанию.

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

Затем открываем вкладку фьюзы (Fuses). Простыми словами Fuses — это конфигурационные настройки МК, с которыми лучше не играть. Для случая, когда вы приобрели такой же контроллер, как я и у вас нет внешнего кварцевого резонатора (вы используете внутренний генератор тактовой частоты), выставляете точно такие галочки, как представлены на картинке. Обязательно возле пункта «инверсные» должна стоять галочка.

Выставленные настройки «командуют» Atmega8A выполнять свою работу при условии тактирования от внутреннего генератора (частота тактирования 8 МГц). Для того, чтобы настройки вступили в силу нужно нажать кнопку «Программирование». Но перед нажатием еще два раза проверьте все ли выставили должным образом.

Возвращаемся на страницу «Program».

После того, как мы уже сообщили программе, какой именно микроконтроллер будем шить, выбираем файл прошивку, которую написали в прошлом уроке. Она имеет расширение HEX. Находится в папке «Debug»

Перед тем, как прошивать «камушек» нажимаем на кнопку «Стереть все». Это обезопасит вас от непонятных ошибок (вдруг камень уже шили):

Нажимаем «Программирование». Если все прошло успешно программа выдаст

Картотека программирования

Наслаждаемся результатом своей работы 🙂 Продолжение следует…

Электроника для всех

Блог о электронике

AVR. Учебный курс. Трактат о программаторах

Программа для микроконтроллера пишется на любом удобном языке программирования, компилируется в бинарный файл (или файл формата intel HEX) и заливается в микроконтроллер посредством программатора.

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

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

Программаторы бывают разные под разные семейства контроллеров существуют свои программаторы. Впрочем, бывают и универсальные. Более того, даже ту же простейшую AVR’ку можно прошить несколькими способами:

Внутрисхемное программирование (ISP)
Самый популярный способ прошивать современные контроллеры. Внутрисхемным данный метод называется потому, что микроконтроллер в этот момент находится в схеме целевого устройства — он может быть даже наглухо туда впаян. Для нужд программатора в этом случае выделяется несколько выводов контроллера (обычно 3..5 в зависимости от контроллера).

К этим выводам подключается прошивающий шнур программатора и происходит заливка прошивки. После чего шнур отключается и контроллер начинает работу.
У AVR прошивка заливается по интерфейсу SPI и для работы программатора нужно четыре линии и питание (достаточно только земли, чтобы уравнять потенциалы земель программатора и устройства):

  • MISO — данные идущие от контроллера (Master-Input/Slave-Output)
  • MOSI — данные идущие в контроллер (Master-Output/Slave-Input)
  • SCK — тактовые импульсы интерфейса SPI
  • RESET — сигналом на RESET программатор вводит контроллер в режим программирования
  • GND — земля

Сам же разъем внутрисхемного программирования представляет собой всего лишь несколько штырьков. Лишь бы на него было удобно надеть разъем. Конфигурация его может быть любой, как тебе удобней.
Однако все же есть один популярный стандарт:

Для внутрисхемной прошивки контроллеров AVR существует не один десяток разнообразных программаторов. Отличаются они в первую очередь по скорости работы и типу подключения к компьютеру (COM/LPT/USB). А также бывают безмозглыми или со своим управляющим контроллером.

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

Так что твой 3ГГЦ-овый десятиядерный монстр может пролететь, как фанера над Парижем.

Идеальный компьютер для работы с такими программаторами это какой-нибудь PIII-800Mhz с Windows98…XP.
Вот очень краткая подборка проверенных лично безмозглых программаторов:

  • Программатор Громова.
    Простейшая схема, работает через оболочку UniProf(удобнейшая вещь. ), но имеет ряд проблем. В частности тут COM порт используется нетрадиционно и на некоторых материнках может не заработать. А еще на быстрых компах часто не работает. Да, через адаптер USB-COM эта схема работать не будет. По причине извратности подхода 🙂
  • STK200
    Надежная и дубовая, как кувалда, схема. Работает через LPT порт. Поддерживается многими программами, например avrdude. Требует прямого доступа к порту со стороны операционной системы и наличие LPT порта.
  • FTBB-PROG.
    Очень надежный и быстрый программатор работающий через USB, причем безо всяких извратов. C драйверами под разные операционные системы. И мощной оболочкой avrdude. Недостаток один — содержит редкую и дорогую микросхему FTDI, да в таком мелком корпусе, что запаять ее без меткого глаза, твердой руки и большого опыта пайки весьма сложно. Шаг выводов около 0.3мм. Данный программатор встроен в демоплаты Pinboard

Программаторы с управляющим контроллером лишены многих проблем безмозглых. Они без особых проблем работают через USB. А если собраны на COM порт, то без извращенских методик работы с данными — как честный COM порт. Так что адаптеры COM-USB работают на ура. И детали подобрать можно покрупней, чтобы легче было паять. Но у этих программаторов есть другая проблема — для того чтобы сделать такой программатор нужен другой программатор, чтобы прошить ему управляющий контроллер. Проблема курицы и яйца. Широко получили распространение такие программаторы как:

  • USBASP
  • AVRDOPER
  • AVR910 Protoss

Внутрисхемное программирование, несмотря на все его удобства, имеет ряд ограничений.
Микроконтроллер должен быть запущен, иначе он не сможет ответить на сигнал программатора. Поэтому если неправильно выставить биты конфигурации (FUSE), например, переключить на внешний кварцевый резонатор, а сам кварц не поставить. То контроллер не сможет запуститься и прошить его внутрисхемно будет уже нельзя. По крайней мере до тех пор пока МК не будет запущен.
Также в битах конфигурации можно отключить режим внутрисхемной прошивки или преваратить вывод RESET в обычный порт ввода-вывода (это справедливо для малых МК, у которых RESET совмещен с портом). Такое действо тоже обрубает программирование по ISP.

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

Параллельное программирование во много раз быстрей последовательного (ISP), но требует подачи на RESET напряжения в 12 вольт. А также для параллельной зашивки требуется уже не 3 линии данных, а восемь + линии управления. Для программирования в этом режиме микроконтроллер вставляется в панельку программатора, а после прошивки переставляется в целевое устройство.

Для радиолюбительской практики он особо не нужен, т.к. ISP программатор решает 99% насущных задач, но тем не менее параллельный программатор может пригодиться. Например, если в результате ошибочных действий были неправильно выставлены FUSE биты и был отрублен режим ISP. Параллельному программатору на настройку FUSE плевать с высокой колокольни. Плюс некоторые старые модели микроконтроллеров могут прошиваться только высоковольтным программатором.
Из параллельных программаторов для AVR на ум приходит только:

  • HVProg от ElmChan
  • Paraprog
  • DerHammer

А также есть универсальные вроде TurboProg 6, BeeProg, ChipProg++, Fiton которые могут прошивать огромное количество разных микроконтроллеров, но и стоят неслабо. Тысяч по 10-15. Нужны в основном только ремонтникам, т.к. когда не знаешь что тебе завтра притащат на ремонт надо быть готовым ко всему.

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

Компания AVR продает фирменный комплект JTAG ICEII для работы с микроконтроллерами по JTAG, но стоит он (как и любой профессиональный инструмент) недешево. Около 10-15тыр. Также есть первая модель JTAG ICE. Ее можно легко изготовить самому, а еще она встроена в мою демоплату Pinboard.

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

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

Pinboard II
Прошивка AVR с помощью демоплаты Pinboard II (для Pinboard 1.1 все похоже)

Спасибо. Вы потрясающие! Всего за месяц мы собрали нужную сумму в 500000 на хоккейную коробку для детского дома Аистенок. Из которых 125000+ было от вас, читателей EasyElectronics. Были даже переводы на 25000+ и просто поток платежей на 251 рубль. Это невероятно круто. Сейчас идет заключение договора и подготовка к строительству!

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

89 thoughts on “AVR. Учебный курс. Трактат о программаторах”

А что это делает в учебном курсе? чего не на главной странице?
Здарова, Артем, вот я и зашел, чего то не мог зайти долго…

Я постепенно правлю и переписываю старые статьи, чтобы привести их в более стройный и завершенный вид.

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

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


Рано или поздно, любой радиолюбитель (я так думаю), приходит к мысли о применении в своих разработках микроконтроллеров. Микроконтроллер позволяет существенно «облегчить» радиолюбительскую конструкцию, сделать ее проще и намного функциональнее.

Что нужно для того, чтобы начать пользоваться всеми возможностями микроконтроллеров? Я считаю, что не так уж и много. Главное в этом деле — желание. Будет желание, будет и результат.

В этом разделе (и в разделе «Устройство AVR») сайта я постараюсь помочь начинающим «микроконтроллерщикам» сделать первый, он же самый трудный шаг навстречу микроконтроллерам — попробуем разобраться в устройстве и программировании микроконтроллеров AVR семейства ATtiny и ATmega.

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

В своих статьях я буду опираться на материалы из публикаций популярных авторов микроконтроллерной тематики: Рюмика С.М., Белова А.В., Ревича Ю.В., Евстифеева А.В., Гребнева В.В., Мортона Д., Трамперта В., Фрунзе А.В. и Фрунзе А.А. (и многих других), а также материалы радиолюбительских сайтов. Ну и, может быть, немного своих «умных мыслей».

Программирование микроконтроллеров AVR фирмы Atmel

1. Микроконтроллеры — первый шаг

Эта статья, как и все последующие, — маленький шажок в мир микроконтроллеров. И таких «шажков» у нас будет много, пока не дойдем до того момента, когда сможем сказать: «Микроконтроллер — последний шаг». Но и это, скорее всего, из области фантастики — нельзя объять необъятное, — мир микроконтроллеров постоянно развивается и совершенствуется. Наша задача — сделать первый шаг, логическим итогом которого должна стать первая, самостоятельно разработанная и собранная конструкция на микроконтроллере.

2. Системы счисления: десятичная, двоичная и шестнадцатиричная

Как вы наверняка знаете, существует много разных систем счисления, одними пользуются и сейчас (наша, родная, десятичная система; римская система, известная нам как «римские цифры»), другие остались в глубоком прошлом (системы счисления инков и майя, древнеегипитская система, вавилонская).
Тут, я думаю, вопросов у нас нет, что такое системы счисления нам понятно — отображение чисел символами. А вот какая связь систем счисления с микроконтроллерами.

3. Логические операции, логические выражения, логические элементы

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

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

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

Прямой, обратный и дополнительный коды двоичного числа — способы представления двоичных чисел с фиксированной запятой в компьютерной (микроконтроллерной) арифметике, предназначенные для записи отрицательных и неотрицательных чисел

6. USBASP программатор для микроконтроллеров AVR — идеальное решение для начинающих, и не только

Сегодня мы рассмотрим как, без особых затрат и быстро, запрограммировать любой микроконтроллер AVR поддерживающий режим последовательного программирования (интерфейс ISP) через USB-порт компьютера. В качестве программатора мы будем использовать очень простой и популярный программатор USBASP, а в качестве программы — AVRdude_Prog V3.3, которая предназначена для программирования МК AVR.

7. Программа AVRDUDE_PROG: программирование микроконтроллеров AVR ATmega и ATtiny

Популярнейшая программа AVRDUDE_PROG 3.3 предназначена для программирования микроконтроллеров AVR ATmega и ATtiny

8. Основы программирования микроконтроллеров AVR

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

9. Русификация программы Atmel Studio

В этой статье мы поговорим о проблемах русификации программы Atmel Studio, как перевести программу на русский (или другой) язык, и как сделать более удобной работу программы с программатором USBASP. После установки программы Atmel Studio весь интерфейс будет на английском языке. Кому-то, кто знаком с английским, или уже привык работать с программами с английским интерфейсом, это вполне устроит. Меня лично, такой подход создателей программы к великому и могучему не устраивает, мне более комфортно работать с русскими меню.

10. Введение в язык программирования С (Си) для микроконтроллеров

В этой статье будут рассмотрены основные сведение о языке С, структура программы на языке С, дано понятие о функциях, операторах и комментариях данного языка программирования.

11. Переменные и константы в языке С (Си) для микроконтроллеров AVR

В этой статье будут рассмотрены типы переменных в языке С (Си) для микроконтроллеров AVR, объявление переменных, способы задания констант, будет дан обзор арифметических операций языка С, присваивания, инкремента и декремента.

12. Управление портами микроконтроллеров AVR на языке С (Си)

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

13. Циклы в языке С (Си) для микроконтроллеров AVR

В данной статье будут рассмотрены циклы в языке программирования Си для микроконтроллеров AVR. Будут рассмотрены циклы типа «для» (for) и циклы типа «пока» (while), будет показано как осуществить принудительное прерывание цикла и организовать бесконечный цикл.

14. Массивы в программировании микроконтроллеров AVR

В данной статье мы рассмотрим основы использования массивов в языке С для микроконтроллеров AVR и рассмотрим их практическое применение в программе для изменения цифр на семисегментном индикаторе.

(27 голосов, оценка: 4,74 из 5)

Осваиваем микроконтроллеры на примере Atmega8

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

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

В качестве подопытного предлагаю выбрать популярный и довольно высокопроизводительный 8-разрядный AVR микроконтроллер Atmega8 в удобном для наших целей 28-выводном DIP корпусе.

Итак, что нам нужно для полного счастья?

1. Простая и, в приоритете, бесплатная среда разработки, в которой можно посредством слов и цифр написать программу, а затем скомпилировать её, т. е. перевести на язык, понятный микроконтроллеру.
Одним из удачных примеров такой среды является Atmel Studio. Скачать эту программу не составит никакого труда, в том числе и на официальном сайте разработчика – https://www.microchip.com/.

2. Отладочная плата для микроконтроллера, желательно с DIP28 панелькой для микросхемы.

Удачным вариантом такой платы я бы посчитал изделие под названием «плата разработки ATmega8 – сделай сам», предлагаемое нашими китайскими друзьями за символические 150 отечественных рублей.

В комплект поставки входят:
– собственно, сама плата;
– Панелька DIP28;
– Кварцевый резонатор на 8 МГц;
– Разъём для подключения программатора;
– Разные деталюшки в виде: конденсаторов, резисторов, кнопок, светодиодов, т. е. всего того, что позволит легко запрограммировать и проверить микропроцессор в работе.

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

3. Программатор AVR USB, для того чтобы запрограммировать микроконтроллер, то есть перенести в него информацию с компьютера.

Такой программатор оценивается на aliexpress примерно в ту же стоимость, что и предыдущее изделие.

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

Питание берётся от USB разъёма компьютера.
Работать программатор может под разными операционными системами, в том числе – под Windows.

Если тип приобретённого программатора не будет поддерживаться Atmel Studio, то придётся скачать и бесплатную программу прошивки микроконтроллеров, например, AVRDude.

4. Контактная макетная плата для монтажа без пайки.

Такая макетная плата совместно с набором соединительных проводов (джамперов) будет весьма полезна на начальном этапе освоения микроконтроллера.

Она без какого-либо напряга и паяльника позволит соединить любые электронные элементы обвеса микроконтроллера в единую конструкцию, превращая весь процесс создания схемы в увлекательную игру с конструктором LEGO.

Подобный набор, состоящий из беспаечной макетной платы и комплекта проводов, обойдётся не дороже 200 рублей.

5. Для того чтобы в процессе отладки не перепрошивать ATmega8 бесчисленное количество раз, жизненно необходима программа, позволяющая отладить прошивку без участия микроконтроллера.
Для этой цели как нельзя лучше подходит программа для автоматизированного проектирования электронных схем (в том числе и микроконтроллеров) – Proteus. Она значительно упрощает процесс отладки программы без участия микроконтроллера, ведь любой накопитель имеет конечное число перезаписей, хотя это число и достаточно большое.

6. Если написать и отладить программу для микроконтроллера можно и без его непосредственного участия, то, по-любому, рано или поздно встанет конкретный вопрос: «А на фига мы всё это делали?».
Поэтому хочешь, не хочешь, а приобрести ATmega8 нам также всё ж таки придётся. Стоит она на Али, как и всё остальное, довольно-таки гуманных денег – около 100 рублей за единицу продукции, поэтому кошелёк опорожнит не сильно, но уважительного к себе отношения потребует.

А теперь давайте-ка посмотрим: А что это за штука ATMEGA8 попала к нам в руки?

Рис.1 Внешний вид и назначение выводов Atmega8

У данного типа МК есть два типа питания – цифровое VCC (выв.7) и аналоговое AVCC (выв.20). В стандартном включении, когда на входы/выходы контроллера подаются логические 1 и 0, оба вывода питания соединяют (физически соединяются VCC и AVCC, поскольку GND выводы 8 и 22 уже замкнуты внутри ИМС через сопротивление 0,7 Ом). Однако при подключении нагрузки, эти земляные выводы необходимо замкнуть на плате, т. к. внутри они соединены тонким проводником, который при существенном токе не следует рассматривать как «перемычку».
Если используется встроенный АЦП, или входы/выходы задействованы для работы с аналоговыми сигналами, то для уменьшения помех производитель рекомендует использовать последовательный LC-фильтр по AVCC.
Между выводами питания и землёй (в непосредственной близости от выводов питания микросхемы) всегда следует устанавливать керамические конденсаторы ёмкостью 0,1 Мкф, которые обычно называют блокировочными конденсаторами.

Ещё один непомеченный цветом вывод (Рис.1) – 21 вывод (AREF).
AREF означает Analog Reference и является входом для подачи (при необходимости) опорного напряжения от внешнего источника питания.

Все раскрашенные выводы микроконтроллера (Рис.1) – это порты ввода-вывода, через которые микроконтроллер общается с внешним миром. У ATmega8 их три: PB0. PB7, PC0. PC6, PD0. PD7.
PB0. PB7 и PD0. PD7 – это полные, т. е. 8-разрядные порты, PC0. PC6 – неполный 7-разрядный порт, т. к. для полноты ему тупо не хватило лишнего вывода у микросхемы.

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

1. Порты PB0. РВ7. Два вывода (РВ6 и PB7) используются для подключения кварцевого резонатора. Выводы РВ2. РВ5 зарезервированы для программирования МК. Таким образом, для общего применения остаются порты PB0 и PB1.
2. Порты PC0. РС6. Порты PC0. РС5 есть возможность использовать в качестве аналоговых входов. РС6 обычно используется для общего внешнего сброса настроек, т. е. перезагрузки прошивки МК.
3. Порты PD0. РD7. Эти порты можно использовать для общего применения.

Atmega8 выпускается с уже настроенным для использования встроенным RC-генератором с частотой 1МГц, который позволяет запустить МК без внешних элементов. Посредством конфигурационных манипуляций, значения этой частоты могут принимать также значения: 2, 4 и 8 MHz. Однако для решения многих задач стабильности RC-генератора оказывается явно недостаточно, в связи с чем для тактирования микроконтроллера используется внешний кварцевый резонатор.

Следует запомнить, что МК не является устройством, которое управляет большими мощностями, для этого есть транзисторы, тиристоры и прочие силовые элементы. Максимальный ток линии ввода/вывода составляет 40мА, максимальный суммарный ток по цепям питания и GND – 200мА.
И под занавес:

Основные технические параметры ATmega8:

— Память для программ составляет 8 Кб с возможностью перезаписать 10 000 раз;
— 512 байт флеш-памяти для хранения переменных (100 000 циклов перезаписи);
— 1 Кб ОЗУ и 32 регистра общего назначения;
— Два 8-разрядных Таймера/Счетчика с раздельным прескалером, режим сравнения;
— 16-разрядный Таймер/Счетчик с раздельным прескалером, режим сравнения, режим захвата;
— Таймер реального времени с независимым генератором;
— 3 канала ШИМ;
— 6 каналов 10-разрядного АЦП;
— Двухпроводный последовательный интерфейс;
— Программируемый последовательный USART;
— Интерфейс SPI с режимами Master/Slave;
— Программируемый сторожевой таймер с отдельным независимым генератором;
— Встроенный аналоговый компаратор;
— Сброс при включении питания, программируемая защита от провалов питания;
— Встроенный калиброванный RC-генератор;
— Обработка внутренних и внешних прерываний;
— 5 режимов с пониженным энергопотреблением: Idle, ADC Noise Reduction, Power-save, Power-down и Standby;
— Напряжение питания 4.5 — 5.5В;
— Тактовая частота 0-16 МГц.

Ну, на этом, пожалуй, и всё.
Для желающих посерьёзней углубиться в знания, могу порекомендовать datasheet производителя и русскоязычное описание ATmega8, с которым можно познакомиться по ссылке — ATMEGA8.

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

Как прошить микроконтроллер AVR?

Как прошить микроконтроллер AVR? Именно этим мы и займемся в этой статье.

Что такое “прошить” и “прошивка”?

Давайте первым делом определимся, что означает слово “прошить”? Думаю, вы часто слышали такие словосочетания, как “прошить телефон”, “слетела прошивка”, “кривая прошивка” и тд. А что такое “прошивка”?

Прошивка – это грубо говоря, операционная система для маленьких устройств, таких как мобильный телефон, MP3-плеер, цифровой фотоаппарат и тд. То есть это небольшая программка, которая управляет этим устройством. Также часто можно услышать и такое:” У меня “глючит” сотовый телефон, его надо срочно “перепрошить“.

В данном случае это означает, что надо заново установить операционную систему на мобильный телефон. Значит, “прошить МК” означает закачать во внутрь него программу, которая бы управляла этим МК, а МК уже управлял бы каким-нибудь устройством. То есть по идее, МК – это посредник между программой и каким-либо устройством, которым надо управлять 😉

Оборудование для прошивки МК

Итак, что нам потребуется, чтобы прошить МК?

  1. Cам микроконтроллер.
  2. Компьютер, с заранее установленным программным обеспечением (ПО).
  3. Программатор.
  4. Несколько джамперов.
  5. Макетная плата. Я бы порекомендовал сразу купить набор для начинающего AVRщика. Этот набор питается от USB.
  6. Прямые руки, растущие из нужного места.

Мы с вами договорились использовать МК Atiny2313 в корпусе DIP-20:

Подготовка МК к прошивке

В прошлых статьях мы с вами рассматривали программатор Громова. Главный его минус в том, что нам требуется COM-порт, который с трудом можно сейчас найти в компьютере, а разъем USB зато есть на каждом компьютере. Поэтому, было принято решение о покупке самого дешевого USB программатора для AVR МК. Называется такой программатор USBASP и выглядит он примерно вот так

Если хорошенько порыться на Али, то можно найти очень сладкую цену на такой программатор. Например, здесь . Может быть найдете даже дешевле. Если будете брать у другого продавца, то внимательно смотрите, чтобы его надписи и радиоэлементы располагались именно так, как у меня на фото. В среднем его цена на момент написания статьи около 120 рублей. Такой программатор в корпусе обойдется чуток подороже.

Вот его вид сзади:

Его рабочий разъем выглядит примерно вот так:

С программатором также в придачу идет шлейф

который одним концом цепляется к рабочему разъему программатора:

Другой конец шлейфа мы будем цеплять к МК.

Если внимательно присмотреться, то можно узнать, какой вывод в разъеме является первым. Стрелка укажет на первый вывод разъема:

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

Дальше берем макетную плату с установленным на ней МК Tiny2313:

Итак, наша задача – соединить выводы МК с выводами программатора.

Для этого в разъем шлейфа втыкаем провода в гнезда MOSI, RST, SCK, MISO, VTG (VCC), GND. GND я взял 10 гнездо, можно и другое, где написано GND. Итого 6 проводков-джамперов:

Далее качаем даташит на наш МК. В данном случае у нас Tiny2313. Ищем в даташите лист с его цоколевкой:

VTG (он же VCC) цепляем к 20 ножке МК

SCK(UCSK) цепляем на 19 ножку МК

MISO цепляем к 18 ножке МК

MOSI на 17 ножку

GND на 10 ножку

RST на первую ножку

Должно получиться как-то вот так:

После первого включения программатора в разъем USB ПК, Диспетчер устройств нам выдаст новое устройство:

Не пугаемся, качаем вот этот архивчик, распаковываем его и указываем путь на него при установке “дров”. Когда “дровишки” на программатор установятся, то мы увидим что-то типа этого:

Все ОК, программатор готов к бою.

В этом же архиве находим папку “avrdudeprog”, открываем ее, находим там исполняемый файл AVRDUDEPROG и запускаем. Это и есть программная оболочка для прошивки МК с помощью нашего программатора.

Она выглядит вот так. Не забываем выбрать наш МК в списке.

Для того, чтобы прошить МК, нам надо выбрать файл с расширением HEX. Итак, вот мой файлик. Первым делом я нажимаю кнопочку “Стереть все”. А вдруг кто-то уже использовал МК и там залита уже какая-нибудь программа? Поэтому, перед прошивкой стираем память МК. Если “стирка” прошла удачно, то программка выдаст нам примерно такое сообщение:

Прошиваем МК AVR

Нажимаем на кнопку выбора файла:

А теперь выбираем наш файл “Lesson 1.hex” . Это и есть наша программа.

А теперь жмем кнопочку “Программирование”

После того, как все прошло удачно, высветится что-то типа этого:

Но это еще не все! Как вы помните, в прошлой статье мы выставили частоту кварца 8 Мегагерц. Чтобы не было неразберихи, нам эту частоту теперь надо поделить на 8. Для этого существует фьюз, который делит тактовую частоту именно на 8. Ставим маркер на “прямые фьюзы”, потом ставим галочку на CKDIV.

После того, как сделали эти два шага, нажимаем на кнопку “Программирование”: