Книжная полка Сохранить
Размер шрифта:
А
А
А
|  Шрифт:
Arial
Times
|  Интервал:
Стандартный
Средний
Большой
|  Цвет сайта:
Ц
Ц
Ц
Ц
Ц

Микроконтроллеры PIC24: архитектура и программирование

Покупка
Артикул: 817113.01.99
Доступ онлайн
239 ₽
В корзину
В книге рассматривается широкий круг вопросов, связанных с практическим применением популярных 16-битных микроконтроллеров PIC24 в системах обработки данных и управления оборудованием. Приводятся многочисленные примеры программирования несложных аппаратно-программных систем обработки аналоговой и цифровой информации с применением периферийных модулей микроконтроллеров PIC24F. В контексте разработанных примеров приводятся необходимые сведения из теории, что способствует лучшему пониманию материала книги. Все приведенные в книге аппаратно-программные проекты разработаны и проверены на отладочном модуле Explorer16Development Board фирмы Microchip и могут служить основой для создания собственных проектов.
Магда, Ю. С. Микроконтроллеры PIC24: архитектура и программирование : практическое руководство / Ю. С. Магда. - 2-е изд. - Москва : ДМК Пресс, 2023. - 241 с. - ISBN 978-5-89818-618-0. - Текст : электронный. - URL: https://znanium.com/catalog/product/2108497 (дата обращения: 07.05.2024). – Режим доступа: по подписке.
Фрагмент текстового слоя документа размещен для индексирующих роботов. Для полноценной работы с документом, пожалуйста, перейдите в ридер.
Ю. С. Магда

Микроконтроллеры PIC24:
архитектура и программирование

Москва, 2023

2-е издание, электронное
УДК 621.396.6
ББК 32.872
М12

М12
Магда, Юрий Степанович.
Микроконтроллеры PIC24: архитектура и программирование / Ю. С. Магда. — 2-е изд., 
эл. — 1 файл pdf : 241 с. — Москва : ДМК Пресс, 2023. — Систем. требования: Adobe Reader 
XI либо Adobe Digital Editions 4.5 ; экран 10". — Текст : электронный.
ISBN 978-5-89818-618-0

В книге рассматривается широкий круг вопросов, связанных с практическим применением 
популярных 16-битных микроконтроллеров PIC24 в системах обработки данных и управления оборудованием. 
Приводятся многочисленные примеры программирования несложных аппаратно-программных 
систем обработки аналоговой и цифровой информации с применением периферийных 
модулей микроконтроллеров PIC24F. В контексте разработанных примеров приводятся необходимые 
сведения из теории, что способствует лучшему пониманию материала книги. Все приведенные 
в книге аппаратно-программные проекты разработаны и проверены на отладочном модуле 
Explorer16Development Board фирмы Microchip и могут служить основой для создания собственных 
проектов.

УДК 621.396.6 
ББК 32.872

Электронное издание на основе печатного издания: Микроконтроллеры PIC24: архитектура и программирование/ 
Ю. С. Магда. — Москва : ДМК Пресс, 2016. — 240 с. — ISBN 978-5-97060-347-5. — Текст : непосредственный.

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

В соответствии со ст. 1299 и 1301 ГК РФ при устранении ограничений, установленных техническими средствами защиты авторских 
прав, правообладатель вправе требовать от нарушителя возмещения убытков или выплаты компенсации.

ISBN 978-5-89818-618-0
© Магда Ю. С.
© Оформление, ДМК Пресс
СОДЕРЖАНИЕ

Введение................................................................................................................... 5
Структура книги ...................................................................................................... 6

1. Обзор 16битных PICмикроконтроллеров........................................................... 8

2. Архитектура микроконтроллеров PIC24F ............................................................10

3. Система команд и основы программирования микроконтроллеров PIC24F .........18

