Какие особенности имеют микроконтроллеры Atmel AVR семейств Tiny и Mega. Как организована их архитектура. Какие периферийные устройства они содержат. Как программировать микроконтроллеры AVR.
Общая характеристика микроконтроллеров Atmel AVR
Микроконтроллеры AVR разработаны компанией Atmel и являются одними из самых популярных 8-битных микроконтроллеров благодаря удачному сочетанию производительности, энергоэффективности и доступной цены. Основные особенности микроконтроллеров AVR:
- Гарвардская архитектура (раздельная память программ и данных)
- RISC-архитектура с сокращенным набором команд
- Высокая производительность — до 20 MIPS на частоте 20 МГц
- Низкое энергопотребление
- Встроенная Flash-память программ
- Встроенная EEPROM для хранения данных
- Большой набор периферийных устройств
- Удобство программирования на C и ассемблере
Микроконтроллеры AVR выпускаются в нескольких семействах, основными из которых являются tinyAVR и megaAVR. Какие основные особенности этих семейств?

Особенности микроконтроллеров семейства tinyAVR
Семейство tinyAVR предназначено для простых приложений и отличается следующими характеристиками:
- Объем Flash-памяти программ: 0.5-8 КБ
- Объем ОЗУ: 32-512 байт
- Объем EEPROM: 0-512 байт
- Количество выводов: 6-20
- Тактовая частота: до 20 МГц
- Напряжение питания: 1.8-5.5 В
- Минимальный набор периферии
Микроконтроллеры tinyAVR оптимальны для создания компактных устройств с низким энергопотреблением. Какие периферийные устройства они обычно содержат?
Периферийные устройства микроконтроллеров tinyAVR
Типичный набор периферии в микроконтроллерах семейства tinyAVR включает:
- 8-битные таймеры/счетчики
- 16-битный таймер/счетчик (в некоторых моделях)
- Аналоговый компаратор
- 8-канальный 10-битный АЦП
- Последовательный интерфейс USI (Universal Serial Interface)
- Сторожевой таймер
- Встроенный RC-генератор
Этого набора периферии обычно достаточно для большинства простых приложений. Какими особенностями обладают более мощные микроконтроллеры семейства megaAVR?

Характеристики микроконтроллеров семейства megaAVR
Семейство megaAVR предназначено для более сложных приложений и имеет следующие основные параметры:
- Объем Flash-памяти программ: 4-256 КБ
- Объем ОЗУ: 256 байт — 16 КБ
- Объем EEPROM: 256 байт — 4 КБ
- Количество выводов: 28-100
- Тактовая частота: до 20 МГц
- Напряжение питания: 1.8-5.5 В
- Расширенный набор периферийных устройств
Микроконтроллеры megaAVR обладают большими вычислительными возможностями и позволяют реализовывать более функциональные устройства. Какие дополнительные периферийные модули они содержат?
Периферийные устройства микроконтроллеров megaAVR
По сравнению с tinyAVR, микроконтроллеры семейства megaAVR имеют расширенный набор периферии:
- Несколько 8- и 16-битных таймеров/счетчиков
- Аналоговый компаратор
- Многоканальный АЦП (до 16 каналов)
- Интерфейсы USART, SPI, TWI (I2C)
- Контроллер прерываний
- Сторожевой таймер
- Различные генераторы тактовых сигналов
- Контроллер ЖКИ (в некоторых моделях)
- Контроллер USB (в некоторых моделях)
Такой набор периферии позволяет создавать на базе megaAVR достаточно сложные устройства. Как организована внутренняя архитектура микроконтроллеров AVR?

Архитектура микроконтроллеров AVR
Микроконтроллеры AVR имеют следующие особенности архитектуры:
- Гарвардская архитектура с раздельными шинами для памяти программ и данных
- 32 8-битных регистра общего назначения
- Конвейерное выполнение команд (загрузка следующей команды во время выполнения текущей)
- Большинство команд выполняется за один такт
- Память программ и данных расположена в разных адресных пространствах
- Поддержка векторов прерываний
Такая архитектура обеспечивает высокую производительность микроконтроллеров AVR. Как организована память в этих микроконтроллерах?
Организация памяти микроконтроллеров AVR
В микроконтроллерах AVR используются следующие типы памяти:
- Flash-память программ — энергонезависимая память для хранения кода программы и констант
- SRAM — оперативная память для хранения переменных и стека
- EEPROM — энергонезависимая память для долговременного хранения данных
Память программ и данных имеет линейную адресацию. Для доступа к EEPROM используются специальные регистры. Какие особенности имеет система команд микроконтроллеров AVR?

