год-2012
352 страницы
В книге Практическое программирование микроконтроллеров Atmel AVR на языке ассемблера. Ревич Изложены принципы функционирования, особенности архитектуры и приемы программирования микроконтроллеров Atmel AVR. Приведены готовые рецепты для программирования основных функций современной микроэлектронной аппаратуры: от реакции на нажатие кнопки или построения динамической индикации до сложных протоколов записи данных во внешнюю память или особенностей подключения часов реального времени. Особое внимание уделяется обмену данными микроэлектронных устройств с персональным компьютером, приводятся примеры программ. В книге учтены особенности современных моделей AVR и сопутствующих микросхем последних лет выпуска. Приложения содержат основные параметры микроконтроллеров AVR, перечень команд и тексты программ для них, а также список используемых терминов и аббревиатур.
Оглавление книги
Практическое программирование микроконтроллеров Atmel AVR на языке ассемблера. Ревич
Микроконтроллеры, их возникновение и применение 7
Предыстория микроконтроллеров 8
Электроника в греческом стиле 10
Почему AVR? 12
Что дальше? 14
ЧАСТЬ I. ОБЩИЕ ПРИНЦИПЫ УСТРОЙСТВА И ФУНКЦИОНИРОВАНИЯ ATMEL AVR
17
Глава 1. Обзор микроконтроллеров Atmel AVR
19
Семейства AVR 21
Особенности практического использования МК AVR 23
О потреблении 23
Некоторые особенности применения AVR в схемах 25
Глава 2. Общее устройство, организация памяти, тактирование, сброс
27
Память программ 27
Память данных (ОЗУ, SRAM) 29
Энергонезависимая память данных (EEPROM) 31
Способы тактирования 32
Сброс 34
Глава 3. Знакомство с периферийными устройствами
37
Порты ввода-вывода 38
Таймеры-счетчики 39
Аналогово-цифровой преобразователь 41
Последовательные порты 42
UART 43
Интерфейс SPI 46
Интерфейс TWI (I2C) 50
Универсальный последовательный интерфейс USI 50
Глава 4. Прерывания и режимы энергосбережения
53
Прерывания 53
Разновидности прерываний 57
Режимы энергосбережения 58
ЧАСТЬ II. ПРОГРАММИРОВАНИЕ МИКРОКОНТРОЛЛЕРОВ ATMEL AVR
61
Глава 5. Общие принципы программирования МК семейства AVR
63
Ассемблер или С? 63
Способы и средства программирования AVR 67
Редактор кода 67
Об AVR Studio 68
Обустройство ассемблера 70
Программаторы 71
О hex-файлах 75
Команды, инструкции и нотация AVR-ассемблера 78
Числа и выражения 79
Директивы и функции 80
Общая структура AVR-программы 84
Обработка прерываний 85
RESET 89
Простейшая программа 90
Задержка 92
Программа счетчика 94
Использование прерываний 96
Задержка по таймеру 97
Программа счетчика с использованием прерываний 98
О конфигурационных битах 101
Глава 6. Система команд AVR
105
Команды передачи управления и регистр SREG 105
Команды проверки-пропуска 111
Команды логических операций 113
Команды сдвига и операции с битами 114
Команды арифметических операций 116
Команды пересылки данных 118
Команды управления системой 122
Выполнение типовых процедур на ассемблере 123
О стеке, локальных и глобальных переменных 125
Глава 7. Арифметические операции
127
Стандартные арифметические операции 128
Умножение многоразрядных чисел 129
Деление многоразрядных чисел 131
Операции с дробными числами 134
Генератор случайных чисел 136
Операции с числами в формате BCD 138
Отрицательные числа в МК 143
Глава 8. Программирование таймеров
147
8- и 16-разрядные таймеры 147
Формирование заданного значения частоты 149
Отсчет времени 153
Точная коррекция времени 158
Частотомер и периодомер 160
Частотомер 160
Периодомер 164
Управление динамической индикацией 167
LED-индикаторы и их подключение 168
Программирование динамической индикации 171
Таймеры в режиме PWM 174
Глава 9. Использование EEPROM
179
Еще раз о сохранности данных в EEPROM 179
Запись и чтение EEPROM 181
Хранение констант в EEPROM 183
Глава 10. Аналоговый компаратор и АЦП
187
Аналого-цифровые операции и их погрешности 187
Работа с аналоговым компаратором 190
Интегрирующий АЦП на компараторе 193
Принцип работы и расчетные формулы 194
Программа интегрирующего АЦП 198
Встроенный АЦП 201
Пример использования АЦП 204
Программа 206
Глава 11. Программирование SPI
215
Основные операции через SPI 215
Аппаратный вариант 216
Программный вариант 218
О разновидностях энергонезависимой памяти 219
Запись и чтение flash-памяти через SPI 221
Программа обмена с памятью 45DB011B по SPI 224
Запись и чтение flash-карт 225
Подключение карт ММС 225
Подача команд и инициализация ММС 228
Запись и чтение ММС 232
Глава 12. Интерфейс TWI (I2C) и его практическое использование
237
Базовый протокол I2C 237
Программная эмуляция протокола I2C 240
Запись данных во внешнюю энергонезависимую память 241
Режимы обмена с памятью AT24 241
Программа 243
Часы с интерфейсом I2C 247
Запись данных 255
Чтение данных 259
Глава 13. Программирование UART/USART
261
Инициализация UART 262
Передача и прием данных 263
Пример установки часов DS1307 с помощью UART 266
Приемы защиты от сбоев при коммуникации 271
Проверка на четность 271
Как организовать корректный обмен 273
Дополнительные возможности USART 274
Реализация интерфейсов RS-232 и RS-485 276
Преобразователи уровня для RS-232 280
RS-485 283
Глава 14. Режимы энергосбережения и сторожевой таймер
285
Программирование режима энергосбережения 286
Пример прибора с батарейным питанием 287
Доработка программы 289
Использование сторожевого таймера 293
ПРИЛОЖЕНИЯ 299
Приложение 1. Основные параметры микроконтроллеров Atmel AVR 301
Приложение 2. Команды Atmel AVR 309
Арифметические и логические команды 310
Команды операций с битами 311
Команды сравнения 312
Команды передачи управления 313
Команды безусловного перехода и вызова подпрограмм 313
Команды проверки-пропуска и команды условного перехода 314
Команды переноса данных 315
Команды управления системой 316
Приложение 3. Тексты программ 317
Демонстрационная программа обмена данными с flash-памятью 45DB011B по интерфейсу SPI 317
Процедуры обмена по интерфейсу I2C 321
Приложение 4. Обмен данными с персональным компьютером и отладка программ через UART 329
Работа с СОМ-портом в Delphi 329
Установка линии RTS в DOS и Windows 335
Программа COM2000 337
Отладка программ с помощью эмулятора терминала 339
Приложение 5. Словарь часто встречающихся аббревиатур и терминов 341
Литература 347
Предметный указатель 349