Рассмотрено практическое программирование микроконтроллеров AVR, в том числе популярной платформы Arduino. Рассказано, как выйти за рамки ограничений Arduino, когда следует применять прямое программирование на ассемблере, а когда использовать языки высокого уровня. Изложены общие принципы устройства микроконтроллеров AVR и их программирования, система команд, программирование таймеров, арифметические операции, память, интерфейсы, режимы энергосбережения и сторожевой таймер, программы реального времени, обмен данными с персональным компьютером.
Особое внимание уделено переносу типичных Arduino-проектов на ассемблер. Даны готовые рецепты для программирования большинства основных функций современной микроэлектронной аппаратуры.
Название: Программирование микроконтроллеров AVR: от Arduino к ассемблеру
Автор: Ревич Ю.В.
Год издания: 2020
Страниц: 448
Формат: djvu
Размер: 38,0 Мб
Скачать книгу Программирование микроконтроллеров AVR: от Arduino к ассемблеру
Скачать с hitfile
Оглавление:
Введение. Почему ассемблер?
ЧАСТЬ I. ОБЩИЕ ПРИНЦИПЫ УСТРОЙСТВА И ФУНКЦИОНИРОВАНИЯ ATMEL AVR
Глава 1. Обзор микроконтроллеров AVR
AVR и другие
Почему AVR?
Краткий обзор возможностей AVR
Семейства и модификации AVR
Основные принципы маркировки AVR
Глава 2. Общее устройство, организация памяти, тактирование, сброс
Память программ
Память данных (ОЗУ, SRAM)
Энергонезависимая память данных (EEPROM)
Способы тактирования
Сброс
Глава 3. Периферийные устройства и прерывания
Порты ввода/вывода
Таймеры-счетчики
Аналого-цифровой преобразователь
Последовательный порт
Интерфейс UART (USART)
Интерфейс SPI
Интерфейс TWI (I2С)
Универсальный последовательный интерфейс USI
Прерывания
Порядок выполнения прерываний
Разновидности прерываний
Об общих принципах использования прерываний
Глава 4. Микроконтроллеры AVR на практике
Особенности практического использования МК AVR
Корпуса МК и их установка на плату
Необходимое оборудование и приспособления
Панельки
Макетные платы
Адаптер для UART
Светодиоды-пробники
Мультиметр
Осциллограф
Генератор
Источники питания
Потребление МК AVR
Примеры AVR-контроллеров
Глава 5. Подготовка к программированию МК AVR
Ассемблер без излишних сложностей
Редактор ASM Editor
Ассемблер Avrasm
Обустройство ассемблера
Об AVR Studio
Способы загрузки программ в контроллер
ISP-программаторы
Arduino как ISP-программатор
Конфигурационные ячейки (fuse-биты)
ЧАСТЬ II. ПРОГРАММИРОВАНИЕ МИКРОКОНТРОЛЛЕРОВ AVR НА АССЕМБЛЕРЕ
Глава 6. Основы программирования МК AVR
Общая структура ассемблерной программы и ее выполнение
Инструкции и нотация AVR-ассемблера
Числа и выражения
Директивы
Оформление вызова подпрограмм
Обработка прерываний
Процедура RESET
Использование макросов
НЕХ-файлы и их загрузка в контроллер
O Bootloader
Простейшая программа
Таймер без прерываний
Задержка
Программа счетчика
Использование прерываний
Программа счетчика с использованием прерываний
Сравнение ассемблерной программы с программами Arduino и другими языками высокого уровня
Глава 7. Система команд AVR
Обзор команд
Команды передачи управления и регистр SREG
Команды проверки-пропуска
Команды логических операций
Команды сдвига и операции с битами
Команды арифметических операций
Команды пересылки данных
Команды управления системой
Выполнение на ассемблере типовых процедур
О стеке, локальных и глобальных переменных
Ассемблерное представление символов и строк
Глава 8. Арифметические операции и операции в двоично-десятичном формате
Стандартные арифметические операции
Умножение многоразрядных чисел
Деление многоразрядных чисел
Операции с вещественными числами
Генератор случайных чисел
Операции с числами в двоично-десятичном формате (BCD)
Отрицательные и вещественные числа в МК
Представление отрицательных чисел
Представление вещественных чисел
ЧАСТЬ III. ПРАКТИЧЕСКОЕ ПРОГРАММИРОВАНИЕ МИКРОКОНТРОЛЛЕРОВ AVR
Глава 9. Программирование таймеров
8-и 16-разрядные таймеры
Формирование заданного значения частоты
Отсчет времени
Точная коррекция времени
Частотомер и периодомер
Частотомер
Периодомер
Управление динамической индикацией
LED-индикаторы и их подключение
Программирование динамической индикации
Таймеры в режиме ШИМ
Расчет режима ШИМ для инвертора
Программная реализация ШИМ
О схемотехнике инвертора
Другие применения ШИМ
Глава 10. Использование EEPROM
Еще раз о сохранности данных в EEPROM
Запись и чтение EEPROM
Регулируемый светильник с запоминанием состояния
Хранение констант в EEPROM
Глава 11. Аналоговый компаратор и АЦП
Аналоговые операции: понятие погрешности и построение градуировочных уравнений
Среднее значение и градуировочные уравнения
Аналого-цифровые операции и их погрешности
Работа с аналоговым компаратором
Устройство компаратора
Система контроля батарейки
Встроенный АЦП
Питание и опорное напряжение
Задание режима работы
Простейшее использование АЦП
Схема измерений с помощью АЦП
Перевод результатов в физические величины
Глава 12. Интерфейс SPI
Основные операции через SPI
Аппаратный вариант
Программный вариант
О разновидностях энергонезависимой памяти
Запись и чтение flash-памяти через SPI
Операции с микросхемой памяти 45DB011В
Программа обмена с памятью 45DB011B по SPI
Запись и чтение flash-карт
Подключение карт ММС
Подача команд и инициализация ММС
Запись и чтение ММС
Глава 13. Интерфейс TWI (I2С) и его применение
Базовый протокол I2С
Программная эмуляция протокола I2С
Часы с интерфейсом I2С
Особенности записи и чтения внешней памяти с I2С-интерфейсом
Дисплей МТ-10Т11
Глава 14. Режимы энергосбережения и сторожевой таймер
В каком случае нужен режим энергосбережения?
Программирование режима энергосбережения
Выход по внешнему прерыванию
Применение сторожевого таймера
Инициализация, запуск и сброс WDT
Примеры использования WDT
О правильном построении малопотребляющих схем
Экономичный термометр на батарейках
Глава 15. Программирование UART и обмен данными с персональным компьютером
Способы обмена данными с ПК
Правила техники безопасности при подключении к ПК
Программы для связи ПК с контроллером
Дистанционная связь через UART
Программирование UART
Примеры использования UART в разных режимах
Вывод и ввод символов через UART
Программа установки часов DS1307
Как с помощью UART организовать выход из режима энергосбережения?
Глава 16. Некоторые Arduino-задачи на ассемблере
Дисплеи
4-разрядный цифровой дисплей на основе ТМ1637
Часы на дисплее ТМ1637
Ультразвуковой дальномер на дисплее ТМ1637
Термометр на дисплее ТМ1637
Знакосинтезирующие дисплеи на базе HD44780 и его аналогов
Инициализация и вывод символов
Пример управления ЖК-дисплеями конфигурации 16x2
Дисплей МТ-10S1 фирмы МЭЛТ
OLED-дисплеи фирмы Winstar
Часы с календарем на OLED-дисплее
ИК-приемник
Управление серводвигателем
Приложение 1. Ликбез
Десятичные, двоичные и шестнадцатеричные числа
Запись чисел в различных форматах
Двоично-десятичный формат BCD
Перевод из одной системы счисления в другую
Булевы операции
Об обозначениях на принципиальных схемах
Приложение 2. Основные параметры некоторых микроконтроллеров AtmelAVR
Литература
Предметный указатель
|