3.1. Программная модель микроконтроллеров PIC24F ........................................18
3.2. Режимы адресации и система команд ............................................................ 20
3.2.1. Команды перемещения и адресация данных ....................................... 23
3.2.2. Команды сравнения/выбора и условного перехода ............................. 28
3.2.3. Команды работы с битами .................................................................... 32
3.2.4. Команды сдвига и циклического сдвига .............................................. 35
3.2.5. Команды математических и логических операций ............................. 37
3.2.6. Команды условных/безусловных переходов ........................................ 44
3.3. Разработка и отладка программ на ассемблере в среде MPLAB IDE ............ 46
3.4. Особенности разработки и отладки программ на MPLAB C для PIC24 ...... 59

4. Программирование портов ввода/вывода ............................................................ 73

4.1. Аппаратнопрограммная архитектура портов ввода/вывода ......................... 73
4.2. Программирование портов ввода/вывода ...................................................... 77
4.3. Модуль регистрации событий .........................................................................81

5. Программирование прерываний .......................................................................... 89

6. Программирование таймеров .............................................................................100

6.1. Практическое использование 16битных таймеров...................................... 104
6.2. Работа таймеров в 32битном режиме ........................................................... 114
6.3. Часы реального времени ................................................................................ 118
Содержание

7. ИНТЕРФЕЙС SPI МИКРОКОНТРОЛЛЕРОВ PIC24F ................................120

7.1. Аппаратнопрограммная реализация SPI в микроконтроллерах PIC24F .... 121
7.2. Практическое программирование обмена данными по SPI .......................127

8. ИНТЕРФЕЙС I2C МИКРОКОНТРОЛЛЕРОВ PIC24F .................................140

8.1. Принципы функционирования интерфейса I2C .........................................140
8.2. Модуль интерфейса I2C микроконтроллеров PIC24F .................................143
8.3. Практическое использование интерфейса I2C.............................................147

9. ПРОГРАММИРОВАНИЕ ИНТЕРФЕЙСА PMP ...........................................159

9.1. Режимы работы PMP .................................................................................... 161
9.2. Практические примеры программирования интерфейса PMP ..................164

10. ПОСЛЕДОВАТЕЛЬНЫЙ ИНТЕРФЕЙС
МИКРОКОНТРОЛЛЕРОВ PIC24F ..............................................................182

10.1. Аппаратнопрограммная архитектура UART ............................................183
10.2. Практическое использование последовательного порта...........................184

11. ОБРАБОТКА АНАЛОГОВЫХ СИГНАЛОВ
В МИКРОКОНТРОЛЛЕРАХ PIC24F ............................................................198

11.1. Программная модель интегрированного АЦП ..........................................201
11.2. Практическое использование модуля АЦП ...............................................205
11.3. Использование внешнего АЦП ..................................................................217

12. ГЕНЕРАЦИЯ АНАЛОГОВЫХ И ЦИФРОВЫХ СИГНАЛОВ .....................221

12.1. Модуль генерации цифровых сигналов .....................................................221
12.2. Аналоговые компараторы в микроконтроллерах PIC24F .........................229

Заключение ...........................................................................................................239
ВВЕДЕНИЕ

Системы управления и контроля на однокристальных микроконтроллерах
в настоящее время используются практически во всех сферах человеческой
деятельности, причем каждый день появляются все новые и новые области
применения таких систем. В последнее время, в связи с бурным развитием
электроники расширились возможности и самих микроконтроллеров, позволяющих выполнять многие задачи, ранее недоступные для реализации, такие,
например, как обработка и синтез аналоговых аудиои видеосигналов. Одним
из наиболее популярных семейств микроконтроллеров являются устройства,
выпускаемые фирмой Microchip и известные под аббревиатурой PIC. В последние годы были разработаны и запущены в производство 16и 32битные
модели, позволившие существенно расширить области применения систем на
базе микроконтроллеров PIC. Для облегчения миграции от 8к 16битным
устройствам фирма Microchip обеспечила максимальный уровень совместимости аппаратнопрограммных функций этих микроконтроллеров.
Эта книга посвящена практическим аспектам разработки систем на базе
16битных микроконтроллеров PIC24F. В книге приводятся основные сведения
по аппаратнопрограммной архитектуре микроконтроллеров PIC24F, а также
многочисленные проекты систем обработки данных на базе микроконтроллеров этого семейства. Все примеры, приведенные в книге, разработаны и протестированы на плате «Explorer 16 Development Board» производства Microchip
с установленным микроконтроллером PIC24FJ128GA010. Тем не менее, для тестирования приведенных примеров и разработки собственных проектов читатели
могут использовать и более дешевую систему начального уровня «MPLAB Starter
Kit for PIC24F» той же фирмы или отладочные платы других фирм. Для разработки программного обеспечения проектов, представленных в книге, использовалась интегрированная среда разработки MPLAB IDE версии 8.00 и
бесплатная студенческая версия компилятора языка Си, известного под названием MPLAB C для PIC24. Кроме того, при изучении системы команд микроконтроллера PIC24F, а также при анализе процесса отладки некоторых программ на
языке Си используется довольно эффективный симулятор/отладчик MPLAB SIM.
Книга рассчитана на широкий круг читателей — от начинающих до опытных
разработчиков – и может оказаться полезной для всех, кто желает самостоятельно изучить аппаратнопрограммную архитектуру 16битных микроконтроллеров PIC24F и применить эти знания на практике.
СТРУКТУРА КНИГИ

