Модуль последовательного интерфейса 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
Параметры | PIC18 | PIC24F |
Выбор активного фронта на линии тактирования | да | да |
Выбор уровня на линии тактирования в режиме ожидания | да | да |
Поддержка двухпроводного режима работы | да | да |
Линия выбора ведомого (slave select) | да | да |
Буфер FIFO | нет | да |
Разрядность передаваемых/принимаемых данных | 8 бит | 8/16 бит |
Поддержка кадрового режима работы | нет | да |
Поддержка режима работы "синхронный USART" | нет | да |
Большинство псевдонимов служебных битов и регистров модуля SPI в
семействе PIC24F не отличаются от аналогичных по функциональности в
семействе PIC18. В Таблице 24 приведено сравнение названий служебных битов и регистров для микроконтроллеров PIC18 и PIC24F.
Таблица 24. Сравнение основных управляющих битов и регистров для модулей SPI семейств PIC18 и PIC24F
Функция | PIC18 | PIC24F |
Полярность линии тактирования | CKE | CKE |
Активный фронт линии тактирования | CKP | CKP |
Буфер данных модуля SPI | SSPxBUF | SPIxBUF |
Бит статуса операции приема/передачи | BF | SPITBF и SPIRBF |
Флаг события модуля SPI | флаг прерывания SSPxIF | SPIxIF |
Флаг переполнения буфера | SSPOV | SPIROV |
Конфигурация момента захвата входных данных | SMP | SMP |
Выбор режима работы и скорости обмена | SSPM<3:0> | MSTEN PPRE<1:0> SPRE<2:0> SSEN |
Отключение линии передачи | TRIS | DISSDO |
Буфер FIFO. Одно из наиболее значительных усовершенствований
SPI модуля PIC18 - это введение в PIC24F 8-уровневого буфера FIFO,
который позволяет производить пакетный обмен данными с меньшими
временными затратами на прерывания. Возможна гибкая настройка глубины
заполнения буфера, при которой устанавливается флаг заполнения.
Поддержка 8-битного и 16-битного обмена. Поддерживается как 8-битный обмен, так и 16-битный. Размерность данных зависит от значения бита MODE16 (SPIxCON1<10> ).
Поддержка кадрового режима обмена. Кадровый режим обмена (используемый, в частности, в большинстве голосовых кодеков) инициализируется установкой бита FRMEN (SPIxCON2<15> ). Опционально доступна генерация импульса кадровой синхронизации с настраиваемым активным уровнем и фронтом.
Возможность использования внешней синхронизации. Линия SCK (аналогично SDO) может быть отключена битом DISSCK . Это позволяет использовать внешнюю частоту для синхронизации обмена.
Флаг прерывания. Флаг прерывания SPIxIF при приеме байта (слова) устанавливается даже в том случае, если установлен флаг переполнения SPIROV .
Все функции модуля SPI семейства PIC18 поддерживаются модулем SPI семейства PIC24F.
Рассмотрим последовательность инициализации аппаратного модуля 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> ).
Особое внимание следует уделить расчету скорости обмена. Так как модуль SPI в семействе PIC24F тактируется частотой FOSC/2, то формула расчета будет отличаться от аналогичной в PIC18.
Архитектура модуля последовательно интерфейса 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
Параметры | PIC18 | PIC24F |
Поддерживаемая частота сигнала на шине тактирования | 100 кГц / 400 кГц | 100 кГц / 400 кГц / 1 МГц |
Режим 7- и 10-битной адресации | да | да |
Упрощенный режим 10-битной адресации | нет | да |
Поддержка нескольких ведущих на шине | да | да |
Конфигурируемая маска адреса | да (до 6 бит) | да (все 7 или 10 бит) |
Общий вызов на шине | да | да |
Поддержка зарезервированных адресов | только некоторые устройства | да |
Опция удержания тактового сигнала | да | да |
Режим повторителя (IPMI) | нет | да |
Управление длительностью фронта | да | да |
Опция отключения в режиме IDLE | нет | да |
Уровни спецификации I2C и SMBus | да | да |
Большинство служебных битов модуля I2С микроконтроллеров PIC24F имеют
псевдонимы, соответствующие (или похожие) названию аналогичных битов в
семействе PIC18 - см. Таблицы 26, 27 и 28.
Таблица 26. Сравнение основных управляющих битов модулей I2C семейств PIC18 и PIC24F (вне зависимости от режима работы)
Функция | PIC18 | PIC24F |
Разрешение работы модуля | SSPEN | I2CEN |
Флаг детектирования стоп-бита | P | P |
Флаг детектирования старт-бита | S | S |
Отключение функции контроля скорости нарастания | SMP | DISSLW |
Соответствие диаграммы входных уровней спецификации SMBus | CKE | SMEN |
Флаг ошибки записи в регистр передатчика | WCOL | IWCOL |
Флаг переполнения регистра приемника | SSPOV | I2COV |
Буфер приемника заполнен | BF | RBF |
Буфер передатчика заполнен | BF | TBF |
Таблица 27. Сравнение основных управляющих битов и регистров для модулей I2C семейств PIC18 и PIC24F (работа в режиме ведомого)
Функция | PIC18 | PIC24F |
Удержание линии SCL | CKP | SCLREL |
Режим 10-битной адресации | SSPM3:SSPM0 = 1111b | A10M |
Разрешение функции общего вызова | GCEN | GCEN |
Флаг типа последнего принятого бита - адрес/данные | D/A | D/A |
Флаг операции - чтение/запись | R/W | R/W |
Таблица 28. Сравнение основных управляющих битов и регистров для модулей I2C семейств PIC18 и PIC24F (работа в режиме ведущего)
Функция | PIC18 | PIC24F |
Флаг подтверждения ACK (прием) | ACKDT | ACKDT |
Разрешение передачи бита подтверждения ACK | ACKEN | ACKEN |
Разрешение работы приемника | RCEN | RCEN |
Инициализация стоповой посылки | PEN | PEN |
Инициализация повторной стартовой посылки | RSEN | RSEN |
Инициализация стартовой посылки | SEN | SEN |
Флаг подтверждения ACK (передача) | ACKSTAT | ACKSTAT |
Статус передатчика | TRMT | TRSTAT |
Флаг коллизии на шине | BCLIF | BCL и MI2CxIF |
Следующие функции и свойства I2C модуля семейства PIC24F значительно увеличивают гибкость использования по сравнению с PIC18:
Независимая логика приемника и передатчика. В семействе
PIC24F приемник и передатчик являются функционально раздельными
модулями, каждый из которых имеет свою логику работы, набор служебных
регистров и вектор прерывания.
Режим шинного повторителя. Модуль I2C семейства PIC24F может работать в качестве "пассивного" повторителя с возможностью удержания тактового сигнала.
Поддержка общего вызова на шине. Флаг GCSTAT (I2CxSTAT<9> ) позволяет быстро определить возникновение события общего вызова, без обращения к буферу приемника.
Прерывание при приеме адреса, совпадающего с маской.
Модуль I2C семейства PIC24F в режиме работы "ведомый" может генерировать
прерывание при совпадении принятого адреса (7- или 10-битного) с
заданной маской произвольной конфигурации.
Прием 10-битного адреса. Прием 10-битного адреса в
микроконтроллерах PIC24F не требует операции побайтного считывания
адреса из регистра приемника (как в микроконтроллерах PIC18). Логика
детектирования 10-битного адреса устанавливает флаг ADD10 (I2CxSTAT<8> ).
Модуль I2C семейства PIC24F не поддерживает режим работы "программный
ведущий", который в микроконтроллерах PIC18 устанавливается битами SSPM<3:0> = 1011b . Таким образом, аппаратно поддерживаются только уровни VIH и VIL, то есть стандартные входные уровни.
Программные приложения, обеспечивающие работу I2C модуля в
микроконтроллерах семейства PIC18, могут сильно отличаться в зависимости
от конкретных условий и структуры системы. Поэтому полностью охватить
все режимы работы, последовательности действий и реакции на различные
события не представляется возможным. Наиболее простой способ
портирования приложения с семейства PIC18 на микроконтроллер PIC24F
состоит в пошаговом переносе алгоритма работы, с учетом специфики и
дополнительных функций модуля I2C PIC24F. Такой подход, кроме выполнения
основной задачи, позволит значительно сократить объем исполняемого
кода.
Значительные различия между модулями I2C семейств PIC18 и PIC24F
могут привести к некоторым затруднениям при портировании приложения.
Например, типичной проблемой является тот факт, что в семействе PIC18
младший бит в регистре адреса SSPxADD равен 1, в то время как в семействе PIC24F - 0 (регистр I2CxADD ), что необходимо учитывать при работе в режиме ведомого.
Часть устройств семейства PIC24F не имеет функции вывода
микроконтроллера из режимов пониженного потребления SLEEP и IDLE при
совпадении адреса, а так же не обновляет бит D/A при передаче в режиме ведомого. Указанные ограничения отражены в документации на конкретный контроллер.
Определение частоты на линии тактирования в режиме ведомого в
семействе PIC24F отличается от PIC18. Так как частота выполнения
инструкций в PIC24F привязана к FOSC/2, частота обмена будет в
2 раза больше при прочих равных условиях. Формулы расчета и таблицы
стандартных скоростей обмена приведены в документации на семейство
PIC24F [1].
Новый модуль универсального асинхронного приемопередатчика (UART)
семейства PIC24F является полнодуплексным интерфейсом со значительно
расширенной функциональностью по сравнению с модулем EUSART семейства
PIC18.
Основные новые особенности модуля UART PIC24F включают в себя
увеличенную скорость обмена, аппаратную поддержку контроля четности,
конфигурацию уровня на линии в режиме ожидания, поддержку аппаратного
управления потоком и т. д.
В Таблице 29 приведено сравнение основных функций модуля UART PIC24F и модуля EUSART PIC18.
Замечание: модуль UART семейства PIC24F не поддерживает
синхронный режим обмена. В качестве синхронного приемопередатчика
возможно использование аппаратного модуля SPI.
Таблица 29. Сравнение основных функций модуля UART PIC24F и модуля EUSART PIC18
Параметры | PIC18 | PIC24F |
Асинхронный дуплексный режим работы с
поддержкой:- автоматического выхода из энергосберегающего режима;-
автоматической подстройки скорости обмена;- передачей 12-битного сигнала
Break (см. спецификацию LIN) | да | да |
Дуплексный 8- и 9-битный обмен | да | да |
Поддержка 9-битного обмена с функцией детектирования адреса (9 бит = 1) | да | да |
Аппаратное управление потоком (сигналы CTS и RTS) | нет | да |
Количество стоповых бит | 1 | 1 или 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 | нет | да |
Генерирование прерываний | при приеме и при передаче | при приеме, при передаче и при детектировании ошибки |
Большинство служебных битов модуля UART микроконтроллеров PIC24F
имеют псевдонимы, соответствующие (или похожие) названию аналогичных
битов в семействе PIC18 - см. Таблицу 30.
Таблица 30. Сравнение основных управляющих битов модуля UART семейства PIC24F и модуля EUSART семейства PIC18
Функция | PIC18 | PIC24F |
Включение механизма автоматической настройки скорости обмена (Auto Baud Detect) | ABDEN | ABAUD |
Включение адресного режима обмена | ADDEN | ADDEN |
Выбор высокой скорости обмена (для PIC18F - высокая/низкая
скорость, для PIC24F - выбор делителя генератора тактовой частоты
4x/16x) | BRGH | BRGH |
Включение приемника | CREN (только приемник) | UARTEN (приемник и передатчик) |
Флаг ошибки фрейма | FERR | FERR |
Флаг переполнения буфера | OERR | OERR |
Флаг нахождения приемника в режиме ожидания | RCIDL | RIDLE |
Флаг прерывания по приему | RCIF | UxRXIF |
Флаг наличия данных в буфере приемника |
| URXDA |
9-й бит принятого кадра (в 9-битном режиме работы) | RX9D | UxRXREG<8> |
Бит разрешения 9-биного приема | RX9 | PDSEL1:PDSEL0 |
Бит разрешения 9-битной передачи | TX9 |
Отправка символа Break (спецификация LIN) | SENDB | UTXBRK |
Состояние сдвигового регистра передатчика | TRMT | TRMT |
Включение передатчика | TXEN | UTXEN |
Флаг прерывания по передаче | TXIF | UxTXIF |
9-й бит передаваемых данных | TX9D | UxTXREG |
Разрешение прерывания по заднему фронту на линии RX (режим WAKE-UP) | WUE | WAKE |
Микроконтроллеры PIC24F не поддерживают следующие функции модуля UART контроллеров PIC18:
- низкая частота тактового генератора: FOSC/(64 (n+1)) ;
- синхронный режим работы. Модули UART PIC24F не поддерживают
синхронный обмен как в режиме ведомого, так и в режиме ведущего. Для
организации синхронного обмена рекомендуется использовать модуль SPI
(см. п. 2.4 "Модуль SPI").
- изменение скорости обмена одним битом. Модули EUSART семейства
PIC18 имеют возможность изменения скорости обмена с помощью переключения
одного бита BRGH . Для изменения скорости обмена в PIC24F требуется конфигурация делителя тактового генератора.
Рассмотрим последовательность инициализации аппаратного модуля 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 .
Рассмотрим последовательность инициализации аппаратного модуля 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 .
При портировании приложения, использующего модуль 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 .
10-битный АЦП семейства PIC24F значительно отличается от аналогичного модуля в микроконтроллерах PIC18 (см. Таблицу 31).
Основные отличия - это увеличенная до 500 тыс. выборок в секунду
скорость преобразования, режим автоматического сканирования каналов,
буфер результатов с различными режимами заполнения, четыре формата
представления результата, индивидуально настраиваемые аналоговые входы.
Новые функции позволяют значительно увеличить гибкость системы и снизить
объем программных ресурсов, используемых для реализации
аналого-цифрового преобразования.
Таблица 31. Сравнение модулей 10-битного АЦП семейств PIC18 и PIC24F
Параметры | PIC18 | PIC24F |
Разрядность | 10 бит | 10 бит |
Максимальная скорость преобразования (тыс. выборок в секунду) | 100 | 500 |
Источники опорного напряжения | внутренний и внешний | внутренний и внешний |
Флаг окончания преобразования | да | да |
Настраиваемый предделитель для тактирования АЦП | да | да |
Встроенный RC генератор для реализации преобразования при остановленном основном генераторе | да | да |
Автоматическая выборка (заряд устройства выборки-хранения - УВХ) | да | да |
Настройка длительности выборки | да | да |
Индивидуально настраиваемые аналоговые входы | нет | да |
Специальный триггер начала преобразования (от модуля сравнения или внешнего прерывания) | да | да |
Автоматическое сканирование каналов | нет | да |
Буфер результатов преобразования | нет | да |
4 формата представления результата | нет | да |
Дифференциальный формирователь напряжения для УВХ | нет | да |
Структуры модулей АЦП семейств PIC18 и PIC24F довольно похожи - это
10-битные АЦП последовательного приближения с настраиваемой скоростью
преобразования, встроенным тактовым RC-генератором, возможностью
изменения канала преобразования в ходе работы. Основные биты и регистры,
отвечающие за функционирование АЦП в PIC18 и PIC24F приведены в Таблице 32. Они имею различные названия, но выполняют сходные функции.
Таблица 32. Сравнение основных управляющих битов 10-битных АЦП семейств PIC24F и PIC18
Функция | PIC18 | PIC24F |
Биты, используемые для выбора опорных напряжений - AVDD или VREF+ для позитивного и AVSS или VREF- для негативного входов опоры | VCFG2:VGFG0 | VCFG2:VGFG0 |
Флаг программного старта и индикации окончания преобразования | GO/DONE | DONE |
Выбор источника тактирования (основной системный генератор или встроенный RC) и делителя тактовой частоты | ADCS2:ADCS0 | ADRC, ADCS7:ADCS0 |
Конфигурация времени автоматической выборки | ACQT2:ACQT0 | SAMC4:SAMC0 |
Настройка вывода как аналогового | PCFG3:PCFG0 | PCFG15:PCFG0 |
Выбор канала преобразования | CHS3:CHS0 | CSSL15:CSSL0 |
Конфигурация триггера начала преобразования (от модуля сравнения или внешнего прерывания) | CCPxM3:CCPxM0 (CCPxM:<3:0>) | SSRC2:SSRC0 |
Увеличенная скорость преобразования. Минимальный период
тактовой частоты для АЦП PIC24F уменьшен с 750 нс (PIC18) до 75 нс,
таким образом, обеспечивается скорость преобразования до 500 тысяч
выборок в секунду.
Гибкая буферизация результатов. Буфер результатов
преобразования может быть сконфигурирован как два 8-уровневых буфера или
один 16-уровневый буфер. В первом случае результаты преобразования
могут сохраняться поочередно в каждый буфер или последовательно до
заполнения одного из них.
Форматы результата. Результат преобразования может быть представлен в одном из четырех форматов, включая форматы с фиксированной точкой.
Автоматическое сканирование каналов - аппаратная функция,
позволяющая настроить АЦП таким образом, чтобы по окончании одного
преобразования мультиплексор автоматически переключался на следующий
выбранный канал.
Индивидуальная конфигурация аналоговых входов. Каждый
вывод, имеющий функцию аналогового, может быть выбран индивидуально, в
отличие от PIC18, в которых выбирается определенная последовательность
выводов ANx.
Дифференциальное преобразование. Дифференциальный
формирователь напряжения для устройства выборки-хранения позволяет
оцифровывать разность напряжений между двумя аналоговыми каналами.
Все функции 10-битного модуля АЦП семейства PIC18 так же поддерживаются в семействе PIC24F.
Последовательность конфигурация модуля АЦП в семействе 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> ).
Диапазон входных напряжений для модуля АЦП PIC24F меньше, чем для
PIC18, так как PIC24F имеет более низкое напряжение питания. Как для
PIC18, так и для PIC24F напряжение на аналоговом входе не должно
превышать VDD более чем на 0.3 В и не должно быть ниже VSS более чем на 0.3 В.
Входное сопротивление модуля АЦП PIC24F составляет 2.5 кОм, в то
время как у большинства контроллеров PIC18 входное сопротивление - 10
кОм. Емкость конденсатора устройства выборки-хранения PIC24F составляет
4.4 пФ, у семейства PIC18 - 25 пФ. Уменьшение емкости конденсатора УВХ и
входного сопротивления, возможно, потребует изменения внешних
согласующих цепей.
Микроконтроллеры семейств PIC18 и PIC24F имеют 2 аналоговых
компаратора с аналогичными свойствами, однако в PIC24F обеспечивается большая
гибкость конфигурации: компараторы PIC18 имеют только 8 режимов
подключения, один из которых - отключение модулей, в то время как в
PIC24F практически каждый вывод компаратора может быть настроен
индивидуально - возможны варианты, недоступные в PIC18. Оба семейства
имеют модуль генерации опорного напряжения, основанный на резистивном
делителе напряжения питания.
Сравнение модулей компараторов и генерации опорного напряжения для PIC18 и PIC24F приведено в Таблицах 33 и 34.
Таблица 33. Сравнение компараторов семейств PIC18 и PIC24F
Параметры | PIC18 | PIC24F |
Количество компараторов | 2 | 2 |
Аппаратное инвертирование выходного сигнала | да | да |
Подключение выхода компаратора к выводу контроллера | доступно в 3 конфигурациях | доступно во всех конфигурациях |
Раздельное включение компараторов | доступно в 1 конфигурации | доступно во всех конфигурациях |
Подключение входов компаратора к различным выводам контроллера | доступно в 1 конфигурации | доступно во всех конфигурациях, индивидуально для каждого входа |
Детектирование изменения выходного сигнала индивидуально для каждого компаратора | программно | аппаратно |
Таблица 34. Сравнение модулей опорного напряжения компараторов семейств PIC18 и PIC24F
Параметры | PIC18 | PIC24F |
Количество уровней | 16 | 16 |
Два диапазона | да | да |
Выбор входа опорного напряжения - аналоговое питание или вход внешней опоры | да | да |
Подключение выхода модуля к выводу контроллера | да | да |
Таблица 35. Сравнение основных управляющих битов компараторов семейств PIC24F и PIC18
Функция | PIC18 | PIC24F |
Выходной сигнал компаратора | CxOUT | CxOUT |
Инверсия выходного сигнала | CxINV | CxINV |
Переключение входа | CIS | - |
Режим подключения компаратора | CMx | - |
Прекращение работы в режиме IDLE | - | CMIDL |
Событие компаратора | - | CxEVT |
Включение компаратора | - | CxEN |
Подключение вывода контроллера к выходу компаратора | - | CxOUTEN |
Конфигурация инвертирующего входа | - | CxNEG |
Конфигурация неинвертирующего входа | - | CxPOS |
Гибкость конфигурирования. Каждый компаратор микроконтроллеров
семейства PIC24F имеет возможность индивидуальной настройки
инвертирующего и неинвертирующего входов, включения компаратора,
внутреннего соединения выхода компаратора с выводом контроллера,
инвертирования выходного сигнала. Компараторы семейства PIC18 имеют
только восемь фиксированных конфигураций, одна из которых - отключение
компаратора. Настройки компараторов PIC24F позволяют добиться всех
конфигураций PIC18.
Индивидуальное отслеживание состояния каждого компаратора.
Каждый компаратор семейства PIC24F имеет бит состояния, устанавливаемый
при изменении сигнала на выходе компаратора. Для определения изменения
состояния на выходе компаратора семейства PIC18 необходимо дополнительно
анализировать бит выходного сигнала и сравнивать его с ранее
сохраненным.
Модули опорного напряжения компараторов семейств PIC18 и PIC24F
идентичны функционально и конфигурируются одинаковыми по наименованию
битами.
Компараторы семейства PIC18 имеют две конфигурации, в которых
неинвертирующие выходы соединены аппаратно и выведены на один вывод
микроконтроллера. Входы компараторов PIC24F настраиваются индивидуально,
поэтому для обеспечения такого режима необходимо аппаратное внешнее
соединение двух выводов микроконтроллера.
Рассмотрим последовательность инициализации компараторов семейств
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© PIClist-RUS (piclist.ru), 2007 г.
|