Система команд микроконтроллеров AVR
Система команд микроконтроллеров AVR обладает следующими характеристиками:
- Большинство команд — однотактные (выполняются за один машинный цикл)
- Ортогональная система команд (любая команда может использовать любой способ адресации)
- Поддержка битовых операций
- Наличие команд умножения
- Команды условных и безусловных переходов
- Команды вызова подпрограмм и возврата из них
Такая система команд обеспечивает эффективное программирование микроконтроллеров AVR как на ассемблере, так и на языке C. Каковы основные подходы к программированию этих микроконтроллеров?
Обзор микроконтроллеров семейства AVR компании Atmel
32-разрядные микроконтроллеры
Богатый набор функций и лучшая производительность в своём классе микроконтроллеров Atmel AVR обеспечиваются наличием встроенных блоков цифровой обработки сигналов с фиксированной запятой (DSP), портом SRAM, контроллером прямого DMA, продуманной архитектурой, построенной на проверенных и инновационных решениях Atmel.Палитра устройств включает несколько серий, каждая из которых заслуживает детального рассмотрения.
1. Серия L.
Архитектура МК разрабатывалась для портативных устройств.
На первом месте в списке достоинств находится низкое энергопотребление, составляющее 165 мкА/МГц в активном режиме, 600 нА и 9 нА при включенных и отключенных часах реального времени, на втором — производительность.
Для взаимодействия с пользователем в микросхеме встроен CAT-контроллер на 17 аппаратных каналов. Безопасное хранение программ во флэш-памяти обеспечивается технологией FlashVault.
- Семейство AT32UC3L с ёмкостью флэш-памяти 16-256 кб, 48 выводов. Встроенная поддержка технологии picoPower. Модуль безопасного доступа (SAU) обеспечивает повышенную безопасность и целостность программы и данных. Рабочая частота 50 МГц, интерфейсы SPI – 5, I
2C – 2, UART – 4. Встроенных АЦП до 8, выходов ШИМ до 35, напряжение выводов 1,62-3,6 В. Отладка по интерфейсам JTAG или aWire. - Семейство ATUC..L3U – ATUC..L4U. Низкое энергопотребление, благодаря технологии picoPower. Вcтроенный полноскоростной USB приёмопередатчик. Разнообразные интерфейсы: SPI – 1, I2C – 2, UART – 4, LIN – 4, SSC – 1. Имеются АЦП и ЦАП. До 6 встроенных плюс сторожевой таймер. Напряжение выводов 1,62-3,6 В. Отладка по интерфейсам JTAG или aWire.
Маркировка микросхем Atmel
2. Серия С.Основное назначение микроконтроллеров AT32UC3C – высокопроизводительные автомобильные системы.
Отдельно выделим микроконтроллеры AT32UC3C0512CAU c возможностью загрузки лицензированного ПО от Atmel для аудиосистем. Наличие интерфейса Ethernet, производительность и богатые коммуникационные возможности делают этот МК отличным решением для создания концентратора датчиков Интернета Вещей (IoT).
К ключевым особенностям устройства относятся:
- Разнообразные интерфейсы: SPI, I2C, UART, CAN, LIN, SSC, Ethernet.
- Рабочая частота 66 МГц.
- Встроенный модуль USB + OTG.
- Блок FPU для операций с плавающей запятой и технология безопасного хранения кода FlashVault.
- 12-разрядные быстродействующие ЦАП и АЦП, до 20 каналов ШИМ.
- Уровни напряжений выводов 3,0 – 5,5 В.
- Отладка по JTAG.
3. Серия D.
Микроконтроллеры ATUC..D3-ATUC..D4 для начинающих конструкторов. Просты в освоении, мощные и функциональные. В МК реализована технология SleepWalking, позволяющая подключенным устройствам выводить микроконтроллер из спящего режима.
Технические характеристики:
- Рабочая частота 48 МГц.
- Встроенный модуль USB.
- CAT-контроллер для устройств сенсорного ввода на 25 каналов.
- Интерфейсы: SPI, I2C, UART.
- 10-разрядные АЦП, до 7 каналов ШИМ.
- Уровни напряжений выводов 3,0, 3,6 В.
- 32-кГц часы реального времени, 3 таймера, сторожевой таймер.
- Отладка по JTAG и aWire.
4. Микроконтроллеры A0, A1, A3, A4
Ориентированы для применения в устройствах и системах, выполняющих операции по обработке больших массивов данных. Производитель наделил микроконтроллеры большой пропускной способностью и высокоскоростными портами, работающими в режиме USB как хоста или периферийного устройства.
Микроконтроллеры А0, А1 имеют встроенный интерфейс Ethernet, встроенную поддержка SD-карт памяти, высокую производительность.
5. Серия B.
Рабочая частота 60 МГц, вкупе с высокой пропускной способностью и производительностью, встроенным модулем USB с OTG и низким энергопотреблением делают микроконтроллеры незаменимыми при:
- конструировании устройств хранения данных с USB интерфейсом;
- портативных устройств;
- несложных промышленных систем управления.
С чего начать изучение FPGA Altera?
Семейство MegaAVR Atmel
Если кратко характеризовать всё многообразие этого семейства микросхем Atmel, то можно отметить, что это 8-битные микроконтроллеры, различие между которыми в следующих характеристиках:
- Объём флэш-памяти от 4 до 128 кб.
- Выводов от 20 до 100.
- Встроенный CAN-контроллер.
- Встроенный LIN-контроллер.
- Специальные функции для управления электродвигателями, LCD-дисплеями, USB-интерфейсами.
Быстродействие более 20 млн операций в секунду позволяет загружать и выполнять программы большого объёма. Специальные исполнения микросхем picoPower от Atmel позволяют конструировать микроконтроллеры с низким энергопотреблением, а внутрисхемная отладка и обновление программного кода в режиме исполнения, делают тестирование приложений простым, быстрым и удобным.
Рассмотрим наиболее интересные устройства семейства MEGA AVR
1. Микроконтроллеры со встроенным CAN-контроллером AT90CAN128, AT90CAN32, AT90CAN64.
Как видно из обозначения, различия в микросхемах в объёме флэш-памяти – 128, 32 и 64 кб, каждая имеет по 64 вывода.
Основные технические характеристики:
- Частота 16 МГц.
- Пинов ввода-вывода 53.
- Внешних прерываний до 8.
- Интерфейсы SPI – 1, I2C – 1, UART – 2, CAN – 1.
- 8 10-битных АЦП, ЦАП отсутствует.
- Напряжение выводов 2,7..5,5 В.
- Отладочный интерфейс JTAG.
- Температура эксплуатации -40..85 °С.
Наибольшее распространение протокол CAN имеет в автомобильной промышленности, в том числе, для критичных систем. По этой причине устройства идеально подходят для создания бортовых устройств автомобиля, сопряжённых с его электронными системами и датчиками.
Жизненный цикл импортных электронных компонентов
2. Для бортовых систем автомобиля, работающих с протоколами CAN и LIN предназначены микроконтроллеры ATMega16M1, ATMega32M1, ATMEga64M1. Микроконтроллеры имеют объём встроенной флэш-памяти 16..64 кб и 32 пина, повышенную производительность.
Краткие характеристики устройств:
- Частота 16 МГц.
- Пинов ввода-вывода 27.
- Внешних прерываний до 27.
- Интерфейсы SPI – 1, UART – 1, CAN – 1, LIN – 1.
- 11 10-битных АЦП, 1 10-битный ЦАП.
- ШИМ каналов до 10.
- Напряжение выводов 2,7..5,5 В.
- Отладочный интерфейс debugWIRE.
- Температура эксплуатации -40..85 °С.
3. Архитектура микросхем AT90PWM Lighting оптимизирована для управления электродвигателями и системами освещения за счёт наличия двух 12-битных высокоскоростных контроллеров и гибких таймеров с режимами сравнения.
Ёмкость флэш-памяти МК 8-16 кб, количество пинов 20-32.
Характеристики:
- Частота до 16 МГц.
- Интерфейсы UART, SPI.
- 8 10-битных АЦП, 1 10-битный ЦАП.
- До 7 выходов ШИМ.
- Отладочный интерфейс debugWIRE.
- Температура эксплуатации -40..105 °С.
4. Микроконтроллеры AT90USB отличает разнообразие встроенных интерфейсов: SPI – 2, I2C – 1, UART – 1.
Однако серия не зря названа USB. В МК встроен USB приёмопередатчик, работающий на полной скорости.
5. Достаточно большое подсемейство ATMega169, ATMega329 и ATMega649 с LCD-контроллером, имеющим встроенный регулятор контрастности.
Заявка на поставку импортных микросхем
Кроме этого, мы выполняем полный комплекс услуг по организации проверки и испытаниям электронных компонентов импортного производства, включая входной контроль, проверку на работоспособность, а также специальные проверки, механические и климатические испытания.
Если вы заинтересованы в работы с нами, то заполните форму по ссылке: www.el-ra.ru/zayavka
Микроконтроллеры Atmel — Вольтик.ру
Компания Atmel – лидер в области производства и разработки микроконтроллеров. Её микроконтроллеры используются во многих встраиваемых решениях, 8-битные контроллеры серии megaAVR с AVR архитектурой положили начало платформе Arduino, сделавшей программирование и использование микроконтроллеров простым как никогда ранее. Кроме AVR, компания производит микроконтроллеры на базе архитектур ARM и MCS-51.
Но микроконтроллеры AVR всё-таки являются самым популярным детищем Atmel благодаря хорошему сочетанию производительности, энергоэффективности и цены. Они хорошо оптимизированы для программирования на языке C либо собственном языке ассемблера. Первые 8-битные микроконтроллеры этой архитектуры были представлены в 1996 году, 32-битные AVR32 появились через 10 лет – в 2006 году.
AVR имеет гарвардскую архитектуру (данные программы и переменных хранятся в разных адресных пространствах) и систему команду RISC (сокращенный набор команд, увеличивающий быстродействие). Вычислительное ядро, память и остальная периферия находятся на одном кристалле, благодаря чему микроконтроллеры AVR представляют собой SoC (System on chip, система на кристалле).
Кроме флеш-памяти и ОЗУ в AVR микроконтроллерах имеется программируемая EEPROM память. Объём памяти программ – до 512 КБ, Рабочая частота 8-битных AVR контроллеров – до 32 МГц, 32-битных – до 66 МГц. Некоторые из них имеют нативную поддержку интерфейса USB. На сегодняшний день 8-битные AVR микроконтроллеры морально устарели, а семейство AVR32 не получило широкого распространения.
В последнее время компания Atmel перешла на разработку ARM микроконтроллеры вместо дорабатывания AVR. ARM микроконтроллеры Atmel являются представителями семейств Cortex-M0+, Cortex-M3, Cortex-M4, Cortex-M7. Такое многообразие МК на базе ARM удовлетворит почти любые запросы. Они имеют большие по сравнению с AVR объёмы памяти и тактовые частоты: до 2 МБ памяти программ и до 160 КБ SRAM. Эти микроконтроллеры имеют тактовую частоту до 120 МГц. Кроме того, они имеют нативную поддержку сенсорного ввода Atmel QTouch и интерфейса USB. У МК Atmel на базе ARM Cortex-M4 энергопотребление минимально возможное среди конкурентов, что позволяет создавать высокоавтономные устройства.
Микроконтроллеры обоих упомянутых выше семейств поддерживают последовательные интерфейсы передачи данных SPI, I2C и UART.
Также Atmel выпускает микроконтроллеры семейства MCS-51 на замену снятым с производства Intel 8051. Их производится более 50 видов. Объём флеш-памяти – до 64 КБ. Микроконтроллеры этого семейства (производства не только Atmel) более 30 лет работают в различных электронных устройствах – от светофоров и торговых автоматов до бортовых авиационных самописцев.
Микроконтроллеры AVR семейств Tiny и Mega фирмы ATMEL + CD. Электронное издание
В книге рассмотрены вопросы по практическому применению однокристальных микроконтроллеров AVR семейств Tiny и Mega фирмы ATMEL, архитектура, ее особенности.Приведены основные электрические параметры и временные характеристики. Подробно описано внутреннее устройство микроконтроллеров, системы команд, периферия, а также способы программирования с примерами реализации некоторых алгоритмов для конкретных цифровых устройств.
Книга предназначена для разработчиков радиоэлектронной аппаратуры, инженеров, студентов вузов и радиолюбителей.
В состав диска входят собственно сама книга, а также:
ПредисловиеЧасть 1.
Микроконтроллеры семейства Tiny
Глава 1. Знакомство с семейством Tiny
1.1. Общие сведения
1.2. Отличительные особенности
1.3. Характеристики процессора
1.4. Характеристики подсистемы ввода/вывода
1.5. Периферийные устройства
1.6. Архитектура ядра
1.7. Цоколевка и описание выводов
Глава 2. Архитектура микроконтроллеров семейства Tiny
2.1. Общие сведения
2.2. Организация памяти
2.2.1. Память программ
2.2.2. Память данных
2.2.3. Энергонезависимая память данных (EEPROM)
2.3. Счетчик команд и выполнение программы
2.3.1. Функционирование конвейера
2.3.2. Задержки в конвейере
2.3.3. Счетчик команд
2.3.4. Команды типа «проверка/пропуск» (Test & Skip)
2.3.5. Команды условного перехода
2.3.6. Команда безусловного перехода
2.3.7. Команда вызова подпрограмм
2.3.8. Команды возврата из подпрограмм
2.4. Стек
Глава 3. Устройство управления микроконтроллеров семейства Tiny
3.1. Общие сведения
3.2. Тактовый генератор
3.2.1. Кварцевый генератор
3.2.2. Внешний сигнал синхронизации
3.2.3. Встроенный генератор с внешней или внутренней RC-цепочкой
3.3. Режимы пониженного энергопотребления
3.3.1. Режим Idle
3.3.2. Режим Power Down
3.3.3. Режим ADC Noise Reduction
3.4. Сброс
3.4.1. Сброс по включению питания
3.4.2. Аппаратный сброс
3.4.3. Сброс от сторожевого таймера
3.4.4. Сброс при снижении напряжения питания
3.4.5. Управление схемой сброса
3.5. Прерывания
3.5.1. Таблица векторов прерываний
3.5.2. Обработка прерываний
3.5.3. Внешние прерывания. Регистры GIMSK и GIFR
3.5.4. Прерывания от таймеров. Регистры TIMSK и TIFR
3.5.5. Управление прерываниями в микроконтроллерах ATtiny28x. Регистры ICR и IFR
Глава 4. Порты ввода/вывода
4.1. Общие сведения
4.2. Обращение к портам ввода/вывода
4.3. Конфигурирование портов ввода/вывода
4.4. Аппаратный модулятор
Глава 5. Таймеры в микроконтроллерах семейства Tiny
5.1. Общие сведения
5.2. Назначение выводов таймеров/счетчиков
5.3. Таймер/счетчик T0
5.4. Таймер/счетчик T1
5.4.1. Выбор источника тактового сигнала
5.4.2. Режим таймера
5.4.3. Режим ШИМ
5.5. Сторожевой таймер
Глава 6. Аналоговый компаратор
6.1. Общие сведения
6.2. Функционирование компаратора
Глава 7. Аналого-цифровой преобразователь
7.1. Общие сведения
7.2. Функционирование модуля АЦП
7.3. Повышение точности преобразования
7.4. Параметры АЦП
Часть 2.
Микроконтроллеры семейства Mega
Глава 8. Знакомство с семейством Mega
8.1. Общие сведения
8.2. Отличительные особенности
8.3. Характеристики процессора
8.4. Характеристики подсистемы ввода/вывода
8.5. Периферийные устройства
8.6. Архитектура ядра
8.7. Цоколевка и описание выводов
Глава 9. Архитектура микроконтроллеров семейства Mega
9.1. Введение
9.2. Организация памяти
9.2.1. Память программ
9.2.2. Память данных
9.2.3. Энергонезависимая память данных (EEPROM)
9.3. Счетчик команд и выполнение программы
9.3.1. Счетчик команд
9.3.2. Функционирование конвейера
9.3.3. Команды типа «проверка/пропуск» (Test & Skip)
9.3.4. Команды условного перехода
9.3.5. Команды безусловного перехода
9.3.6. Команды вызова подпрограмм
9.3.7. Команды возврата из подпрограмм
9.4. Стек
Глава 10. Тактирование, режимы пониженного энергопотребления и сброс
10.1. Общие сведения 200
10.2. Тактовый генератор
10.2.1. Тактовый генератор с внешним резонатором
10.2.2. Низкочастотный кварцевый генератор
10.2.3. Внешний сигнал синхронизации
10.2.4. Внешняя RC-цепочка
10.2.5. Встроенный генератор с внутренней RC-цепочкой 206
10.2.6. Управление тактовой частотой
10.3. Режимы пониженного энергопотребления
10.4. Сброс
10.4.1. Сброс по включению питания
10.4.2. Аппаратный сброс
10.4.3. Сброс от сторожевого таймера
10.4.4. Сброс при снижении напряжения питания
10.4.5. Управление схемой сброса
Глава 11. Прерывания
11.1. Общие сведения
11.2. Таблица векторов прерываний
11.3. Обработка прерываний
11.4. Внешние прерывания
Глава 12. Порты ввода/вывода
12.1. Общие сведения
12.2. Регистры портов ввода/вывода
12.3. Конфигурирование портов ввода/вывода
Глава 13. Таймеры
13.1. Общие сведения
13.2. Назначение выводов таймеров/счетчиков
13.3. Прерывания от таймеров/счетчиков
13.4. Предделители таймеров/счетчиков
13.4.1. Управление предделителями
13.4.2. Использование внешнего тактового сигнала
13.5. Таймеры/счетчики T0 и T2
13.5.1. Управление тактовым сигналом
13.5.2. Режимы работы
13.5.3. Асинхронный режим
13.6. Таймеры/счетчики T3
13.6.1. Обращение к 16-разрядным регистрам
13.6.2. Управление тактовым сигналом
13.6.3. Режимы работы
13.7. Сторожевой таймер
Глава 14. Аналоговый компаратор
14.1. Введение
14.2. Функционирование компаратора
Глава 15. Аналого-цифровой преобразователь
15.1. Общие сведения
15.2. Функционирование модуля АЦП
15.3. Результат преобразования
15.4. Повышение точности преобразования
15.5. Параметры АЦП
Глава 16. Универсальный асинхронный (синхронный/асинхронный) приемопередатчик
16.1. Общие сведения
16.2. Использование модулей USART/UART
16.2.1. Скорость приема/передачи
16.2.2. Формат кадра
16.2.3. Передача данных
16.2.4. Прием данных
16.3. Мультипроцессорный режим работы
Глава 17. Последовательный периферийный интерфейс SPI
17.1. Введение
17.2. Функционирование модуля SPI
17.3. Режимы передачи данных
17.4. Использование вывода SS
Глава 18. Последовательный двухпроводный интерфейс
18.1. Общие сведения
18.2. Принципы обмена данными по шине TWI
18.3. Обзор модуля TWI
18.4. Взаимодействие прикладной программы с модулем TWI
18.5. Режимы работы модуля TWI
18.5.1. Режим «Ведущий передатчик»
18.5.2. Режим «Ведущий приемник»
18.5.3. Режим «Ведомый приемник»
18.5.4. Режим «Ведомый передатчик»
18.5.5. Комбинирование различных режимов
18.5.6. Арбитраж
18.6. Параметры интерфейса TWI
Часть 3.
Команды микроконтроллеров семейств Tiny и Mega
Глава 19. Общие сведения о системе команд
19.1. Введение в систему команд
19.2. Операнды
19.3. Типы команд
19.3.1. Команды логических операций
19.3.2. Команды арифметических операций и команды сдвига
19.3.3. Команды операций с битами
19.3.4. Команды пересылки данных
19.3.5. Команды передачи управления
19.3.6. Команды управления системой
19.4. Сводные таблицы команд
Глава 20. Описание команд
Часть 4.
Программирование микроконтроллеров семейств Tiny и Mega
Глава 21. Введение в программирование микроконтроллеров AVR
21.1. Общие сведения
21.2. Защита кода и данных
21.3. Конфигурационные ячейки
21.4. Идентификатор
21.5. Калибровочная ячейка
21.6. Организация памяти программ и данных микроконтроллеров семейства Mega
Глава 22. Последовательное программирование при высоком напряжении
22.1. Общие сведения
22.2. Управление процессом программировани
Глава 23. Программирование по последовательному каналу
23.1. Общие сведения
23.2. Переключение в режим программирования
23.3. Управлением процессом программирования FLASH-памяти
23.4. Управление процессом программирования EEPROM-памяти
Глава 24. Параллельное программирование
24.1. Общие сведения
24.2. Переключение в режим параллельного программирования
24.3. Стирание кристалла
24.4. Программирование FLASH-памяти
24.5. Программирование EEPROM-памяти
24.6. Конфигурирование микроконтроллеров
24.6.1. Программирование конфигурационных ячеек
24.6.2. Программирование ячеек защиты
24.6.3. Чтение конфигурационных ячеек и ячеек защиты
24.6.4. Чтение ячеек идентификатора и калибровочной константы
Глава 25. Программирование по интерфейсу JTAG
25.1. Общие сведения
25.2. Использование интерфейса JTAG для программирования кристалла. Команды JTAG
25.2.1. AVR RESET (код команды $0C)
25.2.2. PROG ENABIE (код команды $04)
25.2.3. PROG COMMANDS (код команды $05)
25.2.4. PROG PAGEIOAD (код команды $06)
25.2.5. PROG PAGEREAD (код команды $07)
25.2.6. Алгоритм программирования
Глава 26. Самопрограммирование микроконтроллеров семейства Mega
26.1. Общие сведения
26.2. Области RWW и NRWW
26.3. Функционирование загрузчика
26.3.1. Управление процессом самопрограммирования
26.3.2. Изменение памяти программ
26.3.3. Изменение ячеек защиты загрузчика
26.3.4. Чтение конфигурационных ячеек и ячеек защиты
26.3.5. Пример реализации программы-загрузчика
Приложение 1. Сводная таблица микроконтроллеров AVR семейства Tiny
Приложение 2. Сводная таблица микроконтроллеров AVR семейства Mega
Приложение 3. Чертежи корпусов микроконтроллеров AVR
семейств Tiny и Mega
Приложение 4. Электрические параметры микроконтроллеров AVR
семейств Tiny и Mega
Предметный указатель
Название: Микроконтроллеры AVR семейств Tiny и Mega фирмы ATMEL + CD
Автор: Евстифеев А. В.
Страниц: 558
Формат: Смешанный (pdf+exe)
Размер: 223,9 мб
Качество: Отличное
Язык: Русский
Год издания: 2008
Скачать книгу Микроконтроллеры AVR семейств Tiny и Mega фирмы ATMEL
Почему бы я не рекомендовал Atmel или о непонимании успеха Arduino / Хабр
Хочу немного поделиться негативным опытом использования микроконтроллеров Atmel в промышленной разработке.Atmel как целевую платформу выбрал заказчик, хотя мы его и отговаривали (еще даже не зная, что нам предстоит — интуиция, что ли?). Ну что же, «заказчик всегда прав».
В продукте было два контроллера — 32-битный UC3A3 и 8-битный ATMega164. В качестве дебаггера выбрали AVR One!, в качестве среды разработки — AVR Studio 5.0 (последняя версия на момент старта).
И началось!
У двух из трех купленных AVR One! в течении первого же месяца отвалились JTAG-коннекторы. У одного из них пропадал контакт питания. Каждый дебаггер, к слову, стоит около 600 евро!
При первом подключении дебаггера к компу с установленной AVR Studio 5.0 последняя захотела обновить ему прошивку. И не просто захотела, а отказывалась работать без этого. Процедура обновления прошивки благополучно зациклилась в «обновление — ожидание готовности устройства — обновление завершено неуспешно — обновление…», произвести ее удалось только после долгих танцев с бубнами.
На начальной стадии работа ведется на Evaluation платах. Были такие и у Атмела. Вот только на «готовых» эвалкитах к большинству пинов процессора банально не было доступа! А универсальный пакет STK600, позволяющий «воткнуть» в него практически любой контроллер при помощи переходника (решение реально супер, если бы не одно но), имел маленький недостаток — его схема была недоступна ни в открытом доступе, ни за деньги! Блин, вот реально — тулкит, предназначенный для экспериментов с платформой, поставлялся без схемы! И схема его охранялась очень и очень тщательно, судя по многочисленным веткам на AVR freaks. Поскольку мы не могли представить себе, как же можно работать без наличия схемы, мы разумно отказались от покупки этого тулкита (который ни разу не дешевый, к слову!).
Еще веселее стало, когда приступили собственно к написанию и отладке кода.
Самым веселым оказалось то, что пошаговая отладка оказалась в принципе невозможной. Дело в том, что поставив где-нибудь в коде брейкпоинт, дождавшись остановки программы в этом месте и выполнив «шаг вперед», ты оказывался… в обработчике прерывания! (Естественно, в прерывании при этом никаких брейкпоинтов не было!). А поскольку прерывания в системе были всегда (таймеры и т.п.), процесс отладки выглядел следующим образом: приходилось ставить следующий брейкпоинт на следующей строке и нажимать Run вместо Step Over. Особенно весело это было, когда надо было отследить if или switch. Или же выполнить Step Into, а не Step Over…
Вторым радостным моментом оказалось то, что когда ты останавливался в прерывании, ты не видел стека вызовов. Особенно радовало, когда этим прерыванием было исключение процессора. На предыдущем проекте на контроллере от Freescale в аналогичной ситуации ты отлично видел весь стек вызовов — в каком месте произошло исключение процессора и что к нему привело. Здесь же все, что ты видел — это то, что исключение произошло. А где и почему — оставалось только догадываться.
Третьим радостным моментом оказалось, например, вот что: код
int a[4];
a[0] = 1;
a[1] = 2;
a[2] = 3;
a[3] = 4;
категорически отказывался работать на ATMega! Элемент a[1] после этого кода оставался равным 0!
И особенно порадовал ответ техподдержки Atmel «Да, данный процессор имеет указанную проблему, попробуйте заменить его на другой!». Ага, а ничего, что уже как бы плата с ним произведена? Следующим ответом техподдержки было «Попробуйте заменить в AVR Studio родной AVR toolchain на open source WinAVR. Это, как ни странно, помогло, массив стал инициализироваться как надо. Правда, заголовочные файлы этого toolchain представляли из себя местами кашу, и часть заголовков пришлось брать от „родного“…
Плюс вся система работала крайне нестабильно. Дебаггер мог просто перестать видеть контроллер. Студия могла перестать видеть дебаггер. Или перестать запускать код на выполнение.
К счастью, на AVR freaks часть проблем была описана и решения найдены. Например, вместо 600-евровых AVR One! были куплены 50-евровые AVR Dragon, работающие гораздо стабильнее — с ними разработка стала в принципе возможной. (Из серии „Зачем, блин, платить больше?“).
И пришлось перейти с AVR Studio 5.0 на более старую AVRStudio32, поскольку первая была настолько глючно-сырой, что работать в ней было невозможно. Интерфейс, конечно, у пятой студии был удобным, ничего не скажешь, но когда удобная в использовании среда банально не работает — удобство оказывается бессмысленным, увы.
AVRStudio32 c точки зрения интерфейса оказалась очень специфической штукой. То ли Eclipse-based сыграло свою роль, то ли Atmel внес свою лепту… Приведу лишь один пример.
Нам понадобилось изменить точку запуска, которая по умолчанию выставлена в среде разработки на начало flash контроллера. В AVRStudio32 за это отвечает так называемая „конфигурация запуска“ (найти которую, кстати, отнюдь не очевидная задача). Так мало того, что параметры конфигурации запуска не сохраняются в проекте (а это означает, что изменения должен был вносить каждый разработчик „ручками“ и их нельзя было коммитить в репозиторий), так кроме этого студия могла в какой-то из моментов по своему желанию создать новую конфигурацию, с параметрами по умолчанию, сделав ее текущей. Нет, когда это все уже знаешь, то исправить это не вопрос. Но вот когда не знаешь, а выглядит все так, что после очередного изменения вдруг все перестало работать, то становится очень даже невесело…
То, что примерно за год разработки дебаггеры банально три или четыра раза выходили из строя, уже было просто досадной мелочью.
Еще одной такой досадной мелочью был прикол с тем, что Atmel называет Fuses — специальные биты, управляющие поведением микроконтроллера, доступные при помощи специальных команд. Неосторожное движение или ошибка — и процессор оказывался непригодным к дальнейшему использованию без очень сложных телодвижений. Можно было, например, переключить его с использования внутренней тактовой частоты на внешнюю. Поскольку внешней, конечно же, в наличии не было, процессор переставал работать. Вернуть этот бит без подачи внешней синхронизации было невозможно в принципе. А еще можно было, например, „выключить“ JTAG — после чего к контроллеру невозможно было подключиться дебаггером.
Вполне естественно, что во время разработки возникают ошибки. Но когда такая ошибка приводит к остановке процесса на непонятно сколько времени — мягко говоря, совсем невесело.
Одна из последних проблем оказалась не менее веселой — по какой-то из причин микроконтроллеры один за одним переставали работать, и дебаггеры тоже переставали их видеть. Времени на анализ было потрачено прилично, оказалось же вот что.
Немного доп. информации: каждый контроллер от Atmel имеет так называемый Device Code, однозначно идентифицирующий семейство. Есть спец. команда, чтобы этот код прочитать. Дебаггер и студия как раз его и используют для идентификации того, что подключено. По идее, значение это read only, и нигде в спецификации не указано обратное. Оказалось, что это не так.
Цитата из Errata:
Signature may be Erased in Serial Programming Mode
If the signature bytes are read before a chiperase command is completed, the signature may be erased causing the device ID and calibration bytes to disappear. This is critical, especially, if the part is running on internal RC oscillator.
Особенно же впечатлило решение проблемы:
Problem Fix / Workaround:
Ensure that the chiperase command has exceeded before applying the next command.
То есть, если Device ID уже оказался стертым, записать его назад возможности не предоставляется. Хуже всего то, что вместе с ним стирается еще и калибровка внутренней частоты, которая также невосстановима, насколько я понял из доступной информации.
Должен сказать, что после команды Chip Erase в коде стояла задержка в два раза больше, чем того требовала спецификация. Однако Device ID волшебным образом стирался по непонятной причине…
Что же, негативный опыт — тоже опыт. Вряд ли я по доброй воле выберу теперь Atmel для чего-либо.
А что касается Arduino — понятно, конечно, что те, кто решает с ней поиграться, с большинством проблем банально не столкнутся, но — после всего описанного выше я все же не понимаю столь высокой ее популярности.
И кстати, выбор заказчиком платформы, похоже, как раз и был обусловлен популярностью Ардуино…
UPD: Вот, кстати, из последних глюков: на ATMega164 есть три группы фьюзов: fuse, fuse_high, fuse_ext. Так вот, по неизвестной причине изменить fuse_high не получается. При этом изменить fuse — получается, и что самое интересное — после любого изменения fuse (даже ничего не значащего, например, включение-выключение вывода тактовой частоты наружу на пин, который висит в воздухе) начинает работать и изменение fuse_ext.
AVR микроконтроллеры: популярное семейство
Семейство AVR – включает в себя 8 битные микроконтроллеры для широкого спектра задач.
AVR проекты
Для сложных проектов с большим количеством входов/выходов вам предоставлены микроконтроллеры AVR семейства Mega и AVR xmega, которые выпускаются в корпусах от 44 до 100 выводов и имеют до 1024 кб Flash памяти, а скорость их работы – до 32 миллионов операций в секунду.
Практически все модели имеют возможность генерировать ШИМ, встроенный АЦП и ЦАП.

