Разработка встроенных систем с помощью микроконтроллеров PIC. Уилмсхерст Т. 2008 г.Благодаря полезным примерам и иллюстрациям, эта книга дает глубокие познания в сфере проектирования систем с помощью микроконтроллеров PIC, а также - программирования этих устройств на ассемблере и Си.

Подробно рассмотрены микроконтроллеры 16F84A. 16F873A и 18F242. Даны примеры реальных проектов, включая модель робота, выполненною в виде транспортного средства с автономным управлением. Дополнительно рассматриваются такие вопросы повышенной сложности, как применение устройств в сетевой среде и построение операционных систем реального времени.

Эта книга посвящена встроенным системам, реализованным, преимущественно, с помощью трех микроконтроллеров PIC. Начав с самого простого уровня подготовки, целью этой книги является превращение читателя в независимого и компетентного специалиста в сфере встроенных систем и доведения его до такого уровня, на котором он, читатель, будет иметь возможность начать профессиональную практику в мире встроенных систем.

Книга достигает своих целей путем развития знаний и навыков в сфере современных встроенных систем - как в отношении аппаратной части, так и применительно к программному обеспечению. С аппаратной точки зрения книга включает в себя глубокое изучение как устройства самого микроконтроллера, так и цепей и преобразователей, с которыми он должен взаимодействовать.

С точки зрения программного обеспечения, будет рассмотрено программирование на С и ассемблере. Кульминацией учебного курса станет изучение, а затем применение операционных систем реального времени, которые олицетворяют наиболее изящный способ программирования встроенных систем.

Год выпуска: 2008
Автор: Уилмсхерст Т.
Жанр:
Издательство: К.: "МК-Пресс", СПб:. "КОРОНА-ВЕК"
Формат: DjVu
Размер: 14 МБ
Качество: Отсканированные страницы
Количество страниц: 544

СОДЕРЖАНИЕ

ЧАСТЬ 1. ВВЕДЕНИЕ В ПОНЯТИЕ"ВСТРОЕННЫЕ СИСТЕМЫ"

Глава 1. Миниатюрные компьютеры, невидимый контроль 22
1.1. Встроенные системы в сегодняшнем мире 22
1.1.1. Что такое встроенная система? 22
1.2. Несколько примеров встроенных систем 23
1.2.1. Холодильник 23
1.2.2. Механизм автомобильной дверцы 24
1.2.3. Электронный "пинг-понг" 24
1.2.4. Робокар Derbot 25
1.3. Основы компьютеров 27
1.3.1. Элементы компьютера 27
1.3.2. Системы команд - CISC и RISC 28
1.3.3. Типы памяти 28
1.3.4. Организация памяти 28
1.4. Микропроцессоры и микроконтроллеры 29
1.4.1. Микропроцессоры 29
1.4.2. Микроконтроллеры 30
1.4.3. Семейства микроконтроллеров 30
1.4.4. Корпуса и внешний вид микроконтроллеров 32
1.5. Компания Microchip и микроконтроллер PIC 33
1.5.1. История 33
1.5.2. Микроконтроллеры PIC сегодня 33
1.6. Знакомство с микроконтроллерами PIC на примере семейства 12 35
1.6.1. Архитектура микроконтроллера 12F508 36
1.7. Микроконтроллер Freescale 38
Резюме 38

ЧАСТЬ 2. СИСТЕМЫ С МИНИМАЛЬНОЙ ФУНКЦИОНАЛЬНОСТЬЮ И PIC® 16F84A 40

Глава 2. Знакомство с семейством PIC® 16 и микроконтроллером 16F84A 41
2.1. Семейство PIC 16 - общее представление 41
2.1.1. Обзор семейства 41
2.1.2. Микроконтроллер 16F84A 43
2.1.3. Предостережение об обновлениях 43
2.2. Обзор архитектуры микроконтроллера 16F84A 43
2.2.1. Регистр состояния 45
2.3. Обзор технологий памяти 46
2.3.1. Статическая память RAM (SRAM) 46
2.3.2. Память EPROM 46
2.3.3. Память EEPROM 47
2.3.4. Флэш-память 47
2.4. Память микроконтроллера 16F84A 47
2.4.1. Память программ микроконтроллера I6F84A 48
2.4.2. Память данных и регистры специального назначения микроконтроллера I6F84A ....48
2.4.3. Слово конфигурации 50
2.4.4. Память EEPROM 50
2.5. Некоторые вопросы синхронизации 52
2.5.1. Тактовый генератор и командный цикл 52
2.5.2. Конвейеризация 53
2.6. Портами питания и спрос 53
2.7. Микроконтроллер Atmel АТ89С2051 55
2.8. Встроенная схема сброса микроконтроллера 16F84A 56
Резюме 58

