PIClist RUS
микроконтроллеры PIC и интерфейсы
техническая документация
статьи и разработки на русском языке

Портирование приложений с семейства PIC18 на семейство PIC24F - Часть 3

« назад на главную страницу

Часть1 | Часть 2 | Часть 3

Оригинал: PIC18F to PIC24F Migration: An Overview (770 кБ)

Перевод с английского © Alex B. (первоначально опубликовано в разделе "Статьи Microchip" на сайте "Гамма Санкт-Петербург")

Скачать "Портирование приложений с семейства PIC18 на семейство PIC24F" в формате PDF (786 кБ)



2. Периферийные модули PIC24F

2.1. Порты ввода/вывода общего назначения

Порты ввода/вывода семейств PIC18 и PIC24F имеют похожую структуру. Оба семейства имеют набор управляющих регистров PORT, LAT и TRIS для каждого порта и возможность мультиплексирования цифровой и аналоговой периферии. Семейство PIC24F имеет дополнительный регистр ODC для каждого порта, состояние битов которого определяет тип выхода - полный драйвер или открытый сток. Кроме того, увеличено количество выводов, вызывающих прерывание по изменению состояния (Таблица 18).

Таблица 18. Основные различия портов ввода/вывода общего назначения семейств PIC18 и PIC24F

ПараметрыPIC18PIC24F
Допустимое входное напряжение выше VDD + 0.3 Внеттолько для цифровых выводов
Внутренние подтягивающие к VDD резисторы PORTB (все выводы)Различные порты, индивидуальная конфигурация
Управляющие регистрыPORTx, LATx и TRISxPORTx, LATx, TRISx и ODCx
Порты конфигурируются на вход при сброседада

В обоих семействах чтение выводов, сконфигурированных как аналоговые, возвращает "0" в регистре PORTx, а выходные драйверы отключаются, что предотвращает протекание сквозных токов.

Чтение регистра PORTx возвращает цифровое значение потенциала на выводе, вне зависимости от того, как сконфигурирован вывод - как вывод общего назначения, или как вывод, подключенный к периферийному модулю.

Для корректной работы периферийных модулей с однонаправленными выводами только на выход (например, SPI) необходимо, чтобы соответствующий бит регистра TRISx был сброшен программно. После разрешения работы периферийного модуля цифровой уровень на соответствующем выводе доступен через чтение регистра PORTx. Мультиплексирование на вывод ОН периферийного модуля может изменить значения скорости нарастания выходного напряжения и максимального выходного тока. Периферийные модули, выходы которых могут находиться в трех состояниях (например, вывод SCL модуля I2C), устанавливают направление вывода, которое доминирует над значением регистра TRISx. При этом значение регистра TRISx меняться не будет.

Для корректной работы периферийных модулей с двунаправленными выводами (например, вывод SDA модуля I2C) необходимо установить соответствующий бит в регистре TRISx. Это позволит периферийному модулю менять направление вывода (вход-выход).

Чтение регистра PORTx возвращает цифровой потенциал на выводе микроконтроллера. Чтение регистра LATx возвращает значение защелки порта. Запись регистров PORTx и LATx приведет к записи в регистр LATx.

При всех видах сброса все биты регистров TRISx установлены, то есть все выводы будут сконфигурированы на вход. Все выводы, имеющие аналоговую функцию, будут сконфигурированы как аналоговые.

2.1.1. Новые функции портов ввода/вывода в семействе PIC24F

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

- пороговые уровни входов ведущего параллельного порта (PMP - Parallel Master Port) могут быть программно установлены как TTL или триггер Шмитта (ST). Свойство доступно в регистре PADCFGx.

- выводы, имеющие только цифровую функцию, толерантны к входным уровням до 5.5 В. Это позволяет использовать в системе компоненты с напряжением питания 5 В.

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

- ведущий параллельный порт (PMP) является отдельным периферийным модулем, а не интегрирован в систему ввода-вывода как ведомый параллельный порт (PSP) в семействе PIC18. Обратитесь к документации на семейство PIC24F [1] для получения дополнительной информации.

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

2.1.2. Функции портов семейства PIC18, не поддерживаемые в PIC24F

Архитектура портов ввода/вывода семейства PIC24F не поддерживает одновременную работу портов как портов общего назначения и входных портов, подключенных к периферийным модулям. То есть пользователь не может программно формировать цифровые сигналы на входах периферийных модулей. Вывод может использоваться только либо как порт ввода/вывода общего назначения, либо как вход периферии.

2.1.3. Рекомендации по портированию приложения

При переключении режима работы порта в режим с открытым коллектором (вне зависимости от направления порта) внутренние подтягивающие резисторы НЕ отключаются. Если это необходимо, внутренние подтягивающие резисторы отключаются программно.

Выводы, не имеющие аналоговой функции, толерантны к входному напряжению 5.5 В. Таким образом, можно свести к минимуму аппаратные изменения системы при переходе с PIC18 на PIC24F. Выходное напряжение, большее, чем напряжение питания контроллера, может быть получено путем применения подтягивающих резисторов к цепи питания 5-вольтовых устройств.

Максимальный выходной ток вывода, скорость нарастания напряжения, пороговые входные уровни изменяются автоматически при смене режима работы вывода (GPIO или подключение к периферийному модулю). При проектировании системы необходимо обратить внимание на указанные в документации параметры.

Большинство входных портов микроконтроллеров семейств PIC24F имеют на входе триггер Шмитта. Это необходимо иметь в виду при выборе других компонентов системы - они должны обеспечивать необходимые логические уровни.

2.2. Таймеры

Модули таймеров семейства PIC24F обеспечивают все функции, поддерживаемые таймерами PIC18: режимы синхронного и асинхронного счетчика, режим таймера и поддержку встроенного 32 кГц кварцевого генератора. Однако, в отличие от PIC18, функции таймеров значительно расширены. Каждый 16-битный таймер PIC24F имеет соответствующий регистр периода, настраиваемый предделитель, флаг совпадения с регистром периода, и может функционировать как в режиме счетчика, так и в режиме таймера. Четыре таймера (TIMER2/TIMER3 и TIMER4/TIMER5) могут аппаратно объединяться в два 32-битных таймера.

Несмотря на то, что структура таймеров семейств PIC18 NanoWatt и PIC24F похожа, существуют некоторые различия. Как и в PIC18, все таймеры PIC24F могут тактироваться от системного тактового генератора. Но если в PIC18 только таймеры TIMER1 и TIMER3 могут работать в асинхронном счетном режиме, то в PIC24F эта функция доступна для TIMER1, TIMER2 и TIMER4. Режим работы "синхронный счетчик" доступен для всех таймеров PIC24F, так же как и соответствующий каждому таймеру регистр периода, который сбрасывает таймер и устанавливает соответствующий флаг прерывания.

Таймеры семейств PIC18 и PIC24F имеют настраиваемые предделители. Однако если в PIC18 коэффициенты деления различны для каждого таймера, в PIC24F коэффициенты деления (1:1, 1:8, 1:64 и 1:256) одинаковы для всех таймеров общего назначения.

Таймер TIMER1 семейств PIC18 и PIC24F может тактироваться от встроенного низкочастотного 32 кГц кварцевого генератора, таким образом в системе могут быть реализованы часы реального времени. Кроме того, от этого генератора может тактироваться ядро микроконтроллера (см. п. 1.7 "Тактовый генератор" и п. 1.8 "Режимы пониженного энергопотребления").

Следующие функции таймеров аналогичны для семейств PIC18 и PIC24:

- таймеры могут функционировать в режиме асинхронного счета или в режиме работы от внутреннего кварцевого 32 кГц генератора (TIMER1) даже если контроллер находится в режиме SLEEP;

