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

Вы еще не программируете микроконтроллеры? Тогда мы идем к вам!

Здравствуйте, уважаемые Хабражители!

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

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

1. Программатор

На рынке предлагается много вариантов — от самых дешевых ISP (In-System Programming) программаторов за несколько долларов, до мощных программаторов-отладчиков за пару сотен. Не имея большого опыта в этом деле, для начала я решил попробовать один из самых простых и дешевых — USBasp. Купил в свое время на eBay за $12, сейчас можно найти даже за $3-4. На самом деле это китайская версия программатора от Thomas Fischl. Что могу сказать про него? Только одно — он работает. К тому же поддерживает достаточно много AVR контроллеров серий ATmega и ATtiny. Под Linux не требует драйвера.

Для прошивки надо соединить выходы программатора VCC, GND, RESET, SCK, MOSI, MISO с соответствующими выходами микроконтроллера. Для простоты я собрал вспомогательную схему прямо на макетной плате:

Слева на плате — тот самый микроконтроллер, который мы собираемся прошивать.

2. Микроконтроллер

С выбором микроконтроллера я особо не заморачивался и взял ATmega8 от Atmel — 23 пина ввода/вывода, два 8-битных таймера, один 16-битный, частота — до 16 Мгц, маленькое потребление (1-3.6 мА), дешевый ($2). В общем, для начала — более чем достаточно.

Под Linux для компиляции и загрузки прошивки на контроллер отлично работает связка avr-gcc + avrdude. Установка тривиальная. Следуя инструкции, можно за несколько минут установить все необходимое ПО. Единственный ньюанс, на который следует обратить внимание — avrdude (ПО для записи на контроллер) может потребовать права супер-пользователя для доступа к программатору. Выход — запустить через sudo (не очень хорошая идея), либо прописать специальные udev права. Синтаксис может отличаться в разных версиях ОС, но в моем случае (Linux Mint 15) сработало добавление следующего правила в файл /etc/udev/rules.d/41-atmega.rules :

После этого, естественно, необходим перезапуск сервиса

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

Под Windows придется поставить драйвер. В остальном проблем нет. Ради научного интереса попробовал связку AVR Studio + eXtreme Burner в Windows. Опять-таки, все работает на ура.

Начинаем программировать

Программировать AVR контроллеры можно как на ассемблере (AVR assembler), так и на Си. Тут, думаю, каждый должен сделать свой выбор сам в зависимости от конкретной задачи и своих предпочтений. Лично я в первую очередь начал ковырять ассемблер. При программировании на ассемблере архитектура устройства становится понятнее и появляется ощущение, что копаешься непосредственно во внутренностях контроллера. К тому же полагаю, что в особенно критических по размеру и производительности программах знание ассемблера может очень пригодиться. После ознакомления с AVR ассемблером я переполз на Си.

После знакомства с архитектурой и основными принципами, решил собрать что-то полезное и интересное. Тут мне помогла дочурка, она занимается шахматами и в один прекрасный вечер заявила, что хочет иметь часы-таймер для партий на время. БАЦ! Вот она — идея первого проекта! Можно было конечно заказать их на том же eBay, но захотелось сделать свои собственные часы, с блэк… эээ… с индикаторами и кнопочками. Сказано — сделано!

В качестве дисплея решено было использовать два 7-сегментных диодных индикатора. Для управления достаточно было 5 кнопок — “Игрок 1” , “Игрок 2” , “Сброс” , “Настройка” и “Пауза” . Ну и не забываем про звуковую индикацию окончания игры. Вроде все. На рисунке ниже представлена общая схема подключения микроконтроллера к индикаторам и кнопкам. Она понадобится нам при разборе исходного кода программы:

Разбор полета

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

Рассмотрим каждую функцию в отдельности.

Настройка портов ввода/вывода происходит очень просто — в регистр DDRx (где x — буква, обозначающая порт) записивается число, каждый бит которого означает, будет ли соответствующий пин устройством ввода (соответствует 0) либо вывода (соответствует 1). Таким образом, заслав в DDRB и DDRD число 0xFF, мы сделали B и D портами вывода. Соответственно, команда DDRC = 0b11100000; превращает первые 5 пинов порта C во входные пины, а оставшиеся — в выходные. Команда PORTC |= 0b00011111; включает внутренние подтягивающие резисторы на 5 входах контроллера. Согласно схеме, к этим входам подключены кнопки, которые при нажатии замкнут их на землю. Таким образом контроллер понимает, что кнопка нажата.

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