Глава 3. Параллельные порты, электропитание и генераторы синхроимпульсов 59
3.1. Основная идея - параллельный ввод-вывод 60
3.2. Технические вызовы, связанные с параллельным вводом-выводом 60
3.2.1. Формирование параллельного интерфейса 60
3.2.2. Электрические характеристики порта 63
3.2.3. Некоторые специальные случаи 64
3.3. Подключение к параллельному порту 66
3.3.1. Переключатели 66
3.3.2. Светодиоды 67
3.4. Параллельные порты PIC 16F84A 68
3.4.1. Порт В микроконтроллера 16F84A 69
3.4.2. Порт А микроконтроллера 16F84A 70
3.4.3. Выходные характеристики порта 71
3.5. Генератор синхроимпульсов 71
3.5.1. Типы синхрогенераторов 73
3.5.2. Практические соображения в отношении генераторов синхросигналов 74
3.5.3. Генератор синхроимпульсов в 16F84A 74
3.6. Электропитание 75
3.6.1. Потребность в электроэнергии и ее источниках 75
3.6.2. Эксплуатационные условия 16F84A 76
3.7. Аппаратный проект электронной игры в пинг-понг 78
Резюме 78

Глава 4. Начнем программировать - введение в Ассемблер 79
4.1. Основная идея - что программы делают, и как мы их создаем 80
4.1.1. Проблема программирования и компромисс, связанный с использованием языка Ассемблера 80
4.1.2. Процесс написания программы на Ассемблере 81
4.1.3. Процесс разработки программы 82
4.2. Набор команд семейства PIC 16 и немного больше об арифметико-логическом устройстве (АЛУ) 83
4.2.1. Подробнее об АЛУ семейства PIC 16 83
4.2.2. Набор команд семейства PIC 16 - введение 84
4.3. Ассемблеры и формат программы на Ассемблере 85
4.3.1. Введение в Ассемблеры, а также знакомство с Ассемблером Microchip MPASM™ 85
4.3.2. Формат программы на языке Ассемблера 85
4.3.3. Директивы Ассемблера 86
4.3.4. Представление чисел 86
4.4. Создание простых программ 87
4.4.1. Простая программа перемещения данных 87
4.5. Настройка среды разработки 90
4.5.1. Введение в MPLAB 90
4.5.2. Элементы MPLAB 90
4.5.3. Структура файла MPLAB 91
4.6. Вводное занятие по MPLAB 91
4.6.1. Создание проекта 92
4.6.2. Ввод исходного текста программы 93
4.6.3. Ассемблирование проекта 94
4.7. Введение в имитацию 95
4.7.1. Приступаем к занятию 95
4.7.2. Генерирование входных сигналов порта 95
4.7.3. Контроль параметров микроконтроллера 96
4.7.4. Сброс и выполнение программы 96
4.8. Загрузка программы в микроконтроллер 98
4.9. Что делают другие - краткое сравнение наборов команд CISC и RISC 100
4.10. Двигаемся дальше - формат набора команд семейства PIC 16 101
Резюме 102

Глава 5. Компоновка программ, написанных на языке Ассемблера 103
5.1. Основная идея - построение структурированных программ 103
5.1.1. Блок-схемы 103
5.1.2. Диаграммы состояния 105
5.2. Управление последовательностью выполнения команд - переходы и подпрограммы 106
5.2.1. Условные переходы и работа с битами 106
5.2.2. Подпрограммы и стек 108
5.3. Генерирование временных задержек и интервалов 109
5.4. Работа с данными 111
5.4.1. Косвенная адресация и регистр выбора файла 111
5.4.2. Поисковые таблицы 1 '2
5.4.3. Пример программы с временной задержкой и поисковой таблицей 113
5.5. Введение в логические команды 115
5.6. Введение в арифметические команды и флаг переноса 116
5.6.1. Использование команд сложения 116
5.6.2. Использование команд вычитания 116
5.6.3. Пример арифметической программы 117
5.6.4. Использование косвенной адресации для сохранения ряда Фибоначчи 119
5.7. Приручение сложности Ассемблера 120
5.7.1. Включение файлов 121
5.7.2. Макроопределения 121
5.7.3. Специальные команды MPLAB 123
5.8. Дополнительные возможности использования имитатора MPLAB 123
5.8.1. Контрольные точки 124
5.8.2. Таймер с остановом 124
5.8.3. Трассирование 126
5.9. Программа электронного пинг-понга 127
5.9.1. Структура программы для электронного пинг-понга 127
5.9.2. Более подробное рассмотрение программы электронного пинг-понга 129
5.10. Выполнение программы электронного пинг-понга на имитаторе - учебное упражнение 130
5.10.1. Установка входных стимулирующих сигналов 130
5.10.2. Настройка окна Watch (Наблюдение) 131
5.10.3. Пошаговое выполнение программы 131
5.10.4. Анимация 131
5.10.5. Пуск 131
5.10.6. Контрольные точки 132
5.10.7. Таймер с остановом 132
5.10.8. Трассирование 132
5.10.9. Отладка программы в целом 132
5.11. Что делают другие - графические имитаторы 132
Резюме 133

