Портирование приложений с семейства PIC18 на PIC24F
2. Периферийные модули PIC24F
2.1. Порты ввода/вывода общего назначения
Порты ввода/вывода семейств PIC18 и PIC24F имеют похожую структуру. Оба семейства имеют набор управляющих регистров PORT, LAT и TRIS для каждого порта и возможность мультиплексирования цифровой и аналоговой периферии. Семейство PIC24F имеет дополнительный регистр ODC для каждого порта, состояние битов которого определяет тип выхода – полный драйвер или открытый сток. Кроме того, увеличено количество выводов, вызывающих прерываний по изменению состояния (табл. 18).
Таблица 18. Основные различия портов ввода/вывода общего назначения семейств PIC18 и PIC24F
Параметры |
PIC18 |
PIC24F |
Допустимое входное напряжение выше VDD + 0.3 В |
нет |
только для цифровых выводов |
Внутренние подтягивающие к VDD резисторы |
PORTB (все выводы) |
Различные порты, индивидуальная конфигурация |
Управляющие регистры |
PORTx, LATx и TRISx |
PORTx, 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 имеют на входе триггер Шмитта. Это необходимо иметь в виду при выборе других компонентов системы – они должны обеспечивать необходимые логические уровни.