При срабатывании таймера управление передается соответствующему обработчику прерывания. В нашем случае это обработчик TIMER0_OVF_vect, который вызывает процедуру вывода времени на индикаторы, и TIMER1_COMPA_vect, который обрабатывает обратный отсчет.

Вывод на индикаторы

Функция display использует метод динамической индикации. Дело в том, что каждый отдельно взятый индикатор имеет 9 контактов (7 для управления сегментами, 1 для точки и 1 для питания). Для управления 4 цифрами понадобилось бы 36 контактов. Слишком расточительно. Поэтому вывод разрядов на индикатор с несколькими цифрами организован по следующему принципу:

Напряжение поочередно подается на каждый из общих контактов, что позволяет высветить на соответствующем индикаторе нужную цифру при помощи одних и тех же 8 управляющих контактов. При достаточно высокой частоте вывода это выглядит для глаза как статическая картинка. Именно поэтому все 8 питающих контактов обоих индикаторов на схеме подключены к 8 выходам порта D, а 16 управляющих сегментами контактов соединены попарно и подключены к 8 выходам порта B. Таким образом, функция display с задержкой в 0.25 мс попеременно выводит нужную цифру на каждый из индикаторов. Под конец отключаются все выходы, подающие напряжение на индикаторы (команда PORTD = 0; ). Если этого не сделать, то последняя выводимая цифра будет продолжать гореть до следующего вызова функции display, что приведет к ее более яркому свечению по сравнению с остальными.

Эта функция по очереди опрашивает все 5 кнопок и обрабатывает нажатие, если таковое случилось. Нажатие регистрируется проверкой bit_is_clear(BUTTON_PIN, bit) , т.е. кнопка нажата в том случае, если соответствующий ей вход соединен с землей, что и произойдет, согласно схеме, при нажатии кнопки. Задержка длительностью DEBOUNCE_TIME и повторная проверка нужна во избежание множественных лишних срабатываний из-за дребезга контактов. Сохранение статуса нажатия в соответствующих битах переменной _pressed используется для исключения повторного срабатывания при длительном нажатии на кнопку.
Функции обработки нажатий достаточно тривиальны и полагаю, что в дополнительных комментариях не нуждаются.

Прототип был собран на макетной плате:

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

Читайте также:  Пайка медной проводки

Ниже показан окончательный вид устройства. Часы питаются от 9-вольтовой батарейки типа “Крона”. Потребление тока — 55 мА.

Заключение

Потратив $20-25 на оборудование и пару вечеров на начальное ознакомление с архитектурой микроконтроллера и основными принципами работы, можно начать делать интересные DIY проекты. Статья посвящается тем, кто, как и я в свое время, думает, что начать программировать микроконтроллеры — это сложно, долго или дорого. Поверьте, начать намного проще, чем может показаться. Если есть интерес и желание — пробуйте, не пожалете!

Удачного всем программирования!

P.S. Ну и напоследок, небольшая видео-демонстрация прототипа:

Мир микроконтроллеров

Популярное

  • Устройство и программирование микроконтроллеров AVR для начинающих – 143
  • Трехканальный термостат, терморегулятор, таймер на ATmega8 – 71
  • Двухканальный термостат, терморегулятор на ATmega8 – 67

Программирование микроконтроллеров 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 и рассмотрим их практическое применение в программе для изменения цифр на семисегментном индикаторе.

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

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

Краткий учебный курс по микроконтроллерам AVR , схема, прошивка, первые шаги, самоучитель PIC и AVR . Учебный курс по микроконтроллерам. Азбука AVR , основы радио электроники, устройство микроконтроллера, схемы, прошивки, примеры, скачать книги по электронике и программированию, простые программаторы AVR и PIC . Краткий Курс – Микроконтроллер AVR ATmega и ATtiny. Быстрый и уверенный старт.

ТОЛЬКО ПРОВЕРЕННАЯ ИНФОРМАЦИЯ.

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

Чайникам от Чайника ! Я постарался описать самое основное для начала применения микроконтроллеров простым языком с примерами и конечно с картинками !

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

Читайте также:  Другая жизнь lpt порта (часть 1)