- таймеры могут функционировать в режиме IDLE, если доступен источник тактирования;

- прерывание таймера выводит контроллер из режимов SLEEP и IDLE;

- триггер специального события (special event trigger) может использоваться для автоматического начала аналого-цифрового преобразования. Таймер, генерирующий специальное событие, указан в документации на конкретный микроконтроллер.

Сравнение архитектур таймеров семейств PIC18 и PIC24F приведено в Таблице 19. Сравнение основных управляющих битов для таймеров семейств PIC18 и PIC24F приведено в Таблице 20.

Таблица 19. Сравнение архитектур таймеров семейств PIC18 и PIC24F

ПараметрыPIC18PIC24F
Разрядность таймера8/16 бит16/32 бит
Режим работы: таймер общего назначения все таймерывсе таймеры
Режим работы: асинхронный счетчикTIMER1, TIMER3TIMER1, TIMER2, TIMER4
Режим работы: синхронный счетчикTIMER0, TIMER1, TIMER3все таймеры
Регистр периодаTIMER2 и TIMER4все таймеры
Поддержка внутреннего 32 кГц кварцевого генератораTIMER1TIMER1
Вход разрешения счетанетвсе таймеры
Предделительвсе таймерывсе таймеры
ПостделительTIMER2 и TIMER4нет
Триггер специального событияестьесть
Частота тактированияFOSC*/4FOSC*/2

* FOSC - тактовая частота микроконтроллера

Таблица 20. Сравнение основных управляющих битов для таймеров семейств PIC18 и PIC24F

Назначение битаPIC18PIC24F
Разрешение работы таймераTMRxONTON
Разрешение использования буферизированного чтения/записи сдвоенного таймераRD16T32
Флаг тактирования ядра от генератора TIMER1T1RUNCOSC2:COSC0 = 100(OSCCON<14:12>)
Настройка предделителя таймераTxCKPSxTCKPSx
Разрешение работы кварцевого генератора TIMER1T1OSCENSOSCEN (OSCCON<1>)
Разрешение внешней синхронизации таймера!TxSYNCTSYNC
Выбор источника тактирования таймераTMRxCSTCS
Настройка постделителя таймераTxOUTPSx-
2.2.1. Новые функции таймеров в семействе PIC24F

Наиболее важное различие между таймерами семейств PIC18 и PIC24 - их разрядность. В семействе PIC24F все таймеры 16-битные, и четыре из них могут быть сгруппированы в два 32-битных. В 32-битном режиме работы возможно использование защелки как при чтении, так и при записи. Эта защелка обеспечивает корректные процедуры считывания и записи.

Все таймеры микроконтроллеров семейства PIC24F имеют вход разрешения счета. Если таймер работает в этом режиме, то его значение увеличивается, только если на входе разрешения присутствует активный уровень (в этом режиме таймер тактируется только от системного генератора). Задний фронт на входе разрешения вызывает прерывание таймера. Этот режим удобно использовать для измерения длительности импульсов.

2.2.2. Функции таймеров PIC18, отсутствующие в семействе PIC24F

- ни один таймер семейства PIC24F не содержит постделителя. Однако прерывание генерируется при каждом совпадении значения таймера с регистром периода.

- в семействе PIC18 таймеры TIMER1 и TIMER3 могут тактироваться от внутреннего кварцевого генератора таймера TIMER1. В семействе PIC24F от внутреннего кварцевого генератора 32 кГц может тактироваться только TIMER1.

- кварцевый генератор TIMER1 в семействе PIC24F имеет только один коэффициент усиления, в то время как в PIC18 коэффициент усиления генератора регулируется битом LPT1OSC в конфигурационном слове.

2.2.3. Портирование типового приложения

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

Семейство PIC18:

1) установить предделитель таймера, записав необходимое значение в биты T1CKPS;

2) установить или сбросить бит TMR1CS, выбрав таким образом источник тактирования;

3) сбросить или установить бит !T1SYNC, выбрав таким образом синхронный или асинхронный режим работы таймера соответственно;

4) загрузить требуемое значение в регистр периода таймера PR1;

5) если необходимо использовать прерывание - установить соответствующий бит разрешения T1IE. Установить приоритет прерывания (бит T1IP);

6) разрешить работу таймера, установив бит TMR1ON.

Семейство PIC24F:

1) установить предделитель таймера, записав необходимое значение в биты TCKPS1:TCKPS0;

2) выбрать источник тактирования с помощью бита TCS. Если необходимо, установить бит TGATE, переводящий таймер в режим работы с внешним разрешением счета;

3) установить или сбросить бит TSYNC, выбрав таким образом синхронный или асинхронный режим работы таймера соответственно;

4) загрузить требуемое значение в регистр периода таймера PR1;

5) если необходимо использовать прерывание - установить соответствующий бит T1IE. Выбрать приоритет прерывания с помощью битов T1IP2:T1IP0;

6) разрешить работу таймера, установив бит T1ON.

2.2.4. Рекомендации по портированию приложения

Следует помнить, что при работе от системного тактового генератора частота тактирования таймеров в семействе PIC18 составляет FOSC/4, а в семействе PIC24F - FOSC/2, где FOSC - тактовая частота ядра.

Возможные значения коэффициента предделителя для всех таймеров семейства PIC24F одинаковы, в отличие от таймеров PIC18. Однако в PIC24F два таймера могут объединяться в один 32-битный. Это позволяет увеличить разрешение и время счета.

Таймеры семейства PIC24F не имеют постделителей, однако все таймеры могут генерировать прерывание по совпадению значения с регистром периода. Если в исходном приложении на PIC18 используется таймер с постделителем, необходимо пересчитать период таймера при портировании приложения на архитектуру PIC24F.

При чтении одного байта (младшего или старшего) 16-битного таймера результатом операции будет 0. Обращаться к регистру таймера следует только как к 16-биному слову.

В микроконтроллерах PIC18 для реализации часов реального времени (RTC) используется TIMER1 или TIMER3 с внутренним кварцевым генератором таймера TIMER1. Аппаратный модуль RTCC (Real Time Clock and Calendar) позволяет освободить TIMER1 для других задач.

2.3. Модули сравнения/захвата/ШИМ (CCP и ECCP)

Модули захвата/сравнения/ШИМ семейства PIC24F предоставляют возможности, аналогичные подобным модулям в семействе PIC18, однако реализация функций значительно отличается. Модуль захвата может сохранять мгновенное значение выбранного таймера по тем же событиям на соответствующем выводе. Модуль сравнения может генерировать определенные временные последовательности на выводе микроконтроллера, а так же запускать аналого-цифровое преобразование (Special Event Trigger). Функция генерирования ШИМ на нескольких выводах микроконтроллера является одним из режимов работы модуля сравнения.

Сравнение модулей сравнения/захвата/ШИМ семейств PIC18 и PIC24F приведено в Таблице 21.

Таблица 21. Сравнение модулей сравнения/захвата/ШИМ семейств PIC18 и PIC24F

ПараметрыPIC18PIC24F
Выбор источника (таймера)дада
Предделитель модуля захвата1, 4, 16каждый фронт, 1, 4, 16
FIFO буфер модуля захватанетда, четыре уровня
Разрядность регистра захвата16-бит16-бит
Выбор количества событий захвата для генерации прерываниянетда
Останов в режиме IDLEнетда
Устанавливаемый на выводе контроллера уровень в момент события сравнениявысокий, низкий, инвертированиевысокий, низкий, инвертирование
Триггер специального событиядада
Количество выводов ШИМ на один модуль41
Автоматическое отключение ШИМдада
Поддержка полумостовой и мостовой схемы генерации ШИМдада
Защита от сквозного тока мощных ключей (dead-time pause)дада

