Слайд 1ЭВМ и периферийные устройства
Микроконтроллеры AVR
Лекция 9
С. А. Тогузов
Слайд 2AVR – семейство восьмибитных микроконтроллеров фирмы Atmel, первые выпущенные в
1996 г. Они представляют собой мощный инструмент, универсальную основу для
создания современных экономичных встраиваемых систем многоцелевого назначения.
Идея разработки нового RISC-ядра принадлежит двум студентам Норвежского университета наук и технологий (г. Тронхейм) – Альфу Богену (Alf-Egil Bogen) и Вегарду Воллену (Vegard Wollen). В 1995 г. Боген и Воллен решили предложить американской корпорации Atmel выпускать новый 8-битный RISC-микроконтроллер и снабдить его Flash-памятью для программ на одном кристалле с вычислительным ядром.
Идея была одобрена Atmel Corporation, и в конце 1996 г. был выпущен опытный микроконтроллер AT90S1200, а во второй половине 1997 г. корпорация Atmel приступила к серийному производству нового семейства микроконтроллеров.
Краткая история микроконтроллеров AVR
Слайд 3Новое ядро было запатентовано и получило название AVR. Существует несколько
трактовок данной аббревиатуры. Кто-то утверждает, что это Advanced Virtual RISC,
другие полагают, что не обошлось здесь без инициалов разработчиков Alf Egil Bogen Vegard Wollan RISC.
Микроконтроллеры AVR имеют гарвардскую архитектуру (программа и данные находятся в разных адресных пространствах) и систему команд, близкую к идеологии RISC. Процессор AVR имеет 32 8-битных регистра общего назначения, объединенных в регистровый файл. В отличие от «идеального» RISC, регистры не абсолютно равноправны:
− три «сдвоенных» 16-битных регистра-указателя X (r26:r27), Y (r28:r29) и Z (r30:r31);
− некоторые команды работают только с регистрами r16…r31;
− результат умножения (в тех моделях, в которых есть модуль умножения) всегда помещается в r0:r1.
Краткая история микроконтроллеров AVR
Слайд 4Система команд микроконтроллеров AVR весьма развита и насчитывает в различных
моделях от 90 до 133 различных инструкций.
Большинство команд занимает
только 1 ячейку памяти (16 бит).
Большинство команд выполняется за 1 такт.
Все множество команд микроконтроллеров AVR можно разбить на несколько групп:
− команды логических операций;
− команды арифметических операций и команды сдвига;
− команды операции с битами;
− команды пересылки данных;
− команды передачи управления;
− команды управления системой.
Управление периферийными устройствами осуществляется через адресное пространство данных. Для удобства существуют «сокращенные команды» IN/OUT.
Система команд микроконтроллеров AVR
Слайд 5Интересно, что система команд и внутреннее устройство чипов AVR разрабатывалось
совместно с фирмой IAR Systems - производителем компиляторов языков программирования
C/C++, что обеспечило уникальные характеристики этих микроконтроллеров. В результате для AVR стало возможным получать высокую плотность кода при использовании языков высокого уровня, практически не теряя в производительности по сравнению с программами, написанными на низкоуровневом языке Ассемблера.
Система команд микроконтроллеров AVR
Слайд 6Стандартные семейства:
− tinyAVR (ATtinyxxx):
Флеш-память до 16 Кб;
SRAM
до 512 б;
EEPROM до 512 б;
Число линий ввод-вывода
4-18 (общее количество выводов 6-32);
Ограниченный набор периферийных устройств.
− megaAVR (ATmegaxxx):
Флеш-память до 256 Кб;
SRAM до 8 Кб;
EEPROM до 4 Кб;
Число линий ввода-вывода 23-86 (общее количество выводов 28-100);
Аппаратный умножитель;
Расширенная система команд и периферийных устройств.
Семейства и версии микроконтроллеров
Слайд 7− XMEGA AVR (ATxmegaxxx):
Флеш-память до 384 Кб;
SRAM до
32 Кб;
EEPROM до 4 Кб;
Четырехканальный DMA-контроллер;
Инновационная система
обработки событий.
На основе стандартных семейств выпускаются микроконтроллеры, адаптированные под конкретные задачи:
− со встроенными интерфейсами USB, CAN, контроллером LCD;
− со встроенным радиоприемопередатчиком
– серии ATAхxxx, ATAMxxx;
− для управления электродвигателями – серия AT90PWMxxxx;
− для автомобильной электроники; − для осветительной техники.
Кроме указанных выше семейств, ATMEL выпускает 32-разрядные микроконтроллеры семейства AVR32.
Семейства и версии микроконтроллеров
Слайд 11Что такое Ардуино?
Arduino – это инструмент для проектирования электронных устройств
(электронный конструктор) более плотно взаимодействующих с окружающей физической средой, чем
стандартные персональные компьютеры, которые фактически не выходят за рамки виртуальности. Это платформа, предназначенная для «physical computing» с открытым программным кодом, построенная на простой печатной плате с современной средой для написания программного обеспечения.
Слайд 12Что такое Ардуино?
Arduino применяется для создания электронных устройств с возможностью
приема сигналов от различных цифровых и аналоговых датчиков, которые могут
быть подключены к нему, и управления различными исполнительными устройствами. Проекты устройств, основанные на Arduino, могут работать самостоятельно или взаимодействовать с программным обеспечением на компьютере (напр.: Flash, Processing, MaxMSP). Платы могут быть собраны пользователем самостоятельно или куплены в сборе. Среда разработки программ с открытым исходным текстом доступна для бесплатного скачивания.
Язык программирования Arduino является реализацией Wiring, схожей платформы для «physical computing», основанной на мультимедийной среде программирования Processing.
Слайд 13Почему Ардуино?
Существует множество микроконтроллеров и платформ для осуществления «physical computing».
Parallax Basic Stamp, Netmedia's BX-24, Phidgets, MIT's Handyboard и многие
другие предлагают схожую функциональность. Все эти устройства объединяют разрозненную информацию о программировании и заключают ее в простую в использовании сборку. Arduino, в свою очередь, тоже упрощает процесс работы с микроконтроллерами, однако имеет ряд преимуществ перед другими устройствами для преподавателей, студентов и любителей:
Низкая стоимость – платы Arduino относительно дешевы по сравнению с другими платформами. Самая недорогая версия модуля Arduino может быть собрана в ручную, а некоторые даже готовые модули стоят дешевле аналогов.
Кросс-платформенность – программное обеспечение Arduino работает под ОС Windows, Macintosh OSX и Linux. Большинство микроконтроллеров ограничивается ОС Windows.
Слайд 14Почему Ардуино?
Простая и понятная среда программирования – среда Arduino подходит
как для начинающих пользователей, так и для опытных. Arduino основана
на среде программирования Processing, что очень удобно для преподавателей , так как студенты работающие с данной средой будут знакомы и с Arduino.
Программное обеспечение с возможностью расширения и открытым исходным текстом – ПО Arduino выпускается как инструмент, который может быть дополнен опытными пользователями. Язык может дополняться библиотеками C++. Пользователи, желающие понять технические нюансы, имеют возможность перейти на язык AVR C на котором основан C++. Соответственно, имеется возможность добавить код из среды AVR-C в программу Arduino.
Слайд 15Почему Ардуино?
Аппаратные средства с возможностью расширения и открытыми принципиальными схемами
– микроконтроллеры ATMEGA8 и ATMEGA168 являются основой Arduino. Схемы модулей
выпускаются с лицензией Creative Commons, а значит, опытные инженеры имеют возможность создания собственных версий модулей, расширяя и дополняя их. Даже обычные пользователи могут разработать опытные образцы с целью экономии средств и понимания работы.
Слайд 16Среда разработки Arduino
Среда разработки Arduino состоит из встроенного текстового редактора
программного кода, области сообщений, окна вывода текста(консоли), панели инструментов с
кнопками часто используемых команд и нескольких меню. Для загрузки программ и связи среда разработки подключается к аппаратной части Arduino.
Последнюю версию можно найти по этой ссылке
http://www.arduino.cc/en/Main/Software
Полезные ссылки:
Начало работы в Windows
Установка Arduino IDE на Ubuntu Linux
Слайд 17Среда разработки Arduino
Программа, написанная в среде Arduino, называется скетч. Скетч
пишется в текстовом редакторе, имеющем инструменты вырезки/вставки, поиска/замены текста. Во
время сохранения и экспорта проекта в области сообщений появляются пояснения, также могут отображаться возникшие ошибки. Окно вывода текста(консоль) показывает сообщения Arduino, включающие полные отчеты об ошибках и другую информацию. Кнопки панели инструментов позволяют проверить и записать программу, создать, открыть и сохранить скетч, открыть мониторинг последовательной шины.
Язык программирования устройств Ардуино основан на C/C++. Он прост в освоении, и на данный момент Arduino — это, пожалуй, самый удобный способ программирования устройств на микроконтроллерах.
Слайд 18Аппаратная часть платформы Arduino
Существует несколько версий платформ Arduino. Последняя версия
Leonardo базируется на микроконтроллере ATmega32u4. Uno, как и предыдущая версия Duemilanove
построены на микроконтроллере Atmel ATmega328 (техническое описание). Старые версии платформы Diecimila и первая рабочая Duemilanoves были разработаны на основе Atmel ATmega168, более ранние версии использовали ATmega8. Arduino Mega2560, в свою очередь, построена на микроконтроллере ATmega2560 (техническое описание).
Примечание: На всю документацию Arduino распространяется лицензия ShareAlike 3.0 Creative Commons Attribution. Обратитесь к странице «Вы хотите собрать Arduino?» (англ) за более подробной информацией по разработке собственной платформы.
Слайд 19Версии платформы Arduino
Due - новая плата на базе ARM микропроцессора 32bit Cortex-M3
ARM SAM3U4E.
Leonardo - последняя версия платформы Arduno на ATmega32u4 микроконтроллере
. Отличается разъемом microUSB, по размерам совпадает с UNO.
Yun - новая плата, с встроенной поддержкой WiFi на базе ATmega32u4 and the Atheros AR9331
Micro - новое компактное решение на базе ATmega32u4.
Uno - самая популярная версия базовой платформы Arduino USB. Uno имеет стандартный порт USB. Arduino Uno во многом схожа с Duemilanove, но имеет новый чип ATMega8U2 для последовательного подключения по USB и новую, более удобную маркировку вход/выходов. Платформа может быть дополнена платами расширения, например, пользовательскими платами с различными функциями.
Слайд 20Версии платформы Arduino
Arduino Ethernet - контроллер со встроенной поддержкой работы
по сети и с опциональной возможностью питания по сети с
помощью модуля POE (Power over Ethernet).
Duemilanove - является предпоследней версией базовой платформы Arduino USB. Подключение Duemilanove производится стандартным кабелем USB. После подключения она готова к использованию. Платформа может быть дополнена платами расширения, например, пользовательскими платами с различными функциями.
Diecimila - предыдущая версия базовой платформы Arduino USB.
Nano - это компактная платформа, используемая как макет. Nano подключается к компьютеру при помощи кабеля USB Mini-B.
Mega ADK - версия платы Mega 2560 с поддрежкой USB host интерфейса для связи с телефонами на Android и другими устройствами с USB интерфейсом.
Слайд 21Версии платформы Arduino
Mega2560 – новая версия платы серии Mega. Построена
на базе Atmega2560 и с использованием чипа ATMega8U2 для последовательного
соединения по USB порту.
Mega – предыдущая версия серии Mega на базе Atmega1280.
Arduino BT - платформа с модулем Bluetooth для беспроводной связи и программирования. Совместима с платами расширения Arduino.
LilyPad – платформа, пурпурного цвета, разработанная для переноски, может зашиваться в ткань.
Fio – платформа разработана для беспроводных применений. Fio содержит разъем для радио XBee, разъем для батареи LiPo и встроенную схему подзарядки.
Mini – самая маленькая платформа Arduino. Прекрасно работает как макетная модель, или, в проектах, где пространство является критическим параметром. Платформа подключается к компьютеру при помощи адаптера Mini USB. Адаптер Mini USB – плата, конвертирующая подключение USB в линии 5 В, GND, TX и RX для соединения с платформой Arduino Mini или другими микроконтроллерами.
Слайд 22Версии платформы Arduino
Pro – платформа, разработанная для опытных пользователей, может
являться частью большего проекта. Она дешевле, чем Diecimila и может
питаться от аккумуляторной батареи, но в тоже время требует дополнительной сборки и компонентов.
Pro Mini – как и платформа Pro разработана для опытных пользователей, которым требуется низкая цена, меньшие размеры и дополнительная функциональность.
Serial – базовая платформа с интерфейсом RS232 для связи и программирования. Плата легко собирается даже начинающими пользователями. (включает схемы и файлы CAD)
Serial Single Sided – платформа разработана для ручной сборки. Она обладает чуть большим размером, чем Diecimila, но совместима с платами расширения Arduino.
USB Serial Light Адаптер - адаптер, позволяющий подключать платы Arduino к компьютеру для обмена данными и заливки скетчей. Удобен для программирования таких плат, как Arduino Mini, Arduino Ethernet и других, не имеющих своего разъема USB.
Слайд 23Платы расширения Arduino
Платы расширения, устанавливаемыми на платформы, являются платы, расширяющие
функциональность Arduino для управления различными устройствами, получения данных и т.д.
Плата
расширения WiFi используется для соединения с беспроводными сетями стандарта 802.11 b/g.
Плата расширения Xbee Shield обеспечивает при помощи модуля Maxstream Xbee Zigbee беспроводную связь нескольким устройствам Arduino в радиусе до 35 метров (в помещении) и до 90 метров (вне помещения).
Плата расширения Motor Shield обеспечивает управление двигателями постоянного тока и чтение датчиков положения.
Плата расширения Ethernet Shield обеспечивает подключение к интернету.
Слайд 24Проц: ATmega328p
Arduino Uno
Arduino Uno контроллер построен на ATmega328 (техническое описание,
pdf). Платформа имеет 14 цифровых вход/выходов (6 из которых могут
использоваться как выходы ШИМ), 6 аналоговых входов, кварцевый генератор 16 МГц, разъем USB, силовой разъем, разъем ICSP и кнопку перезагрузки. Для работы необходимо подключить платформу к компьютеру посредством кабеля USB, либо подать питание при помощи адаптера AC/DC или батареи.
Слайд 25Проц: ATmega328p
В отличие от всех предыдущих плат, использовавших FTDI USB
микроконтроллер для связи по USB, новый Ардуино Uno использует микроконтроллер
ATmega8U2 (техническое описание, pdf).
"Uno" переводится как один с итальянского и разработчики тем самым намекают на грядущий выход Arduino 1.0. Новая плата стала флагманом линейки плат Ардуино. Для сравнения с предыдущими версиями можно обратиться к полному списку плат Arduino.
.
Arduino Uno
Слайд 27Arduino Nano
Ардуино НАНО – уменьшенная версия платы УНО, полностью с ней
совместимая по названию пинов. Максимально рекомендуется к покупке и использованию.
Процессор
ATmega328 (16 МГц 5V / 8 МГц 3.3V)
Количество пинов: 22
– 20 цифровых ввода-вывода (D0-A5)
– 6 ШИМ пинов (D3, D5, D6, D9, D10, D11)
– 7 пинов с АЦП (A0-A7)
– 2 прерывания (D2, D3)
Память:
– Flash: 32 Кб
– SRAM: 2 Кб
– EEPROM: 1 Кб
Слайд 28Arduino Pro Mini
Ардуино ПРО МИНИ – ещё более уменьшенная UNO/NANO (полностью
совместима по названию пинов) без программатора на борту. Плюсы: компактность, меньшее
потребление за счёт отсутствия программатора.
Процессор ATmega328 (16 МГц 5V / 8 МГц 3.3V)
Количество пинов: 22
– 20 цифровых ввода-вывода (D0-A5)
– 6 ШИМ пинов (D3, D5, D6, D9, D10, D11)
– 7 пинов с АЦП (A0-A7)
– 2 прерывания (D2, D3)
Память:
– Flash: 32 Кб
– SRAM: 2 Кб
– EEPROM: 1 Кб
Слайд 29Arduino Strong
Ардуино СТРОНГ – интересная плата от китайцев на 328 процессоре.
По сути является НАНОй, у которой распаяно питание около каждого
пина. Это не просто удобно, это УДОБНО! Есть версия с USB-TTL на борту и USB портом, а есть и более дешёвая без программатора.
Процессор ATmega328 (16 МГц 5V / 8 МГц 3.3V)
Количество пинов: 22
– 20 цифровых ввода-вывода (D0-A5)
– 6 ШИМ пинов (D3, D5, D6, D9, D10, D11)
– 7 пинов с АЦП (A0-A7)
– 2 прерывания (D2, D3)
Память:
– Flash: 32 Кб
– SRAM: 2 Кб
– EEPROM: 1 Кб
Слайд 30Arduino Mega
Ардуино МЕГА – огромная плата с большим количеством пинов
и кучей памяти для самых крупных проектов! Также имеет 4
“хардварных” последовательных порта.
Процессор ATmega2560
Количество пинов 68:
– 54 цифровых ввода-вывода (D0-A5)
– 14 ШИМ пинов (D2 – D13, D44 – D46)
– 16 пинов с АЦП (A0-A5)
– 6 прерываний (D2, D3, D18, D19, D20, D21)
Память:
– Flash: 256 Кб
– SRAM: 8 Кб
– EEPROM: 4 Кб
Слайд 31Arduino Mega Pro
Ардуино МЕГА ПРО – интересный “китайский” вариант оригинальной
Меги на камне 2560: очень плотная по компоновке компактная плата
с “пинами” вместо сокетов, можно ставить в готовый проект или распаивать проводами.
Процессор ATmega2560
Количество пинов 68:
– 54 цифровых ввода-вывода (D0-A5)
– 14 ШИМ пинов (D2 – D13, D44 – D46)
– 16 пинов с АЦП (A0-A5)
– 6 прерываний (D2, D3, D18, D19, D20, D21)
Память:
– Flash: 256 Кб
– SRAM: 8 Кб
– EEPROM: 4 Кб
Слайд 32Arduino Leonardo
Ардуино ЛЕОНАРДО – плата на 32U4 в компоновке UNO. Отличия:
на один ШИМ пин больше (D13), на 0.5 кБ SRAM
памяти больше, самое главное – умеет эмулировать USB и прикидываться HID устройством (клавиатура, мышь, геймпад)
Процессор ATmega32U4 (16 МГц)
Количество пинов: 20
– 20 цифровых ввода-вывода (D0-A5)
– 7 ШИМ пинов (D3, D5, D6, D9, D10, D11, D13)
– 5 пинов с АЦП (A0-A5)
– 5 прерываний (D0, D1, D2, D3, D7)
Память:
– Flash: 32 Кб
– SRAM: 2.5 Кб
– EEPROM: 1 Кб
Слайд 33Arduino Micro
Ардуино МИКРО – уменьшенная ЛЕОНАРДО. Отличия: на один ШИМ пин
больше (D13), на 0.5 кБ SRAM памяти больше, самое главное
– умеет эмулировать USB и прикидываться HID устройством (клавиатура, мышь, геймпад). К покупке не рекомендуется, берите Pro Micro
Процессор ATmega32U4 (16 МГц)
Количество пинов: 20
– 20 цифровых ввода-вывода (D0-A5)
– 7 ШИМ пинов (D3, D5, D6, D9, D10, D11, D13)
– 5 пинов с АЦП (A0-A5)
– 5 прерываний (D0, D1, D2, D3, D7)
Память:
– Flash: 32 Кб
– SRAM: 2.5 Кб
– EEPROM: 1 Кб
Слайд 34Arduino Pro Micro
Ардуино ПРО МИКРО – уменьшенная МИКРО. Умеет эмулировать USB
и прикидываться HID устройством (клавиатура, мышь, геймпад).
Процессор ATmega32U4 (16 МГц)
Количество
пинов: 20
– 20 цифровых ввода-вывода (D0-A5)
– 7 ШИМ пинов (D3, D5, D6, D9, D10, D11, D13)
– 5 пинов с АЦП (A0-A5)
– 5 прерываний (D0, D1, D2, D3, D7)
Память:
– Flash: 32 Кб
– SRAM: 2.5 Кб
– EEPROM: 1 Кб
Слайд 35Arduino LILYPAD
Ардуино ЛИЛИПАД – интересная круглая плата на базе ATmega328p без
программатора на борту.
Процессор ATmega328 (16 МГц 5V / 8 МГц
3.3V)
Количество пинов: 20
– 20 цифровых ввода-вывода (D0-A5)
– 6 ШИМ пинов (D3, D5, D6, D9, D10, D11)
– 5 пинов с АЦП (A0-A5)
– 2 прерывания (D2, D3)
Память:
– Flash: 32 Кб
– SRAM: 2 Кб
– EEPROM: 1 Кб
Слайд 36ATtiny85 LilyPad
DIGISPARK – плата в виде USB “свистка”. Умеет эмулировать USB
и прикидываться HID устройством (клавиатура, мышь, геймпад).
Процессор ATtiny85 (16 МГц)
Количество пинов:
6
– 6 цифровых ввода-вывода
– 3 ШИМ пина
– 4 пинов с АЦП
Память:
– Flash: 8 Кб
– SRAM: 512 Б
– EEPROM: 512 Б