Области применения AVR микроконтроллеров, для чего использовать микроконтроллер
Рассмотрим области применения разных семейств AVR микроконтроллеров, попробуем поразмышлять какие устройства для дома, производства и просто для развлечения можно сделать на основе AVR микроконтроллеров. Зная сферы применения этих умных микросхем гораздо интереснее и более захватывающе будет их изучение.
Применение микроконтроллеров
Миниатюрные микроконтроллеры AVR семейства «tiny» используются для построения следующих устройств:
Рис. 1. Микроконтроллеры AVR семейства «tiny».
Чипы семейства «mega», «xmega» и 32-bit AVR применяются в более сложных устройствах:
Рис. 2. AVR микроконтроллеры семейств «mega» и «xmega».
Давайте подумаем что можно сделать на основе маленького компьютера, к которому мы можем подключить разные датчики и устройства ввода, кнопки и целые клавиатуры, светодиоды и цифровые индикаторы, цветные дисплеи и тач-скрины. да почти что угодно, главное суметь все это подключить и написать рабочую программу для микроконтроллера.
Приведу небольшой перечень идей и способов использования микроконтроллеров по категориям применения:
Это всего лишь маленький кусочек из того обширного спектра возможностей и идей что предоставляют нам микроконтроллеры.
Если вы раньше собирали устройства на цифровых и аналоговых микросхемах то вам должно быть знакомо то чувство когда для реализации казалось-бы несложной задачи нужно воротить целый клубок проводов с микросхемами, продумывать логику и предусматривать исключения.
Рис. 3. Технология монтажа накруткой проводников. www.bigmessowires.com (2009).
С появлением микроконтроллеров все стало намного удобнее и проще. На основе всего лишь одного чипа ATtiny13, к примеру, можно собрать устройство для которого вам потребовалось бы несколько десятков, а возможно и сотен микросхем.
Arduino
Рис. 3. Основная плата Arduino и дополнительные модули.
Данный обзор очень краток, на самом деле областей применения AVR микроконтроллеров гораздо больше. Однажды разобрав какое-то устройство у себя дома вы сможете увидеть внутри него AVR чип и здесь нет ничего сверхъестественного, микроконтроллеры набирают все большую популярность и более широко применяются в самых разных областях.
Заключение
Для кого-то программирование микроконтроллеров может перерасти из хобби в хорошо оплачиваемую работу, которая будет приносить не только хорошую прибыль, но и удовольствие от самого процесса разработки, пользу другим людям.
В следующей статье разберемся с архитектурой AVR микроконтроллеров, узнаем из чего состоит микроконтроллер, что в нем есть и для чего.
Разработка своего первого USB устройства. Маленький шаг вперед
Давным-давно уже бредил мечтой собрать какое-нибудь устройство, пусть незамысловатое, но которое бы выполняло определенные действия под управлением компьютера. По профессии я web-разработчик, опыта в программировании микроконтроллеров никакого, но тема интересная. Навыков пайки тоже мало (ну наушники или проводки разные могу спаять конечно, но чипы паять не пробовал). Поэтому решил, что начинать необходимо с чего-то простого — например на основе уже готовой макетной платы с микроконтроллером.
Что будет в посте?
В посте я расскажу о своем опыте разработки своей первой поделки, которая управляет светодиодами на плате с помощью программы на компьютере, а конкретнее некое подобие индикатора уровня громкости с одной полосой визуализации. Вот так выглядит устройство:
Может быть, опытным радиолюбителям это будет неинтересно, но наверное найдутся и те, кто не знает, с чего можно начать. Этот пост я адресую в первую очередь людям, которые впервые хотят собрать какое-либо устройство для управления им с компьютера, без специфических инструментов и необходимых материалов (типа паяльной пасты, фена) и без необходимости рисования и травления печатной платы. Конструкция наподобие описанной здесь может предоставить человеку «быстрый старт», чтобы он мог понять что это такое, а также решить для себя, хочет ли он заниматься этим делом в будущем.
Поиск информации
Подробнее о покупке
26 USD. Доставка из Москвы в Харьков была немного затянута (посылка застряла где-то под Харьковом), но все вскоре пришло. Хочется сказать отдельное спасибо microsin.ru — плата была надежно упакована и защищена от ударов.
Схема отладочной платы AVR-USB-MEGA16
Так же очень важной оказалось возможность прошивки микроконтроллера на плате с помощью USB. Да, никаких программаторов не нужно, только USB, так как в ATmega32 уже вшит USB загрузчик программы (как с ним работать, написано на Хабре, см. ссылки). Для программирования и отладки также можно использовать интерфейсы ISP и JTAG, но мне это не понадобилось, так как пока ни программатора, ни внутрисхемного отладчика у меня нет.
Постановка задачи
В первом своем опыте по данной теме я решил сделать индикатор уровня громкости в системе. На плате я хотел разместить несколько светодиодов и написать программу для управления ихним питанием и визуализации звука на компьютере.
Сборка
В первую очередь я не хотел паять все на купленной отладочной плате, а использовать ее в качестве «базы» для отдельно разработанных для нее «модулях» коими являлись бы отдельные небольшие платы. Именно так я и поступил. Первым делом я напаял решетку на выведенные свободные порты микроконтроллера:
Еще мне понадобилась дополнительная дешевая макетная плата (которую не жалко портить паяльником при моих первых опытах пайки), которую я вместе со всей необходимой мелочевкой купил на радиорынке:
Далее дело было не хитрое — напаять светодиоды и резисторы к ним. Первый раз сталкиваясь с необходимостью работы со светодиодами, перелопатил много информации, чтобы понять как это все работает. Всю необходимую информацию я нашел на сайте easyelectronics.ru, где подробно было расписано «как и что». Огромное им спасибо.
В итоге у меня получилось что-то такое (на плату напаял коннектор и несложную схему соединения светодиодов с решеткой и общим минусом):
Две платы друг с другом решил соединить с помощью шлейфа от старого компьютера:
Таким образом, у меня получилась модульная система. Я могу быстро собирать новые модули и использовать их с одним и тем же микроконтроллером просто переставив шлейф.
Программная часть
Общение
Здесь стоит заметить, что сама плата, к сожалению, а может и к радости, не имеет встроенного USB интерфейса, по этому все общение компьютера с платой осуществляется с помощью библиотеки V-USB, разработанной компанией Objective Development Software, которая распространяется по лицензии GPL.
Для компьютера используется библиотека libusb-win32 для операционной системы Windows (2000, 2003, XP) и libusb для операционных систем семейства *nix (Mac OS, Linux и т. д.).
Прошивка
Такая важная часть проекта, как прошивка… Хотелось вновь таки, чего-нибудь простого, но эффективного.
Мне почему-то очень везло в то время с поиском информации и поэтому все там же, на вышеупомянутом сайте, я нашел отличное решение: прошивку для МК, а также класс-обертку, написанную на C# (наиболее дружелюбный мне язык программирования для Windows).
Сама прошивка написана таким образом, что основная ее задача это установить бит в определенном регистре, с помощью данных, полученных посредством USB. Всем остальным занимается desktop программа.
Программа
Все, что нужно было сделать дальше это написать программу, которая бы отсылала нужные биты в нужные регистры, используя вышеупомянутую обертку для C#. Это уже не должно составлять никакого труда, тем более все, что нужно от программы это получить текущий уровень громкости в системе и изменить нужный бит.
Немного порыскав в старых папках, была отыскана какая-то не нужная подходящая заготовка, спрятанная для будущих нужд ранее, написанная на основе AudioCoreApi (C#).
Что ж, осталось расставить нужные команды в нужных событиях.
Так как я подключил светодиоды на плате ко всем ногам порта A микроконтроллера, то соответственно «дергать» ногами МК мне нужно в соответствии со светодиодами. Состояние каждого светодиода соответствует состоянию каждого бита в байте PORTA (байт, который отвечает за состояние ног мк на порте А).
Находим главный таймер в программе и пишем такой код:
Здесь, в зависимости от уровня громкости в системе, мы с помощью операций сдвига, устанавливаем, либо сбрасываем определенный бит в hundler.PORTA, где hundler является объектом для работы с устройством, а PORTA — байтом порта ввода/вывода, реализуемым следующим образом:
Функция usb_control_msg() является функцией из библиотеки V-USB.
Также важным моментом является то, что перед использованием порта А, все его ноги нужно установить на вывод, а не на ввод (Говоря честно, нечаянно пропустив этот момент в некоторых статьях, он немного сбил меня с толку, когда светодиоды горели в треть силы) следующим образом:
Ну вот, собственно, и все! Спасибо, что дочитали до этого момента. Надеюсь в комментариях не будет разговоров о картинке «как нарисовать сову», вроде все понятно и не очень уж сложно как мне казалось ранее. Также, не хотел этого говорить, но это уже пол пути к лампе настроения 🙂
Универсальная отладочная плата для AVR
Устройство является универсальной системой для отладки микроконтроллеров AVR. Плата не привязана к конкретному микроконтроллеру, а имеет универсальный разъем, к которому можно подключить модуль с любым микроконтроллером. На данный момент разработаны модули для микроконтроллеров:
— ATmega8
— ATmega16
— ATmega162
— ATtiny2313
— ATtiny13
Но ничего не мешает разработать модули и под другие микроконтроллеры. Устройство включает в себя программатор USBASP и может быть полностью запитано от USB или внешнего источника питания. Устройство включает в себя все необходимое для отладки: ЖК и светодиодные дисплеи, часы реального времени и EEPROM память, интерфейсы RS232 и RS485, разъем для подключения клавиатуры, кнопки, светодиоды и многое другое. Части устройства соединяются между собой при помощи специальных проводов, перемычек и переключателей. Некоторые части постоянно соединены с портами выбранного микроконтроллера (например, LCD), что убирает проблему спутанных проводов.
Описание констукции
Так как проект является сложным, схема разделена на несколько частей.
На плате имеется дополнительный генератор частоты 16 мГц. Также имеется дополнительный кварцевый резонатор X3 и два конденсатора C16 (22pF) и С17 (22pF) для любых целей.
ZUSB2 в связке с элементами C18 (100nF), C19 (4,7 мкФ), R48 (68R), R49 (68R) и стабилитронами D8 (3,6 V) и D9 (3.6 V) предназначены для отладки произвольных устройств, с подключением к порту USB. Резистор R47 (2,2 К) может быть отключен с помощью перемычки ZW7, благодаря этому возможно использовать USB порт для получения питания без уведомления о устройстве USB.
W1 LCD (20×4) является главным элементом для отображения данных. Резистор R3 (47R) ограничивает ток подсветки, которая активируется транзистором Т1 (BC556) и резисторами R1 (3,3 кОм) и R2 (3,3 кОм) перемычкой ZW1. Потенциометр P1 (10 кОм) позволяет установить контрастность дисплея. Перемычка PW4 включает дисплей. Переключатель SD1 (SW6) служит для отключения линий управления дисплеем, подключенным к главному процессору (можно не ставить).
U9 (TL431) с резисторами R45 (330 Ом) и R46 (10 кОм) и потенциометром P2 (1 кОм) является источником опорного напряжения около 2,56 В. Выход через разъем VREF. Пьезо пищалка с генератором BUZ1 (5В) управляется при помощи транзистора T12 (BC556) и резисторов R40 (3,3 кОм) и R41 (3,3 кОм). Управление зуммером осуществляется через разъем BUZ. Также на плате установлен фототранзистор T7 (L-93P3BT). Резистор R33 (10 кОм) ограничивает ток, протекающий через него. Выход фототранзистора через разъем FOT.
Выводы энкодера I1 разведены на разъем IMP, перемычка ZW2 используется для подключения земли или +5 В к энкодеру. Конденсаторы C20 (100nF) и C21 (100nF) необходимы для подавления помех. На плате есть также оптропара OPT3 (CNY17) для любых целей. R43 (330R) ограничивает ток светодиода оптропары. R44 (10k) и R42 (100k) подтягивают выводы к питанию. Перемычками ZW5 и ZW6 можно подключать светодиод оптопары к +5 В или на землю. Выход через разъем CNYO.
Разъем ZAC (Molex 2×2) необходим для подачи внешнего питания +5 В с более высоким током. Реле PU1 (HFC-005-12W) необходимо для переключения питания от USB или от внешнего источника питания при условии, что установлена перемычка ZW8. Светодиод D11 и резистор R61 (470R) установлены для сигнализации работы реле. Диод D12 (1N4007) защищает от скачков на катушке реле напряжения при выключении питания. Выключатель питания позволяет отключить питание от USB (запитываться будет только программатор), светодиод D15 с резистором R69 (470R) указывают на этот факт.
Далее даны схемы процессорных модулей
ATMega 8
ATMega 162
ATTiny 13
ATtiny2313
Изготовление
Устройство изготавливается на основе печатной платы (В конце статьи). Плата не сложна в сборке, но устанавливать придется много элементов. В случае ошибки в установке это будет трудно найти и исправить. Установка начинается с пайки всех перемычек (16 штук). Некоторые перемычки находятся под микросхемами. Далее устанавливают все резисторы, конденсаторы и другие мелкие детали. В последнюю очередь устанавливают микросхемы.
Плата изготавливается из текстолита 1,5 мм и крепится к подставке из металла (см. фото проекта). На всех микросхемах рекомендуется использовать панельку. Вместо датчиков DS18B20 припаяна панелька DIL6. Благодаря этому можно заменять датчики и считывать серийные номера для различных целей. Подробности изготовления платы можно увидеть в разделе «Фотографий проекта».
Перед включением платы нужно проверить плату на предмет коротких замыканий с помощью мультиметра, особенно проверить короткие замыкания между GND и +5В, так как плата подключается к порту USB.
Список деталей
2x Резистор 2.2 кОм
23x Резистор 3,3 кОм
3x Резистор 4,7 кОм
1x Резистор 10 Ом
6x Резистор 10 кОм
1x Резистор 47 Ом
4x Резистор 68 Ом
2x Резистор 100 Ом
1x Резистор 100 кОм
8x Резистор 180 Ом
1x Резистор 220 Ом
13x Резистор 330 Ом
4x Резистор 470 Ом
1x Резисторная сборка 4×470 Ом
2x Резисторная сборка 8×470 Ом
2x Варистор JVR-7N431
1x Потенциометр 1 кОм
1x Потенциометр 10 кОм
1x Конденсатор 10 нФ
4x Конденсатор 22 пФ
1x Конденсатор 33пФ
7x Конденсатор 100 нФ
4x Конденсатор электролит 1 мкФ
2x Конденсатор электролит 4,7 мкФ
2x Конденсатор э лектролит 100 мкФ
1x 12 МГц кварц
1x Часовой кварц 32768Hz
1x 16 МГц кварцевый генератор
1x Диод 1N4007
2x Диод 1N4148
4x 3V6 стабилитрон
4x Светодиод
2x Светодиод RGB (общий катод)
1x ИК-светодиод
2x Светодиодный столбик DIL20
1x ИК-приемник TSOP1736
1x Транзистор BC516
10x Транзистор BC556
1x Фототранзистора L-932P3BT
1x Микроконтроллер ATMEGA8 + панелька
1x AT24C256
1x ULN2803
1x TL431
1x MAX232
1x MAX485
1x PCF8583
2x BT138-600E
2x MOC3041
1x Оптрон CNY17
1x Пищалка 5V с генератором
1x 7-сегментный дисплей (четырехразрядный)
1x LCD 20×4
Модуль ATtiny13:
Разъемы PLS
1x Конденсатор 100nF
1x Микроконтроллер ATTINY13 + панелька
Мо дуль ATtiny2313 :
Разъемы PLS
2x Конденсатор 22 пФ
1x Конденсатор 100 нФ
1x 16 МГц кварц
1x Микроконтроллер ATTINY2313 + панелька
Модуль ATMega8:
Разъемы PLS
2x Конденсатор 22 пФ
1x Конденсатор 100 нФ
1x 16 МГц кварц
Микроконтроллер ATMEGA8 + Панелька
Модуль ATMega16:
Разъемы PLS
2x Конденсатор 22 пФ
1x Конденсатор 100 нФ
1x 16 МГц кварц
Микроконтроллер ATMEGA16 + Панелька
Модуль ATMega162:
Разъемы PLS
2x Конденсатор 22 пФ
1x Конденсатор 100 нФ
1x 16 МГц кварц
Микроконтроллер ATMEGA162 + Панелька
Avr mega type 2 инструкция
Содержание
Архив со всем необходимым
Описание модуля AVR ATMega16
В качестве базового контроллера используется микроконтроллер ATMega16 в DIP корпусе, установленном на панельку. Что позволяет применять в модуле другие варианты контроллеров AVR в подобном корпусе, просто заменив микроконтроллер. Подходят, например, ATMega8535 или ATMega32. Но следует осторожней относится к выбору контроллера, сверяясь с даташитом. Так, например, у ATMega162 совсем иная цоколевка выводов, потому его нельзя вставить в данный модуль. Хотя никто не запрещает развести и изготовить модуль для этого контроллера по аналогии.
Схема модуля проста и состоит из контактов платы (стандартные для всех модулей) и контактов контроллера. Соединяя их джамперами или проволочными перемычками можно подключать микроконтроллер к любой периферии платы.
Схема контактной группы разъема модуля выглядит следующим образом:
Слева и справа идут основные интерфейсы платы, а также выводы земли и питания. Особо следует обратить внимание на два резистора. Они задают напряжение питания контроллера, т.к. стоят в обратной связи стабилизатора шины CPU_POWER. Таким образом, напряжение питание модуля задается им самим. Впрочем, всегда есть возможность обойти стабилизатор CPU_POWER и объединить шины Main Power и CPU Power.
Цоколевка внешних выводов модуля следующая:
Это что касается выводов модуля. Фактически они совпадают с аналогичными выводами базовой платы. Сам контроллер разведен независимо, объединены только земли, питание и то, без чего не обойтись. Что дает гибкость и возможность подключать выводы как угодно и куда угодно. Схема включения контроллера типовая:
Только самое необходимое. Кварцы вынесены на панельки, что позволяет их менять или убирать если не нужны. Напряжение опоры АЦП связано с питающим через дроссель. Земли цифровая и аналоговая соединены, но это соединение в одной точке и только на модуле. Все остальные выводы выведены на штыри и расположены напротив выводов контроллера. Также некоторые из них продублированы возле UART, PWM или I2C выводов, чтобы можно было удобно подключать их джамперами.
Желтой подсветкой указаны выводы которые можно подключать джамперами. Как видно, выведены ШИМ каналы OC0, OC1A, OC1B, OC2. Шина i2c с ее линиями SCL, SDA. SPI с линиями MOSI, MISO (MI на плате), SCK и SS. Причем SS от контроллера продублирована так, чтобы можно было джампером одевать ее на SS или на SS2. Также продублированы выводы UART, позволяя подключать их джамперами либо к каналу А, либо к каналу В.
Справа, напротив выводов OSC1 и OSC2 припаяна цанговая панелька, куда может быть вставлен часовой кварц (идет в комплекте).
С северного торца, под платой, расположена кнопка RESET. А с Южного, также под платой, расположен угловой разъем JTAG’a с которого можно шлейфом вытащить интерфейс на отладчик.
Отличие модуля AVR ревизии 1 от ревизии 2
Схемотехника и распиновка модулей осталась без изменений, но была исправлена ошибка в результате которой SDA и SCL выводы поменялись местами. Сделал так, как было задумано изначально. Что позволяет теперь подключать i2c шину напрямую, джамперами. Не извращаясь с хитрым крестовидным соединителем.
Раньше для наброса на шину i2c AVR модуля нужно было подключать так:
Теперь все несколько упростилось:
Радиотехника и электроника для разработчиков и радиолюбителей
Информация
Справочные данные на радиоэлектронные компоненты, приборы, средства связи и измерений. Радиотехническая литература.
Доска объявлений
Объявления о покупке и продаже радиокомпонентов. Спрос и предложение на различные радиодетали и приборы.
Программы
Полезные программы для радиолюбителей и разработчиков радиоэлектроники.
Ссылки
Мы в соцсетях
Рекомендуем
Микроконтроллеры AVR
Здесь представлена информация по микроконтроллерам фирмы Atmel, в основном по микроконтроллерам AVR. Представлены для свободного скачивания книги и справочники. Вы можете здесь же заказать бумажный вариант книги.
Книга является справочным изданием по применению микроконтроллеров AVR семейства Classic фирмы «ATMEL». Рассмотрена архитектура, ее особенности, приведены основные электрические параметры. Подробно описано внутреннее устройство микроконтроллеров, система команд, периферия, а также способы программирования.
Предназначена для разработчиков радиоэлектронной аппаратуры, инженеров, студентов технических вузов.
Изд-во: Додэка
ISBN: 978-5-94120-094-8
288 страниц
Содержание
Глава 1. Знакомство с семейством CLASSIC
1.1. Общие сведения
1.2. Отличительные особенности
1.3. Характеристики ядра микроконтроллера
1.4. Характеристики подсистемы ввода/вывода
1.5. Периферийные устройства
1.6. Архитектура ядра
1.7. Цоколевка и описание выводов
Глава 2. Архитектура микроконтроллеров семейства Classic
2.1. Общие сведения
2.2. Организация памяти
2.2.1. Память программ
2.2.2. Память данных
2.2.2.1. Статическое ОЗУ
2.2.2.2. Регистры общего назначения
2.2.2.3. Регистры ввода/вывода
2.2.2.4. Способы адресации памяти данных
2.2.3. Энергонезависимая память данных
2.2.3.1. Организация доступа
2.2.3.2. Меры предосторожности при работе
2.3. Счетчик команд и выполнение программы
2.3.1. Функционирование конвейера
2.3.2. Задержки в конвейере
2.3.3. Счетчик команд
2.3.4. Kоманды типа «проверка/пропуск»
2.3.5. Kоманды условного перехода
2.3.6. Kоманды безусловного перехода
2.3.7. Kоманды вызова подпрограмм
2.3.8. Kоманды возврата из подпрограмм
2.4. Стек
2.4.1. Стек в микроконтроллере AT90S1200
2.4.2. Стек в старших моделях микроконтроллеров
Глава 3. Система команд
3.1. Общие сведения
3.2. Операнды
3.3. Типы команд
3.3.1. Kоманды логических операций
3.3.2. Kоманды арифметических операций и команды сдвига
3.3.3. Kоманды операций с битами
3.3.4. Kоманды пересылки данных
3.3.5. Kоманды передачи управления
3.3.6. Kоманды управления системой
3.4. Сводные таблицы команд
3.5. Описание команд
Глава 4. Устройство управления
4.1. Общие сведения
4.2. Тактовый генератор
4.3. Режимы пониженного энергопотребления
4.3.1. Режим Idle
4.3.2 Режим Power Down
4.3.3 Режим Power Save
4.4. Сброс
4.4.1. Сброс по включении питания
4.4.2. Аппаратный сброс
4.4.3. Сброс от сторожевого таймера
4.4.4. Сброс при снижении напряжения питания (Brown-Out)
4.4.5. Управление схемой сброса
4.5. Прерывания
4.5.1. Таблица векторов прерываний
4.5.2. Обработка прерываний
4.5.3. Внешние прерывания; регистры GIMSK и GIFR
4.5.4. Прерывания от таймеров; регистры TIMSK и TIFR
Глава 5. Порты ввода/вывода
5.1. Общие сведения
5.2. Обращение к портам ввода/вывода
5.3. Kонфигурирование портов ввода/вывода
Глава 6. Таймеры
6.1. Общие сведения
6.2. Назначение выводов таймеров/счетчиков
6.3. Таймер/счетчик T0
6.4. Таймер/счетчик T1
6.4.1. Выбор источника тактового сигнала
6.4.2. Режим таймера
6.4.2.1. Функция захвата (Capture)
6.4.2.2. Функция сравнения (Compare)
6.4.3. Режим ШИМ
6.5. Таймер/счетчик T2
6.5.1. Управление тактовым сигналом
6.5.2. Режим таймера
6.5.3. Режим ШИМ
6.5.4. Асинхронный режим работы
6.6. Сторожевой таймер
Глава 7. Аналоговый компаратор
7.1. Общие сведения
7.2. Функционирование компаратора
Глава 8. Аналого-цифровой преобразователь
8.1. Общие сведения
8.2. Функционирование модуля АЦП
8.3. Повышение точности преобразования
8.4. Параметры АЦП
Глава 9. Универсальный асинхронный приемопередатчик
9.1. Общие сведения
9.2. Управление работой UART
9.3. Передача данных
9.4. Прием данных
9.5. Мультипроцессорный режим работы UART
9.6. Скорость приема/передачи
Глава 10. Последовательный периферийный интерфейс SPI
10.1. Общие сведения
10.2. Функционирование модуля SPI
10.3. Режимы передачи данных
10.4. Использование вывода F65
Глава 11. Программирование микроконтроллеров
11.1. Общие сведения
11.2. Защита кода и данных
11.3. Kонфигурационные ячейки
11.4. Идентификатор
11.5. Режим параллельного программирования
11.5.1. Переключение в режим параллельного программирования
11.5.2. Стирание кристалла
11.5.3. Программирование FLASH-памяти
11.5.4. Программирование EEPROM-памяти
11.5.5. Kонфигурирование микроконтроллера
11.6. Режимы последовательного программирования
11.6.1. Режим последовательного программирования при высоком напряжении (модели AT90S/LS2323 и AT90S/LS2343)
11.6.2. Программирование по последовательному каналу
Приложения
Приложение I. Сводная таблица микроконтроллеров AVR семейства Classic
Приложение II. Чертежи корпусов микроконтроллеров AVR семейства Classic
Приложение III. Электрические параметры микроконтроллеров AVR семейства Classic
| Купить (проверить наличие) эту книгу в интернет-магазинах: |
| » Озон |
Книга представляет собой справочное руководство по однокристальным микроконтроллерам AVR семейства Mega фирмы ATMEL. Рассмотрена архитектура микроконтроллеров AVR, ее особенности, приведены основные электрические параметры. Подробно описано внутреннее устройство микроконтроллеров, система команд, периферия, а также способы программирования. Основой данного издания послужила популярная книга «Микроконтроллеры AVR семейств Tiny и Mega», материал которой был существенно переработан и дополнен описаниями новых моделей.
Предназначена для разработчиков радиоэлектронной аппаратуры, инженеров, студентов технических вузов.
Предисловие 8
Глава 1
Знакомство с семейством Mega 10
1.1. Общие сведения 10
1.2. Отличительные особенности 10
1.3. Характеристики процессора 11
1.4. Характеристики подсистемы ввода/вывода 11
1.5. Периферийные устройства 12
1.6. Архитектура ядра 12
1.7. Цоколевка и описание выводов 13
Глава 2
Архитектура микроконтроллеров семейства Mega 87
2.1. Общие сведения 87
2.2. Организация памяти 101
2.2.1. Память программ 103
2.2.2. Память данных 105
2.2.3. Энергонезависимая память данных (EEPROM) 160
2.3. Счетчик команд и выполнение программы 165
2.3.1. Счетчик команд 165
2.3.2. Функционирование конвейера 166
2.3.3. Команды типа «проверка/пропуск» (Test & Skip) 167
2.3.4. Команды условного перехода 167
2.3.5. Команды безусловного перехода 167
2.3.6. Команды вызова подпрограмм 169
2.3.7. Команды возврата из подпрограмм 171
2.4. Стек 171
Глава 3.
Система команд 172
3.1. Общие сведения 172
3.2. Операнды 172
3.3. Типы команд 174
3.3.1. Команды логических операций 175
3.3.2. Команды арифметических операций и команды сдвига 175
3.3.3. Команды битовых операций 175
3.3.4. Команды пересылки данных 176
3.3.5. Команды передачи управления 176
3.3.6. Команды управления системой 178
3.4. Сводные таблицы команд 179
3.5. Описание команд 185
Глава 4
Тактирование, режимы пониженного энергопотребления и сброс 251
4.1. Общие сведения 251
4.2. Тактовый генератор 251
4.2.1. Генератор с внешним резонатором 254
4.2.2. Низкочастотный кварцевый генератор 256
4.2.3. Внешний сигнал синхронизации 256
4.2.4. Генератор с внешней RC-цепочкой 256
4.2.5. Внутренний калиброванный RC-генератор 257
4.2.6. Внутренний RC-генератор на 128 кГц 259
4.2.7. Управление тактовой частотой 259
4.3. Управление электропитанием 262
4.3.1. Режимы пониженного энергопотребления 262
4.3.2. Управление тактовыми сигналами модулей 268
4.3.3. Общие рекомендации по уменьшению энергопотребления 271
4.4. Сброс 273
4.4.1. Сброс по включению питания 277
4.4.2. Аппаратный сброс 278
4.4.3. Сброс от сторожевого таймера 279
4.4.4. Сброс при снижении напряжения питания 279
4.4.5. Управление схемой сброса 281
Глава 5
Прерывания 291
5.1. Общие сведения 291
5.2. Таблица векторов прерываний 291
5.3. Обработка прерываний 306
5.4. Внешние прерывания 308
Глава 6
Порты ввода/вывода 320
6.1. Общие сведения 320
6.2. Регистры портов ввода/вывода 321
6.3. Конфигурирование портов ввода/вывода 323
Глава 7
Таймеры 329
7.1. Общие сведения 329
7.2. Назначение выводов таймеров/счетчиков 330
7.3. Прерывания от таймеров/счетчиков 333
7.4. Предделители таймеров/счетчиков 338
7.4.1. Управление предделителями 339
7.4.2. Использование внешнего тактового сигнала 341
7.5. Восьмибитные таймеры/счетчики 342
7.5.1. Управление тактовым сигналом 352
7.5.2. Режимы работы 353
7.5.3. Асинхронный режим 360
7.6. 16-битные таймеры/счетчики 363
7.6.1. Обращение к 16-битным регистрам 372
7.6.2. Управление тактовым сигналом 373
7.6.3. Режимы работы 373
7.7. Модулятор 385
7.8. Сторожевой таймер 386
Глава 8
Аналоговый компаратор 395
8.1. Общие сведения 395
8.2. Функционирование компаратора 396
Глава 9
Аналого-цифровой преобразователь 401
9.1. Общие сведения 401
9.2. Функционирование модуля АЦП 402
9.3. Результат преобразования 415
9.4. Повышение точности преобразования 416
9.5. Параметры АЦП 417
Глава 10
Последовательный периферийный интерфейс SPI 419
10.1. Общие сведения 419
10.2. Функционирование модуля SPI 419
10.3. Режимы передачи данных 424
10.4. Использование вывода SS 426
Глава 11
Двухпроводный последовательный интерфейс TWI 427
11.1. Общие сведения 427
11.2. Принципы обмена данными по шине TWI 428
11.3. Обзор модуля TWI 433
11.4. Взаимодействие прикладной программы с модулем TWI 440
11.5. Режимы работы модуля TWI 443
11.5.1. Режим «Ведущий-передатчик» 443
11.5.2. Режим «Ведущий-приемник» 448
11.5.3. Режим «Ведомый-приемник» 452
11.5.4. Режим «Ведомый-передатчик» 457
11.5.5. Комбинирование различных режимов 461
11.5.6. Арбитраж 461
11.6. Параметры интерфейса TWI 463
Глава 12
Универсальный последовательный интерфейс USI 465
12.1. Общие сведения 465
12.2. Использование модуля USI 466
12.3. Режимы работы модуля USI 470
12.3.1. Трехпроводный режим 470
12.3.2. Двухпроводный режим 473
12.3.3. Альтернативное использование модуля USI 476
Глава 13
Универсальный синхронный/асинхронный приемо-передатчик 477
13.1. Общие сведения 477
13.2. Использование модулей USART 479
13.2.1. Скорость приема/передачи 486
13.2.2. Формат кадра 492
13.2.3. Передача данных 493
13.2.4. Прием данных 495
13.3. Мультипроцессорный режим работы 500
13.4. Модуль USART в режиме MSPI 501
13.4.1. Управление модулем USART в режиме MSPI 501
13.4.2. Инициализация режима MSPI 505
13.4.3. Передача данных в режиме MSPI 506
Глава 14
Программирование микроконтроллеров AVR семейства Mega 508
14.1. Общие сведения 508
14.1.1. Защита кода и данных 509
14.1.2. Конфигурационные ячейки 511
14.1.3. Идентификатор 516
14.1.4. Калибровочные ячейки 517
14.1.5. Организация памяти программ и данных 517
14.2. Программирование по последовательному каналу 518
14.2.1. Переключение в режим программирования 525
14.2.2. Управление процессом программирования FLASH-памяти 525
14.2.3. Управление процессом программирования EEPROM-памяти 526
14.3. Параллельное программирование 526
14.3.1. Переключение в режим параллельного программирования 532
14.3.2. Стирание кристалла 533
14.3.3. Программирование FLASH-памяти 533
14.3.4. Программирование EEPROM-памяти 535
14.3.5. Программирование конфигурационных ячеек 537
14.3.6. Программирование ячеек защиты 538
14.3.7. Чтение конфигурационных ячеек и ячеек защиты 538
14.3.8. Чтение ячеек идентификатора и калибровочных ячеек 539
14.4. Программирование по интерфейсу JTAG 539
14.4.1. Общие сведения об интерфейсе JTAG 539
14.4.2. Использование интерфейса JTAG для программирования кристалла 542
14.4.3. Команды JTAG, используемые при программировании 543
14.4.4. Алгоритм программирования 545
14.5. Самопрограммирование микроконтроллеров семейства Mega 554
14.5.1. Общие сведения 554
14.5.2. Области RWW и NRWW 555
14.5.3. Функционирование загрузчика 557
Приложения
Приложение 1. Сводная таблица микроконтроллеров AVR семейства Mega 564
Приложение 2. Чертежи корпусов микроконтроллеров AVR семейства Mega 574
Приложение 3. Параметры микроконтроллеров AVR семейства Mega 577
Предметный указатель 582

