Миллионы радиолюбителей разрабатывают интересные проекты на AVR – это самое популярное семейство МК, о них написано очень много книг на русском и других языках мира.
Интересно. Для прошивки нужен программатор, один из самых распространённых – это AVRISP MKII, который вы легко можете сделать из своей Arduino.
Популярность семейства АВР поддерживается на высоком уровне уже много лет, в последние 10 лет интерес к ним подогревает проект Arduino – плата для простого входа в мир цифровой электроники.
Сферы применения различных Tiny, Mega
Четко описать сферу применения микроконтроллера нельзя, ведь она безгранична, однако можно классифицировать следующим образом:
- Tiny AVR – самые простые в техническом плане. В них мало памяти и выводов для подключения сигналов, цена соответствующая. Однако это идеальное решение для простейших проектов, начиная от автоматики управления осветительными приборами салона автомобиля, до осциллографических пробников для ремонта электроники своими руками. Они также используются в Arduino-совместимом проекте – Digispark. Это самая маленькая версия ардуины от стороннего производителя; выполнена в формате USB-флешки.
- Семейство MEGA долго оставалось основным у продвинутых радиолюбителей, они мощнее и имеют больший, чем в Tiny, объём памяти и количество выводов. Это позволяет реализовывать сложные проекты, однако семейство очень широко для краткого описания. Именно они использовались в первых платах Arduino, актуальные платы оснащены, в основном, ATMEGA
Выход любого МК без дополнительных усилителей потянет светодиоды или светодиодную матрицу в качестве индикаторов, например.
AVR xMega или старшие микроконтроллеры
Разработчики Atmel создали AVR xMega, как более мощный МК, при этом принадлежащий к семейству AVR. Это было нужно для того, чтобы облегчить труд разработчика при переходе к более мощному семейству.
В AVR xMega есть два направления:
- МК с напряжением питания 1.8-2.7 вольта, работают с частотой до 12 мГц, их входа устойчивы к величине напряжения в 3.3 В;
- МК с напряжением питания 2.7-3.6 вольта уже могут работать на более высоких частотах – до 32 мГц, а вход устойчив к 5 вольтам.
Также стоит отметить: AVR xMega отлично работают в автономных системах, потому что имеют низкое энергопотребление. Для примера: при работающих таймерах и часах реального времени RTC потребляют 2 мА тока, и готовы к работе от прерывания внешнего или по переполнению таймера, а также по времени. Для выполнения целого ряда функций применяется множество 16 разрядных таймеров.
Работа с USB портом
Начнем с того, что для программирования микроконтроллера нужно использовать последовательный порт, однако на современных компьютерах COM порт часто отсутствует. Как подключить микроконтроллер к такому компьютеру? Если использовать преобразователи USB-UART, эта проблема решается очень легко. Простейший преобразователь вы можете собрать на микросхемах FT232 и Ch440, а его схема представлена ниже.

Такой преобразователь размещен на платах Arduino UNO и Aduino Nano.
Некоторые микроконтроллеры AVR имеют встроенный (аппаратный) USB:
- ATmega8U2;
- ATmega16U2;
- ATmega32U2.
Такое решение нашло применение для реализации связи компьютера и Arduino mega2560 по USB, в которой микроконтроллер «понимает» только UART.
Назначение ЦАП и АЦП микроконтроллеров AVR
Цифроаналоговыми преобразователями (ЦАП) называют устройства, преобразующие сигнал единиц и нолей (цифровой) в аналоговый (плавно изменяющийся). Главные характеристики – разрядность и частота дискретизации. В АЦП преобразуется аналоговый сигнал в цифровой вид.
Порты с поддержкой АЦП нужны для того, чтобы подключить к микроконтроллеру аналоговые датчики, например, резистивного типа.
ЦАП нашёл своё применение в цифровых фильтрах, где входной сигнал проходит программную обработку и вывод через ЦАП в аналоговом виде, ниже вы видите наглядные осциллограммы. Нижний график – входной сигнал, средний – этот же сигнал, но обработанный аналоговым фильтром, а верхний – цифровой фильтр на микроконтроллере Tiny45. Фильтр нужен для формирования нужного диапазона частот сигнала, а также для формирования сигнала определенной формы.

Пример использования АЦП – это осциллограф на микроконтроллере. К сожалению, частоты мобильных операторов и процессора ПК отследить не удастся, а вот частоты порядка 1 мГц – легко. Он станет отличным помощником при работе с импульсными блоками питания.

А здесь расположено подробное видео этого проекта, инструкции по сборке и советы от автора:
Какую литературу читать о микроконтроллерах AVR для начинающих?
Для обучения молодых специалистов написаны горы литературы, давайте рассмотрим некоторые из них:
- Евстифеев А.В. «Микроконтроллеры AVR семейства Mega». В книге подробно рассмотрена архитектура микроконтроллера. Описано назначение всех регистров и таймеров, а также их режимы работы. Изучена работа интерфейсов связи с внешним миром SPI и т. д. Система команд раскрыта для понимания радиолюбителю среднего уровня. Материал книги «Микроконтроллеры avr семейства mega: руководство пользователя» поможет изучить структуру чипа и назначение каждого из его узлов, что, безусловно, важно для любого программиста микроконтроллеров.
- Белов А.В. – «Микроконтроллеры AVR в радиолюбительской практике». Как видно из названия, эта книга, в большей степени, посвящена практической стороне работы с микроконтроллерами. Подробно рассмотрен ставший классическим микроконтроллер ATiny2313, а также многие схемы для сборки.
- Хартов В.Я. «Микроконтроллеры AVR. Практикум для начинающих». Поможет разобраться в AVR studio 4, а также стартовом наборе STK Вы научитесь работать с последовательными и параллельными интерфейсами, такими как UART, I2C и SPI. Книга «Микроконтроллеры AVR. Практикум для начинающих» написана преподавателем МГТУ им. Н.Э.Баумана и используется там для изучения этой темы.
Изучение этого семейства микроконтроллеров помогло начать работать и разрабатывать проекты многим любителям электроники. Стоит начинать именно с популярного семейства, чтобы всегда иметь доступ к морю информации.
Среди радиолюбителей начального уровня есть только один конкурент AVR – PIC микроконтроллеры.
Современные микроконтроллеры STM, ATMEL AVR, PIC (520 книг) + исходники