Для работы модулей захвата в семействе PIC24F используются таймеры TIMER2 и TIMER3, в то время как в семействе PIC18 - TIMER1 и TIMER3. Событие захвата может генерироваться по каждому переднему, заднему фронту, каждому 4-му переднему и каждому 16-му переднему фронту на соответствующем входе контроллера ICx.

Модуль сравнения обеих архитектур может работать в режиме одиночного сравнения (Single Compare), при котором выбирается начальное состояние на выходе модуля OCx. При возникновении события равенства выбранного таймера и регистра сравнения состояние выхода может устанавливаться в логический ноль или единицу или инвертироваться. В любом случае при возникновении события устанавливается флаг прерывания.

Все режимы генерации ШИМ семейства PIC18 поддерживаются микроконтроллерами PIC24F. Основное различие в том, что каждый модуль сравнения семейства PIC24F имеет только один выход. Таким образом, для управления полумостовой схемой требуется наличие двух свободных модулей сравнения, а для управления мостовой схемой - четырех. Активный выходной уровень каждого модуля сравнения устанавливается битами OCM2:OCM0 (OCxCON<2:0>).

Режим генерации ШИМ семейства PIC24F является расширением режима одиночного сравнения. Дополнением являются выводы аппаратной защиты (Fault) OCFA и OCFB. Подобно модулю ШИМ в PIC18 длительность активного уровня определяет регистр OCxR, который перезагружается значением в регистре OCxRS после каждого события совпадения значения таймера и OCxR. Это событие так же устанавливает флаг соответствующего прерывания. Период ШИМ как в PIC18, так и в PIC24F устанавливается регистром соответствующего таймера PRx.

Функция автоматического отключения ШИМ PIC18 (auto-shutdown) так же реализована в PIC24F. Однако вместо вывода INTx используются выводы OCFA и OCFB. Низкий уровень на любом из этих выводов останавливает генерацию ШИМ и устанавливает флаг аварийного прерывания OCxIF. После того как уровень на входах OCFA и OCFB установиться в нормальное высокое состояние, необходимо переинициализировать регистр OCxCON для продолжения нормальной работы.

Важной особенностью модуля ШИМ в микроконтроллерах PIC18 является возможность вставки паузы между активными уровнями на комплиментарных выходах модуля в режиме полумоста. Эта задержка (dead-time) предназначена для исключения протекания сквозного тока в ключах полумостовой схемы и устанавливается битами PDC6:PDC0. Эта аппаратная возможность отсутствует в микроконтроллерах семейства PIC24F, так как каждый модуль сравнения имеет только один выход. Однако использование двух различных таймеров для двух модулей сравнения позволяет реализовать задержку переключения путем смещения начальных значений таймеров. Такое решение имеет свои преимущества - более точная настройка времени задержки переключения и широкий диапазон ее изменения.

В режиме управления полным мостом семейство PIC18 так же позволяет использовать режим с задержкой переключения. В этом случае задержка вставляется между моментами смены плеч моста. В семействе PIC18 эта задержка выбирается установкой постделителя TIMER2. Решение для PIC24F аналогично методу формирования задержки в полумостовой схеме, используется так же два таймера. В этом случае время задержки на переключение не ограничено разрядностью постделителя TIMER2 в семействе PIC18.

Таблица 21. Сравнение основных управляющих битов для модулей сравнения/захвата/ШИМ семейств PIC18 и PIC24F

ФункцияPIC18PIC24F
Выбор таймера модуля захватаT3CCPxICTMR
Выбор таймера модуля сравненияT3CCPxOCTSEL
Состояние детектора аварииECCPxASEOCFLT
Выбор режима работы модуляCCPxM<3:0> (CCPxCON<3:0>)ICM<2:0> - модуль захвата
OCM<2:0> - модуль сравнения
Конфигурация событий детектора аварииECCPxAS<2:0>OCM<2:0>
2.3.1. Новые функции модулей захвата/сравнения/ШИМ в семействе PIC24F

Независимость модулей. Модули захвата и сравнения являются физически различными аппаратными устройствами и могут быть сконфигурированы независимо друг от друга.

Опциональный FIFO буфер событий модуля захвата. Позволяет захватывать до четырех значений таймера. Доступны флаги переполнения и опустошения буфера. Прерывание может генерироваться по заполнению буфера на произвольное количество уровней от 1 до 4.

Захват каждого фронта. Модуль захвата может быть сконфигурирован таким образом, чтобы событием являлся каждый фронт на входе модуля. В семействе PIC18 аппаратно возможен захват только фронтов одного типа (передний, задний).

Режим двойного сравнения. Наличие двух регистров сравнения OCxR и OCxRS позволяет генерировать два изменения уровня на выходе модуля за один период таймера. В том числе возможна генерация центральносмещенного сигнала ШИМ.

2.3.2. Функции модулей захвата/сравнения/ШИМ PIC18, отсутствующие в семействе PIC24F

Модуль сравнения в семействе PIC24F всегда устанавливает соответствующий уровень на выходе контроллера, в отличие от PIC18, модуль которого позволяет генерировать прерывание без изменения уровня на выходе. Кроме того, если в семействе PIC24F используется модуль сравнения, уровень на его выходе не может быть программно изменен (см. п. 2.1.2 "Функции портов семейства PIC18, не поддерживаемые в PIC24F").

Аппаратный сброс прерывания генерации ШИМ в случае аварии в семействе PIC24F не поддерживается. Состояние флага аварии сбрасывается аппаратно, однако требуется программная инициализация регистра OCxCON для продолжения нормального функционирования.

В семействе PIC18 реверс тока для полного моста производится установкой одного бита Px1M. Так как для управления мостом микроконтроллерами семейства PIC24F необходимо использовать четыре физически независимых PWM-модуля, реверс производится иначе. Для этого необходимо осуществить переназначение таймеров, используя биты OCTSEL каждого модуля.

В семействе PIC18 значение постделителя таймеров TIMER2 и TIMER4 определяет количество периодов, после которых устанавливается флаг прерывания. Эта опция может быть использована в режиме генерации ШИМ. Так как таймеры PIC24F не имеют постделителей, то для осуществеления подобной функции необходимо применять программные методы подсчета периодов.

В семействе PIC24F аппаратная защита от аварии производится только с использованием выводов OCFA и OCFB - встроенный компаратор не может служить источником события аварии. В режиме аварийного останова генерации ШИМ выходы модулей PWM переводятся в высокоимпедансное состояние, в отличие от PIC18, модуль PWM которых позволяет задать определенные логические уровни на выходе.

2.3.3. Портирование типового приложения

Рассмотрим пример аналогичной конфигурации модулей для работы в режиме генерации ШИМ для двух архитектур.

Семейство PIC18:

1) переключить выводы модуля PxA и PxB (если необходимо, то PxC и PxD) на вход, установив соответствующие биты в регистре TRIS;

2) установить период ШИМ, загрузив регистр PRx требуемым значением;

3) если необходимо использовать аппаратное аварийное отключение модуля:

- сбросить флаг индикации аварии ECCPxASE;

- установить источник события (FLTx, компаратор 1 или компаратор 2);

- дождаться установления переходных процессов и устойчивого состояния "нет аварии".

4) сконфигурировать модуль для работы в требуемом режиме генерации ШИМ записью необходимых значений в биты регистра CCPxCON:

- установить требуемую конфигурацию выходов (одиночный, полумост, мост) - биты PxM1:PxM0;