Глава 6. Работа со временем: прерывания, счетчики и таймеры 135
6.1. Основная идея - прерывания 136
6.1.1. Структуры прерываний 136
6.1.2. Структура прерываний 16F84A 137
6.1.3. Реакция ЦП на прерывание 137
6.2. Работа с прерываниями 139
6.2.1. Программирование одного прерывания 139
6.2.2. Двигаемся к множественным прерываниям - идентификация источника 141
6.2.3. Не допускайте, чтобы прерывания разрушили вашу программу - правило № 1: сохраняйте контекст 141
6.2.4. Не допускайте, чтобы прерывания разрушили вашу программу - правило № 2: определите критические области и используйте маскирование 144
6.3. Основная идея - счетчики и таймеры 146
6.3.1. Цифровые счетчики 146
6.3.2. Счетчик в роли таймера 146
6.3.3. Модуль таймера 0 в 16F84A 148
6.4. Применение таймера 0 в 16F84A на примере электронного пинг-понга 150
6.4.1. Подсчет объектов или событий 150
6.4.2. Временные задержки, сгенерированные аппаратными средствами 151
6.5. Сторожевой таймер 153
6.6. Режим бездействия 153
6.7. Что делают другие 154
6.8. Двигаемся дальше - время ожидания прерывания 155
Резюме 156

ЧАСТЬ 3. БОЛЬШИЕ СИСТЕМЫ И PIC® 16F873A 157

Глава 7. Большие системы и PIC® 16F873A 158
7.1. Основная идея - PIC 16F87XA 159
7.2. Блок-схема 16F873A и его ЦП 159
7.2.1. Обзор ЦП и ядра 159
7.2.2. Краткий обзор памяти 160
7.2.3. Краткий обзор периферийных устройств 162
7.3. Память 16F873A и карты памяти 163
7.3.1. Память программ 16F873A 163
7.3.2. Память данных 16F873A и специальные функциональные регистры 165
7.3.3. Слово конфигурации 165
7.4. "Специальные" операции с памятью 165
7.4.1. Осуществление доступа к ЭСППЗУ и памяти программ 167
7.4.2. Внутрисхемное последовательное программирование (ICSP™) 168
7.5. Прерывания в 16F873A 170
7.5.1. Структура прерываний 170
7.5.2. Регистры прерываний 170
7.5.3. Идентификация прерываний сохранение контекста 172
7.6. Генератор в 16F873A, сброс и электропитание 172
7.6.1. Генератор синхроимпульсов 172
7.6.2. Сброс и электропитание 172
7.7. Параллельные порты в 16F873A 173
7.7.1. Порт А в 16F873A 173
7.7.2 . Порт В в 16F873A 175
7.7.3. Порт С в 16F873A 175
7.8. Инструментальные средства тестирования, диагностики и ввода в эксплуатацию.. 176
7.8.1. Вызов, связанный с тестированием встроенной системы 177
7.8.2. Осциллографы и логические анализаторы 179
7.8.3. Внутрисхемные эмуляторы 181
7.8.4. Встроенные отладчики 181
7.9. Внутрисхемный отладчик Microchip (ICI) 2) 182
7.10. Применение 16F873A: ЛУСМ Dcrbot 183
7.10.1. Источник электропитания, генератор и сброс 183
7.10.2. Использование параллельных портов 184
7.10.3. Сборка аппаратных средств 186
7.11. Выгрузка, тестирование и выполнение простой программы с использованием ICD 2 186
7.11.1. Первая программа для Derbot 186
7.11.2. Применение ICD 2 189
7.11.3. Установка битов конфигурации внутри программы 190
7.12. Двигаемся дальше - 16F874A/16F877A: порты D и Е 192
Резюме 194