Структура книги рассчитана на последовательное изучение материала, хотя
опытные разработчики систем на базе микроконтроллеров PIC могут изучать
материал выборочно. Теоретический материал большинства глав подкреплен
практическими примерами, что позволяет существенно облегчить изучение.
Книга состоит из 12 глав, краткие сведения о каждой из них приведены
далее:
• Глава 1. «Обзор 16битных PICмикроконтроллеров». В этой главе рассматриваются общие характеристики 16битных микроконтроллеров фирмы Microchip и дается краткий обзор инструментальных средств разработки программного обеспечения.
• Глава 2. «Архитектура микроконтроллеров PIC24F». Материал этой главы
посвящен обзору аппаратной архитектуры микроконтроллеров PIC24F,
организации памяти и функционирования периферийных модулей устройства.
• Глава 3. «Система команд и основы программирования микроконтроллеров
PIC24F». В этой главе детально проанализированы принципы реализации
системы команд микроконтроллеров PIC24F и приведены многочисленные
примеры программного кода на языке ассемблера. Значительная часть
главы посвящена вопросам разработки и отладки программного обеспечения в среде MPLAB IDE.
• Глава 4. «Программирование портов ввода/вывода». Эта глава содержит
материал по архитектуре и программированию цифровых портов ввода/
вывода микроконтроллеров PIC24F. Теоретический материал сопровождается примерами программ на языке Си с детальным анализом программного кода.
• Глава 5. «Программирование прерываний». Материал главы посвящен аппаратнопрограммной реализации системы прерываний микроконтролле
Структура книги

ров PIC24F. На многочисленных примерах программного кода проанализированы различные механизмы вызова и обработки пользовательских
прерываний.
• Глава 6. «Программирование таймеров». Глава содержит материал по аппаратнопрограммной архитектуре модулей таймеров микроконтроллеров
PIC24F. Рассматриваются различные режимы работы таймеров и их настройка. Теоретический материал сопровождается примерами программ
на языке Си с детальным анализом программного кода.
• Глава 7. «Интерфейс SPI микроконтроллеров PIC24F». В главе рассмотрены принципы функционирования и аппаратнопрограммная реализация модуля интерфейса SPI, а также приведены примеры программирования систем ввода/вывода дискретных данных с использованием данного
интерфейса. Все примеры сопровождаются детальным анализом программного кода.
• Глава 8. «Интерфейс I2C микроконтроллеров PIC24F». Материал главы
посвящен рассмотрению принципов функционирования и аппаратнопрограммной конфигурации модуля интерфейса I2C в микроконтроллерах
PIC24F. Теоретический материал сопровождается примерами программирования обмена данными по шине I2C на языке Си с детальным анализом
программного кода.
• Глава 9. «Программирование интерфейса PMP». В главе рассматривается
аппаратнопрограммная реализация 8битного параллельного интерфейса
обмена данными PMP. Приводятся примеры разработки систем ввода/
вывода цифровых данных с использованием этого интерфейса.
• Глава 10. «Последовательный интерфейс микроконтроллеров PIC24F».
В этой главе рассматриваются принципы реализации и настройки модуля
последовательного интерфейса микроконтроллеров PIC24F. Теоретический материал сопровождается примерами программирования обмена
данными с использованием этого модуля, разработанными на языке Си,
с детальным анализом программного кода.
• Глава 11. «Обработка аналоговых сигналов в микроконтроллерах PIC24F».
Эта глава посвящена методам обработки аналоговых сигналов в микроконтроллерах PIC24F. Здесь рассматривается широкий круг вопросов,
связанных с настройкой и использованием модуля аналогоцифрового
преобразователя, а также приводятся примеры программирования ввода
данных посредством АЦП.
• Глава 12. «Генерация аналоговых и цифровых сигналов». В этой главе
рассматривается широкий круг вопросов, связанных с генерацией цифровых и аналоговых сигналов в микроконтроллерах PIC24F. Теоретические
аспекты иллюстрируются примерами программного кода на языке Си.
Автор благодарит коллектив издательства «ДМК Пресс» за помощь при подготовке книги к изданию. Особую признательность автор выражает своей жене
Юлии за поддержку и помощь при написании книги.
ГЛАВА 1