- установить требуемую полярность на выходах модуля - биты CCPxM3:CCPxM0.

5) установить длительность активного уровня ШИМ (duty cycle), загрузив регистр CCPRxL и биты CCPxCON<5:4> требуемыми значениями;

6) если модуль используется для управления полумостовой ключевой схемой, установить требуемую величину задержки на переключение - биты ECCPxDEL<6:0>;

7) если необходимо использовать аппаратное аварийное отключение модуля, - сконфигурировать регистр ECCPxAS:

- выбрать источник автоматического отключения - биты EECPxAS2:ECCPxAS0;

- выбрать уровень на выходах модуля в режиме аварии - биты PSSxAC1:PSSxAC0 и биты PSSxBD1:PSSxBD0;

- установить бит ECCPxASE (ECCPxAS<7>);

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

8) если необходимо аппаратное восстановление работы модуля после аварии - установить бит PxRSEN (ECCPxDEL<7>);

9) сконфигурировать и запустить таймер TMRx:

- сбросить флаг прерывания таймера TMRxIF;

- сконфигурировать предделитель таймера - биты TxCKPS (TxCON<1:0>);

- разрешить работу таймера, установив бит TMRxON (TxCON<2>).

10) переключить выводы модуля генерации ШИМ на выход до начала следующего периода ШИМ:

- дождаться переполнения управляющего таймера (установки флага прерывания TMRxIF);

- переключить выводы модуля PxA, PxB (если необходимо, то PxC и PxD), сбросив соответствующие биты в регистре TRIS;

- сбросить бит ECCPxASE (ECCPxAS<7>).

Эквивалентная процедура конфигурации модуля ШИМ для семейства PIC24F:

1) установить требуемый период сигнала, загрузив соответствующий регистр периода PRx;

2) установить требуемую длительность активного уровня ШИМ, загрузив соответствующий регистр OCxRC;

3) установить начальную длительность активного уровня ШИМ, загрузив соответствующий регистр OCxR;

4) если необходимо, разрешить прерывание по совпадению таймера с регистром периода и прерывание от модуля сравнения (это прерывание генерируется по событию аварии);

5) сконфигурировать режим работы модуля PWM - биты OCM<2:0> (OCxCON<2:0>);

6) установить предделитель базового таймера и разрешить его работу установкой бита TON (TxCON<15>).

2.3.4. Рекомендации по портированию приложения

Особое внимание следует обратить на то, что модули сравнения тактируются с частотой FOSC/2 в семействе PIC24F и с частотой FOSC/4 в семействе PIC18. Портирование приложения потребует пересчета значений регистров периода и длительности активного уровня ШИМ.

Максимальное разрешение ШИМ в семействе PIC18 составляет TOSC - один такт генератора, в семействе PIC24F - TCY - один командный такт.

Если в режиме захвата базовый таймер инкрементируется каждый командный такт (работает без предделителя), то в случае возникновения события захвата в регистр модуля будет записано значение таймера большее на 1 или 2, чем в момент захвата фронта на входе модуля. Этот факт связан с аппаратной реализацией модуля и его следует учитывать для точного измерения длительностей входных импульсов. Если таймер работает с предделителем, то в регистр модуля захвата будет записано значение таймера в момент возникновения фронта на входе модуля.

2.4. Модуль SPI

Модуль последовательного интерфейса SPI микроконтроллеров PIC24F значительно переработан по сравнению с аналогичным интерфейсом в семействе PIC18. В отличие от семейства PIC18, в котором работа в режиме SPI осуществляется конфигурацией модуля MSSP (который так же обеспечивает работу I2C), модуль SPI семейства PIC24F является отдельным периферийным устройством. В большинстве микроконтроллеров PIC24F с 64 и большим количеством выводов присутствует два независимых SPI модуля.

В отличие от PIC18 модуль SPI микроконтроллеров PIC24F может быть настроен для работы в режиме синхронного USART порта. Режим асинхронного UART обеспечивается отдельным модулем (см. п. 2.6 "Модуль UART").

В обеих архитектурах поддерживается работа SPI в качестве ведущего и ведомого, выбор активного фронта на линии тактирования и выбор уровня на линии тактирования в режиме ожидания.

Сравнение модулей SPI семейств PIC18 и PIC24F приведено в Таблице 23.

Таблица 23. Сравнение модулей SPI семейств PIC18 и PIC24F

ПараметрыPIC18PIC24F
Выбор активного фронта на линии тактированиядада
Выбор уровня на линии тактирования в режиме ожиданиядада
Поддержка двухпроводного режима работыдада
Линия выбора ведомого (slave select)дада
Буфер FIFOнетда
Разрядность передаваемых/принимаемых данных8 бит8/16 бит
Поддержка кадрового режима работынетда
Поддержка режима работы "синхронный USART"нетда
2.4.1. Наименования битов и регистров модуля

Большинство псевдонимов служебных битов и регистров модуля SPI в семействе PIC24F не отличаются от аналогичных по функциональности в семействе PIC18. В Таблице 24 приведено сравнение названий служебных битов и регистров для микроконтроллеров PIC18 и PIC24F.

Таблица 24. Сравнение основных управляющих битов и регистров для модулей SPI семейств PIC18 и PIC24F

ФункцияPIC18PIC24F
Полярность линии тактированияCKECKE
Активный фронт линии тактированияCKPCKP
Буфер данных модуля SPISSPxBUFSPIxBUF
Бит статуса операции приема/передачиBFSPITBF и SPIRBF
Флаг события модуля SPIфлаг прерывания SSPxIFSPIxIF
Флаг переполнения буфераSSPOVSPIROV
Конфигурация момента захвата входных данныхSMPSMP
Выбор режима работы и скорости обменаSSPM<3:0>MSTEN
PPRE<1:0>
SPRE<2:0>
SSEN
Отключение линии передачиTRISDISSDO
2.4.2. Новые функции модуля SPI в семействе PIC24F

Буфер FIFO. Одно из наиболее значительных усовершенствований SPI модуля PIC18 - это введение в PIC24F 8-уровневого буфера FIFO, который позволяет производить пакетный обмен данными с меньшими временными затратами на прерывания. Возможна гибкая настройка глубины заполнения буфера, при которой устанавливается флаг заполнения.

Поддержка 8-битного и 16-битного обмена. Поддерживается как 8-битный обмен, так и 16-битный. Размерность данных зависит от значения бита MODE16 (SPIxCON1<10>).

Поддержка кадрового режима обмена. Кадровый режим обмена (используемый, в частности, в большинстве голосовых кодеков) инициализируется установкой бита FRMEN (SPIxCON2<15>). Опционально доступна генерация импульса кадровой синхронизации с настраиваемым активным уровнем и фронтом.

Возможность использования внешней синхронизации. Линия SCK (аналогично SDO) может быть отключена битом DISSCK. Это позволяет использовать внешнюю частоту для синхронизации обмена.

Флаг прерывания. Флаг прерывания SPIxIF при приеме байта (слова) устанавливается даже в том случае, если установлен флаг переполнения SPIROV.

2.4.3. Функции модуля SPI, отсутствующие в семействе PIC24F

Все функции модуля SPI семейства PIC18 поддерживаются модулем SPI семейства PIC24F.

2.4.4. Портирование типового приложения

Рассмотрим последовательность инициализации аппаратного модуля SPI в режиме ведущего для двух архитектур.

Семейство PIC18:

1) установить бит в регистре TRIS, соответствующий линии SDI;

2) сбросить биты в регистре TRIS, соответствующие линиям SDO и SCK;

3) выбрать требуемую полярность и активный фронт линии тактирования SCK, используя биты CKE и CKP;