Глава 8. Человеко-машинные и физические интерфейсы 195
8.1. Основная идея человеко-машинного интерфейса 196
8.2. От ключей к малым клавиатурам 197
8.2.1. Малая клавиатура 198
8.2.2. Пример проектной разработки: использование малой клавиатуры в ПУ АУСМ Derbot 199
8.3. Светодиодные индикаторы 204
8.3.1. Светодиодные матрицы: семисегментный светодиодный индикатор 204
8.3.2. Пример разработки: семисегментный индикатор ПУ АУСМ Derbot 205
8.4. ЖК-индикаторы 209
8.4.1. Микросхема управления ЖК-индикатором HD44780 и ее производные 210
8.4.2. Пример разработки: использование ЖК-индикатора в ПУ АУСМ Derbot 212
8.5. Основная идея - формирование интерфейса с физическим миром 214
8.6. Некоторые простые датчики 214
8.6.1. Микропереключатель 214
8.6.2. Фотосопрогивления 215
8.6.3. Оптическое обнаружение объектов 215
8.6.4. Использование оптического датчика в качестве датчика поворота 217
8.6.5. Ультразвуковой датчик объектов 217
8.7. Больше о дискретных входах 218
8.7.1. Входные характеристики 16F873A 218
8.7.2. Обеспечение корректных логических уровней и зашиты входных цепей 219
8.7.3. Устранение дребезга контактов переключателя 222
8.8. Исполнительные механизмы: электромоторы и сервоприводы 224
8.8.1. Электродвигатели постоянного тока и шаговые электродвигатели 224
8.8.2. Угловое позиционирование: сервопривод 225
8.9. Организация интерфейса с исполнительными механизмами 226
8.9.1. Простое переключение постоянного тока 226
8.9.2. Простое выполнение переключений в АУСМ Derbot 228
8.9.3. Реверсируемое переключение: Н-образный мост 229
8.9.4. Переключение электромоторов в АУСМ Derbot 230
8.10. Сборка АУСМ Derbot 231
8.11. Применение датчиков и исполнительных механизмов - программа "слепой" навигации АУСМ Derbot 231
Резюме 234

Глава 9. Дальнейшее исследование вопросов синхронизации 235
9.1. Основная идея - углубленное исследование вопросов, связанных со счетом и временной привязкой 236
9.2. Таймер 0 и таймер 1 в 16F87XA 236
9.2.1. Таймер 0 236
9.2.2. Таймер 1 236
9.2.3. Применение таймеров 0 и 1 в качестве счетчиков для замера пройденного расстояния в АУСМ Derbot 238
9.2.4. Использование таймеров 0 и 1 для генерирования повторяющихся прерываний 241
9.3. Таймер 2 в 16F87XA, компаратор и регистр PR2 243
9.3.1. Таймер 2 243
9.3.2. Регистр PR2, компаратор и постделитель 244
9.4. Модули сбора данпых/сравнения/ШИМ (ССР-модули) 245
9.4.1. Краткий обзор вопросов сбора данных/сравнения/ШИМ 245
9.4.2. Режим сбора данных 245
9.4.3. Режим сравнения 246
9.5. Широтно-импульспая модуляция (ШИМ) 247
9.5.1. Принцип ШИМ 247
9.5.2. Генерирование ШИМ-сигналов аппаратными средствами - 16F87XA ШИМ 249
9.5.3. Применение ШИМ для управления электромоторами в АУСМ Derbot 251
9.6. Программная генерация сигналов ШИМ 254
9.6.1. Пример программного генерирования ШИМ 254
9.6.2. Дополнительные директивы Ассемблера для распределения памяти и осуществления ветвления программ 258
9.7. Использование ШИМ для цифро-аналогового преобразования 259
9.7.1. Пример использования ШИМ для цифро-аналогового преобразования 259
9.8. Измерение частоты 262
9.8.1. Принцип измерения частоты 262
9.8.2. Измерения частоты (скорости) в АУСМ Derbot 262
9.9. Управление скоростью в применении к АУСМ Derbot 265
9.10. Когда нет таймера 268
9.11. Режим бездействия 270
9.12. Куда двигаться дальше? 271
9.13. Сборка АУСМ Derbot 271
Резюме 271