ОБЗОР 16БИТНЫХ
PICМИКРОКОНТРОЛЛЕРОВ

Разработанные фирмой Microchip 16битные микроконтроллеры являются
очередным шагом на пути повышения производительности и эффективности
встроенных и мобильных приложений. Эта 16битная архитектура изначально
разрабатывалась как альтернатива 8битным решениям и призвана заменить
в ближайшее время 8битные микроконтроллеры в большинстве приложений.
Разработанная фирмой Microchip 16битная платформа реализована в двух
семействах 16битных микроконтроллеров и в двух семействах цифровых сигнальных контроллеров. Все эти семейства объединяет ряд общих характеристик:
• совместимость по назначению выводов различных 16битных устройств;
• возможность использования для всех устройств одних и тех же инструментальных средств разработки программного обеспечения;
• аппаратнопрограммная совместимость всех одноименных периферийных
модулей микроконтроллеров;
• общая базовая система команд процессора, используемая во всех семействах.
Выбор той или иной модели микроконтроллера или сигнального контроллера
зависит от требований к разрабатываемому приложению. Для большинства недорогих устройств средней производительности подходят микроконтроллеры
PIC24F, максимальная производительность которых составляет 16 MIPS. Для
устройств, требующих высокой производительности, можно использовать микроконтроллеры PIC24H с максимальным быстродействием 40 MIPS. Микроконтроллеры семейств PIC24F и PIC24H работают с одним и тем же набором инструкций процессора, включают одни и те же периферийные модули, имеют
одну и ту же цоколевку, и для работы с ними используются одни и те же инструментальные средства для разработки программного обеспечения.
Если требуются дополнительные возможности по обработке сигналов, то
вместо микроконтроллеров семейств PIC24F/H можно применить цифровые
сигнальные контроллеры семейства dsPIC30F, которые могут помимо всего
прочего работать при напряжении питания 5 В, или высокопроизводительные
(40 MIPS) контроллеры dsPIC33F, которые имеют большой объем памяти и
используют низковольтное (3.3 В) питание. В качестве инструментального
Глава 1. Обзор 16битных PICмикроконтроллеров