Курс AVR – подробно рассказано и показано
– как сделать самые первые шаги, с чего начать конкретно – ШАГ за ШАГОМ
какие программы загрузить и где, как установить и как использовать
– как устроен микроконтроллер, как AVR взаимодействует с внешними компонентами
– как написать первую, простейшую программу для AVR и как управлять его модулями
– как запустить программу в программе-симуляторе МК AVR и увидеть как она работает не покупая МК и радиодеталей, а значит без риска спалить что-то или испортить ПК
– как сделать нужное вам электронное устройство, печатную плату
– как загрузить программу в реальный МК
– как отладить реальное устройство – т.е. найти причины не правильной работы и
добиться его функционирования в соответствии с поставленной задачей.


Задачи-упражнения учебного курса самоучителя по AVR на странице 6

Что такое – Электрический Ток , Напряжение , Закон Ома , Резистор, Конденсатор, Индуктивность, Транзистор – читайте в школьном учебнике по физике !

ПЕРЕВОД он-лайн www.Translate.ru ИСПОЛЬЗУЙТЕ !

Шаг 1. Установите всего две программы.

Компилятор CVAVR – CodeVisionAVR ( найти легко )
В нем создают программу для AVR – желательно v. 1.25.9 под материалы курса.

Симулятор AVR и электроники VMLAB ( в архиве 4 .5 Мб )
В нем проверяют как эта программа работает на модели AVR .

. в папки С : CVAVR и С : VMLAB и сделайте копии этих папок ! Это позволит вам легко восстановить испорченные в ходе учебы файлы программ и примеров без переустановки программ.

В программах есть примеры устройств на AVR и есть встроенные справки – help .
Помните об этом. Заглядывайте в них ! Найдите время изучить их.

Теперь у вас на ПК есть качественное и удобное программное обеспечение для полного цикла разработки устройств на МК (микроконтроллерах) AVR – и реальных и виртуальных.

От интерактивного помошника для создания текста программы, кода, скелета программы – инструмент бесценен для начинающего ! – это мастер CVAVR CodeWizard.

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

Вам не нужно пока тратить деньги и время
на поиски и покупку радио деталей и микроконтроллеров
пока вы не убедитесь в работоспособности устройства
которое вы делаете !

Вы не сожжете по неопытности что либо !

Не попадете в спешке, в азарте отладки
устройства под высокое напряжение !

Это очень важно для начинающего электронщика

техника безопасности – ТБ ! Это важно.

Компилятор CVAVR имеет встроеный программатор для загрузки готовой программы в реальный микроконтроллер AVR

Как прошить микроконтроллер 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.

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

Проверяем МК в железе

Теперь собираем нашу схемку, о которой говорилось еще в прошлой статье:

и наслаждаемся результатом:

Микроконтроллеры AVR, Практикум для начинающих, Хартов В.Я., 2012

Микроконтроллеры AVR, Практикум для начинающих, Хартов В.Я., 2012.

Практикум содержит материалы для изучения микроконтроллеров AVR с архитектурой RISC. Рассмотрены необходимые инструментальные средства и предложен большой комплект учебных программ для изучения функциональных возможностей микроконтроллеров. Тематика учебного пособия охватывает практически все аспекты архитектуры микроконтроллеров. Базовые программы могут быть использованы в качестве основы для обучения и самостоятельного программирования на языке Ассемблер AVR в курсовом и дипломном проектировании.
Материалы книги автор использует в учебном процессе в МГТУ им. Н.Э. Баумана.
Для студентов высших и средних специальных учебных заведений, обучающихся по направлению «Информатика и вычислительная техника».

ИНСТРУМЕНТАЛЬНЫЕ СРЕДСТВА ПРАКТИКУМА.
Микроконтроллеры AVR фирмы Atmel, появившись на рынке интегральных микросхем в 1996 г., сразу же привлекли к себе внимание разработчиков электронной аппаратуры. Удачное сочетание RISC-архитектуры «ядра», обеспечивающей высокую производительность, с широким набором команд, Flash-памятью для программ быстро выдвинуло микроконтроллеры AVR на передовые позиции.

На смену микроконтроллерам первых семейств (Tiny и Classic) пришло новое поколение микроконтроллеров (Mega). Сохранив программную преемственность, микроконтроллеры Mega приобрели новые свойства: пониженные напряжение питания (до 2,7 В) и энергопотребление, повышенные быстродействие (до 16 МГц) и объем Flash-памяти (до 128 Кбайт). Вслед за 8-разрядными микроконтроллерами появились 32-разрядные микроконтроллеры AVR32 и др.

Одновременно были созданы программные продукты и технические средства, поддерживающие разработку программ для микроконтроллеров. Это, прежде всего, фирменный пакет фирмы Atmel AVR Studio, свободно распространяемый в сети Internet, и отладочные платы в виде стартовых наборов разработчика (STK500, STK501, STK502 нового STK600), выпущенные для поддержки разработок на микроконтроллерах AVR. Вместе они образуют единую платформу, на которой можно успешно проводить разработку и отладку различных приложений.