Глава 10. Начинаем изучать последовательный информационный обмен 273
10.1. Введение в последовательный информационный обмен: основная идея 274
10.2. Простые последовательные каналы связи - синхронный информационный обмен 275
10.2.1. Основы синхронной связи 275
10.2.2. Реализация синхронного последовательного ввода-вывода в микроконтроллере ..276
10.2.3. Microwire и SPI (Последовательный периферийный интерфейс) 276
10.2.4. Введение множественных узлов 277
10.3. Модуль главного синхронного последовательного порта (MSSP) 16F87XA в режиме SPI 278
10.3.1. Краткий обзор порта 278
10.3.2. Конфигурация порта 279 10.3.3. Установка тактовом частоты 281
10.3.4. Управление передачей данных 282
10.4. Простой пример использования SPI 282
10.5. Ограничения, характерные для Microwire, SPI и припой синхронной последовательной передачи данных 284
10.6. Расширение возможностей синхронного последовательного канала связи, шина 12С 285
10.6.1. Основные характеристики 12С и физические соединения 285
10.6.2. Нагрузочный резистор 286
10.6.3. Характеристики сигналов 12С 286
10.7. MSSP, сконфигурированный для 12С 287
10.7.1. Регистры MSSP для режима 12С и их первичное использование 287
10.7.2. MSSP в режиме подчиненного устройства 12С 290
10.7.3. MSSP в режиме ведущего устройства 12С 292
10.8. Применение 12С в ЛУСМ Derbot 294
10.8.1. Ручной ПУ Derbol как узел последовательной линии связи 294
10.8.2. ЛУСМ в качестве ведущего устройства 12С 295
10.8.3. Ручной ПУ как подчиненное устройство 12С 299
10.8.4. Практическая оценка программ информационного
обмена через ГС для ЛУСМ Derbot 301
10.9. Оценка синхронного последовательного информационного
обмена и введение в асинхронный информационный обмен 302
10.9.1. Принципы асинхронного информационного обмена 302
10.9.2. Синхронизация последовательных данных без приходящей тактовой частоты 303
10.10. Адресуемый универсальный синхронно-асинхронный
приемопередатчик (USART) в 16F87XA 304
10.10.1. Обзор порта ч 304
10.10.2. Асинхронный передатчик USART 305
10.10.3. Генератор-контроллер скорости информационного обмена USART 307
10.10.4. Асинхронный приемник USART 307
10.10.5. Пример асинхронного информационного обмена 309
10.10.6. Использование распознавания адреса в режиме приема USART 311
10.10.7. USART в синхронном режиме 311
10.11. Реализация последовательной связи без использования последовательного порта - "битовые серии" 311
10.12. Сборка АУСМ Derbot 312
Резюме 312

Глава 11. Сбор и манипулирование данными 313
11.1. Основная идея - аналоговые и дискретные величины, их сбор и использование.. 313
11.2. Система сбора данных 314
11.2.1. Аналого-цифровой преобразователь 315
11.2.2. Кондиционирование сигналов - усиление и фильтрация 317
11.2.3. Аналоговый мультиплексор 317
11.2.4. Выборка и удержание сигнала, а также время отбора сигнала 318
11.2.5. Синхронизация и управление от микропроцессора 319
11.2.6. Сбор данных в микроконтроллерной среде 320
11.3. Модуль АЦП в PIC® 16F87XA 320
11.3.1. Краткий обзор и блок-схема 320
11.3.2. Управление АЦП 321
11.3.3. Аналоговая модель входа 325
11.3.4. Расчет времени отбора сигнала 326
11.3.5. Повторные преобразования 327
11.3.6. Компромисс между скоростью преобразования и разрешением 327
11.4. Использование АЦП в программе замера освещенности АУСМ Derbot 328
11.4.1. Конфигурирование АЦП 329
11.4.2. Время отбора сигнала 329
11.4.3. Преобразование данных 330
11.5. Некоторые простые методы манипулирования данными 330
I 1.5.1. Арифметика с фиксированной и плавающей точкой 330
11.5.2. Преобразование из двоичного представления в двоично-кодированное десятичное представление 331
11.5.3. Умножение 332
11.5.4. Масштабирование и пример программы замера освещенности для АУСМ Derbot.. 333
11.5.5. Использование для масштабирования опорного напряжения 334
11.6. Программа поиска источника света для АУСМ Derbot 335
11.7. Модуль компаратора " 337
11.7.1. Обзор работы компаратора 337
11.7.2. Компаратор в 16F87XA и опорное напряжение 337
11.8. Применение схем Derbot для измерительных целей 338
11.8.1. Электронная измерительная рулетка 338
11.8.2. Измеритель освещенности 340
11.8.3. Вольтметр 340
11.8.4. Другие измерительные системы 340
11.9. Конфигурирование АУСМ Derbot в качестве свегоноискового робота 341
Резюме 341

ЧАСТЬ 4. БОЛЕЕ СЛОЖНЫЕ СИСТЕМЫ И PIC® 18FXX2 342

