Оглавление Введение. Микроконтроллеры, их возникновение и применение 9
Предыстория микроконтроллеров 10
Электроника в греческом стиле 13
Почему AVR? 15
Что дальше? 17
Часть I. Общие принципы устройства и функционирования Atmel AVR
19
Глава 1. Обзор микроконтроллеров Atmel AVR
21
Семейства AVR 23
Особенности практического использования МК AVR 25
О потреблении 26
Некоторые особенности применения AVR в схемах 28
Глава 2. Общее устройство, организация памяти, тактирование, сброс
30
Память программ 30
Память данных (ОЗУ, SRAM) 32
Энергонезависимая память данных (EEPROM) 34
Способы тактирования 36
Сброс 38
Глава 3. Знакомство с периферийными устройствами
41
Порты ввода-вывода 42
Таймеры-счетчики 44
Аналогово-цифровой преобразователь 45
Последовательные порты 47
UART 48
Интерфейс SPI 52
Интерфейс TWI (I2C) 55
Универсальный последовательный интерфейс USI 56
Глава 4. Прерывания и режимы энергосбережения
58
Прерывания 58
Разновидности прерываний 62
Режимы энергосбережения 64
Часть II. Программирование микроконтроллеров Atmel AVR
67
Глава 5. Общие принципы программирования МК семейства AVR
69
Ассемблер или С? 69
Способы и средства программирования AVR 74
Редактор кода 74
Об AVR Studio 75
Обустройство ассемблера 77
Программаторы 78
О hex-файлах 83
Команды, инструкции и нотация AVR-ассемблера 86
Числа и выражения 87
Директивы и функции 89
Общая структура AVR-программы 93
Обработка прерываний 95
RESET 98
Простейшая программа 100
Задержка 102
Программа счетчика 104
Использование прерываний 107
Задержка по таймеру 108
Программа счетчика с использованием прерываний 109
О конфигурационных битах 112
Глава 6. Система команд AVR
116
Команды передачи управления и регистр SREG 116
Команды проверки-пропуска 123
Команды логических операций 126
Команды сдвига и операции с битами 127
Команды арифметических операций 129
Команды пересылки данных 131
Команды управления системой 136
Выполнение типовых процедур на ассемблере 137
О стеке, локальных и глобальных переменных 139
Глава 7. Арифметические операции
140
Стандартные арифметические операции 141
Умножение многоразрядных чисел 142
Деление многоразрядных чисел 145
Операции с дробными числами 148
Генератор случайных чисел 150
Операции с числами в формате BCD 153
Отрицательные числа в МК 158
Глава 8. Программирование таймеров
161
8- и 16-разрядные таймеры 161
Формирование заданного значения частоты 164
Отсчет времени 167
Точная коррекция времени 173
Частотомер и периодомер 176
Частотомер 176
Периодомер 180
Управление динамической индикацией 184
LED-индикаторы и их подключение 184
Программирование динамической индикации 189
Таймеры в режиме PWM 191
Глава 9. Использование EEPROM
198
Еще раз о сохранности данных в EEPROM 199
Запись и чтение EEPROM 200
Хранение констант в EEPROM 203
Глава 10. Аналоговый компаратор и АЦП
207
Аналого-цифровые операции и их погрешности 207
Работа с аналоговым компаратором 210
Интегрирующий АЦП на компараторе 214
Принцип работы и расчетные формулы 215
Программа интегрирующего АЦП 220
Встроенный АЦП 223
Пример использования АЦП 227
Программа 229
Глава 11. Программирование SPI
237
Основные операции через SPI 238
Аппаратный вариант 238
Программный вариант 240
О разновидностях энергонезависимой памяти 242
Запись и чтение flash-памяти через SPI 244
Программа обмена с памятью 45DB011B по SPI 247
Запись и чтение flash-карт 248
Подключение карт ММС 249
Подача команд и инициализация ММС 251
Запись и чтение ММС 256
Глава 12. Интерфейс TWI (I2C) и его практическое использование
261
Базовый протокол I2C 261
Программная эмуляция протокола I2C 264
Запись данных во внешнюю энергонезависимую память 266
Режимы обмена с памятью AT24 266
Программа 268
Часы с интерфейсом I2C 273
Запись данных 281
Чтение данных 286
Глава 13. Программирование UART/USART
288
Инициализация UART 289
Передача и прием данных 290
Пример установки часов DS1307 с помощью UART 294
Приемы защиты от сбоев при коммуникации 299
Проверка на четность 299
Как организовать корректный обмен 301
Дополнительные возможности USART 303
Реализация интерфейсов RS-232 и RS-485 305
Преобразователи уровня для RS-232 309
RS-485 313
Глава 14. Режимы энергосбережения и сторожевой таймер
315
Программирование режима энергосбережения 316
Пример прибора с батарейным питанием 317
Доработка программы 320
Использование сторожевого таймера 324
Приложения 331
Приложение 1
. Основные параметры микроконтроллеров Atmel AVR 333
Приложение 2. Команды Atmel AVR 341
Арифметические и логические команды 342
Команды операций с битами 343
Команды сравнения 345
Команды передачи управления 345
Команды безусловного перехода и вызова подпрограмм 346
Команды проверка-пропуск и команды условного перехода 346
Команды переноса данных 348
Команды управления системой 349
Приложение 3. Тексты программ 350
Демонстрационная программа обмена данными с flash-памятью 45DB011B по интерфейсу SPI 350
Процедуры обмена по интерфейсу I2C 355
Приложение 4. Обмен данными с персональным компьютером и отладка программ через UART 362
Работа с СОМ-портом в Delphi 363
Установка линии RTS в DOS и Windows 369
Программа COM2000 371
Отладка программ с помощью эмулятора терминала 373
Приложение 5. Словарь часто встречающихся аббревиатур и терминов 375
Литература 381
Предметный указатель 383