ОГЛАВЛЕНИЕ
Предисловие
1. Инструментальные средства практикума
1.1. Микроконтроллеры АТх8515
1.2. Интегрированная отладочная среда AVR Studio 4
1.3. Стартовый набор STK500 фирмы ATMEL
1.4. Интерфейс STK500 в AVR Studio 4 и программирование микроконтроллера
1.5. Интегрированная отладочная среда VMLab
2. Программирование портов ввода/вывода
2.1. Взаимодействие микроконтроллера с кнопками и светодиодами
2.2. Обработка внешних прерываний
3. Арифметическая обработка данных
3.1. Представление чисел в микроконтроллерах
3.2. Сложение и вычитание чисел в дополнительном коде
3.3. Умножение чисел без знака
3.4. Деление целых чисел
3.5. Сложение и вычитание двоично-десятичных чисел
3.6. Программирование арифметических операций
3.7. Операции над числами с плавающей точкой
3.8. Программы для преобразования чисел
4. Таймеры микроконтроллеров АТх8515
4.1. Таймер/счетчик ТО микроконтроллера AT90S8515
4.2. Таймер/счетчик Т1 микроконтроллеров АТх8515
4.3. Программирование таймера ТО
4.4. Программирование функций сравнения, захвата и ШИМ таймера Т1
4.5. Сторожевой таймер
5. Обмен данными по последовательному интерфейсу
5.1. Последовательный обмен данными по каналу UART
5.2. Работа последовательного канала SPI
5.3. Обмен данными по интерфейсу 12C(TWI)
6. Организация ввода/вывода данных по параллельному интерфейсу
6.1. Взаимодействие с клавиатурой и ЖК-дисплеем
6.2. Организация асинхронного параллельного обмена данными с квитированием
7. Устройства для обработки аналоговых сигналов
7.1. Аналого-цифровой преобразователь
7.2. Аналоговый компаратор
8. Энергонезависимая память данных EEPROM
9. Программирование микроконтроллеров
9.1. Способы программирования и конфигурационные биты
9.2. Самопрограммирование микроконтроллеров
10. Программирование и отладка программ на языке Си
10.1. Среда Code Vision AVR
10.2. Отладка в AVR Studio
Литература
Приложение. Обозначения регистров ввода/вывода АТх8515.

Бесплатно скачать электронную книгу в удобном формате, смотреть и читать:
Скачать книгу Микроконтроллеры AVR, Практикум для начинающих, Хартов В.Я., 2012 – fileskachat.com, быстрое и бесплатное скачивание.

Скачать zip
Ниже можно купить эту книгу по лучшей цене со скидкой с доставкой по всей России. Купить эту книгу

Урок 1. Первый проект на AVR

В каждом языке программирования есть такое понятие «Hello World». Это первая программа, дающая общие понятия о структуре программы. Для микроконтроллеров первая программа мигание светодиода. Это самое простое и наглядное.

Сначала нужно написать программу, используя CodeVision (C avr). Далее есть 2 варианта:
1. Прошить виртуальный микроконтроллер (используя программы симуляторы).
2. Прошить реальный микроконтроллер.

1. Схема собирается в симуляторе Proteus. Чтобы прошить виртуальный микроконтроллер, нужно указать где у вас на жестком диске хранится файл прошивки.
Плюсы: бесплатно, быстро, просто, достаточно наглядно, не требующий навыков сборки схемы. Минусы: результат не подкреплен практикой, значит есть шанс что все быстро забудется.

2. Тут множество вариантов, но как минимум нужен:
2.1. программатор AVR микроконтроллеров,
2.2. ATmega8-16PU (PDIP28 в дип корпусе),
2.3. резистор 1к,
2.4. светодиод,
2.5. проводки,
2.6. 5В стабилизированный источник (блок питания на 5В, питание usb компьютера),
2.7. много свободного времени и желания.
По желанию:
2.8. макетная плата (можно попробовать навесным монтажом),
2.9. паяльник (можно извратиться и без него),
2.10. разъем (можно извратиться и без него),
Минус только один — денежные вложения, которые я считаю в дальнейшем отобьются. Остальное все плюсы. Самое дорогое это программатор. Как решать задачу ваше дело, я покажу оба варианта.

Схема нашего устройства.