Глава 12. Более сложные системы и PIC® 18FXX2 343
12.1. Основная идея устройств семейства Р1С 18 и 18FXX2 344
12.2. Блок-схема 18F2X2 и регисгр состояния 345
12.3. Набор команд семейства PIC 18 348
12.3.1. Команды, которые не изменились 353
12.3.2. Команды, которые были доработаны 353
12.3.3. Новые варианты команд 353
12.3.4. Новые команды 353
12.4. Память данных и специальные функциональные регистры 354
12.4.1. Карта памяти данных 354
12.4.2. ОЗУ доступа 354
12.4.3. Косвенная адресация и доступ к таблицам, расположенным в памяти данных 355
12.5. Память программ 356
12.5.1. Карта памяти программ 357
12.5.2. Счетчик команд 357
12.5.3. Переход от устройств семейства 16 к устройствам семейства 18 и команда вычисляемого безусловного перехода goto 357
12.5.4. Регистры конфигурации 358
12.6. Стеки 360
12.6.1. Автоматическая работа стека 360
12.6.2. Программный доступ к стеку 360
12.6.3. Быстрый регистровый стек 360
12.7. Прерывания 361
12.7.1. Обзор структуры прерываний 361
12.7.2. Источники прерываний, их разрешение и установка приоритетов 361
12.7.3. Общее разрешение установки приоритетов прерываний 363
12.7.4. Глобальное разрешение 363
12.7.5. Другие аспекты логики прерываний 364
12.7.6. Регистры прерываний 364
12.7.7. Сохранение контекста при использовании прерываний 364
12.8. Электропитание и приведение в исходное состояние 365
12.8.1. Электропитание 365
12.8.2. Подача электропитания и сброс 367
12.9. 11 IT и чинки тактовой частоты 368
12.9.1. Режимы работы тактового генератора: LP, XT, HS и RC 370
12.9.2. Режимы работы тактового генератора: ЕС, ЕСЮ и RCIO 370
12.9.3. Режим HS + PLL работы тактового генератора 370
12.9.4. Переключение источника тактовой частоты 370
12.10. Введение в программирование 18F242 371
12.10.1. Использование MPLAB IDE для семейства 18 371
12.10.2. Программа расчета ряда Фибоначчи 371
Резюме 374

Глава 13. Периферийные устройства в PIC® 18FXX2 375
13.1. Основная идея периферийных устройств 18FXX2 375
13.2. Параллельные порты 376
13.2.1. Порт А в 18FXX2 376
13.2.2. Порт В в 18FXX2 377
13.2.3. Порт С в 18FXX2 378
13.2.4. Параллельный подчиненный порт 378
13.3. Таймеры 378
13.3.1. Таймер 0 378
13.3.2. Таймер 1 380
13.3.3. Таймер 2 380
13.3.4. Таймер 3 380
13.3.5. Сторожевой таймер 382
13.4. Модуль сбора данных/срависиия/ШИМ (ССР) 382
13.4.1. Регистры управления 382
13.4.2. Режим сбора данных .-. 383
13.4.3. Режим сравнения 383
13.4.4. Широтно-импульсная модуляция (ШИМ) 385
13.5. Последовательные порты 385
13.5.1. MSSP в режиме SPI 385
13.5.2. MSSP в режиме 12С 385
13.5.3. USART 385
13.6. Аналого-цифровой преобразователь (АЦП) 386
13.7. Обнаружение падения напряжения 386
13.8. Применение усгройств семейства 18 в АУСМ Derbot-18 387
13.9. 18F2420 и расширенный набор команд 388
13.9.1. Нановаттная технология 389
13.9.2. Расширенный набор команд 389
13.9.3. Расширенные периферийные устройства 390
Резюме 390

Глава 14. Введение в язык С 391
14.1. Основная идея - почему С? 391
14.2. Введение в С 392
14.2.1. Немного истории 392
14.2.2. Первая профамма 392
14.2.3. Трассировка программы - объявления, инструкции, комментарии и пространство .. 393
14.2.4. Зарезервированные слова языка С 395
14.2.5. Функции С 395
14.2.6. Типы и хранение данных 396
14.2.7. Операции С 397
14.2.8. Контроль за ходом выполнения программы, зарезервированное слово while 397
14.2.9. Препроцессор С и его директивы 398
14.2.10. Использование библиотек, Стандартная библиотека 398
14.3. Компиляция программ на С 398
14.4. Компилятор MPLAB С18 399
14.4.1. Основы 400
14.4.2. Арифметические операции 400
14.5. Учебник ПОС18 400
14.5.1. Компоновщик и его сценарии 400
14.5.2. Заголовок для компоновки и библиотечные файлы 401
14.5.3. Компоновка проекта 402
14.5.4. Файлы проекта 403
14.6. Моделирование программы на С 403
14.7. Второй пример программы на языке С - программа Фибоначчи 404
14.7.1. Предварительные сведения о программе - больше об объявлении переменных ..406
14.7.2. Конструкция do-while 406
14.7.3. Метки и зарезервированное слово goto 406
14.7.4. Моделирование программы Фибоначчи 407
14.8. Библиотеки MPLAB С18 407
14.8.1. Функции, предоставляющие технические средства для внешних устройств 407
14.8.2. Функции, предоставляющие программные средства для внешних устройств 407
14.8.3. Библиотека общих функций для программного обеспечения 408
14.8.4. Математическая библиотека 409
14.9. Дальнейшее чтение '. 410
Резюме 410