Подборка книг по микроконтроллерам на русском и английском языках во многих случаях с исходниками, упорядоченная по темам :
Arduino, Микроконтроллеры STM, Микроконтроллеры PIC, Микроконтроллеры AVR, Raspberry Pi
Микроконтроллеры — Список книг:
Arduino:
Arduino датчики и сети для связи устройств 2-е изд 2015.pdf
Bionik arduino na russkom.zip
Eвстифеев А.В. микроконтроллеры avr семейства mega.djvu
Kulakov.V.rar
Банци Arduino для начинающих волшебников 2012.pdf
Белов А. В. Разработка устройств на микроконтроллерах AVR 2013 CD.7z
Белов А. В. Разработка устройств на микроконтроллерах AVR 2013.djvu
Белов А.В. Самоучитель по микропроцессорной технике 2008.djvu
Блокнот программиста Arduino v1-1.pdf
Блум Изучаем Arduino — инструменты и методы технического волшебства 2015 CD code.rar
Блум Изучаем Arduino — инструменты и методы технического волшебства 2015 .djvu
Блум Изучаем Arduino — инструменты и методы технического волшебства 2015.pdf
Быстрый старт. Первые шаги по освоению Arduino. МаксКит. 2015 [PDF].pdf
В.Н. Гололобов С чего начинаются роботы. О проекте Arduino для школьников 2011.pdf
Евстифеев А.В. Микроконтроллеры AVR семейства Mega 2006.pdf
Карвинен Т., Карвинен К., Валтокари В. — Делаем сенсоры — 2015.djvu
Петин Arduino и Raspberry Pi в проектах Internet of Things 2016.djvu
Петин Arduino и Raspberry Pi в проектах Internet of Things 2016 СВ.ZIP
Петин В.А. — Проекты с использованием контроллера Arduino CD.7z
Петин В.А. — Проекты с использованием контроллера Arduino (Электроника) 2014.pdf
Петин В.А. — Проекты с использованием контроллера Arduino (Электроника) 2-е издание 2015.pdf
Программирование микроконтроллерных плат Arduino Freeduino 2012 CD.7z
Программирование микроконтроллерных плат Arduino Freeduino 2012 CD.ISO.7z
Программирование микроконтроллерных плат Arduino Freeduino 2012.djvu
Ревич Практическое программирование микроконтроллеров Atmel AVR на языке ассемблера.pdf
Шонфелдер Измерительные устройства на базе микропроцессора Atmega. 2012.djvu
Arduino Eng:
Adith Jagadish Boloor — Arduino by Example — 2015 CD.7z
Adith Jagadish Boloor — Arduino by Example — 2015.pdf
Arduino and Kinect Projects.pdf
Arduino Android Blueprints.pdf
Arduino Building exciting LED based projects and espionage devices Code.zip
Arduino Building exciting LED based projects and espionage devices.pdf
Arduino Cookbook 2nd Edition 2012 CD.zip
Arduino Cookbook 2nd Edition 2012.pdf
Arduino Development Cookbook.pdf
Arduino Development Cookbook.pdf
Arduino Essentials.pdf
Arduino for Beginners. Essential Skills Every Maker Needs Code.zip
Arduino for Beginners. Essential Skills Every Maker Needs.pdf
Arduino for Ham Radio 2014.pdf
Arduino for Secret Agents.pdf
Arduino — J. M. Hughes.pdf
Arduino Meets Linux. The Users Guide to Arduino Yun Development.pdf
Arduino — Physical Computing fur Bastler, Designer und Geeks.pdf
Arduino Praxiseinstieg.pdf
Arduino Projects for Amateur Radio 2015.pdf
Arduino Projects for Amateur Radio.pdf
Arduino Robotic Projects.pdf
Arduino Robotic Projects.zip
Arduino sketches. Tools and techniques for programming wizardry.pdf
Arduino Zero Projects Book.pdf
Beginning C for Arduino 2nd Edition.pdf
Boxall J — Arduino Workshop — 2013.pdf
[BW] Practical Arduino Cool Projects for Open Source Hardware.pdf
Connecting Arduino. Programming And Networking With The Ethernet Shield code.rar
Connecting Arduino. Programming And Networking With The Ethernet Shield.pdf
C Programming for Arduino.pdf
Getting Started with Adafruit FLORA. Making Wearables with an Arduino-Compatible Electronics Platform.pdf
Ham Radio for Arduino and Picaxe 2013.pdf
Home Automation with Arduino. Automate your Home using Open-Source Hardware cd.rar
Home Automation with Arduino. Automate your Home using Open-Source Hardware.pdf
Joe-Pardue.-C-Programming-for-Microcontrollers-from-NETBUK.pdf
Junk Box Arduino. Ten Projects in Upcycled Electronics.pdf
Maik Schmidt — Arduino. A Quick Start Guide- 2011.pdf
Maik Schmidt — Arduino A Quick-Start Guide, 2nd Edition (The Pragmatic Programmers) — 2015.pdf
Maik Schmidt — Arduino A Quick-Start Guide 2nd Edition The Pragmatic Programmers — 2015.pdf
Make. Basic Arduino Projects. 26 Experiments with Microcontrollers and Electronics.pdf
Make. Bluetooth. Bluetooth LE Projects with Arduino, Raspberry Pi, and Smartphones.pdf
practical-arduino.pdf
Programming Arduino Freeduino-Willi Somer 2012.ISO
Programming Arduino with LabVIEW.pdf
Purdum J — Beginning C for Arduino Technology in Action — 2012.pdf
The TAB Book of Arduino Projects. 36 Things to Make with Shields and Proto Shields.pdf
Микроконтроллеры STM:
stm32 book ru.pdf
STM32F10 DOC RU.pdf
STM32. Програмування STM32F103 CD.7z
STM32. Програмування STM32F103.html
Андронников И. STM32F4 это же просто.pdf
Бугаев В.И. Лаб практикум по микроконтроллам STM32 на базе STM32F3 Discovery 1.pdf
Бугаев В.И. Лаб практикум по микроконтроллам STM32 на базе STM32F3 Discovery 2.pdf
Изучаем STM32. Четыре Урока .pdf
Как запустить STM32CubeMX в ОС Linux.html
Мартин м. Инсайдерское руководство по STM32 Cortex-M3.pdf
Мартин м. Инсайдерское руководство по STM32.pdf
Матюшов Начало работы с контроллерами STM8 2016.djvu
Микроконтроллеры STM8 Лекция STM32.pdf
Микроконтроллеры STM8 с нуля.pdf
Микроконтроллеры STM для чайников 2013 08 45.pdf
Микропроцессорная техника. Введение в Cortex-M3.pdf
Новости электроники N 11 2014 Cortex M.pdf
Программирование микроконтроллеров ST7. Учебное пособие 2007.pdf
Торгаев МИКРОКОНТРОЛЛЕРЫ STM8S 2014.pdf
Ядро Cortex — МЗ компании ARM. Полное руководство.djvu
Микроконтроллеры STM ENG:
ARMCortexM3Guide.pdf
ARM® Cortex® M4 Cookbook — Dr. Mark Fisher.mobi
audioDSP.zip
Cortex M3.pdf
Donald Reay-Digital signal processing using the ARM Cortex-M4-Wiley (2015).pdf
en.CD00267113.pdf
en.DM00105823.pdf
Fisher M.ARM Cortex M4 cookbook.2016.pdf
geoffrey brown Discovering the STM32 microcontr.pdf
Hitex STM32 Insider Guide.pdf
InsideCORTEX-STM32 2008.pdf
Joseph Yiu (Auth.)-The Definitive Guide to Arm® Cortex®-M3 and Cortex®-M4 Processors-Newnes (2014).pdf
mastering-stm32 CD.7z
mastering-stm32-sample 114.pdf
mastering-stm32-sample 119p 2016.10.pdf
STM32F4-Discovery Projects.pdf
Trevor Martin (Auth.) The Designer’s Guide to the Cortex-m P.pdf
Trevor Martin dial The Insiders Guide to the STM32 ARM based Microcontroller Hitex.pdf
Yiu J. — The Definitive Guide to ARM Cortex-M0 and Cortex-M0+ Processors, 2nd Edition — 2015.pdf
Микроконтроллеры AVR:
А. В. Кравченко — 10 практических устройств на AVR-микроконтроллерах. Книга 1 (from NETBUK).djvu
Баранов В.Н Применение микроконтроллеров AVR. Схемы, алгоритмы, программы 2004.djvu
Белов А.В. Конструирование устройств на микроконтроллерах 2005.djvu
Белов А.В. Микроконтроллеры AVR в радиолюбительской практике 2007 CD.zip
Белов А.В. Микроконтроллеры AVR в радиолюбительской практике 2007.djv
Белов А.В. Микроконтроллеры AVR. От азов программирования до создания практических устройств (2016) disk mk AVR.zip
Белов А.В. Микроконтроллеры AVR. От азов программирования до создания практических устройств 2016.djvu
Белов А.В. Микроконтроллеры AVR. От азов программирования до создания практических устройств (2016) .PDF
Белов А.В. Создаем устройства на микроконтроллерах. 2007.djvu
Белов Микроконтроллеры AVR в радиолюбительской практике 2007.djvu
Вальпа О.Д. Полезные схемы с применением МК и ПЛИС 2006 CD.7z
Вальпа О.Д. Полезные схемы с применением МК и ПЛИС 2006.djvu
Встраиваемые микроконтроллеры AVR-8. Учебное пособие.pdf
Гадре Д — Занимательные проекты на базе микроконтроллеров tinyAVR — (Электроника) — 2012 CD — Project Codes.7z
Гадре Д — Занимательные проекты на базе микроконтроллеров tinyAVR — (Электроника) — 2012.djvu
Голубцов М.С. AVR — от простого к сложному (2003).djvu
Евстифеев А.В. Микроконтроллеры AVR семейств Tiny и Mega фирмы ATMEL 2008 CD Files.7z
Евстифеев А.В. Микроконтроллеры AVR семейств Tiny и Mega фирмы ATMEL 2008.pdf
Евстифеев А.В. Микроконтроллеры AVR семейства Mega 2007.djvu
Измерительные устройства на базе микропроцессора ATmega 2012.7z
Измерительные устройства на базе микропроцессора ATmega 2012.pdf
Кравченко А.В. — 10 практических устройств на AVR-микроконтроллерах CD — Книга 1.7z
Кравченко А.В. — 10 практических устройств на AVR-микроконтроллерах CD — Книга 2.7z
Кравченко А.В. — 10 практических устройств на AVR-микроконтроллерах CD — Книга 3.7z
Кравченко А.В. — 10 практических устройств на AVR-микроконтроллерах Книга 1 2008.djvu
Кравченко А.В. — 10 практических устройств на AVR-микроконтроллерах Книга 2 2009.djvu
Кравченко А.В. — 10 практических устройств на AVR-микроконтроллерах Книга 3 2011.djvu
Микроконтроллеры ARM7 семейства LPC2000. Руководство пользователя (П.П. Редькин, 2007).djvu
Микроконтроллеры ARM семейств LPC 2300-2400. Вводный курс разработчика (Т. Мартин, 2010).djvu
Микроконтроллеры AVR. Вводный курс.(Мортон Д.).djvu
Микроконтроллеры AVR практикум для начинающих.djvu
Михаэль Хофманн Микроконтроллеры для начинающих 2014 CD.iso
Михаэль Хофманн Микроконтроллеры для начинающих 2014 CD.rar
Михаэль Хофманн Микроконтроллеры для начинающих 2014.djvu
Практическое программирование микроконтроллеров Atmel AVR на языке ассемблера 2 издание 2011.djvu
Практическое программирование микроконтроллеров Atmel AVR на языке ассемблера, 3-е издание .djvu
Практическое программирование МК Atmel AVR языке ассемблера Ю.Ревич 2014-600M.djvu
Применение микроконтроллеров AVR. Схемы, алгоритмы, программы (Баранов В.Н.).djvu
Программирование микроконтроллеров AVR (ATMEL). Учебное пособие.pdf
Ревич Практическое программирование микроконтроллеров Atmel AVR на языке ассемблера 2008.djvu
Ревич Ю.В. — Практическое программирование микроконтроллеров Atmel AVR на языке ассемблера 2-е изд — 2011.djvu
Редькин П. Микроконтроллеры Atmel архитектуры AVR32 семейства AT32UC3 2010.djvu
Редькин П.П. 32 16-битные микроконтроллеры ARM7 2010.djvu
Редькин П.П. 32 и 16 битные микроконтроллеры ARM7 семейства AT91SAM7 фирмы Atmel 2008 CD.7z
Редькин П.П. 32 и 16 битные микроконтроллеры ARM7 семейства AT91SAM7 фирмы Atmel 2008.djvu
Рюмик С. М. 1000 и одна микронтроллерная схема. Выпуск 1 2010.djvu
Рюмик С. М. 1000 и одна микронтроллерная схема. Выпуск 1 2010 source.7z
Рюмик С. М. 1000 и одна микронтроллерная схема. Выпуск 2. 2011. .djvu
Рюмик С. М. 1000 и одна микронтроллерная схема. Выпуск 2. 2011. source.7z
Рюмик С.М. — Микроконтроллеры AVR. 10 ступеней (2005)(2 Mb)(djvu).djvu
Трамперт AVR-RISC микроконтроллеры 2006.djvu
Трамперт В. — Измерение, управление и регулирование с помощью AVR-микроконтроллеров — 2006 CD.7z
Трамперт В. — Измерение, управление и регулирование с помощью AVR-микроконтроллеров — 2006.djvu
Хартов В.Я. Микроконтроллеры AVR. Практикум для начинающих. 2007.djvu
Хартов В.Я. Микроконтроллеры AVR. Практикум для начинающих. 2-е издание 2012 CD.zip
Хартов В.Я. Микроконтроллеры AVR. Практикум для начинающих. 2-е издание 2012.djvu
Ю. А. Шпак — Программирование на языке C для AVR и PIC микроконтроллеров 2006.djvu
Ю. А. Шпак — Программирование на языке C для AVR и PIC микроконтроллеров 2-e издание 2011-CD.7z
Ю. А. Шпак — Программирование на языке C для AVR и PIC микроконтроллеров 2-e издание 2011.pdf
Микроконтроллеры AVR 2000 2008:
avr123.nm.ru.rar
AVR-RISC микроконтроллеры (В. Трамперт, 2006).pdf
AVR-RISC микроконтроллеры (В. Трамперт, 2006).rar
AVR-RISC микроконтроллеры (Трамперт)(2006).pdf
AVR-от простого к сложному (М.С. Голубцов, 2003).djvu
AVR-от простого к сложному (М.С. Голубцов, 2003).rar
Измерение управление и регулирование с помощью AVR.(2006)(Трамперт).djvu
Измерение, управление и регулирование с помощью AVR микроконтроллеров (В. Трамперт, 2006).djvu
Измерение, управление и регулирование с помощью AVR микроконтроллеров (В. Трамперт, 2006).rar
Конструирование устройств на микроконтроллерах.(Белов)(2005).djvu
Лебедев М.Б. CodeVisionAVR. Пособие для начинающих 2008.djvu
Лебедев М.Б. CodeVisionAVR. Пособие для начинающих 2008.rar
Методичка по многотерминальному лабораторному комплексу (изучение AVR, ассемблер).djvu
Микроконтроллеры AVR. Вводный курс (Д. Мортон, 2006).djvu
Микроконтроллеры AVR в радиолюбительской практике (А.В. Белов, 2007).djvu
Микроконтроллеры AVR в радиолюбительской практике (А.В. Белов, 2007).zip
Микроконтроллеры AVR — от простого к сложному.(2003)(Голубцов).djvu
Микроконтроллеры AVR. Практикум для начинающих (В.Я. Хартов, 2007).djvu
Микроконтроллеры AVR семейств Tiny и Mega фирмы ATMEL.(2004)(Евстифеев).djvu
Микроконтроллеры AVR семейств Tiny и Mega фирмы Atmel (А.В. Евстифеев, 2004).djvu
Микроконтроллеры AVR семейства Classic фирмы Atmel (А.В. Евстифеев, 2002).djvu
Микроконтроллеры AVR семейства Classic фирмы Atmel (А.В. Евстифеев, 2006).pdf
Микроконтроллеры AVR семейства Mega. Руководство пользователя (А.В. Евстифеев, 2007).djvu
Микроконтроллеры AVR (ступени 1-7)(Рюмик).pdf
Микроконтроллеры AVR, ступени 1-7 (Рюмик).pdf
Микроконтроллеры семейства AVR фирмы Atmel (В.В. Гребнев, 2002).djvu
Практическое программирование микроконтроллеров Atmel AVR на языке ассемблера (Ю. Ревич, 2008).djvu
Применение микроконтроллеров AVR. Схемы, алгоритмы, программы.(2004)(Баранов).djvu
Применение микроконтроллеров AVR. Схемы, алгоритмы, программы (В.Н. Баранов, 2004).djvu
Самоучитель по микропроцессорной технике.(2003)(Белов).djvu
Самоучитель разработчика на микроконтроллерах AVR (А.В. Белов, 2008).djvu
Справочник по программированию «Bascom-AVR» (М.Л. Кулиш).pdf
Васильев Микроконтроллеры. Разработка встраиваемых приложений 2008.djvu
Микроконтроллеры AVR ENG:
AVR an Introductory course (J.Morton, 2002).pdf
BASCOM AVR, help reference (2007).PDF
Beginers introduction to the Assebly Language of ATMEL-AVR Microprocessors (Gerhard Schmidt,2003, англ).pdf
Beginers introduction to the Assebly Language of ATMEL-AVR Microprocessors (Gerhard Schmidt,2004, англ).pdf
CodeVision AVR 1.25.7, user manual.pdf
Fast AVR. Basic compiller for AVR. User manual (2004).pdf
Programming And Customizing The Avr Microcontroller (D.V. Gadre, 2001).pdf
PIC-микроконтроллеры:
PIC-микроконтроллеры. Практика применения. Справочник. 2010.pdf
Брей Б. — Применение микроконтроллеров PIC18. — 2008 CD.7z
Брей Б. — Применение микроконтроллеров PIC18. — 2008.DJVU
Брэй Б. Применение микроконтроллеров PIC18 , 2008.djvu
Брэй Б. Применение микроконтроллеров PIC18 2008.rar
Дитер Кохц Измерение и регулирование с помощью PIC микроконтроллеров 2006 CD.7z
Дитер Кохц Измерение и регулирование с помощью PIC микроконтроллеров 2006 .pdf
Дитер Кохц Измерение и регулирование с помощью PIC микроконтроллеров 2006 копия.pdf
Заец Н.И. — Радиолюбительские конструкции на PIC-микроконтроллерах 2003
Катцен PIC-микроконтроллеры. Полное руководство 2010.djvu
Катцен PIC-микроконтроллеры. Полное руководство 2010.pdf
Катцен С. PIC микроконтроллеры. Все что вам необходимо знать 2008.djvu
Катцен С Все что необходимо знать о PIC микроконтроллерах 2008.djvu
Кениг А Полное руководство по PIC 2007.djvu
Магда Ю. С Микроконтроллеры PIC 2009.pdf
Микроконтроллеры PIC. Архитектура и программирование (Ю.С.Магда, 2009).pdf
Полное руководство по PIC-микроконтроллерам (А.Кениг, М.Кениг, 2007).djvu
Предко. Справочник по PIC-микроконтроллерам 2002.djvu
Программирование PIC микроконтроллеров на язуке PicBasic (Чак Хелибайк, 2008).rar
Программирование PIC микроконтроллеров на языке PicBasic (Чак Хелибайк, 2008).djvu
Программирование на C микроконтроллеров PIC24 2014.djvu
Разработка встроенных систем с помощью микроконтроллеров PIC 2008.djvu
Самоучитель по программированию PIC контроллеров для начинающих (Е.А. Корабельников,2008).pdf
Самоучитель по программированию PIC контроллеров с нуля (Е.А. Корабельников, 2008).rar
Тавернье Кристиан PIC-микроконтроллеры. Практика применения 2004.djvu
Тим Уилмсхерст — Разработка встроенных систем с помощью микроконтроллеров PIC 2008 CD.7z
Тим Уилмсхерст — Разработка встроенных систем с помощью микроконтроллеров PIC 2008.djvu
Шпак Программирование на языке С для AVR и PIC микроконтроллеров 2006.djvu
Шпак Программирование на языке С для AVR и PIC микроконтроллеров 2006.rar
Raspberry Pi:
Микрокомпьютеры Raspberry Pi. Практическое руководство cd.rar
Петин В. — Микрокомпьютеры Raspberry Pi Практическое руководство — 2015 CD.zip
Петин В. — Микрокомпьютеры Raspberry Pi Практическое руководство — 2015.pdf
Ричардсон и Уоллес. Заводим Raspberry Pi 2013.pdf
Ричардсон и Уоллес. Заводим Raspberry Pi 2013 чисто.pdf
Raspberry Pi ENG:
Building a Home Security System with Raspberry Pi.pdf
Exploring the Raspberry Pi 2 with C++.pdf
Learn Electronics with Raspberry Pi.pdf
Learn Raspberry Pi 2 with Linux and Windows 10.pdf
Make. Getting Started With Raspberry, 3rd Edition.pdf
Make Raspberry Pi and AVR Projects.pdf
Mastering the Raspberry Pi 2014.pdf
Programming the Raspberry Pi, Second Edition. Getting Started with Python.pdf
Raspberry Pi 3. UpSkill Learning.pdf
Raspberry Pi Cookbook for Python Programmers.pdf
Raspberry Pi Cookbook. Software and Hardware Problems and Solutions.pdf
Raspberry Pi For Dummies.pdf
Raspberry Pi IoT Projects. Prototyping Experiments for Makers. John C. Shovic 2016.pdf
Raspberry Pi IoT Projects. Prototyping Experiments for Makers.pdf
Raspberry Pi LED Blueprints Code.zip
Raspberry Pi LED Blueprints.pdf
Raspberry Pi Projects 2015.pdf
Raspberry Pi Robotic Blueprints code.zip
Raspberry Pi Robotic Blueprints.pdf
Raspberry Pi Robotic Projects.pdf
Raspberry Pi The Complete Manual. 6th Edition.pdf
Raspberry Pi User Guide. 4th Edition.pdf
The Raspberry Pi for kids.pdf
Микроконтроллеры 2000-2008:
32-16 битные микроконтроллеры ARM7 фирмы Atmel.djvu
AVR ATMEL 2002.djvu
instrset-rus.pdf
Michail.Guk.Interfacy.PC.Spravochnik.OCR.djvu
Zanim microelectronika.rar
Аналоговые интерфейсы микроконтроллеров 2007.djvu
Аналоговые интерфейсы микроконтроллеров (Р.Стюарт Болл, 2007).djvu
Антонов А.П. Язык описания цифровых устройств AlteraHDL. Практический курс.djvu
Баширов С.Р. Применение микроконтроллеров в звуковой технике 2008 CD.7z
Баширов С.Р. Применение микроконтроллеров в звуковой технике 2008.djvu
Бейкер Что нужно знать цифровому разработчику об аналоговой электронике 2010.djvu
Занимательно о микроконтроллерах (А. Микушин, 2006).djvu
Как превратить персональный компьютер в измерительный комплекс ( П.Гелль, 1999).djvu
Как превратить персональный компьютер в универсальный программатор (П.Гёлль, 2006).DjVu
Кенио Т.Шаговые двигатели и их микропроцессорные системы управления.1987.djvu
Компьютерное управление внешними устройствами через стандартные интерфейсы (В.М. Рябенький, 2008).pdf
Корякин-Черняк С. Л. — Как собрать шпионские штучки своими руками 2010.djvu
Корякин-Черняк С.Л. Справочник по цветовой, кодовой маркировке и взаимозаменяемости компонентов 2010.djvu
Крупник А.Б. — Изучаем Си — 2001.7z
Крупник А.Б. — Изучаем Си — 2001.pdf
Мiкропроцесорна технiка (Ю.I Якименко, 2004).djvu
Микроконтроллеры 16-разрядные Flash семейства 16LX фирмы Fujitsu (2004).djvu
Микроконтроллеры AVR
Пантюшин А.В. Основы программирования микроконтроллеров. Учебно-методическое пособие 2016.pdf
Пей Ан. Сопряжение ПК с внешними устройствами (from NETBUK).djvu
Последовательные интерфейсы ПК. Практика программирования (П.Агуров) (from NETBUK).djvu
Ревич Ю. Занимательная электроника, 2-е изд. 2009.djvu
Семёнов Б. Шина I2C в радиотехнических конструкциях 2002.djvu
Сташин В.В. Урусов А.В. Мологонцева О.Ф. Проэктирование цифровых устройств на МК (from NETBUK).djvu
Микроконтроллеры ENG:
altera Cyclone II FPGA BOARD Manual.pdf
Mikrocontroller. Grundlagen der Hard- und Software der Mikrocontroller ATtiny2313, ATtiny26 und ATmega32.pdf
Practical Microcontroller Engineering with ARM Technology 2016.pdf
The Art of Designing Embedded Systems.pdf
Микроконтроллерыi 8051:
8051 Interfacing and Applications (1991).pdf
Microcontroller 51 Based Projects.djvu
Каспер Программирование на языке Ассемблера для микроконтроллеров семейства i8051 2004.djvu
Микроконтроллеры серии 8051. Практический подход 2008.pdf
Проектирование цифровых устройств на МК (Сташин)(1990).djvu
Разработка устройств на МК (ужасный скан куска книги).djvu
PIC-микроконтроллеры. ENG:
Basic for PIC Microcontrollers ( M. Nebojsa, 2000).pdf
Basic for PIC Microcontrollers (M. Nebojsa, 2001).PDF
Basic for PIC Microcontrollers.PDF
CCS Peter H Anderson Pic Source Code Book (pdf+files).rar
Experimenting with the PICbasic Pro Compiler (Les Johnson, 2000).djvu
Experimenting with the PICbasic Pro Compiler (Les Johnson, 2000).rar
Interfacing PIC Microcontrollers (Bates).pdf
Interfacing PIC Microcontrollers (M. Bates).zip
Introduction to PIC Microcontrollers (Complete Guide to PIC).pdf
Kit 81 Simple PICMicro programmer (2002).pdf
Microcontroller Programming. Thi Micro Chip PIC (Julio Sanchez, 2007).pdf
My first PIC projects (pdf+asm).rar
PIC Basic Projects. 30 Projects using PIC BASIC and PIC BASIC PRO (D. Ibragim, 2006).pdf
PIC C.pdf
PIC in Practice A Project-based Approach (D.W. Smith, 2-nd edition, 2006).pdf
PIC microcontroller project book (John Iovine, 2000).pdf
PIC microcontrollers (Dragan Andric).pdf
PICmicro MCU C — An itroduction to programming The Microchip PIC in CCS C (N.Gardner, 2002).pdf
Programming 16-Bit PIC Microcontrollers in C. Learning to Fly the PIC24 (Lucio Di Jasio)(2007).pdf
Programming PIC Microcontrollers with PicBasic (Chuck Hellebuyck, 2003).pdf
STAMP 2. Communications And Control Projects (Tom Petruzzellis).pdf
The PIC Microcontroller Book for beginning (Nebojsa Matic).pdf
The quintessential PIC microcontroller (S. Katzen, 2000).pdf
PIC-микроконтроллеры. PIC 2002 2007:
PICmicro MCU C — Введение в программирование на CCS C (eng).djvu
PICmicro MCU C — Введение в программирование на CCS C (eng).pdf
PIC-микроконтроллеры. Практика применения (Тавернье)(2003).djvu
The PIC Microcontroller Book.pdf
Аппаратные хитрости применения PIC-микроконтроллеров (Александр Торес).djvu
Микроконтроллеры MicroChip Практическое руководство.(Яценков)(2002).djvu
Микроконтроллеры Microchip с аппаратной поддержкой USB 2008.djvu
Микроконтроллеры PIC16C7X (Ульрих)(2000).djvu
Микроконтроллеры PIC16X7XX (Ульрих)(2002).djvu
Микроконтроллеры PIC16X7XX,ч1 (В.А. Ульрих, 2 изд, 2002).djvu
Микроконтроллеры PIC16X7XX,ч2 (В.А. Ульрих, 2 изд, 2002).djvu
Микроконтроллеры rfPIC со встроенным маломощным радиопередатчиком (В.С. Яценков, 2006).djvu
Особенности и рабочая среда HI-Tech PICC (И. Яловой, 2003).pdf
Программирование на языке Си для AVR и PIC микроконтроллеров (Ю.А.Шпак).djvu
Руководство по микроконтроллерам (Том 1)(Предко)(2001)(picbook edition).djvu
Руководство по микроконтроллерам (Том 2)(Предко)(2001)(picbook edition).djvu
Справочник по PIC-микроконтроллерам (М. Предко, 2002).djvu
Тавернье PIC-микроконтроллеры, практика применения 2004.djvu
Тимофеев MPASM. Как правильно оформлять программы на ассемблере для PIC.pdf
Устройства управления роботами (Предко)(2004)(picbook edition).djvu
Устройства управления роботами (Предко)(файлы к книге).rar
Учимся программировать микроконтроллеры Pic на языке PicBasicPro (В.В. Хилинский, 2007).pdf
Фрунзе А.В. Микроконтроллеры. Это же просто. Том 1 — 2002.djvu
Фрунзе А.В. Микроконтроллеры. Это же просто. Том 2 — 2002.djvu
Фрунзе А.В. Микроконтроллеры. Это же просто. Том 3 — 2003.djvu
Фрунзе А.В. Микроконтроллеры. Это же просто. Том 4 2008.djvu
Фрунзе А.В. Микроконтроллеры. Это же просто. Том 4.7z
Яценков Практическое руководство MicroChip 2001.djvu
Радиолюбительские конструкции на PIC-микроконтроллера:
Заец Н.И. — Радиолюбительские конструкции на PIC-микроконтроллерах 1.djvu
Заец Н.И. — Радиолюбительские конструкции на PIC-микроконтроллерах 2.djvu
Заец Н.И. — Радиолюбительские конструкции на PIC-микроконтроллерах 2.pdf
Заец Н.И. — Радиолюбительские конструкции на PIC-микроконтроллерах 3.djvu
Заец Н.И. — Радиолюбительские конструкции на PIC-микроконтроллерах 3.pdf
Заец Н.И. — Радиолюбительские конструкции на PIC-микроконтроллерах 4.djvu
Заец Н.И. — Радиолюбительские конструкции на PIC-микроконтроллерах 4.pdf
Заец Н.И. — Радиолюбительские конструкции на PIC-микроконтроллерах source.7z
Заец Н.И. — Электронные самоделки. Для быта, отдыха и здоровья.djvu
Заец Н.И. — Электронные самоделки. Для быта, отдыха и здоровья.pdf
Микроконтроллеры 2000-2008:
123 эксперимента по робототехнике (Предко)(2007).djvu
The Microcontroller Idea Book (Jan Axelson)(1994).pdf
Системы малой автоматизации (Николайчук)(2003).pdf
Системы малой автоматизации (Николайчук)(2003)(pdf).rar
Умный дом своими руками (Гололобов)(2007).djvu
Микроконтроллеры ARM7. Семейство LPC2000 Philips (Мартин)(2006).djvu
Микроконтроллеры MSP430:
MSP430 Mikrokontrollery so sverkhnizkim energopo.iso
Семейство микроконтроллеров MSP430x1xx (Компэл)(2004).pdf
Семенов Б. Ю. Микроконтроллеры MSP430: первое знакомство. 2006.djvu
Год: 2000-2016
Автор: Разные
Издательство: Разные
Количество страниц: много
Формат: pdf, djvu, chm, iso
Язык: русский, английский
Размер: Part 1 — 1,95 GB, Part 2 — 1,95 GB, Part 3 — 1,89 GB (3% восст.)
Скачать Современные микроконтроллеры STM, ATMEL AVR, PIC (520 книг) + исходники
(Части взаимозаменяемы)

