Каталог статей

Главная » Статьи » Мои статьи

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

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© PIClist-RUS (piclist.ru), 2007 г.

Категория: Мои статьи | Добавил: MAS (25.11.2012)
Просмотров: 930 | Рейтинг: 0.0/0
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Категории раздела
Мои статьи [51]
Справочные данные [165]
Справочные данные
Наш опрос
Оцените мой сайт
Всего ответов: 30
Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0
Форма входа
Баннер
$$
Друзья сайта
  • Спортсменам
  • Огородникам СЮД(А
  • Строим вместе
  • Мир развлечений
  • Кто хочет похудеть
  • Здоровье у нас одно
  • Юмор
  • Кулинарные рецепты
  • Картинки_Заставки_Демотивоторы
  • Семья
  • Кто на мальчишник
  • Металлообработка
  • Кто на девишник
  • Блоки питания
  • Смерть соседям
  • Радиомедведь
  • Кибермедведь
  • Радиосайт
  • Деревообработка
  • Поиск