Ищем, качаем свежий Proteus. В пакете протеуса нас интересует только ISIS 7. Если вы решили собирать все руками, идем на ближайший радиорынок или магазин электроники и покупаем все, что нужно. Купили, скачали, поставили. Как создать проект в CAVR можно узнать тут

1. Запускаем CodeVisionAVR

2. В окне мастера настроек, переходим на вкладку Ports и устанавливаем значение Bit 0 = Out. Создаем, сохраняем проект.

4. Теперь можно писать наш код.

#includeпозволяет использовать временные задержки, например делать паузы между зажиганием светодиода
delay_ms(100);
delay_us(100);
позволяет сделать задержку в программе 100мс, позволяет сделать задержку в программе 100мкс
PORTB.0=1;
PORTB.0=0;
включает ножку 0 порта В (напряжение +5В), включает ножку 0 порта В (напряжение 0В)

5. Добавляем в наш бесконечный цикл программы мигания светодиодом

#include #include vo >

6. Компилируем, прошиваем (как прошить можно почитать тут). Фьюзы для данного урока должны быть выставлены так:

Данная конфигурация фьюзов позволяет запустить микроконтроллер от внутреннего генератора на 2МГц. После прошивки светодиод будет мигать.

Запилил видео, чтобы был более понятен сам процесс, удачи в ваших начинаниях.

Update: Добавлен тест, в котором вы можете проверить на сколько хорошо вы усвоили материал урока

106 комментариев: Урок 1. Первый проект на AVR

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

булат- Вы победили данную ошибку на программаторе?

Уважаемый автор подскажите можно ли используя данный пример (delay_ms) включить и выключить порт МК несколько раз с разными временными задержками без цикла (while (1))

Как правильно реализовать такое условие и как закончить выполнение программы без (while (1))
так :
<
PORTB.0=1; //включаем 0 ножку порта В
delay_ms(100,500); // ждем
PORTB.0=0; //выключаем 0 ножку
delay_ms(100,200); //ждем

>;
или так :
<
PORTB.0=1; //включаем 0 ножку порта В
delay_ms(100); // ждем 100 мс
PORTB.0=0; //выключаем 0 ножку
delay_ms(100); //ждем 100 мс
PORTB.0=1; //включаем 0 ножку порта В
delay_ms(500); // ждем 500 мс
PORTB.0=0; //выключаем 0 ножку
delay_ms(200); //ждем 200 мс

>;
и какое максимальное значение может иметь delay_ms()
П.С.из самоучителей так понял что while () такой-же неотъемлемый атрибут программы как и #include

delay может быть 65535, while это просто цикл, обычно чтобы программа постоянно что то выполняла, нужно чтобы она крутилась по кругу

Спасибо огромное! А после одноразового передергивания ножками дальше можно включить основной цикл программы? Не получается… а понять почему не могу.

выполняете дрыганье до while, а потом делаете внутри что угодно

Ага! Запустить еще один while () внури этого чтоб он крутился бесконечно и не давал закончить (или начать) основной.У меня последний вопрос в этой теме: где можно посмотреть реализацию такого алгоритма?

установил 2 светодиода на PB0 и PB1 тепер как сделать пример 1 светодиод мигал 3 секунда а 2 ой 1 сек каждий порт сдаелал свое работу?

с помощью таймера, смотри 5 урок

Вопрос к автору: а если предположить, что мне необходимо управлять светодиодом не на 0 выводе порта В, а на 3, или на 7? как тогда будет выглядить код? я пытался написать так не не пошло:

PORTB=3×00;
DDRB=3×01;
while (1)
<
PORTB.3=1;
delay_ms(100);
PORTB.3=0;
delay_ms(10);
Как это реализовать? просто мне надо управлять 20-30 группами светодиодов! и тут одних только 0 выводов портов недостаточно! Заранее Спасибо!

Ув. автор, КАКОЙ вы применяли «программатор AVR микроконтроллеров»?
Дайте ссылку на схему программатора!
Как сделать чобы Code vision увидел этот программатор ?

Я использовал практически с самого начала AVRISPII. Схем программаторов полно, беда их в том, что для того чтобы сделать программатор, нужен другой программатор. Codevision видит только AVRISP, STK500, JTAGICE. По факту, берите USBASP и шейте через khazama, запорете пару мк, зато опыт получите

Такая проблема: создал визардом проект, прописал программу, при компиляции ошибка
все строки типа DDRB=(0 3

Рейтинг
( Пока оценок нет )
Загрузка ...
Adblock
detector