4) установить требуемую скорость обмена и момент захвата входных данных;

5) если используется прерывание, сбросить флаг SSPxIF и разрешить прерывание, установив биты SSPxIE и GIE;

6) сбросить биты WCOL и SSPOV и разрешить работу модуля, установив бит SSPEN.

Для семейства PIC24F:

1) если используется прерывание, сбросить флаг SPIxIF, разрешить прерывание установкой флага SPIxIE, установить требуемый приоритет прерывания - биты SPIxIP;

2) установить требуемую частоту на линии SCK, активный уровень и фронт на линии тактирования;

3) выбрать требуемый момент захвата входных данных и активировать ведущий режим, установив бит MSTEN;

4) если необходимо, отключить линию SDO, установив бит DISSDO;

5) сбросить флаг переполнения SPIROV и разрешить работу модуля, установив бит SPIEN (SPIxSTAT<15>).

2.4.5. Рекомендации по портированию приложения

Особое внимание следует уделить расчету скорости обмена. Так как модуль SPI в семействе PIC24F тактируется частотой FOSC/2, то формула расчета будет отличаться от аналогичной в PIC18.

2.5. Модуль I2C™

Архитектура модуля последовательно интерфейса I2C не претерпела значительных изменений в семействе PIC24F по сравнению с PIC18, - большинство управляющих битов и регистров имеют свои аналоги в PIC24F. Модули I2C обоих семейств поддерживают режимы 7- и 10-битной адресации, общий вызов на шине, удержание тактового сигнала, 100 кГц и 400 кГц частоту на линии тактирования, детектирование коллизий в режиме нескольких ведущих (multi master mode).

Вместе с тем, модули I2C семейства PIC24F имеют дополнительные возможности, отсутствующие в PIC18, такие, как конфигурируемая маска адреса, режим повторителя. Следует отметить, что в PIC24F приемник и передатчик I2C являются физически независимыми модулями.

Реализация обмена по I2С в микроконтроллерах PIC18 может быть организована либо по прерываниям, либо опросом флагов состояния. Архитектура модулей I2C семейства PIC24F построена таким образом, что для осуществления I2C обмена требуется значительно меньше программных ресурсов, чем для PIC18.

Сравнение основных функций I2C модулей семейств PIC18 и PIC24F приведено в Таблице 25.

Таблица 25. Сравнение основных функций I2C модулей семейств PIC18 и PIC24F

ПараметрыPIC18PIC24F
Поддерживаемая частота сигнала на шине тактирования100 кГц / 400 кГц100 кГц / 400 кГц / 1 МГц
Режим 7- и 10-битной адресациидада
Упрощенный режим 10-битной адресациинетда
Поддержка нескольких ведущих на шинедада
Конфигурируемая маска адресада (до 6 бит)да (все 7 или 10 бит)
Общий вызов на шинедада
Поддержка зарезервированных адресовтолько некоторые устройствада
Опция удержания тактового сигналадада
Режим повторителя (IPMI)нетда
Управление длительностью фронтадада
Опция отключения в режиме IDLEнетда
Уровни спецификации I2C и SMBusдада
2.5.1. Наименования битов и регистров модуля

Большинство служебных битов модуля I2С микроконтроллеров PIC24F имеют псевдонимы, соответствующие (или похожие) названию аналогичных битов в семействе PIC18 - см. Таблицы 26, 27 и 28.

Таблица 26. Сравнение основных управляющих битов модулей I2C семейств PIC18 и PIC24F (вне зависимости от режима работы)

ФункцияPIC18PIC24F
Разрешение работы модуляSSPENI2CEN
Флаг детектирования стоп-битаPP
Флаг детектирования старт-битаSS
Отключение функции контроля скорости нарастанияSMPDISSLW
Соответствие диаграммы входных уровней спецификации SMBusCKESMEN
Флаг ошибки записи в регистр передатчикаWCOLIWCOL
Флаг переполнения регистра приемникаSSPOVI2COV
Буфер приемника заполненBFRBF
Буфер передатчика заполненBFTBF

Таблица 27. Сравнение основных управляющих битов и регистров для модулей I2C семейств PIC18 и PIC24F (работа в режиме ведомого)

ФункцияPIC18PIC24F
Удержание линии SCLCKPSCLREL
Режим 10-битной адресацииSSPM3:SSPM0 = 1111bA10M
Разрешение функции общего вызоваGCENGCEN
Флаг типа последнего принятого бита - адрес/данныеD/AD/A
Флаг операции - чтение/записьR/WR/W

Таблица 28. Сравнение основных управляющих битов и регистров для модулей I2C семейств PIC18 и PIC24F (работа в режиме ведущего)

ФункцияPIC18PIC24F
Флаг подтверждения ACK (прием)ACKDTACKDT
Разрешение передачи бита подтверждения ACKACKENACKEN
Разрешение работы приемникаRCENRCEN
Инициализация стоповой посылкиPENPEN
Инициализация повторной стартовой посылкиRSENRSEN
Инициализация стартовой посылкиSENSEN
Флаг подтверждения ACK (передача)ACKSTATACKSTAT
Статус передатчикаTRMTTRSTAT
Флаг коллизии на шинеBCLIFBCL и MI2CxIF
2.5.2. Новые функции модуля I2C в семействе PIC24F

Следующие функции и свойства I2C модуля семейства PIC24F значительно увеличивают гибкость использования по сравнению с PIC18:

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

Режим шинного повторителя. Модуль I2C семейства PIC24F может работать в качестве "пассивного" повторителя с возможностью удержания тактового сигнала.

Поддержка общего вызова на шине. Флаг GCSTAT (I2CxSTAT<9>) позволяет быстро определить возникновение события общего вызова, без обращения к буферу приемника.

Прерывание при приеме адреса, совпадающего с маской. Модуль I2C семейства PIC24F в режиме работы "ведомый" может генерировать прерывание при совпадении принятого адреса (7- или 10-битного) с заданной маской произвольной конфигурации.

Прием 10-битного адреса. Прием 10-битного адреса в микроконтроллерах PIC24F не требует операции побайтного считывания адреса из регистра приемника (как в микроконтроллерах PIC18). Логика детектирования 10-битного адреса устанавливает флаг ADD10 (I2CxSTAT<8>).

2.5.3. Функции модуля I2C, отсутствующие в семействе PIC24F

Модуль I2C семейства PIC24F не поддерживает режим работы "программный ведущий", который в микроконтроллерах PIC18 устанавливается битами SSPM<3:0> = 1011b. Таким образом, аппаратно поддерживаются только уровни VIH и VIL, то есть стандартные входные уровни.

2.5.4. Портирование типового приложения

Программные приложения, обеспечивающие работу I2C модуля в микроконтроллерах семейства PIC18, могут сильно отличаться в зависимости от конкретных условий и структуры системы. Поэтому полностью охватить все режимы работы, последовательности действий и реакции на различные события не представляется возможным. Наиболее простой способ портирования приложения с семейства PIC18 на микроконтроллер PIC24F состоит в пошаговом переносе алгоритма работы, с учетом специфики и дополнительных функций модуля I2C PIC24F. Такой подход, кроме выполнения основной задачи, позволит значительно сократить объем исполняемого кода.

2.5.5. Рекомендации по портированию приложения

Значительные различия между модулями I2C семейств PIC18 и PIC24F могут привести к некоторым затруднениям при портировании приложения. Например, типичной проблемой является тот факт, что в семействе PIC18 младший бит в регистре адреса SSPxADD равен 1, в то время как в семействе PIC24F - 0 (регистр I2CxADD), что необходимо учитывать при работе в режиме ведомого.