микроконтроллеры STM ATMEL AVR PIC Arduino микроконтроллеры STM микроконтроллеры PIC микроконтроллеры AVR Raspberry Pi
Программирование МК AVR на языке assembler в среде Linux / Хабр
Ни для кого не секрет, что микроконтроллеры семейства AVR прочно вошли в практику домашних поделок. Кроме того, уже несколько лет наблюдается массовое (
Рано или поздно для любого «ардуиньщика» (при условии что он хочет выйти на более высокий профессиональный уровень) наступает момент когда в рамках платформы Arduino ему становится тесно и он начинает задумываться о том а что же в действительности происходит под капотом. И ответы на все его вопросы уже есть, например в виде замечательного курса «AVR. Учебный курс» от глубокоуважаемого DIHALT. Если вы пользователь OS Windows, то и недостатка в инструментах разработки у вас не будет, достаточно бесплатной Atmel Studio, закрывающей все вопросы разработки ПО для МК AVR.
Хоть я и тимлид в коллективе разработчиков ПО прикладного уровня, вопросы «железа» которое в нашей конторе делается на базе AVR с недавних пор стали интересовать меня очень остро. Возникло желание хорошо разобраться во всех аспектах разработки ПО для МК. И так как я являюсь убежденным приверженцем использования в разработке OS на базе ядра Linux, меня заинтересовал вопрос, а как там в линуксах: можно/нельзя ли писать и отлаживать ПО, зашивать его в кристалл с тем же (или примерно тем же) уровнем удобства, который нам доступен в Windows. Тех кого тоже интересует этот вопрос, и в особенности тех, кому тема поста кажется надуманной, приглашаю под кат.
Что касается разработки на C/C++, в среде линукс с этим особых проблем и нет, в виду общей ориентированности этой системы на использование данного языка и наличия достойного набора инструментария. Однако, тот же DIHALT, например, утверждает что программирование для МК неотделимо от знания ассемблера, в чем я с ним соглашусь, в виду логичности его тезисов, изложенных в «Учебном курсе» и собственного (пусть небольшого) опыта системной разработки под x86.
Руководствуясь тезисом, что от асма AVR нам никуда не уйти и сидим мы под линуксом, попробуем посмотреть на то, как можно писать и отлаживать программы. Я использую дистрибутив Arch Linux, поэтому в своем повествовании буду опираться на его экосистему.
Сразу скажу, что связку Atmel Studio + wine я предлагать не буду. Не люблю я wine (хоть и пользуюсь по необходимости). Остановимся на нативных средствах, прежде всего компиляторов, обзор которых в сети и личные ковырялки дали выход на триумвират gavrasm, avra и avr-as. Выбор произошел по двум противоречивым критериям: поддержка синтаксиса предлагаемого Atmel и возможность отладки прошивки по шагам в эмуляторе. Последнее для меня более важно, а в плоскости курса @DIHAL так прям вообще необходимо для понимания процесса работы микроконтроллера. Общность синтаксиса с компиляторами от Atmel дает, опять таки с моей точки зрения, лишь возможность без труда адаптировать проекты Atmel Studio к работе в линуксах, что весьма сомнительное преимущество, ибо тот же avr-as существует и под Windows. Предлагаю читателю обзор перечисленной троицы.
gavrasm и avra
Поддерживают синтаксис Atmel. Первый нашелся в AUR и устанавливается командой
$ yaourt -S gavrasm
Второй так же доступен в AUR
$ yaourt -S avra
Программа вида
test.S
;---- Определяем целевое устройство
.device atmega16
;---- Сегмент данных
.dseg
;---- Сегмент кода
.cseg
.org 0x0000
ldi r16, 10
M1:
inc r16
rjmp M1
;---- Сегмент EEPROM
.eseg
Собирается обоими компиляторами сразу в *.hex и результат работы выглядит примерно одинаково. Чтобы не возмущать благородных донов длинными портянками, помещаю результаты компиляции под спойлерыВыхлоп gavrasm
$ gavrasm test.S
+------------------------------------------------------------+
| gavrasm gerd's AVR assembler Version 3.5 (C)2015 by DG4FAC |
+------------------------------------------------------------+
Compiling Source file: test.S
-------
Pass: 1
14 lines done.
Pass 1 ok.
-------
Pass: 2
14 lines done.
3 words code, 0 words constants, total=3 = 0.0%
No warnings!
Compilation completed, no errors. Bye, bye ...
$ ls -l
итого 12
-rw-rw----+ 1 maisvendoo users 52 июл 29 15:46 test.hex
-rw-rw----+ 1 maisvendoo users 741 июл 29 15:46 test.lst
-rw-rw----+ 1 maisvendoo users 92 июл 29 15:46 test.S
Содержимое hex-файла прошивки:020000020000FC
:060000000AE00395FECFAB
:00000001FF
Содержимое файла листинга
gavrasm Gerd's AVR assembler version 3.5 (C)2015 by DG4FAC
----------------------------------------------------------
Source file: test.S
Hex file: test.hex
Eeprom file: test.eep
Compiled: 29.07.2017, 15:46:38
Pass: 2
1: .device atmega16
2:
3: .dseg
4:
5: .cseg
6: .org 0x0000
7:
8: 000000 E00A ldi r16, 10
9: M1:
10: 000001 9503 inc r16
11: 000002 CFFE rjmp M1
12:
13: .eseg
14:
Program : 3 words.
Constants : 0 words.
Total program memory: 3 words.
Eeprom space : 0 bytes.
Data segment : 0 bytes.
Compilation completed, no errors.
Compilation endet 29.07.2017, 15:46:38
Выхлоп avra
$ avra -l test.lst test.S
AVRA: advanced AVR macro assembler Version 1.3.0 Build 1 (8 May 2010)
Copyright (C) 1998-2010. Check out README file for more info
AVRA is an open source assembler for Atmel AVR microcontroller family
It can be used as a replacement of 'AVRASM32.EXE' the original assembler
shipped with AVR Studio. We do not guarantee full compatibility for avra.
AVRA comes with NO WARRANTY, to the extent permitted by law.
You may redistribute copies of avra under the terms
of the GNU General Public License.
For more information about these matters, see the files named COPYING.
Pass 1...
Pass 2...
done
Used memory blocks:
Code : Start = 0x0000, End = 0x0002, Length = 0x0003
Assembly complete with no errors.
Segment usage:
Code : 3 words (6 bytes)
Data : 0 bytes
EEPROM : 0 bytes
$ ls -l
итого 16
-rw-rw----+ 1 maisvendoo users 92 июл 29 15:46 test.S
-rw-rw----+ 1 maisvendoo users 0 июл 29 15:55 test.S.cof
-rw-rw----+ 1 maisvendoo users 13 июл 29 15:55 test.S.eep.hex
-rw-rw----+ 1 maisvendoo users 55 июл 29 15:55 test.S.hex
-rw-rw----+ 1 maisvendoo users 61 июл 29 15:55 test.S.obj
Содержимое hex-файла
:020000020000FC
:060000000AE00395FECFAB
:00000001FF
Листинг генерируется дополнительным ключем -l при сборке
$ cat test.lstAVRA Ver. 1.3.0 test.S Sat Jul 29 16:02:05 2017
.device atmega16
.dseg
.cseg
.org 0x0000
C:000000 e00a ldi r16, 10
M1:
C:000001 9503 inc r16
C:000002 cffe rjmp M1
.eseg
Segment usage:
Code : 3 words (6 bytes)
Data : 0 bytes
EEPROM : 0 bytes
Assembly completed with no errors.
Анализируя результаты можно сказать, что:
- Генерируется файл в формате Intel HEX, пригодный сразу для прошивки в МК
- Синтаксис совместим с Atmel
Определенно в синтаксисе avra есть отличия, например
.device atmel16
дает указание на МК, скрывая от программиста явное указание ссылок на *.inc файл макроопределений. Существует и ряд других нюансов, о которых проще прочесть в документации или в хорошей обзорной статье Valber’а на русском языке. Об особенностях gavrasm можно почитать тут.
Оба рассмотренных компилятора имеют существенный фатальный недостаток — они не генерируют отладочной информации. Хотя в документации по avra такая возможность заявлена
Debugging support AVRA creates a coff file everytime the assembly was sucessful. This file allows AVR Studio or any coff compatible debugger to simulate or emulate the program.
но *.cof файл в выхлопе неизменно оказывается пустым. Отсутствие отладочной информации исключает адекватную отладку по шагам, остро необходимую начинающим. Так что от этих (к слову довольно старых альтернатив) переходим к другому, более могучему компилятору из семейства GNU
avr-as
Установка этого инструментария доступна из официальных репозиториев любого достаточно популярного дистрибутива. В случае с Arch Linux
$ sudo pacman -S avr-gcc avr-libc avr-binutils
GNU assembler (gas) является бэкэндом к компилятору gcc и обычно явно не вызывается. Связано это с идеологией *nix систем, ориентированных на разработку на C/C++, в которой ассемблеру отводится роль младшего нелюбимого сына. Вместе с тем это обеспечивает глубокую интеграцию ассемблерного кода в программы на C/C++ что, редко, но бывает необходимо. К тому же, если говорить об архитектурах x86/x86_64 синтаксис «гнутого» ассемблера (AT&T) разительно отличается от принятой Intel-нотации (хотя на gas можно использовать и интел-синтаксис, компилятор дает такую возможность). Чего стоит обратный по отношению к интел-нотации порядок операндов в командах, например
Применительно к AVR gas не отходит от нотации Atmel в части оформления команд — порядок операнд здесь привычный, например команда:
ldi r16, 10
в gas для AVR выглядит привычно. Другое дело макросы и директивы компилятора, они отличаются от Atmel. Приведенная выше тестовая программа будет выглядеть так:
test.S
#include "/usr/avr/include/avr/io.h"
/* Секция данных */
.data
/* Секция кода */
.section .text
.org 0x0000
/* Точка входа, обязательная при вызове avr-gcc вместо avr-as */
.global main
main:
ldi r16, 10
M1:
inc r16
rjmp M1
Как видно из исходника секция кода определяется директивой предпроцессора .section .text (аналог .cseg). Аналогом .dseg служит .data. Единственное, чего я пока не понял и не узрел в документации, как определяется содержимое EEPROM (аналог .eseg). Надеюсь среди читателей найдется добрый гуру, который натолкнет меня на ответ. Новичкам же, подобным мне, советую покурить документацию тут и вот здесь для уяснения специфики использования gas для AVR.
Мы же теперь соберем hex-файл, пригодный для прошивки МК. Команда:
$ avr-as -mmcu=atmega16 -o test.o test.S
генерирует объектный файл для соответствующего контроллера (в нашем случае ATMega 16). Далее данный объектный файл преобразуется в hex
$ avr-objcopy -O ihex test.o test.hex
Получая на выходе hex-файл вида
test.hex:060000000AE00395FECFAB
:00000001FF
Тем не менее, мы не ответили на главный вопрос и не обозначили преимущество gas по возможности организации пошаговой отладки. Для этого прежде всего
В линуксах нет достойной альтернативы GDB. Для его использования применительно к МК AVR ставим фронтэнд
$ sudo pacman -S avr-gdb
Данный отладчик обладает всем комплексом противоречий, пугающих новичков: при справедливо заявленной термоядерной мощи порог вхождения его довольно высок. Чтобы разучиться боятся gdb и начать в нем работать очень рекомендую статью величайшего и могучего и, к сожалению, ныне покойного (земля тебе пухом, Мыщъх!) Николая Лихачева aka Крис Касперски «Погружение в технику и философию GDB».
Первое, что нужно для использования gdb — собрать код соответствующим образом, сгенерировав ELF-образ, содержащий отладочные символы
$ avr-as -mmcu=atmega16 -g --gstabs -o test.o test.S
Ключи -g и —gstabs генерируют соответственно отладочные символы и добавляют возможность использовать образ для удаленной отладки в gdb. Компонуем полученный объектный файл в ELF
$ avr-ld -m avr4 -o test.elf test.o
Полученный образ мы используем для отладки нашего теста. Из него же можно сгенерировать и hex-файл
$ avr-objcopy -j .text -j .data -O ihex test.elf test.hex
явно указывая ключем -j включаемые в прошивку секции, ключем -O ihex формат вывода (intel HEX). Получаем тот же файл, что и в предыдущем случае:
test.hex:060000000AE00395FECFAB
:00000001FF
Осталось загрузить полученный код в эмулятор и проверить доступные возможности отладки.
Этот вопрос сложнее прочих. Мною было найдено два достойных кандидата: simavr, имеющийся в официальных репозиториях арча и устанавливаемый простым:
$ sudo pacman -S simavr
и более популярный симулятор simulavr, который не был найден даже в AUR, при том что основная масса полезной инфы в сети именно о нем. Собрать из исходников с целью создания PKGBUILD для AUR у меня не вышло, хотя я перебрал все адекватные ветки в официальном репозитории. Пришлось прибить зверский костыль, скачав DEB-пакет для Debian, превратив его в пакет для арча с помощью утилиты debtap.
$ debtap simulavr_0.1.2.2-7+b2_amd64.deb
и далее полученный арч-пакет без проблем ставиться в систему.
Версия эта довольно древняя, а текущий релиз (судя по дате последнего коммита в репозитории) ушел довольно далеко.
Что же касается simavr, то он ставится без проблем, поддерживает большее число МК, но на попытки подключения к нему отладчиком выдает в консоль сообщения о крэше эмулятора и разобраться с этим мне пока не удалось. Тут я снова апеллирую к сведующему в вопросе читателю и рассчитываю на подсказку.
Пока же мы используем для отладки костыльно поставленный simulavr
Итак, сначала отладим программу хардкорно — из консоли запустим эмулятор
$ simulavr -d atmega16 -c 8000000 -g -P simulavr-disp
запускаем эмулятор ATMega 16 (ключ -d) на частоте 8 МГц (ключ -с) с опцией удаленной отладки и возможность красивого просмотра регистров контроллера (опция -P, которая по данным из сети в свежайшей версии эмулятора убрана). Видим окошко терминала с содержимым регистров и памяти
наблюдаем в консоли запуска сообщение
Waiting on port 1212 for gdb client to connect...
сообщающее нам о том, что эмулятор ждет подключения отладчика на порту 1212 (порт можно указать при запуске ключем -p). В другой консоли стартуем отладчик:
$ avr-gdb -q -tui
первый ключ уберет пафосный выхлоп gdb при запуске, вторая группа ключей активирует просмотр исходников в процессе отладки в применена мной для наглядности (на деле эта опция неудобна по ряду причин). В консоли мы увидим следующее:
Подлючаемся к эмулятору
(gdb) target remote:1212
Загружаем ELF-образ в эмулятор (да, именно его а не hex, на чем я обжегся в самом начале) d ‘vekznjh
(gdb) load test.elf
Загружаем отладочные символы:
(gdb) file test.elf
ответив «yes» на заданный вопрос, получая следующую картину:
Что же, мы видим наш исходник и отладчик, готовый к приему команд. Даем команду next
(gdb) n
и видим как отладчик бодро переместился по коду.
можем посмотреть изменившееся состояние регистров контроллера как в консоли эмулятора
так и в окне отладчика:
(gdb) info registers
.
.
.
r16 0xa 10
.
.
.
SREG 0x0 0
SP 0x0 0x0 <main>
PC2 0x2 2
pc 0x2 0x2 <M1>
С этого момента нам доступен весь богатейший инструментарий, предоставляемый отладчиком gdb. Однако,
IDE Eclipse известна давно. За время своего существования она прочно утвердилась в разных областях разработки ПО и может «тупо всё», благодаря обширному набору плагинов, расширяющих её функциональность. В свое время я восторгался ей, но время это прошло, так как в обыденной работе у неё есть масса мелких нюансов, раздувающихся в недостатки (на работе в продакшене я предпочел для того же C/C++ QtCreator в силу специфики деятельности, о чем не жалею).
Тем не менее, с точки зрения решаемой нами задачи она вполне удовлетворяет её требованиям. Для работы с AVR в Eclipse потребуется установка следующих плагинов
и, дабы не перегружать статью я отсылаю читателя к поиску, в котором установка плагинов к Eclipse описывается очень подробно. Важным здесь представляется настройка проекта, о чем я расскажу подробно.
Eclipse по своей сути ориентирован на C/C++ разработку, поэтому для создания ассемблерного проекта воспользуемся генерацией проекта через имеющийся Makefile, который и напишем для нашего теста. Вот он
Makefile
# Декларируем необходимые переменные
DEVICE = atmega16
TARGET = test
OBJECTS = $(TARGET).o
ELF = $(TARGET).elf
HEX = $(TARGET).hex
# Задаем правила компиляции
COMPILE = avr-as -mmcu=$(DEVICE) -g --gstabs
# Главная цель - HEX-файл прошивки
all: hex
# Правило сборки объекрных молулей: беруться все исходники
# с расширением *.S и компилятся в объектные модули *.o
.S.o:
$(COMPILE) -c $< -o $@
# Правило очитски - удаляем все продукты сборки
clean:
rm -f $(HEX) $(ELF) $(OBJECTS)
# Компоновка всех объектных модулей в ELF
elf: $(OBJECTS)
avr-ld -m avr4 -o $(ELF) $(OBJECTS)
# Преобразование ELF в HEX
hex: elf
avr-objcopy -j .text -j .data -O ihex $(ELF) $(HEX)
Написав этот опус открываем Eclipse и создаем новый проект File -> New -> Project, выбирая сишный проект на основе Makefile
жмем Next, в следующем окне выбирая расположение каталога с исходниками и Makefile
Шлепаем Finish и видим наш проект во всей красе
Идем в меню Project -> Build all и получаем все необходимые нам бинарники:
19:34:51 **** Build of configuration Default for project test ****
make all
avr-as -mmcu=atmega16 -g --gstabs -c test.S -o test.o
avr-ld -m avr4 -o test.elf test.o
avr-objcopy -j .text -j .data -O ihex test.elf test.hex
19:34:51 Build Finished (took 128ms)
Теперь настроим запуск эмулятора, как внешнего инструмента проекта зайдя в Run -> External Tools, создав новую конфигурацию с настройками соответствующими приведенным скринам
Тут мы сообщаем среде, что хотим запускать эмулятор с нужными нам параметрами командной строки, поместив пункт запуска в меню Run → External Tools.
Применяем настройки, идем в меню Run → External Tools → atmega16 и наблюдаем запуск эмулятора:
Хорошо, теперь настроим конфигурацию отладки нашего проекта. Идем в меню Run → Debug Configuratuions и настраиваем аппаратную отладку через GDB.
не забывая указать тип соединения с сервером симуляции:
и указав, какие действия следует выполнить при запуске отладки:
Обязательно ставим галки на Load image и Load Symbols — это позволяет отладчику загрузить прошивку в эмулятор и прочесть отладочные символы. Ставим точку останова на метку M1.
Жмем кнопки Apply и Debug и… вуаля!
Отладчик послушно стал на указанной точке останова. Доступен просмотр дампа памяти и содержимого регистров. Жмем F5 (или F6) и трассируем наш код по шагам.
Теперь можно хоть до посинения трассировать код, смотреть значения регистров и переменных, править код, снова трассировать, в общем заниматься привычным процессом разработки.
Что хочу сказать в финале? Я уже тысячу раз говорил о том, что все мои статьи на ресурсах хабр и гиктаймс — отражение личного опыта и рупор субъективного мнения. Решена задача — организация разработки ПО для контроллеров AVR в среде Linux. Эта статья — продукт долгого гугления и сбора информации из разрозненных сетевых источников. Цель её — натолкнуть новичка на поиск в нужном направлении. Статья не претендует на академичность, она лишь продукт моих собственных копаний и попытка поделится собранной информацией, а так же привлечь заинтересованных людей к интересной мне теме.
Тут много о чем не сказано, например о прошивке через avrdude, который (sic!) есть кроссплатформенная утилита прошивки для семейства AVR. Если у читателей будет желание, а у меня возможность, мы рассмотрим и её, помигаем светодиодами, пошлем слово «жопа» «счастье» через USART и так далее. Тема неисчерпаема и достойна продолжения. Время покажет.
А пока, благодарю моего читателя за внимание и надеюсь на новую встречу!
Что такое микроконтроллеры ATMega и как с их помощью сделать простой проект?
Что такое микроконтроллеры Atmega Atmel AVR?
Введение в микроконтроллеры ATMega
Микроконтроллеры ATMega относятся к семейству микроконтроллеров AVR и производятся Atmel Corporation . Микроконтроллер ATMega — это 8-битный микроконтроллер с сокращенным набором команд ( RISC ) на основе Гарвардской архитектуры.
Как следует из названия, например, « ATmega16 ″ , где AT = Atmel , мега = мега AVR и 16 = 1 6 КБ флэш-памяти .
Он имеет стандартные функции, такие как встроенное ПЗУ (постоянное запоминающее устройство), ОЗУ данных (оперативное запоминающее устройство), ЭСППЗУ данных (электрически стираемое программируемое постоянное запоминающее устройство), таймеры и порты ввода / вывода, а также дополнительные периферийные устройства, такие как аналоговые и Цифровые преобразователи (АЦП), порты последовательного интерфейса и т. Д.Они имеют 120 и более наборов команд, а память для программ составляет от 4 кб до 256 кбайт.
История микроконтроллеров ATMega
Микроконтроллеры ATMega были разработаны двумя студентами Норвежского технологического института (NTH) — Альф-Эйгелем Богеном и Вегардом Волланом. Позднее он был куплен и разработан корпорацией Atmel в 1996 году.
Архитектура микроконтроллеров ATMega
Как упоминалось во вводной части, микроконтроллеры ATMega основаны на архитектуре Гарварда, т.е.е. отдельная память данных и память программ. Память программ, также известная как память программ или кодов, является флэш-памятью с произвольным доступом (ПЗУ). Размер программной памяти колеблется от 8 Кбайт до 128 Кбайт.
Память данных разделена на три части: 32 регистра общего назначения, память ввода / вывода и внутренняя статическая оперативная память (SRAM). в то время как размер регистров общего назначения является фиксированным, размер памяти ввода-вывода и внутренней SRAM варьируется от кристалла к кристаллу.
Блок-схема микроконтроллера ATMEGA
На приведенной ниже диаграмме представлена архитектура микроконтроллеров ATMega.
Щелкните изображение, чтобы увеличить
Распиновки и модули микроконтроллера ATMega
Щелкните изображение, чтобы увеличить
Давайте сделаем краткий обзор каждого модуля
. Регистры общего назначения : микроконтроллеры ATMega имеют архитектуру на основе регистров, то есть как операнды, так и результат операций хранятся в регистрах, расположенных вместе с центральным процессором (ЦП).Регистры общего назначения подключены к блоку арифметической логики процессора (ALU).
Эти регистры используются для временного хранения информации во время выполнения программы. Они занимают 32 байта пространства памяти данных и принимают адрес от $ 00 до $ FF. Эти регистры имеют номенклатуру от R0 до R31 и имеют ширину 8 бит.
2 . Память ввода / вывода : также называется памятью регистров специальных функций (SFR), поскольку она предназначена для специальных функций, таких как регистры состояния, таймеры, последовательная связь, порты ввода / вывода, аналогово-цифровые счетчики (АЦП) и т. Д.
Количество ячеек, занимаемых этой памятью, зависит от количества контактов и периферийных функций, поддерживаемых микросхемой. Хотя 64 байта расположения ввода-вывода фиксированы для всех микросхем, некоторые микроконтроллеры ATMega имеют расширенную память ввода-вывода, которая содержит регистры, относящиеся к дополнительным портам и периферийным устройствам.
3 . Внутренняя SRAM : это также называется блокнотом и используется для хранения данных и параметров программистами и компиляторами. Каждое место доступно напрямую по его адресу.Он используется для хранения данных из портов ввода / вывода и последовательных портов в ЦП.
4 . Флэш-электрически стираемая программируемая память (Flash EEPROM) : это внутрисистемная программируемая память, используемая для хранения программ. Его можно стирать и программировать как единое целое. Поскольку он энергонезависим, содержимое памяти сохраняется даже в случае отключения питания. Для каждого микроконтроллера ATMega число в конце названия обозначает объем флэш-памяти.
Например, для ATMega16 объем флэш-памяти составляет 16 Кбайт.Преимущество флеш-памяти в микроконтроллерах ATMega заключается в ее внутрисистемной программируемости, т.е. микроконтроллер можно программировать, даже находясь на печатной плате.
5 . Программируемая память с электрическим стиранием данных (ЭСППЗУ данных) : Некоторые Эта память используется для хранения и вызова постоянных данных программы и других параметров системы.
Помимо модуля памяти, микроконтроллер имеет внешние соединения для источников питания, два внешних входа кристалла, сброс процессора и четыре 8-битных порта.
1 . Порты : микроконтроллеры ATMega содержат четыре 8-битных порта — порт A, порт B, порт C и порт D. Каждый порт связан с тремя регистрами — регистром данных (записывает выходные данные в порт), регистром направления данных (устанавливает конкретный порт. pin как выход или вход) и Input Pin Address (считывает входные данные из порта).
2 . Часы : Часы микроконтроллера используются для обеспечения временной развертки периферийных подсистем. Мы можем установить часы внутренне, используя выбираемый пользователем резисторный конденсатор, или внешне, используя генераторы.
3 . Таймеры и счетчики : микроконтроллеры ATMega обычно содержат 3 таймера / счетчика. Два 8-битных таймера также могут использоваться как счетчики, а третий — 16-битный счетчик. Они используются для генерации точных выходных сигналов, подсчета внешних событий или измерения параметров входного цифрового сигнала.
3 . Системы последовательной связи : Микросхема микроконтроллера ATMega содержит встроенный универсальный синхронный и асинхронный последовательный приемник и передатчик (USART), последовательный периферийный интерфейс (SPI) и двухпроводной последовательный интерфейс (TWI).
4 . Аналого-цифровые преобразователи : микроконтроллеры ATMega содержат подсистему многоканального аналого-цифрового преобразователя (АЦП). АЦП имеет 10-разрядное разрешение и работает по принципу последовательного приближения. Он связан с тремя регистрами — регистром выбора мультиплексора АЦП, регистром управления и состояния АЦП и регистром данных АЦП.
5 . Прерывания : В микроконтроллерах ATMega имеется 21 периферийное устройство обработки прерываний. В то время как 3 используются для внешних источников, остальные 19 используются для внутренних подсистем.Они используются для прерывания нормальной последовательности событий в случае возникновения чрезвычайных ситуаций с высоким приоритетом.
Программирование в микроконтроллерах ATMega
Как упоминалось ранее, микроконтроллер ATMega основан на архитектуре RISC, то есть содержит сокращенный набор инструкций. Подобно другим микроконтроллерам, программирование в микроконтроллерах ATMega также может выполняться как на языках низкого уровня (ассемблер), так и на языках высокого уровня (Embedded C).
Давайте вкратце обсудим программирование на уровне ассемблера.
Инструкция на ассемблере состоит из следующих полей:
[Метка:] мнемоника [операнды] [; комментарии]
Здесь мнемоника относится к инструкции. Микроконтроллеры ATMega поддерживают как немедленную, так и косвенную адресацию. Доступ к регистрам ввода-вывода можно получить через соответствующие места в области памяти.
Операнды относятся к аргументам, с которыми работает инструкция. Для микроконтроллеров ATMega операндами являются регистры общего назначения или регистры ввода-вывода.
Как правило, программирование выполняется на языке Си из-за его простоты. Ниже приведен небольшой пример программирования микроконтроллера ATMega16 с использованием языка C
Принципиальная схема простого светодиодного проекта с микроконтроллером ATmega16
Назначение : Для включения светодиода с помощью кнопочного переключателя с микроконтроллером ATmega16
Код проекта:
intmain (void)
{
DDRA = 0x00;
DDRB = 0xFF;
unsignedinti;
, а (1)
{
i = PINA;
, если (i == 1)
{
PORTB = 0xFF;
}
иначе
PORTB = 0x00;
}
}
В приведенном выше коде я назначил порт A как входной порт, из которых контакт PA.0 подключен к кнопочному переключателю. Порт B назначен выходному порту, контакт PB.0 которого подключен к светодиоду.
Я написал и скомпилировал код с помощью Atmel Studio 7, который преобразует файл .c в двоичный объектный файл ELF. Затем он снова конвертируется в шестнадцатеричный файл, который передается в микроконтроллер с помощью программы AVRdude.
Это краткая информация о микроконтроллерах ATMega . Любая другая связанная информация приветствуется в комментариях ниже.
Вы также можете прочитать:
.Микроконтроллер— Введение — Руководство для начинающих по Atmel AVR Atmega32
Микроконтроллер — Руководство для начинающих — Введение
Это первое из длинной серии руководств, предназначенных для начинающих. и учебное пособие, основанное на микроконтроллере Atmel AVR Atmega32. Я покажу тебе, на примерах и проектах, как программировать и предоставлять функции для этого микроконтроллера и каковы способы использования и приложения.
Что касается микроконтроллеров в целом, хорошо знать, что эти маленькие микросхемы нашел везде. Вы можете найти их в микроволновых печах, новых устройствах, автомобилях, телевизоры и т. д. Эти микроконтроллеры управляют и воспринимают окружающую электронику. и окружающая среда. Например, микроконтроллеры могут обеспечивать вывод на дисплей, двигатель, светодиоды и т. д., определяющие окружающую среду, например наклон с помощью акселерометра, свет, угловая скорость с помощью гироскопа MEMS (Microelectromechanical System), звук, энкодеры движения, температуры и ввод с клавиатуры или кнопки.
Чтобы дать вам общее представление о микроконтроллере, микроконтроллер AVR Atmega32 считается компьютером на микросхеме. Микроконтроллер умеет выполнять набор инструкций в виде программы. Язык программы, который я буду в этих проектах используется C ++. Чтобы предоставить пользователям этого сайта лучшую возможность Чтобы узнать, программы C ++ будут объяснены очень подробно.
В микроконтроллерах действительно здорово то, что вы можете контролировать все булавки.Новичку может быть сложно понять это понятие, особенно не имея опыта работы с электроникой. Не волнуйтесь, я проведу вас через каждый крошечная деталь. Каждый контакт имеет особое назначение или может использоваться как вход или выход. особенность, за некоторыми исключениями, контакты питания.
На левой стороне чипа, если смотреть на него, образуются вершина и маленький треугольник. находится вверху слева, 20 контактов (это 40-контактный микроконтроллер).Первый начиная с верхнего левого угла — контакты PB0-7. Всего 8 контактов, так как индекс этих контактов и почти все в программе начинается с индекса 0. Этот набор контактов называется «Порт B», а еще 3 порта помечены от A до D. Эти порты могут быть настроены для приема информации и называются INPUT и они могут быть настроены на отправку напряжения в некоторой форме, называемой ВЫХОДОМ. Общие выводы питания чтобы получить питание для чипа, называемого VCC и GND.Все, кроме одного контакта порта D (PD0-6) также находится на левой стороне (нижняя часть). PD7 (контакт 7 порта D) в одиночку запускает правую часть микроконтроллера.
Продолжая движение по правой стороне и в конце порта D, порт C продолжился от нижний угол вверх. С этого момента, пусть любимые контакты продолжатся, от аналогового к цифровому булавки. Эти штыри могут определять окружающую среду с помощью компонентов. которые подают на эти контакты аналоговое напряжение.Не беспокойтесь о непонимании аналоговый или даже цифровой на этом этапе, это будет объяснено более подробно позже. Эти выводы аналогово-цифрового преобразователя составляют порт A.
Одним из примеров использования аналогового преобразования в цифровую форму может быть, скажем, зондирование температура. Вы можете подключить компонент, преобразующий температуру в уровень напряжения, называемого термистором, на один из контактов порта A и микроконтроллер преобразует это напряжение в число от 0 до 255 (8-битное число — более высокое разрешение возможно при 10 битах).Программа, записанная и сохраненная в микроконтроллере. можно использовать эту температуру и реагировать определенным образом. Например, если у вас есть термистор против кипящего котла, микроконтроллер может реагировать и обеспечивать выход на другой контакт, который издает звуковой сигнал или мигает светом.
Другие особенности этого и других микроконтроллеров, кроме собственно программирования это пространство программирования (где программа хранится в микросхеме и сколько места у вас есть), память или пространство для данных и переменных, которые программа будет использовать, и наконец, в микросхему встроены часы, которые считают.Подсчет может быть в много разных скоростей в зависимости от скорости чипа и делителя, который выбран по скорости. Это начинает усложняться, поэтому я вернусь. Подсчет может производиться в секундах, миллисекундах, микросекундах или в любом другом формате. для выбранной программы и приложения.
Поскольку эта серия руководств основана на примерах, я подробно расскажу. Конечно, детали для введения были бы невозможны, и если вы очень авантюрист, вы можете взглянуть на техническое описание и руководство для этого микропроцессора, но не позволяйте этому огромному документу отвлечь вас от желания изучить этот невероятный технология.Как только вы научитесь, приложение будет без ограничений, от крошечных роботов, к чрезвычайно масштабным архитектурным чудесам, которые движутся и испускают захватывающие световые эффекты, иногда взаимодействующие с окружающей средой.
.Что такое микроконтроллер AVR?
Микроконтроллер AVR — это тип устройства, производимого Atmel, который имеет особые преимущества по сравнению с другими распространенными микросхемами, но сначала что такое микроконтроллер?
Самый простой способ подумать об этом — сравнить микроконтроллер с вашим ПК, в котором есть материнская плата. На этой материнской плате находится микропроцессор (чипы Intel, AMD), который обеспечивает интеллект, память RAM и EEPROM и интерфейсы для остальной системы, например последовательные порты (в настоящее время в основном порты USB), дисководы и интерфейсы дисплея.
Микроконтроллер имеет все или большинство из этих функций, встроенных в один чип, поэтому ему не нужна материнская плата, и многие компоненты, например светодиоды, могут быть подключены непосредственно к AVR. Если вы попробовали это с микропроцессором, бац!
МикронтроллерыAVR выпускаются в разных корпусах, некоторые из которых предназначены для монтажа в сквозное отверстие, а некоторые — для поверхностного монтажа. Доступны AVR с 8-контактными или 100-контактными контактами, хотя все, что имеет 64-контактный разъем или больше, можно устанавливать только на поверхность. Большинство людей начинают с 28-контактного чипа DIL (Dual In Line), такого как ATmega328 или 40-контактный ATmega16 или ATmega32.
для ПК всегда как минимум 32-битные, а теперь обычно 64-битные. Это означает, что они могут обрабатывать данные 32-битными или 64-битными фрагментами, поскольку они подключены к шинам данных такой ширины. AVR намного проще и обрабатывает данные в 8-битных фрагментах, поскольку его шина данных имеет ширину 8-бит, хотя теперь есть AVR32 с 32-битной шиной и семейство ATxmega с 16-битной шиной данных.
На ПК установлена операционная система (Windows или Linux), на которой выполняются программы, такие как Word, Internet Explorer или Chrome, которые выполняют определенные функции.8-битный микроконтроллер, такой как AVR, обычно не имеет операционной системы, хотя при необходимости он может запускать простую, а вместо этого просто выполняет одну программу.
Точно так же, как ваш компьютер был бы бесполезен, если бы вы не устанавливали никаких программ, AVR должен иметь установленную программу для любого использования. Эта программа хранится во встроенной памяти AVR, а не на внешнем диске, таком как ПК. Загрузка этой программы в AVR выполняется с помощью программатора AVR, обычно, когда AVR находится в цепи или системе, следовательно, AVR ISP или AVR In System Programmer.
AVR ISP для программирования микроконтроллеров AVR
Так что же такое программа? Программа — это серия инструкций, каждая из которых очень проста, для извлечения данных и управления ими. В большинстве приложений, где вы будете использовать AVR, например, в контроллере стиральной машины, это означает считывание входов, проверку их состояния и соответствующее включение выходов. Иногда вам может потребоваться изменить или обработать данные или передать их на другое устройство, такое как ЖК-дисплей или последовательный порт.
Для выполнения этих основных задач используется серия простых двоичных инструкций, каждая из которых имеет эквивалентную инструкцию на языке ассемблера, понятную людям. Самый простой способ написать программу для AVR — использовать язык ассемблера (хотя вы можете писать двоичные числа, если хотите быть педантичным).
Использование языка ассемблера позволяет вам гораздо больше узнать о работе AVR и о том, как он устроен. Он также производит очень маленький и быстрый код.Недостатком является то, что вы, как программист, должны делать все, включая управление памятью и структуру программы, что может оказаться очень утомительным.
Чтобы избежать этого, для написания программ для AVR все чаще используются языки высокого уровня, в частности C, но также базовые и производные Java. Высокий уровень означает, что каждую строку кода C (или Basic или Java) можно преобразовать во многие строки языка ассемблера.
Компилятор также занимается структурой программы и управлением памятью, так что это намного проще.Часто используемые процедуры, такие как задержки или математические вычисления, также можно сохранить в библиотеках и очень легко использовать повторно. Компилятор C также имеет дело с большими числами, которые занимают больше байта (8 бит).
На мой взгляд, написание программ AVR на C похоже на вождение автомобиля. Да, вы можете сделать это очень легко, но если что-то пойдет не так, вы не знаете, как это исправить, и вы не можете справиться с такими сложными ситуациями, как обледенелые дороги. Начав с языка ассемблера и написав несколько простых программ, вы сможете понять, что происходит «под капотом», чтобы вы знали, как это работает, и могли извлечь из этого максимальную пользу.Затем обязательно переключитесь на C, но, по крайней мере, вы знаете, как микроконтроллер AVR сочетается друг с другом и его ограничения.
Изучение микроконтроллеров AVR