Глава 15. Язык С и встроенная среда 411
15.1. Главная идея - перенос С во встроенную среду 411
15.2. Настройка и управление значениями разрядов 411
15.2.1. Управление отдельными разрядами 413
15.2.2. Конструкции условного перехода if и if-else 413
15.2.3. Установка разрядов конфигурации 414
15.2.4. Моделирование и запуск примера программы 414
15.3. Больше о функциях 415
15.3.1. Прототип функции 415
15.3.2. Определение функции 416
15.3.3. Вызовы функции и передача данных 416
15.3.4. Библиотечные функции задержки и DelaylOKTCYx О 416
15.4. Больше о переходах и циклах 417
15.4.1. Использование зарезервированного слова break 417
15.4.2. Использование зарезервированного слова for 418
15.5. Использование таймера и периферийных устройств ШИМ 418
15.5.1. Использование периферийных таймеров 421
15.5.2. Использование ШИМ 422
15.5.3. Цикл главной программы 423
Резюме 423

Глава 16. Получение и использование данных с помощью С 424
16.1. Главная идея - использование С для манипуляции данными 424
16.2. Использование АЦП в 18FXX2 424
16.2.1. Структура программы поиска света 429
16.2.2. Использование АЦП 429
16.2.3. Дальнейшее использование if-else 431
16.2.4. Моделирование программы поиска света 431
16.3. Указатели, массивы и строки 432
16.3.1. Указатели 432
16.3.2. Массивы 433
16.3.3. Использование указателей вместе с массивами 433
16.3.4. Строки 434
16.3.5. Пример программы: использование указателей, массивов и строк 434
16.3.6. Несколько слов об использовании условия while 435
16.3.7. Моделирование примера программы 436
16.4. Использование внешних устройств 12С 437
16.4.1. Пример программы ГС 438
16.4.2. Использование операторов ++ и -- 440
16.5. Форматирование данных для вывода на дисплей 440
16.5.1. Обзор примера программы 440
16.5.2. Использование библиотечных функций для форматирования данных 442
16.5.3. Характеристика программы 443
Резюме 443

Глава 17. Более глубокие знании языка С и его среды окружения 444
17.1. Основная идея - более глубокие знания С и его среды 444
17.2. Ассемблерные вставки 445
17.3. Контроль за выделением памяти 446
17.3.1. Директивы распределения памяти 446
17.3.2. Установка машинных слов конфигурации 447
17.4. Прерывания 448
17.4.1. Программа обслуживания прерываний 448
17.4.2. Расположение и обозначение программ обслуживания прерываний 448
17.5. Пример прерывания на переполнение - мигание евстодиодов на Derbot 449
17.5.1. Использование таймера 0 .- 450
17.5.2. Использование прерываний и работа программы обслуживания прерываний 451
17.5.3. Моделирование программы мигания светодиодов 451
17.6. Классы памяти и их применение 453
17.6.1. Классы памяти 453
17.6.2. Область действия 453
17.6.3. Срок действия 454
17.6.4. Связь 454
17.6.5. Работа с памятью семейства 18 455
17.6.6. Примеры классов памяти 455
17.7. Код начальной загрузки: c018i . с 456
17.7.1. Файлы начальной загрузки О 8 456
17.7.2. Структура программы сО 18i . с 456
17.7.3. Моделирование c018i . с 457
17.8. Структуры, объединения и битовые поля 459
17.9. Заголовочные файлы, специфичные для процессора 459
17.9.1. SFR определения 459
17.9.2. Утилиты ассемблера в заголовочном файле 460
17.10. Идем дальше - компоновщик MPLAB и .map-файл 461
17.10.1. Что делает компоновщик 461
17.10.2. Сценарий компоновщика 461
17.10.3. Файл -тар 463
Резюме 464