Часть устройств семейства PIC24F не имеет функции вывода микроконтроллера из режимов пониженного потребления SLEEP и IDLE при совпадении адреса, а так же не обновляет бит D/A при передаче в режиме ведомого. Указанные ограничения отражены в документации на конкретный контроллер.

Определение частоты на линии тактирования в режиме ведомого в семействе PIC24F отличается от PIC18. Так как частота выполнения инструкций в PIC24F привязана к FOSC/2, частота обмена будет в 2 раза больше при прочих равных условиях. Формулы расчета и таблицы стандартных скоростей обмена приведены в документации на семейство PIC24F [1].

2.6. Модуль универсального асинхронного приемопередатчика (UART)

Новый модуль универсального асинхронного приемопередатчика (UART) семейства PIC24F является полнодуплексным интерфейсом со значительно расширенной функциональностью по сравнению с модулем EUSART семейства PIC18.

Основные новые особенности модуля UART PIC24F включают в себя увеличенную скорость обмена, аппаратную поддержку контроля четности, конфигурацию уровня на линии в режиме ожидания, поддержку аппаратного управления потоком и т. д.

В Таблице 29 приведено сравнение основных функций модуля UART PIC24F и модуля EUSART PIC18.

Замечание: модуль UART семейства PIC24F не поддерживает синхронный режим обмена. В качестве синхронного приемопередатчика возможно использование аппаратного модуля SPI.

Таблица 29. Сравнение основных функций модуля UART PIC24F и модуля EUSART PIC18

ПараметрыPIC18PIC24F
Асинхронный дуплексный режим работы с поддержкой:- автоматического выхода из энергосберегающего режима;- автоматической подстройки скорости обмена;- передачей 12-битного сигнала Break (см. спецификацию LIN)дада
Дуплексный 8- и 9-битный обмендада
Поддержка 9-битного обмена с функцией детектирования адреса (9 бит = 1)дада
Аппаратное управление потоком (сигналы CTS и RTS)нетда
Количество стоповых бит11 или 2
Выбор уровня на линии в режиме ожиданиянетда
Генератор скорости передачи8- / 16-битный16-битный
Предделитель генератора скорости передачидада
Диапазон скоростей обменаот 300 бод до 115 кбод(0.25 - 10 MIPS)от 15 бод до 1 Мбод(16 MIPS)
Аппаратная поддержка кодирования и декодирования IrDA®нетда
Выход частоты 16 x (baud rate) для поддержки IrDA® трансиверанетда
Наличие буфера FIFO у передатчиканетда
Наличие буфера FIFO у приемниканетда
Диагностический режим "Loopback"нетда
Аппаратная поддержка бита четностинет (может быть реализована программно)да
Аппаратная поддержка контроля четностинетда
Аппаратная генерация байта синхронизации LINдада
Аппаратная поддержка символов Sync и Breakдада
Генерирование прерывания по фронту на линии приемадада
Аппаратное детектирование ошибки кадра и переполнения буферадада
Возможность останова в режиме IDLEнетда
Генерирование прерыванийпри приеме и при передачепри приеме, при передаче и при детектировании ошибки
2.6.1. Наименования битов и регистров модуля

Большинство служебных битов модуля UART микроконтроллеров PIC24F имеют псевдонимы, соответствующие (или похожие) названию аналогичных битов в семействе PIC18 - см. Таблицу 30.

Таблица 30. Сравнение основных управляющих битов модуля UART семейства PIC24F и модуля EUSART семейства PIC18

ФункцияPIC18PIC24F
Включение механизма автоматической настройки скорости обмена (Auto Baud Detect)ABDENABAUD
Включение адресного режима обменаADDENADDEN
Выбор высокой скорости обмена (для PIC18F - высокая/низкая скорость, для PIC24F - выбор делителя генератора тактовой частоты 4x/16x)BRGHBRGH
Включение приемникаCREN (только приемник)UARTEN (приемник и передатчик)
Флаг ошибки фреймаFERRFERR
Флаг переполнения буфераOERROERR
Флаг нахождения приемника в режиме ожиданияRCIDLRIDLE
Флаг прерывания по приемуRCIFUxRXIF
Флаг наличия данных в буфере приемникаURXDA
9-й бит принятого кадра (в 9-битном режиме работы)RX9DUxRXREG<8>
Бит разрешения 9-биного приемаRX9PDSEL1:PDSEL0
Бит разрешения 9-битной передачиTX9
Отправка символа Break (спецификация LIN)SENDBUTXBRK
Состояние сдвигового регистра передатчикаTRMTTRMT
Включение передатчикаTXENUTXEN
Флаг прерывания по передачеTXIFUxTXIF
9-й бит передаваемых данныхTX9DUxTXREG
Разрешение прерывания по заднему фронту на линии RX (режим WAKE-UP)WUEWAKE
2.6.2. Функции модуля UART, отсутствующие в семействе PIC24F

Микроконтроллеры PIC24F не поддерживают следующие функции модуля UART контроллеров PIC18:

- низкая частота тактового генератора: FOSC/(64 (n+1));

- синхронный режим работы. Модули UART PIC24F не поддерживают синхронный обмен как в режиме ведомого, так и в режиме ведущего. Для организации синхронного обмена рекомендуется использовать модуль SPI (см. п. 2.4 "Модуль SPI").

- изменение скорости обмена одним битом. Модули EUSART семейства PIC18 имеют возможность изменения скорости обмена с помощью переключения одного бита BRGH. Для изменения скорости обмена в PIC24F требуется конфигурация делителя тактового генератора.

2.6.3. Портирование типового приложения (передатчик)

Рассмотрим последовательность инициализации аппаратного модуля U(S)ART в режиме передачи для двух архитектур.

Семейство PIC18:

1) выбрать скорость обмена, настроив регистры SPBRGHx:SPBRGx. Выбрать диапазон скоростей, установив или сбросив биты BRGH и BRG16;

2) выбрать режим работы (синхронный/асинхронный), настроив бит SYNC, установить бит SPEN;

3) если используются прерывания - установить соответствующий бит разрешения TXxIE;

4) установить бит TX9, если планируется использование 9-битного обмена;

5) разрешить передачу, установив бит TXEN, после этого автоматически будет установлен бит TXxIF;

6) если используется 9-битный режим обмена, 9-й бит кадра должен быть загружен в бит TX9D;

7) загрузить байт передаваемых данных в регистр TXREGx;

8) если используются прерывания, бит глобального разрешения прерываний GIE и бит разрешения прерываний от периферийных устройств PEIE должны быть установлены (регистр INTCON<7:6>).

Для семейства PIC24F:

1) настроить модуль UART - установить режим обмена (размер кадра, чётность, размер стопового бита), установить требуемую скорость обмена, сконфигурировав регистр UxBRG, сконфигурировать прерывание, если они будут использоваться в программе;

2) включить модуль UART;

3) включить передатчик, установив бит UTXEN;

4) загрузить данные в младший байт регистра UxTXREG. Данные будут автоматически перемещены в сдвиговый регистр передатчика;

5) альтернативным способом передачи данных является загрузка данных в регистр UxTXREG при сброшенном бите UTXEN. После установки бита UTXEN данные будут автоматически перемещены в сдвиговый регистр передатчика и будет включен тактовый генератор модуля;

6) прерывания передатчика настраиваются битами UTXISELx.

2.6.4. Портирование типового приложения (приемник)

Рассмотрим последовательность инициализации аппаратного модуля U(S)ART в режиме приема для двух архитектур.

Семейство PIC18:

1) выбрать скорость обмена, настроив регистры SPBRGHx:SPBRGx. Выбрать диапазон скоростей, установив или сбросив биты BRGH и BRG16;