средства разработки программного обеспечения 16битных микроконтроллеров
и цифровых сигнальных контроллеров используется свободно распространяемая интегрированная среда разработки (ИСР) MPLAB IDE фирмы Microchip,
которая позволяет разрабатывать и отлаживать 8, 16и 32битные приложения. Программа MPLAB IDE работает под управлением операционных систем
Windows 2000/XP/Vista и позволяет выполнить все этапы разработки и отладки
программного обеспечения для целевой системы. Среда MPLAB IDE позволяет
выполнять тестирование и отладку программ с использованием мощного программного симулятора MPLAB SIM. Кроме того, для разработки программного
обеспечения для 16битных систем в среде MPLAB IDE можно использовать
следующие инструментальные средства:
• ассемблер ASM30 — полнофункциональный макроассемблер, в котором
можно создавать пользовательские макросы и использовать условное ассемблирование. Многочисленные директивы языка делают макроассемблер очень мощным средством разработки программ;
• компилятор программ, написанных на языке Си, который называется MPLAB
C для PIC24. Этот компилятор используется для компиляции и оптимизации
программ, написанных для 16битных микроконтроллеров PIC24F/H и цифровых сигнальных контроллеров dsPIC30/33. Он совместим со стандартом
ANSI C и включает полную библиотеку стандартных функций ANSI C,
в числе которых функции манипулирования строками, функции работы с динамической памятью, функции преобразования даты/времени и математические функции. В компиляторе MPLAB C для PIC24 имеется мощный оптимизатор, позволяющий почти в 1,5 раза уменьшить размер программного кода
по сравнению с компиляторами других фирмпроизводителей;
• визуальный генератор кода инициализации MPLAB VDI, позволяющий
значительно упростить процесс создания инициализационного кода программы. С помощью VDI можно в графическом виде сконфигурировать
устройство и по завершении вставить сгенерированный программный код
инициализации в программу на языке Си или ассемблере;
• библиотеку периферийных модулей, включающую более чем 270 функций
для работы с различными периферийными модулями;
• библиотеку математических функций, совместимую со стандартом IEEE754,
которая включает ряд функций для выполнения операций над обычными
вещественными числами и вещественными числами с двойной точностью.
Функции этой библиотеки могут использоваться как в программах на
языке Си, так и на ассемблере.
Кроме инструментальных средств разработки и отладки программного обеспечения фирмыпроизводителя на рынке присутствуют и программные средства, выпускаемые многими известными фирмами (HiTech, CCS и т.д.). Из
аппаратных средств разработки наиболее известна и популярна отладочная
плата «Explorer 16 Development Board» фирмы Microchip, хотя другие фирмы
также приступили к выпуску отладочных плат на базе 16битных микроконтроллеров.
ГЛАВА 2

АРХИТЕКТУРА МИКРОКОНТРОЛЛЕРОВ
PIC24F

Микроконтроллеры PIC24F были разработаны как недорогое аппаратнопрограммное решение для перехода от 8битных микроконтроллеров семейства
PIC18 к 16битной архитектуре, призванное обеспечить максимальную преемственность как уже разработанных приложений для PIC18, так и вновь создаваемых, более эффективных и недорогих 16битных решений.
Выбор микроконтроллеров PIC24F оправдан в тех случаях, когда необходимо
обеспечить среднюю производительность системы при относительно невысокой стоимости конечного продукта. Для приложений, требующих более высокой производительности (выше, чем 16 MIPS), можно использовать более дорогие микроконтроллеры семейства PIC24H.
Микроконтроллеры PIC24F обладают следующими характеристиками:
• высокая производительность (до 16 MIPS);
• векторная система прерываний с 16 уровнями приоритетов;
• наличие 16 рабочих регистров;
• возможность выполнения 16битных математических операций;
• возможность выполнения операций умножения с разрядностью 17 ґ 17 бит
за один машинный цикл;
• возможность выполнения сдвига на произвольное количество бит (до 16)
за один машинный цикл;
• аппаратнопрограммная архитектура, оптимизированная для разработки
программ на языке Си;
• мощная система команд, которая включает инструкцию повторения
repeat для циклического выполнения команд, что особенно полезно при
использовании команд пересылки данных.
По сравнению с микроконтроллерами PIC18 микроконтроллеры PIC24F обладают многими кардинальными улучшениями. Вопервых, в микроконтроллерах PIC24F расширен объем оперативной и флэшпамяти, что при прочих
равных условиях позволяет оптимизировать обработку больших объемов данных и создавать более высокопроизводительные системы управления и обработки данных. Еще одним существенным улучшением стало включение в состав микроконтроллера дополнительных периферийных модулей.
Глава 2. Архитектура микроконтроллеров PIC24F

