Микроконтроллеры PIC. Архитектура и программирование. Часть 2. Архитектура микроконтроллеров PIC24F » Программирование устройств на PIC микроконтроллерах


Логин:
Пароль:
О сайте:

Pic.Rkniga.ru - Сайт как для начинающих, так и для опытных радиолюбителей, разрабатывающих свои устройства на популярных PIC микроконтроллерах.
Здесь можно обмениваться сообщениями на форуме, а также добавлять на сайт статьи и схемы своих устройств.

Меню сайта
Главная Форум по PIC микроконтроллерам Форум Статьи по PIC микроконтроллерам Статьи Справочная информаци по PIC микроконтроллерам Справочник Литература по PIC микроконтроллерам Литература Схемотехника Схемотехника устройств на PIC микроконтроллерах Микроконтроллеры Программаторы Все по программированию PIC микроконтроллеров Программы, Софт Программы Ссылки
Опрос

На каком языке программирования вы пишите программы?


Ассемблер
Си
Бейсик
Паскаль
Другой


Последние материалы
  • Тестовая плата для отладки программ на микроконтроллере PIC18F4550
  • Кнопка On/OFF на PIC12F629.
  • Часы с синхронизацией от китайского будильника
  • ШИМ регулятор на PIC16F628A.
  • Счетчики прямого и обратного счета на PIC16F628A.
  • Таймер отключения питания для мультиметра и не только.
  • Измеритель напряжения и тока
  • Маршрутный компьютер для электровелосипеда
  • Простой двухканальный термометр на PIC16F690 и датчиках DS18B20
  • Электронная "Незабудка" для забывчивых
  • Популярные материалы
    Случайная книга
    Программирование устройств на PIC микроконтроллерах » Справочник » Микроконтроллеры PIC. Архитектура и программирование. Часть 2. Архитектура микроконтроллеров PIC24F
    Микроконтроллеры PIC. Архитектура и программирование. Часть 2. Архитектура микроконтроллеров PIC24F
    Автор публикации: alex Просмотров: 12527 Добавлен: 27-09-2012, 14:07 Комментарии: 0

    Содержание
    1. Обзор 16-битных PIC-микроконтроллеров
    2. Архитектура микроконтроллеров PIC24F
    3. Система команд и основы программирования микроконтроллеров PIC24F
       3.1 Программная модель микроконтроллеров PIC24F
       3.2 Режимы адресации и система команд
    4. Программирование портов ввода-вывода
       4.1 Аппаратно-программная архитектура портов ввода/вывода
       4.2 Программирование портов ввода/вывода
       4.3 Модуль регистрации событий
    5. Программирование прерываний
    6. Программирование таймеров
       6.1 Практическое использование 16-битных таймеров
       6.2 Работа таймеров в 32-битном режиме
    7. Интерфейс SPI микроконтроллеров PIC24F
       7.1 Аппаратно-программная реализация SPI в микроконтроллерах PIC24F
       7.2 Практическое программирование обмена данными по SPI
    8. Интерфейс I2C микроконтроллеров PIC24F
       8.1 Принципы функционирования интерфейса I2C
       8.2 Модуль интерфейса I2C микроконтроллеров PIC24F
       8.3 Практическое использование интерфейса I2C
    9.Программирование интерфейса PMP
       9.1 Режимы работы PMP
       9.2 Практические примеры программирования интерфейса PMP
    10. Последовательный интерфейс микроконтроллеров PIC24F
       10.1 Аппаратно$программная архитектура UART
       10.2 Практическое использование последовательного порта
    11. Обработка аналоговых сигналов в микроконтроллере PIC24F
       11.1 Программная модель интегрированного АЦП
       11.2 Практическое использование модуля АЦП
       11.3 Использование внешнего АЦП
    12. Генерация аналоговых и цифровых сигналов
       12.1 Модуль генерации цифровых сигналов
       12.2 Аналоговые компараторы в микроконтроллерах PIC24F

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

    Рис. 2.1. Обобщенная функциональная схема микроконтроллеров PIC24F

         Периферийные модули микроконтроллеров PIC24F позволяют создавать системы обработки данных и управления для широкого класса задач, решаемых в промышленности и в лабораторных исследованиях. Мы будем детально рассматривать принципы функционирования большинства из этих периферийных модулей в последующих главах, а сейчас проведем краткий обзор и начнем с модуля аналого-цифрового преобразователя.
         В микроконтроллерах семейства Microchip используется 10-битный аналогоцифровой преобразователь последовательного приближения. Ниже приводятся отдельные характеристики этого преобразователя:
         • скорость преобразования — до 500 тыс. выборок/с;
         • количество каналов входных аналоговых сигналов — 16;
         • источник опорного напряжения — внешний или внутренний.
         Аналого-цифровой преобразователь может работать в режиме автоматического сканирования входов и поддерживает различные режимы синхронизации. Модуль АЦП допускает автономную работу при переходе процессора в «спящий» режим или режим «холостого хода». Аналого-цифровой преобразователь может производить несколько последовательных выборок, накапливая результат в 16-уровневом буфере данных, и сохранять результат в одном изчетырех форматов.
         Следующий периферийный модуль, который мы рассмотрим, — модуль аналоговых компараторов. Это устройство включает в себя два компаратора, которые используются при реализации широкого класса функциональных узлов, например детектора перехода через ноль в схеме синхронизации по переменному току 50 Гц, или при создании более сложных устройств, таких, как 16-битный сигма-дельта аналого-цифровой преобразователь.
         Микроконтроллеры PIC24F включают 5 модулей таймеров общего назначения разрядностью 16 бит. Все пять таймеров обладают общими базовыми функциональными возможностями. Регистры периода всех таймеров могут использоваться для генерации прерывания при совпадении содержимого такого регистра с текущим содержимым регистра таймера. Во всех таймерах предусмотрены режим запуска/останова по внешнему сигналу и генерация прерывания по спаду внешнего сигнала. Четыре из пяти таймеров могут объединяться попарно для формирования 32-битных таймеров. С модулями таймеров тесно связан 5-канальный модуль захвата входных сигналов и 5-канальный модуль генерации цифровых сигналов. Модуль захвата входных сигналов используется для измерения интервалов между событиями. Минимальная разрешающая способность при таком измерении равна длительности одного машинного цикла. Для синхронизации временныeх меток модуль захвата входных сигналов использует в качестве базовых Таймеры 2 и 3.
         Модуль генерации цифровых сигналов используется для генерации одиночных импульсов и импульсных последовательностей и имеет пять каналов. Для отсчета интервалов времени при формировании таких сигналов модуль генерации цифровых сигналов использует в качестве базовых Таймер 2 и Таймер 3. Выходные сигналы этого модуля могут использоваться для управления обычными (термоэлементы) и индуктивными (электродвигатели) нагрузками, а также для синтеза голосовых сигналов.
         В микроконтроллерах семейства PIC24F имеется два модуля универсального асинхронного приемопередатчика (UART), которые позволяют реализовать обмен данными в соответствии со стандартами RS-232 и RS-485. Приемопередатчик обеспечивает обмен 8- или 9-битными данными с контролем четности или без такового с одним или двумя стоповыми битами. Устройство поддерживает функцию аппаратного контроля обмена данными, что обеспечивает высокий уровень надежности и производительности, позволяя подключать к микроконтроллеру различные периферийные устройства, например модемы. Скорость передачи данных может изменяться от 15 бод до 1 Мбод. Повышение производительности операций обмена данными и разгрузка процессора обеспечивают ся за счет использования 4-уровневых буферов входных/выходных данных и прерываний. Кроме того, модуль UART поддерживает передачу информации по протоколам IrDA и LIN.
         Для обмена данными между различными устройствам в настоящее время очень часто используются протоколы I2C и SPI. Микроконтроллеры PIC24F имеют интегрированные периферийные модули для поддержки этих протоколов. В модуле I2C применяется аппаратно-программный алгоритм, позволяющий выбрать режим «ведущего» или «ведомого». Модуль поддерживает как 7-, так и 10-битную адресацию устройств на шине I2C, при этом тактовая частота шины I2C может быть задана равной 100 или 400 кГц.
         Модули SPI микроконтроллеров PIC24F можно сконфигурировать для работы с двумя, тремя или четырьмя сигнальными линиями. В режиме с двумя линиями (синхронизации и данных) интерфейс SPI можно использовать для приема сигналов датчиков. Для работы с аналого-цифровыми преобразователями, сдвиговыми регистрами и микросхемами памяти EEPROM используется, как правило, 3-проводной интерфейс.
         Еще один периферийный модуль — модуль часов реального времени с календарем (RTCC) — предназначен для точного отсчета времени в течение длительных интервалов и оперирует с датами и временем. Он может выполнять функцию будильника, включая внешнее устройство в определенный момент времени в будущем. Модуль RTCC синхронизируется непосредственно от внешнего источника тактового сигнала частотой 32 кГц. Из этого сигнала посредством предделителя формируется внутренний сигнал с периодом 0.5 с, который используется для синхронизации регистров модуля, содержащих элементы даты (год, месяц, день; день недели, часы, минуты и секунды). Данные хранятся в регистрах в удобном BCD-формате. Функция будильника может быть запрограммирована на определенный месяц, день; день недели, час, минуту и секунду. Кроме того, поскольку регистры модуля часов реального времени работают на очень низкой частоте, это позволяет минимизировать энергопотребление устройства. Часы реального времени могут функционировать и в том случае, если процессор находится в «спящем» режиме. Для управления внешними устройствами можно использовать выходной сигнал модуля частотой 1 Гц или сигнал, формируемый при срабатывании будильника.
         Модуль параллельного порта позволяет легко реализовывать аппаратно-программный 8-битный интерфейс с внешними устройствами и модулями памяти. Модуль поддерживает мультиплексирование шин адреса/данных, позволяя передавать по 8-битной шине 16-битные данные. В модуле предусмотрена работа с 16 адресными линиями, что дает возможность адресовать до 64 Кбайт памяти, а при использовании дополнительных линий адреса, в качестве которых могут быть задействованы выводы портов общего назначения, — и большее пространство адресов. В модуле предусмотрена функция автоинкремента/автодекремента адреса, что позволяет оптимизировать передачу больших блоков данных.
         Последнее периферийное устройство, на котором мы остановимся, — модуль контроля достоверности данных с использованием циклического избыточного кода (CRC). Этот модуль находит применение при контроле ошибок обмена данными с периферийным оборудованием и памятью, особенно при работе с коммуникационным оборудованием по протоколам CAN, USB и Ethernet.
         Микроконтроллеры семейства PIC24F имеют 16-разрядную шину данных, что существенно повышает их функциональные возможности по сравнению с устройствами семейства PIC18. Длина инструкции (команды) процессора в микроконтроллерах серии PIC24 равна 24 битам, а частота выполнения команд процессора в 2 раза меньше, чем частота синхронизации устройства.
         Если использовать принятые в документации фирмы Microchip обозначения, то это соотношение можно выразить формулой:
    FCY = FOSC/2,
    где FOSC — тактовая частота синхронизации микроконтроллера, а FCY — тактовая частота процессора.
         Счетчик команд (Program Counter, PC) имеет разрядность 23 бита и позволяет адресовать до 4 миллионов инструкций в памяти программ. Высокая производительность микроконтроллера обеспечивается за счет использования механизма конвейеризации инструкций, при котором выборка и декодирование следующей инструкции процессора осуществляются на этапе выполнения предыдущей. При этом все инструкции выполняются за один машинный цикл, за исключением инструкций передачи управления, инструкций, оперирующих двойными словами, и инструкций табличного чтения/записи. Кроме того, определенную оптимизацию загрузки процессора можно осуществить за счет применения инструкции цикла repeat.
         Микроконтроллеры семейства PIC24F имеют 16 рабочих регистров, оперирующих данными размером в одно слово (16 бит). Каждый из этих регистров может выступать в роли регистра данных, адреса или смещения. Шестнадцатый по счету регистр (W15) используется в качестве указателя стека (SP, Stack Pointer) в операциях вызова процедур и обработчиков прерываний. В микроконтроллерах PIC24F предусмотрена возможность отображения верхних 32 Кбайт памяти данных на адресное пространство памяти программ с выравниванием по границе слова, для чего используется 8-битный регистр PSVPAG (Program Space Visibility Page).
         Разработчики семейства PIC24F предусмотрели обратную совместимость инструкций и режимов адресации процессора с микроконтроллерами семейства PIC18 за счет прямого включения подмножества инструкций PIC18 в систему команд PIC24, а также посредством использования макросов.

    Рис. 2.2. Схема организации памяти программ микроконтроллеров PIC24FJ128GA

    Рис. 2.3. Схема распределения памяти данных

         В микроконтроллерах семейства PIC24F реализована гарвардская архитектура, в которой память программ и память данных разделены, что позволяет осуществлять прямой доступ к памяти программ из памяти данных во время выполнения программного кода. Организация памяти программ одной из наиболее распространенных линеек микроконтроллеров семейства PIC24FJ128GAxxx со 128 Кбайт флэш-памяти показана на Рис. 2.2.
         Пользовательским программам доступна область памяти в диапазоне адресов 0x000000…0x7FFFFF, за исключением области конфигурации устройства, доступ к которой осуществляется посредством инструкций tblrd/tblwt. Память программ организована в виде блоков, адресуемых пословно. Хотя адрес памяти является 24-битным, более удобно рассматривать любой адрес в виде младшего и старшего слова, при этом старший байт старшего слова не используется и равен 0. Младшее слово всегда располагается по четному адресу, а старшее — по нечетному. Следует сказать, что адреса памяти программ всегда выравниваются по границе слова и при выполнении программного кода всегда инкрементируются и декрементируются на 2.
         Область памяти программ между адресами 0х000000 и 0х000200 зарезервирована для векторов прерываний. По адресам 0x000000 и 0x000002 размещается команда перехода к фактическому началу программы, при этом по первому адресу располагается код операции инструкции goto, а по второму — собственно адрес точки входа в программу. Также в памяти программ размещаются две таблицы векторов прерываний. Одна из них располагается в диапазоне адресов 0x000004…0x0000FF, а вторая (альтернативная) — в диапазоне адресов 0x000100…0x0001FF.
         Адресное пространство памяти данных микроконтроллеров PIC24F представляет собой непрерывную область 16-битных адресов с линейной адресацией. Адрес для доступа к данным формируется двумя модулями генерации адресов, один из которых используется в операциях записи, а другой — в операциях чтения данных. Распределение памяти данных микроконтроллеров PIC24F1 показано на Рис. 2.3.
         Все действующие адреса памяти данных (Effective Addresses, EA) имеют размер 16 бит, что позволяет адресовать 64 Кбайт памяти. Нижняя половина адресов памяти данных, для которых старший бит действующего адреса равен 0, используется для адресации данных, а старшая половина адресов, для которых старший бит адреса равен 1, — для отображения памяти программ на память данных (Program Space Visibility Area, PSVA). Микроконтроллеры PIC24FJ128GA010 имеют объем памяти данных 8 Кбайт; при обращении к памяти данных по адресу, лежащему за пределами этой области, возвращается нулевой байт или слово.
         Данные в памяти выравниваются по границе слова, при этом младшие байты имеют четные, а старшие — нечетные адреса. Для обратной совместимости с 8-битными микроконтроллерами в систему команд PIC24F включены команды, поддерживающие операции как со словами, так и с отдельными байтами. При этом процессор распознает, когда выполняется операция над байтом, а когда – над словом, и генерирует соответствующий адрес. Например, если в команде используется косвенная адресация с пост-инкрементом, такая, как [W1++], то для байтовой команды генерируется адрес, равный W1+1, а для команды, работающей со словом, — W1+2. При любых операциях со словами данные должны иметь четный адрес, поэтому компилятор будет выдавать ошибку при сборке программ, если в программном коде происходит обращение к слову по нечетному адресу. Если такая ситуация возникает при выполнении программы, то генерируется ошибка адресации и вызывается обработчик этой исключительной ситуации. По этой причине следует соблюдать осторожность, если в программе одновременно присутствуют инструкции, работающие с байтами и со словами.
         Для повышения эффективности работы программ в систему команд включен ряд инструкций, позволяющих преобразовывать байты данных в слова. Это инструкция расширения знака se (Sign-Extend), приводящая 8-битное число со знаком к 16-битному формату, и инструкция расширения нуля ze (Zero-Extend), заполняющая старший байт беззнакового целого нулями. Большинство инструкций процессора могут работать как с байтами, так и со словами, но некоторые инструкции оперируют только со словами.
         Первые два килобайта адресного пространства памяти данных (от 0x0000 до 0x7FF) выделяются для регистров специальных функций (Special Function Register, SFR), которые используются ядром и периферийными модулями микроконтроллера PIC24F для выполнения различных операций. Эти регистры распределены между модулями, с которыми они связаны, и, как правило, группируются по принадлежности к тому или иному периферийному модулю. Большинство адресов, выделяемых под регистры специальных функций, на данный момент не задействованы и читаются как 0.
         Мы продолжим изучение особенностей аппаратно-программной архитектуры микроконтроллеров PIC24F в следующей главе, в которой подробно рассмотрим особенности программирования этих устройств.

    Комментарии