2) выбрать режим работы (синхронный/асинхронный), настроив бит SYNC, установить бит SPEN;

3) если используются прерывания - установить соответствующий бит разрешения RCxIE;

4) установить бит RX9, если планируется использование 9-битного обмена;

5) разрешить прием, установив бит CREN;

6) флаг RCxIF будет установлен после завершения приема кадра. Если установлен бит разрешения RCxIE, будет сгенерировано прерывание;

7) считать регистр RCSTAx для получения 9-го бита кадра (если используется 9-битный режим приема) и флагов ошибок;

8) считать байт принятых данных из регистра RCREGx;

9) если обнаружена ошибка приёма (ошибка кадра или переполнение буфера) - сбросить бит разрешения приема CREN;

10) если используются прерывания, бит глобального разрешения прерываний GIE и бит разрешения прерываний от периферийных устройств PEIE должны быть установлены (регистр INTCON<7:6>)

Для семейства PIC24F:

1) настроить модуль UART - установить режим обмена (размер кадра, чётность, размер стопового бита), установить требуемую скорость обмена, сконфигурировав регистр UxBRG, сконфигурировать прерывание, если они будут использоваться в программе;

2) включить модуль UART;

3) прерывание будет сгенерировано в случае приема одного или нескольких байтов данных, в зависимости от состояния URXISELx;

4) считать бит OERR для определения ошибки переполнения приемного буфера. Замечание: бит OERR должен быть сброшен программно;

5) считать данные из буфера приема UxRXREG.

2.6.5. Рекомендации по портированию приложения

При портировании приложения, использующего модуль UART, особое внимание следует уделить следующим рекомендациям.

Так как архитектуры PIC18 и PIC24F отличаются структурой конвейера выполнения инструкций (частота выполнения инструкций в PIC18 равна FCY = FOSC/4, в PIC24F - FCY = FOSC/2), необходимо пересчитать значения, используемые для конфигурации скорости обмена.

Для семейства PIC18 максимальная скорость обмена составляет FOSC/4, минимальная - FOSC/(64 * 65536). Для PIC24F максимальная скорость обмена составляет FCY/4, минимальная FCY/(4 * 65536). Если в системе используется несколько скоростей обмена, следует убедиться, что они попадают в допустимый диапазон.

Функции реализации 9-битного обмена должны быть изменены. Так как PIC18F - 8-битная архитектура, для сохранения 9-го бита кадра используется отдельный бит в конфигурационном регистре. В PIC24F 9-битный обмен реализуется прямым считыванием из 16-битного регистра UxRXREG и записью в 16-битный регистр UxTXREG.

2.7. 10-битный аналого-цифровой преобразователь

10-битный АЦП семейства PIC24F значительно отличается от аналогичного модуля в микроконтроллерах PIC18 (см. Таблицу 31). Основные отличия - это увеличенная до 500 тыс. выборок в секунду скорость преобразования, режим автоматического сканирования каналов, буфер результатов с различными режимами заполнения, четыре формата представления результата, индивидуально настраиваемые аналоговые входы. Новые функции позволяют значительно увеличить гибкость системы и снизить объем программных ресурсов, используемых для реализации аналого-цифрового преобразования.

Таблица 31. Сравнение модулей 10-битного АЦП семейств PIC18 и PIC24F

ПараметрыPIC18PIC24F
Разрядность10 бит10 бит
Максимальная скорость преобразования (тыс. выборок в секунду)100500
Источники опорного напряжениявнутренний и внешнийвнутренний и внешний
Флаг окончания преобразованиядада
Настраиваемый предделитель для тактирования АЦПдада
Встроенный RC генератор для реализации преобразования при остановленном основном генераторедада
Автоматическая выборка (заряд устройства выборки-хранения - УВХ)дада
Настройка длительности выборкидада
Индивидуально настраиваемые аналоговые входынетда
Специальный триггер начала преобразования (от модуля сравнения или внешнего прерывания)дада
Автоматическое сканирование каналовнетда
Буфер результатов преобразованиянетда
4 формата представления результатанетда
Дифференциальный формирователь напряжения для УВХнетда
2.7.1. Наименования битов и регистров модуля

Структуры модулей АЦП семейств PIC18 и PIC24F довольно похожи - это 10-битные АЦП последовательного приближения с настраиваемой скоростью преобразования, встроенным тактовым RC-генератором, возможностью изменения канала преобразования в ходе работы. Основные биты и регистры, отвечающие за функционирование АЦП в PIC18 и PIC24F приведены в Таблице 32. Они имею различные названия, но выполняют сходные функции.

Таблица 32. Сравнение основных управляющих битов 10-битных АЦП семейств PIC24F и PIC18

ФункцияPIC18PIC24F
Биты, используемые для выбора опорных напряжений - AVDD или VREF+ для позитивного и AVSS или VREF- для негативного входов опорыVCFG2:VGFG0VCFG2:VGFG0
Флаг программного старта и индикации окончания преобразованияGO/DONEDONE
Выбор источника тактирования (основной системный генератор или встроенный RC) и делителя тактовой частотыADCS2:ADCS0ADRC, ADCS7:ADCS0
Конфигурация времени автоматической выборкиACQT2:ACQT0SAMC4:SAMC0
Настройка вывода как аналоговогоPCFG3:PCFG0PCFG15:PCFG0
Выбор канала преобразованияCHS3:CHS0CSSL15:CSSL0
Конфигурация триггера начала преобразования (от модуля сравнения или внешнего прерывания)CCPxM3:CCPxM0 (CCPxM:<3:0>)SSRC2:SSRC0
2.7.2. Новые функции 10-битного АЦП в семействе PIC24F

Увеличенная скорость преобразования. Минимальный период тактовой частоты для АЦП PIC24F уменьшен с 750 нс (PIC18) до 75 нс, таким образом, обеспечивается скорость преобразования до 500 тысяч выборок в секунду.

Гибкая буферизация результатов. Буфер результатов преобразования может быть сконфигурирован как два 8-уровневых буфера или один 16-уровневый буфер. В первом случае результаты преобразования могут сохраняться поочередно в каждый буфер или последовательно до заполнения одного из них.

Форматы результата. Результат преобразования может быть представлен в одном из четырех форматов, включая форматы с фиксированной точкой.

Автоматическое сканирование каналов - аппаратная функция, позволяющая настроить АЦП таким образом, чтобы по окончании одного преобразования мультиплексор автоматически переключался на следующий выбранный канал.

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

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

2.7.3. Функции 10-битного АЦП, отсутствующие в семействе PIC24F

Все функции 10-битного модуля АЦП семейства PIC18 так же поддерживаются в семействе PIC24F.

2.7.4. Портирование типового приложения

Последовательность конфигурация модуля АЦП в семействе PIC24F очень похожа на настройку АЦП в PIC18. Один или несколько выводов выбираются в качестве аналоговых, устанавливается время выборки и период тактового сигнала. Включается модуль АЦП. Если используется прерывание, необходимо сбросить флаг и разрешить его. После минимально допустимого времени заряда конденсатора УВХ (которое обеспечивается программно или автоматически логикой модуля) запускается процесс квантования. После окончания преобразования устанавливается флаг DONE и, если разрешено, генерируется прерывание.

Для настройки модуля АЦП PIC24F, при которой он будет работать аналогично АЦП в PIC18, необходимо выполнить следующие действия:

1) Выбрать каналы преобразования (AD1PCFG<15:0>);

2) Установить требуемые источники опорного напряжения (AD1CON2<15:13>);