В микроконтроллерах семейства имеется пять 16битных таймеров, четыре
из которых можно каскадировать, получая два 32битных. Кроме того, на кристалле микроконтроллера находится интегрированный 10битный аналогоцифровой преобразователь последовательного приближения, который может
выполнять преобразование аналоговых сигналов со скоростью до 500 тыс. выборок в секунду. В микроконтроллерах семейства также реализован модуль
JTAG, который позволяет выполнять тестирование и программирование микроконтроллера в системе.
Микроконтроллеры PIC24F могут взаимодействовать с различными внешними периферийными устройствами посредством интерфейсов I2C, SPI и UART.
Для этого в состав устройства включены соответствующие модули, которые
могут настраиваться и работать независимо друг от друга. Функциональность
подсистемы асинхронной последовательной передачи данных улучшена за счет
включения в UART аппаратнопрограммного субмодуля IrDA. Существенно
улучшает рабочие характеристики модулей интерфейсов SPI и UART сериализация данных в буфере FIFO, которая позволяет снизить непроизводительные
траты процессорного времени на обработку передачи данных. В отличие от
многих устройств семейства PIC18, в которых реализован порт параллельной
передачи данных, работающий только в режиме «ведомого», в микроконтроллерах PIC24F имеется модуль параллельного обмена данными, который позволяет
работать как в режиме «ведомого», так и в режиме «ведущего». Это существенно
расширяет возможности PIC24F при обмене данными с периферийными устройствами, имеющими параллельный интерфейс (принтеры, сканеры, устройства
внешней памяти и т. д.).
Все устройства семейства PIC24F имеют один и тот же набор базовых периферийных модулей и отличаются объемом флэшпамяти. Обобщенная функциональная схема микроконтроллеров семейства PIC24F показана на Рис. 2.1.
Периферийные модули микроконтроллеров PIC24F позволяют создавать системы обработки данных и управления для широкого класса задач, решаемых
в промышленности и в лабораторных исследованиях. Мы будем детально рассматривать принципы функционирования большинства из этих периферийных
модулей в последующих главах, а сейчас проведем краткий обзор и начнем
с модуля аналогоцифрового преобразователя.
В микроконтроллерах семейства Microchip используется 10битный аналогоцифровой преобразователь последовательного приближения. Ниже приводятся
отдельные характеристики этого преобразователя:
• скорость преобразования — до 500 тыс. выборок/с;
• количество каналов входных аналоговых сигналов — 16;
• источник опорного напряжения — внешний или внутренний.
Аналогоцифровой преобразователь может работать в режиме автоматического сканирования входов и поддерживает различные режимы синхронизации. Модуль АЦП допускает автономную работу при переходе процессора
в «спящий» режим или режим «холостого хода». Аналогоцифровой преобразователь может производить несколько последовательных выборок, накапливая

Глава 2. Архитектура микроконтроллеров PIC24F

результат в 16уровневом буфере данных, и сохранять результат в одном из
четырех форматов.
Следующий периферийный модуль, который мы рассмотрим, — модуль аналоговых компараторов. Это устройство включает в себя два компаратора, которые используются при реализации широкого класса функциональных узлов,
например детектора перехода через ноль в схеме синхронизации по переменному току 50 Гц, или при создании более сложных устройств, таких, как
16битный сигмадельта аналогоцифровой преобразователь.
Микроконтроллеры PIC24F включают 5 модулей таймеров общего назначения разрядностью 16 бит. Все пять таймеров обладают общими базовыми функциональными возможностями. Регистры периода всех таймеров могут использоваться для генерации прерывания при совпадении содержимого такого
регистра с текущим содержимым регистра таймера. Во всех таймерах предусмотрены режим запуска/останова по внешнему сигналу и генерация прерывания по спаду внешнего сигнала. Четыре из пяти таймеров могут объединяться попарно для формирования 32битных таймеров. С модулями таймеров
тесно связан 5канальный модуль захвата входных сигналов и 5канальный
модуль генерации цифровых сигналов. Модуль захвата входных сигналов используется для измерения интервалов между событиями. Минимальная разреРис. 2.1. Обобщенная функциональная схема микроконтроллеров PIC24F
Доступ онлайн
239 ₽
В корзину