- Программирование на языке C для AVR и PIC микроконтроллеров
- Год: 2011
Автор: Ю.А. Шпак
Издательство: К.: "МК-Пресс", СПб.: "КОРОНА-ВЕК"
Количество страниц: 544В книге рассмотрено программирование на языке С микроконтроллеров AVR с использованием компиляторов WinAVR и CodeVisionAVR, а также микроконтроллеров PIC с использованием компиляторов CCS-PICC, mikroC и СЗО/32. Кратко рассмотрена архитектура и аппаратное обеспечение как традиционных восьмиразрядных микроконтроллеров AVR и PIC, так и новых семейств ATxmega, PIC24 и PIC32. Дано описание средств программной разработки, включая эмуляцию программ с помощью AVR Studio и MPLAB. Кратко рассмотрен стандартный синтаксис языка С и директивы препроцессора, а также особенности программирования на этом языке для микроконтроллеров. Книга содержит программные примеры на С, а также — справочник с описанием системы ассемблерных команд микроконтроллеров AVR (включая ATxmega) и PIC (включая PIC24).
Содержание:Предисловие ко 2-му изданию..........................................................................13Введение...............................................................................................................14ЧАСТЬ I. АРХИТЕКТУРА МИКРОКОНТРОЛЛЕРОВ AVR_15Глава 1. Восьмиразрядные микроконтроллеры AVR....................................16Семейства восьмиразрядных микроконтроллеров AVR..............................18Отладочная плата..............................................................................................19Платы STK500 и STK600.................................................................................. 19Схема базового монтажа..................................................................................21Структура микроконтроллеров AVR................................................................22Организация памяти........................................................................................22Память SRAM..........................................................................................................23Память программ.....................................................................................................33Память данных типа EEPROM................................................................................34Порты...............................................................................................................36Подтягивающее сопротивление..............................................................................37Регистры управления портом..................................................................................39Таймеры/счетчики............................................................................................39Т/СО..........................................................................................................................40T/C1..........................................................................................................................41T/C2.........................................................................................................................47Сторожевой таймер........................................................................................48Обработка прерываний....................................................................................49Управление прерываниями.....................................................................................52Сброс.................................................................................................................54"Спящие" режимы процессора........................................................................J JПоследовательный ввод/вывод.........................................................................56Приемопередатчик UART.......................................................................................57Приемопередатчик USART.....................................................................................60Синхронная передача данных по интерфейсу SPI..................................................65Работа приемопередатчика US ART в режиме SPI..................................................69Синхронная передача данных по интерфейсу I2C (TWI)........................................70Универсальный последовательный интерфейс US1................................................75Модули последовательного ввода/вывода в семействах AT90S, ATtinyи ATmega.................................................................................................................79Аналого-цифровое преобразование..................................................................80Встроенный аналоговый компаратор.............................................................86Программирование памяти..............................................................................87Разряды предохранения....................................................................................89Параллельное программирование......................................................................89Переход в режим параллельного программирования.............................................91Очистка кристалла...................................................................................................91Программирование и чтение памяти программ......................................................92Программирование разрядов блокировки и предохранения..................................93Последовательное программирование.............................................................93ТЕХНОЛОГИЯ PICOPOWER.......................................................................................96Глава 2. Семейство AVR ATxmega.....................................................................97Обзор возможностей микроконтроллеров ATxmega а.................................97Организация памяти семейства ATxmega.....................................................99Область ввода/вывода семейства ATxmega..................................................100Арбитраж шины данных................................................................................100Память программ,..........................................................................................101Контроллер прямого доступа к памяти........................................................102Система обработки событий...........................................................................109Генерирование событий вручную...................................................................114Фильтрация....................................................................................................114Квадратурный дешифратор..........................................................................115Система синхронизации.................................................................................117Выбор источника тактового сигнала системной синхронизации................120Счетчики реального времени..........................................................................122Счетчик RTC....................................................................................:..............123Счетчик RTC32...............................................................................................123Модуль питания от батареи............................................................................123Обработка прерываний.....................................................................................124Немаскируемые прерывания...........................................................................125Регистр управления контроллером прерываний............................................125Аналого-цифровое преобразование..............................................................126Конфигурирование АЦП.................................................................................127Выбор разрешения преобразования......................................................................127Выбор очередности преобразований в каналах....................................................127Выбор режима измерения.....................................................................................127Выбор опорного напряжения................................................................................129Выбор коэффициента деления частоты тактирования..........................................130Результаты измерения...................................................................................130Прерывание от АЦП.......................................................................................130ЦИФРО-АНАЛОГОВОЕ ПРЕОБРАЗОВАНИЕ............................................................... 131Начало преобразования..................................................................................132Ограничения на время преобразования..........................................................133АНАЛОГОВЫЙ КОМПАРАТОР................................................................................. 134Режимы работы компаратора.....................................................................135Средства шифрования......................................................................................136Модуль шифрования AES................................................................................137Модуль обмена данными по инфракрасному каналу................................138ЧАСТЬ II. КОМПИЛЯТОРЫ И СРЕДСТВА РАЗРАБОТКИ ДЛЯ_МИКРОКОНТРОЛЛЕРОВ AVR_140Глава 3. Компилятор WinAVR.........................................................................141Глава 4. Среда разработки AVR Studio............................................................146Эмуляция............................................................................................................148Окно Memory.....................................................................................................151Окно Register....................................................................................................152Окно Watch........................................................................................................152Отладка программы.........................................................................................152настройка параметров имитатора................................................................153Создание проекта и компиляция программы..............................................153Компиляция проекта......................................................................................156Глава 5. Среда разработки CodeVisionAVR....................................................158компиляция и построение проекта............................................................... 159Создание проекта с помощью мастера CodeWizardAVR.........................164Сохранение и открытие проекта CodeWizardAVR.......................................171Создание новых файлов с исходным кодом...............................................172Отладка программы.........................................................................................173Использование терминала..............................................................................174Глава 6. Программаторы для микроконтроллеров AVR............................175Программные средства для программирования микроконтроллеров.....179Программирование устройства в среде A VR Studio 4...................................179Программирование устройства в среде CodeVisionA VR..............................181ЧАСТЬ 111. АРХИТЕКТУРА МИКРОКОНТРОЛЛЕРОВ PIC_184Гдава 7. Восьмиразрядные микроконтроллеры PIC...................................185Общие аспекты архитектуры восьмиразрядныхмикроконтроллеров pic....................,.............................................................. 186Организация памяти......................................................................................186Организация тактирования...........................................................................188Порты.............................................................................................................190Таймеры..........................................................................................................192TMR0 и сторожевой таймер..................................................................................192TMR1.....................................................................................................................194TMR2.....................................................................................................................195Модуль ССР...........................................................................................................197Обработка прерываний..................................................................................198Микроконтроллеры серии Р1С17Сх......................................................................199Микроконтроллеры серии Р1С18Сх......................................................................200Сброс...............................................................................................................202Последовательный обмен данными...............................................................202Приемопередатчик USART...................................................................................203Синхронная передача данных по интерфейсу SPI................................................204Синхронная передача данных по интерфейсу 12С................................................206Аналого-цифровое преобразование................................................................207Встроенный аналоговый компаратор................................k...................................209СЕМЕЙСТВО МИКРОКОНТРОЛЛЕРОВ PIC 16...........................................................210Микроконтроллер 16F84A..............................................................................211Регистр состояния.................................................................................................212Организация памяти..............................................................................................213Слово конфигурации.............................................................................................215Память EEPROM.................................................................................................................215МИКРОКОНТРОЛЛЕРЫ СЕРИИ 12F50X...................................................................216ГЛАВА 8. СЕМЕЙСТВО PIC18F................................................................................219Организация памяти........................................................................................221Конфигурационные регистры........................................................................222ОРГАНИЗАЦИЯ ТАКТИРОВАНИЯ............................................................................225Внутренний осциллятор.................................................................................226Переключение источника тактирования......................................................226Таймеры..............................................................................................................227TMR0...............................................................................................................227TMR1...............................................................................................................228TMR3...............................................................................................................228АЦП:.....................................................................................................................229Обработка прерываний.....................................................................................229Глава 9. Семейство PIC24...................................................................................231Порты..................................................................................................................234Таймеры..............................................................................................................236Прерывания........................................................................................................236Вложение прерываний....................................................................................238Системные прерывания..................................................................................239Окно program Space Visibility.......................................................................239Интерфейс SPI....................................................................................................240Порт РМР.............................................................................................................241АЦП......................................................................................................................241МОДУЛЬ CTMU....................................................................................................244Измерение заряда конденсатора...................................................................245Измерение времени.........................................................................................245Формирование импульсных последовательностей и задержек....................246Глава 10. Семейство PIC32.................................................................................248Порты..................................................................................................................250Таймеры..............................................................................................................251Системная шина...............................................................................................251Организация памяти........................................................................................252Прерывания и исключения..............................................................................254Система тактирования....................................................................................258Интерфейс SPI....................................................................................................258Порт РМР.............................................................................................................258АЦП......................................................................................................................259Модуль сравнения на выходе.........................................................................259ЧАСТЬ IV. КОМПИЛЯТОРЫ И СРЕДСТВА РАЗРАБОТКИ ДЛЯ _МИКРОКОНТРОЛЛЕРОВ PIC_260Глава 11. Компилятор CCS-PICC......................................................................261Создание проектов CCS-PICC вручную.........................................................261Создание проектов CCS-PICC с помощью PIC Wizard................................265Создание проектов CCS-PICC с помощью PIC24 Wizard............................271Открытие и добавление в проект файлов с исходным кодом...................272Компиляция проекта........................................................................................272Меню tools........................................................................................................274Глава 12. Эмуляция и отладка программ в среде MPLAB.........................275Рабочая область и проект MPLAB..................................................................276компиляция под управлением mplab.........................................................277Настройка режима отладки/эмуляции.........................................................277Работа в режиме отладки/эмуляции.............................................................279Окна отладчика................................................................................................280Глава 13. Компилятор mikroC.......................................................................... 282Создание проекта mikroC................................................................................283Компиляция проекта........................................................................................285Добавление в проект файлов с исходным кодом........................................287Эмуляция выполнения программы...............................................................288Вспомогательные инструменты среды mikroC...........................................290Глава 14. Компиляторы СЗО и С32....................................................................294Компилятор СЗО.................................................................................................294Компилятор С32.................................................................................................296Глава 15. Программаторы для микроконтроллеров PIC............................297Программные средства для программирования микроконтроллеров.....298Программирование устройства в среде mikroC............................................300ЧАСТЬ У. ЯЗЫК С И ДИРЕКТИВЫ ПРЕПРОЦЕССОРА_302Глава 16. Основы языка С..................................................................................303Вводные понятия..............................................................................................303Структура программы на С..............................................................................304ТИПЫ ДАННЫХ, ПЕРЕМЕННЫЕ, КОНСТАНТЫ.........................................................306Правила преобразований из одной системы счисления в другую..................308Тип char...........................................................................................................309Пользовательские типы.................................................................................309Переменные.....................................................................................................310Область видимости переменных...........................................................................310Константы.....................................................................................................311Перечислимые типы.......................................................................................311Приведение типов...........................................................................................312Оператор sizeof...............................................................................................312Функции..............................................................................................................312Возвращаемые значения.................................................................................313Прототипы функций......................................................................................314Классы памяти при объявлении локальных переменных...............................314Рекурсия..........................................................................................................315Структуры...........................................................................................................316Указатели и адреса переменных....................................................................318Передача в функции параметров по ссылке..................................................318Указатели на структуры...............................................................................319МАССИВЫ И СТРОКИ.............................................................,...............................320Строки............................................................................................................321Многомерные массивы...................................................................:.........-......321Операторы ветвления.......................................................................................321Оператор if-else..............................................................................................322Условные выражения.....................................................................................322Оператор switch-case.....................................................................................322ЦИКЛИЧЕСКИЕ КОНСТРУКЦИИ..............................................................................323Конструкция while..........................................................................................323Конструкция for..............................................................................................324Конструкция do-while.....................................................................................324Организация бесконечных циклов...................................................................325Операторы break и continue...........................................................................325СТАНДАРТНЫЕ ФУНКЦИИ ВВОДА/ВЫВОДА...........................................................325Ввод/вывод символов с помощью функций getcharQ и putcharQ...................326Функции вывода строкputsQ иprintfO..........................................................327Функции ввода строк getsQ и scanfQ........................................................,.....328Директивы препроцессора...............................................................................329Директива ^include.........................................................................................329Директива ttdefine...........................................................................................329Директивы условной компиляции........................................................,..........331Директива terror............................................................................................333Директива ttpragma компилятора CodeVisionA VR........................................333Директивы, характерные для компилятора CCS-PICC...............................333Директива #bit.......................................................................................................334Директива #byte.....................................................................................................334Директива #case.....................................................................................................334Директива #device.................................................................................................334Директива #fiise.....................................................................................................335Директива #locate..................................................................................................336Директива #org......................................................................................................336Директива #opt.......................................................................................................337Директива #priority................................................................................................337Директива #reserve................................................................................................338Директива #r6m.....................................................................................................338Директива #type.....................................................................................................338Директива #use delay.............................................................................................«338Директива #use xxxio...........................................................................................338Директива #use i2c.................................................................................................339Директива #use rs232.............................................................................................340Директива #zero_ram.............................................................................................341Обработка прерываний.....................................................................................341Обработка прерываний в среде WinA VR.......................................................341Обработка прерываний в среде CodeVisionAVR............................................343Обработка прерываний в среде CCS-PICC...................................................343Обработка прерываний в среде mikroC.........................................................345Обработка прерываний в среде С30.............................................................. 345Обработка прерываний в среде С32.............................................................. 347Исполнение ассемблерного кода............,.....................................................353Использование ассемблера в компиляторе WinAVR......................................353Ассемблерный код.................................................................................................354Входные и выходные операнды............................................................>...............355Резервирование регистров.....................................................................................356Использование ассемблера в компиляторе Сос1еУ1яюпАУК..........................358Использование ассемблера в компиляторе СС8-Р1СС..................................358Использование ассемблера в компиляторе тИсгоС........................................359Использование ассемблера в компиляторах СЗО и С32.................................360Глава 17. Функции и макросы языка С для различных компиляторов. 361Стандартные функции языка С.......................................................................361Функции для работы со строками.................................................................363Функции для работы с символами.................................................................365Функции для работы со случайными числами...............................................367Функции для работы с памятью....................................................................367Функции и макросы компилятора >УпчАУЯ.................................................368Математические макросы и функции...........................................................368Функции для работы со строками.................................................................369Функции для работы с символами.................................................................373Макросы и функции для организации ввода/вывода......................................373Функции управления микроконтроллером.....................................................378Макросы для работы со сторожевым таймером........................................379Функции для работы со случайными числами...............................................380Функции для работы с памятью....................................................................380Макросы для обработки прерываний.............................................................381Макросы и функции для работы с памятью ЕЕРКОМ.................................382Функции и макросы комдилятора СоэеУекжАУИ....................................383Математические макросы и функции...........................................................383Функции для работы со строками.................................................................384Функции для работы с символами.................................................................387Функции управления микроконтроллером.....................................................387Функции для организации ввода/вывода.........................................................387Функции для работы с памятью....................................................................388Функции для работы с интерфейсом (С......................................................389Функции и макросы компилятора СС8-Р1СС...............................................389Математические макросы.............................................................................389Функции для работы со строками.................................................................390Функции для организации ввода/вывода.........................................................391Функции управления микроконтроллером.....................................................394Функции для работы с таймерами и модулем ССР......................................396Функции для работы с разрядами и памятью...............................................398Функции для работы с памятью ЕЕРЯОМ...................................................400Функции для работы с интерфейсом ......................................................401Функции для работы с интерфейсом Р£Р.....................................................402Функции для работы с интерфейсом (С.....................................,................402Функции для работы с аналоговыми сигналами............................................403Функции компилятора многое.......................................................................405Математические функции.............................................................................405Функции для работы со строками.................................................................405Функции преобразований................................................................................407Функции управления микроконтроллером.....................................................407Функции для работы с периферийными устройствами...............................408Функции для работы с памятью EEPROMu Flash.......................................409Функции для работы с интерфейсом fC......................................................410Функции для работы с интерфейсом SPI......................................................410ЧАСТЬ VI. ПРОГРАММНЫЕ ПРИМЕРЫ ДЛЯ_МИКРОКОНТРОЛЛЕРОВ AVR_412Глава 18. Примеры для компилятора WinAVR.............................................413Управление ЖК-дисплеем...............................................................................413GPS-навигатор...................................................................................................418Глава 19. Примеры для компилятора CodeVisionavr................................430Управление аналого-цифровым преобразованием....................................430Измерение температуры...................................................................................433ЧАСТЬ VII. ПРОГРАММНЫЕ ПРИМЕРЫ ДЛЯ_МИКРОКОНТРОЛЛЕРОВ PIC_435Глава 20. Примеры для компилятора CCS-PICC...........................................436Отображение состояния выводов порта......................................................436Управление частотой мерцания светодиодов с помощью различныхтаймеров............................................................................................................437Управление светофорами на перекрестке....................................................438Обмен данными в режиме PSP.........................................................................442Контроль предельной скорости вращения двигателя................................444Глава 21. Примеры для компилятора mikroC...............................................446Игральные "кости"............................................................................................446Вольтметр с ЖК-дисплеем...............................................................................448Калькулятор.......................................................................................................450Глава 22. Примеры для компилятора СЗО......................................................453Использование порта РМР..............................................................................453Небольшая библиотека функций для доступа к ЖК-модулю.......................453Расширенное управление ЖК-дисплеем.........................................................456Работа с АЦП.....................................................................................................460Считывание уровня напряжения с потенциометра.....................................461Измерение температуры...............................................................................465Глава 23. Примеры для компилятора С32......................................................470Работа с интерфейсом SPI................................................................................470Работа с модулем UART..................................................................................473ЧАСТЬ VIII. ПРИЛОЖЕНИЯ_477Приложение А. Таблица символов ASCII......................................................478Приложение Б. Преобразование из одной системы счисления в другую.....................................................................................479Приложение В. Система команд микроконтроллеров AVR.....................482Наличие команд в различных микроконтроллерах AVR...........................495Команды по категориям..................................................................................497Приложение Г. Система команд микроконтроллеров PIC.......................,498Команды восьмиразрядных микроконтроллеров........................................498Команды по категориям1................................................................................509Система команд микроконтроллеров PIC24................................................510Приложение Д. Область ввода/вывода микроконтроллеровAVR ATXMEGA А........................................................................519Список литературы...........................................................................................532Содержимое прилагаемого к книге компакт-диска..................................533