3) Выбрать в качестве тактового источника встроенный RC-генератор (AD1CON3<15>) или установить делитель тактовой частоты (AD1CON3<7:0>);

4) Установить режим работы - автоматическая выборка после завершения предыдущего преобразования или программный старт выборки (AD1CON1<2>);

5) Выбрать триггер старта преобразования - программный, по фронту на выводе INT0, по переполнению таймера TMR3 или автоматически после завершения выборки (AD1CON1<7:5>);

6) Выбрать формат результата преобразования: знаковый целый, беззнаковый целый, знаковый с фиксированной точкой или беззнаковый с фиксированной точкой (AD1CON1<9:8>);

7) Сбросить биты SMPI (AD1CON2<5:2>) для того, чтобы по аналогии с архитектурой PIC18 прерывание возникало после каждого преобразования;

8) Включить модуль АЦП (AD1CON1<15>);

9) Если необходимо, разрешить прерывание, сбросив флаг (IFS0<13>), установив бит разрешения (IEC0<13>), и требуемый приоритет (IPC3<6:4>).

2.7.5. Рекомендации по портированию приложения

Диапазон входных напряжений для модуля АЦП PIC24F меньше, чем для PIC18, так как PIC24F имеет более низкое напряжение питания. Как для PIC18, так и для PIC24F напряжение на аналоговом входе не должно превышать VDD более чем на 0.3 В и не должно быть ниже VSS более чем на 0.3 В.

Входное сопротивление модуля АЦП PIC24F составляет 2.5 кОм, в то время как у большинства контроллеров PIC18 входное сопротивление - 10 кОм. Емкость конденсатора устройства выборки-хранения PIC24F составляет 4.4 пФ, у семейства PIC18 - 25 пФ. Уменьшение емкости конденсатора УВХ и входного сопротивления, возможно, потребует изменения внешних согласующих цепей.

2.8. Компаратор и модуль опорного напряжения

Микроконтроллеры семейств PIC18 и PIC24F имеют 2 аналоговых компаратора с аналогичными свойствами, однако в PIC24F обеспечивается большая гибкость конфигурации: компараторы PIC18 имеют только 8 режимов подключения, один из которых - отключение модулей, в то время как в PIC24F практически каждый вывод компаратора может быть настроен индивидуально - возможны варианты, недоступные в PIC18. Оба семейства имеют модуль генерации опорного напряжения, основанный на резистивном делителе напряжения питания.

Сравнение модулей компараторов и генерации опорного напряжения для PIC18 и PIC24F приведено в Таблицах 33 и 34.

Таблица 33. Сравнение компараторов семейств PIC18 и PIC24F

ПараметрыPIC18PIC24F
Количество компараторов22
Аппаратное инвертирование выходного сигналадада
Подключение выхода компаратора к выводу контроллерадоступно в 3 конфигурацияхдоступно во всех конфигурациях
Раздельное включение компараторовдоступно в 1 конфигурациидоступно во всех конфигурациях
Подключение входов компаратора к различным выводам контроллерадоступно в 1 конфигурациидоступно во всех конфигурациях, индивидуально для каждого входа
Детектирование изменения выходного сигнала индивидуально для каждого компараторапрограммноаппаратно

Таблица 34. Сравнение модулей опорного напряжения компараторов семейств PIC18 и PIC24F

ПараметрыPIC18PIC24F
Количество уровней1616
Два диапазонадада
Выбор входа опорного напряжения - аналоговое питание или вход внешней опорыдада
Подключение выхода модуля к выводу контроллерадада

Таблица 35. Сравнение основных управляющих битов компараторов семейств PIC24F и PIC18

ФункцияPIC18PIC24F
Выходной сигнал компаратораCxOUTCxOUT
Инверсия выходного сигналаCxINVCxINV
Переключение входаCIS-
Режим подключения компаратораCMx-
Прекращение работы в режиме IDLE-CMIDL
Событие компаратора-CxEVT
Включение компаратора-CxEN
Подключение вывода контроллера к выходу компаратора-CxOUTEN
Конфигурация инвертирующего входа-CxNEG
Конфигурация неинвертирующего входа-CxPOS
2.8.1. Новые функции компараторов в семействе PIC24F

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

Индивидуальное отслеживание состояния каждого компаратора. Каждый компаратор семейства PIC24F имеет бит состояния, устанавливаемый при изменении сигнала на выходе компаратора. Для определения изменения состояния на выходе компаратора семейства PIC18 необходимо дополнительно анализировать бит выходного сигнала и сравнивать его с ранее сохраненным.

2.8.2. Модуль опорного напряжения

Модули опорного напряжения компараторов семейств PIC18 и PIC24F идентичны функционально и конфигурируются одинаковыми по наименованию битами.

2.8.3. Функции компараторов PIC18, не поддерживаемые в семействе PIC24

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

2.8.4. Портирование типового приложения

Рассмотрим последовательность инициализации компараторов семейств PIC18 и PIC24F для работы в следующем режиме: оба компаратора включены, работают независимо, выходы компараторов подключены к выводам контроллера, сигнал на выходе компаратора 1 - инвертирован. Модуль опорного напряжения подключен к выводу контроллера и неинвертирующему входу компаратора 1, опорное напряжение равно 0.25 * VDD.

Последовательность инициализации для семейства PIC18:

1) установить значение битов CM2:CM1 в '011', что переведет компараторы в режим независимой работы с выходами, подключенными к выводам контроллера;

2) сбросить бит C2INV для отключения инвертирования сигнала на выходе компаратора 2;

3) установить бит C1INV для разрешения инвертирования сигнала на выходе компаратора 1;

4) включить модуль опорного напряжения, установив бит CVREN, и подключить его к выводу контроллера, установив бит CVROE;

5) выбрать поддиапазон СVRSRC/32 модуля опорного напряжения;

6) выбрать линии AVDD и AVSS для питания модуля опорного напряжения, сбросив бит CVRSS;

7) установить выходное напряжение 0.25 * VDD на выходе модуля опоры, сбросив биты CVR3:CVR0.

Последовательность инициализации для семейства PIC24F:

1) включить компараторы, установив биты C1EN и C2EN;

2) подключить выходы компараторов к выводам контроллера, установив биты C1OUTEN и C2OUTEN;

3) сбросить бит C2INV для отключения инвертирования сигнала на выходе компаратора 2;

4) установить бит C1INV для разрешения инвертирования сигнала на выходе компаратора 1;

5) подключить инвертирующий вход компаратора 1 к выводу контроллера, сбросив бит C1NEG;

6) подключить неинвертирующий вход компаратора 1 к источнику опорного напряжения, сбросив бит C1POS;

7) подключить инвертирующий вход компаратора 2 к выводу контроллера, сбросив бит C2NEG;

8) подключить неинвертирующий вход компаратора 2 к выводу контроллера, установив бит C2POS;

9) включить модуль опорного напряжения, установив бит CVREN, и подключить его к выводу контроллера, установив бит CVROE;

10) выбрать поддиапазон СVRSRC/32 модуля опорного напряжения;

11) выбрать линии AVDD и AVSS для питания модуля опорного напряжения, сбросив бит CVRSS;

12) установить выходное напряжение 0.25 * VDD на выходе модуля опоры, сбросив биты CVR3:CVR0.

Литература

[1] DS39747B: PIC24FJ128GA Family Data Sheet. General Purpose, 16-Bit Flash Microcontrollers. © 2006 Microchip Technology Inc.


Часть1 | Часть 2 | Часть 3



© PIClist-RUS (piclist.ru), 2007 г.

PIClist RUS © 2007 Picozoid'ы
все права сохранены. перепечатка статей и переводов с данного сайта запрещена.