Глава 18. Многозадачность и операционная система реального времени 465
18.1. Основные идеи - вызовы, связанные с многозадачностью и режимом реального времени 465
18.1.1. Многозадачный режим - задачи, приоритеты и сроки выполнения 466
18.1.2. Итак, что же такое "режим реального времени"? 467
18.2. Обеспечение мультизадачное™ при использовании последовательного программирования 467
18.2.1. Оценка основного цикла 468
18.2.2. Время-ориентированные и событийно-ориентированные задачи 468
18.2.3. Использование прерываний с приоритетами - структура oпередний план/фон"..469
18.2.4. Введение тактирующих сигналов времени с целью синхронизации программной активности 469
18.2.5. Универсальная операционная система 470
18.2.6. Пределы возможностей последовательного программирования в случае организации многозадачного режима 471
18.3. Операционная система реального времени (ОСРВ) 471
18.4. Диспетчеризация и диспетчер 472
18.4.1. Циклическая диспетчеризация 472
18.4.2. Карусельная диспетчеризация и переключение контекста 472
18.4.3. Состояния задач 473
18.4.4. Диспетчеризация с предварительной выгрузкой, использующая приоритеты 474
18.4.5. Коллективная диспетчеризация 475
18.4.6. Роль прерываний в диспетчеризации 476
18.5. Разработка задач 476
18.5.1. Определение задач 476
18.5.2. Программирование задач и установка приоритете 477
18.6. Защита данных и ресурсов - семафор 477
18.7. Куда мы будем двигаться дальше? 478
Резюме 478

Глава 19. Операционная система реального времени Salvo™ 479
19.1. Основная идея: Salvo - пример ОСРВ 479
19.1.1. Основные свойства Salvo 480
19.1.2. Версии Salvo и ссылки на источники 480
19.2. Конфигурирование и использование ОСРВ Salvo 481
19.2.1. Компоновка приложения Salvo - библиотечная компоновка 481
19.2.2. Библиотеки Salvo 481
19.2.3. Использование Salvo с компилятором С18 482
19.3. Написание программ для Salvo 482
19.3.1. Инициализация и диспетчеризация 483
19.3.2. Написание задач для Salvo 484
19.4. Первый пример программы для Salvo 484
19.4.1. Обзор программы и функция main 486
19.4.2. Задачи и диспетчеризация 486
19.4.3. Создание проекта Salvo/C18 487
19.4.4. Настройка файла конфигурации 487
19.4.5. Компоновка примера Salvo 488
19.4.6. Имитация выполнения программы Salvo 490
19.5. Использование прерываний, задержек и семафоров при работе с Salvo 490
19.5.1. Пример программы, использующей тактирующие сигналы времени, основанные на прерываниях 490
19.5.2. Выбор библиотеки и конфигурирование 493
19.5.3. Использование прерываний и формирование тактирующих сигналов времени 493
19.5.4. Использование временных задержек 495
19.5.5. Использование двухпозицнонного семафора 495
19.5.6. Имитация выполнения программы 497
19.5.7. Выполнение программы 498
19.6. Использование сообщений Salvo и повышение сложности ОСРВ 498
19.7. Пример программы с сообщениями 500
19.7.1. Выбор библиотеки и конфигурации 504
19.7.2. Задача USncLTask 505
19.7.3. Задача Motor_Task 505
19.7.4. Использование сообщений 505
19.7.5. Использование прерываний и подпрограмм обслуживания прерываний 506
19.7.6. Имитация или запуск программы 508
19.8. Накладные издержки ОСРВ 508
Резюме 509

ЧАСТЬ 5. ВЗАИМНЫЕ СВЯЗИ И СЕТИ 510

Глава 20. Взаимные связи и сети 511
20.1. Основная идея: сети и связь 511
20.1.1. Мир протоколов 512
20.2. Инфракрасная связь 513
20.2.1. IrDA и микроконтроллеры PIC 514
20.3. Радиосвязь .*. 514
20.3.1. Блутус (Bluetooth) 514
20.3.2. Стандарт Zigbee 515
20.3.3. Zigbee и микроконтроллеры PIC 516
20.4. Локальная управляющая сеть (CAN) и локальная сеть взаимосоединсний (UN)...516
20.4.1. Локальная управляющая сеть (CAN) 516
20.4.2. CAN и микроконтроллер Р1С 517
20.4.3. Локальная сеть взаимосоединений (LIN) 518
20.4.4. LIN и микроконтроллер PIC 520
20.5. Встроенные системы и Internet 521
20.5.1. Подключение к Internet при помощи микроконтроллера PIC 521
20.6. Заключение 521
Резюме 522

Приложение 1. Набор команд микроконтроллеров PIC® 16 523
Приложение 2. Электронный настольный теннис 524
Приложение 3. Подробности аппаратной реализации АУСМ Derbot 529
Приложение 4. Основные сведения об АУСМ Derbot 533
Приложение 5. Набор команд (не расширенный) микроконтроллеров PIC® 18 537
Приложение 6. Основы языка С 540

 


 

Скачать: Разработка встроенных систем с помощью микроконтроллеров PIC. Уилмсхерст Т. 2008 г.