AT91SAM7 Parallel Input/Output Controller (PIO) |
![]() |
Добавил(а) microsin | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Контроллер параллельного ввода/вывода (Parallel Input/Output Controller, сокращенно PIO) микроконтроллера AT91SAM7 (ARM7 компании Atmel) управляет до 32 полностью программируемых портов ввода/вывода. Каждая такая программируемая ножка микроконтроллера может быть выделена как простой программируемый цифровой порт, работающий на вход или выход (GPIO), или назначена для выполнения функции встроенного в кристалл микроконтроллера периферийного устройства (SPI, CAN, UART и т. д.). Это гарантирует эффективную оптимизацию использования выводов кристалла микроконтроллера. Каждая ножка ввода/вывода связана с номером бита во всех 32-битных регистрах, используемых в интерфейсе программирования (см. ниже раздел "Интерфейс программирования PIO"). Каждая ножка ввода/вывода (I/O) контроллера PIO предоставляет следующие функции: • Детектирование изменения входного логического сигнала с возможностью генерации прерывания по этому событию. Контроллер PIO также предоставляет функцию синхронного вывода до 32 бит данных за одну операцию записи. Рис. 27-1. Блок-диаграмма PIO. Рис. 27-2. Принцип использования PIO в firmware микроконтроллера. [Зависимости PIO от ресурсов микроконтроллера] Мультиплексирование выводов. Каждый вывод микроконтроллера можно программно конфигурировать либо только для использования обычного сигнала ввода/вывода общего назначения (general-purpose I/O, GPIO) line only, или как линия сигнала, мультиплексируемая на одно или два устройства периферийного ввода/вывода (SPI, CAN, UART и т. д.). Поскольку мультиплексирование определено аппаратно, и следовательно зависит от модели микроконтроллера, то разработчик системы должен тщательно определить конфигурацию контроллеров PIO, которая может потребоваться для приложения firmware. Когда ножка порта используется только как вывод GPIO, например она не мультиплексируется с каким-либо встроенным в кристалл микроконтроллера периферийным устройством, программирование контроллера PIO в контексте назначения для периферийного устройства не дает никакого эффекта, и контроллер PIO может только управлять состоянием вывода (например, какой нужно выдавать лог. уровень на выходе) и его конфигурацией (например, подключен ли на нем pull-up резистор, и как настроен вывод - на вход или выход). Внешние сигналы прерывания (External Interrupt Lines). Сигналы прерываний FIQ (быстрое прерывание) и IRQ0 .. IRQn обычно мультиплексируются с помощью контроллеров PIO. Однако нет необходимости назначать ножку I/O на функцию прерывания, поскольку контроллер PIO не оказывает влияния на входы и сигналы прерывания (FIQ или IRQ), которые используются как входы. Управление питанием. Контроллер управления питанием (Power Management Controller, PMC [2]) управляет поступлением тактовых сигналов на контроллер PIO, чтобы можно было управлять энергопотреблением (когда тактовый сигнал отключен, то ток потребления микроконтроллера уменьшается). Запись в любой регистр интерфейса программирования PIO не требует разрешения тактовой частоты для PIO. Это означает, что конфигурировать сигналы I/O микроконтроллера не требует разрешения тактирования контроллера PIO. Однако, когда такты отключены, доступны не все функциональные возможности PIO. Обратите внимание, что прерывание по изменению логического уровня входного сигнала (Input Change Interrupt) и чтение уровня сигнала на входе требуют разрешения подачи тактовой частоты. После аппаратного сброса тактирование PIO по умолчанию запрещено. Пользователь должен сконфигурировать PIO перед тем, как осуществлять доступ к информации любого входного сигнала. Генерация прерываний. В контексте обработки прерывания контроллеры PIO считаются периферийными устройствами. Это означает, что сигналы прерывания контроллера PIO подключены среди источников прерывания 2 .. 31. Обратитесь к значению идентификатора периферии контроллера PIO в даташите на используемый микроконтроллер, чтобы определить источники прерывания, выделенные для контроллеров PIO. Контроллер PIO может генерировать прерывание только в том случае, если для контроллера PIO разрешено тактирование (это осуществляется программированием PMC [2]). [Функциональное описание PIO] Один контроллер PIO (в микроконтроллере AT91SAM7 их несколько, PIOA, PIOB и т. д.) предоставляет до 32 полностью программируемых линии ввода/вывода. Основная логика управления показана на рис. 27-3. В этом описании отображен один такой сигнал, но всего их 32, каждый из которых соответствует возможному индексу 0..31. Рис. 27-3. I/O Line Control Logic. Управление верхним нагрузочным резистором (pull-up). Каждый сигнал I/O разработан со встроенным pull-up резистором. Этот резистор можно разрешить (подключить) или запретить (отключить) путем записи в разряды соответствующих регистров PIO_PUER (Pull-up Enable Register) и PIO_PUDR (Pull-up Disable Resistor). Запись в эти регистры отражается установкой или очисткой соответствующих бит в регистре PIO_PUSR (Pull-up Status Register). Прочитанная лог. 1 в разряде регистра PIO_PUSR означает, что pull-up на этой ножке запрещен, и прочитанный лог. 0 означает, что pull-up разрешен. Управление pull-up резистором возможно в любом случае, независимо от конфигурации сигнала ввода вывода (т. е. независимо от того, как она настроена - или как вывод периферийного устройства, или как порт GPIO). После сброса все резисторы pull-up по умолчанию разрешены, т. е. в регистр PIO_PUSR сбрасывается в значение 0x0. Ножка GPIO или ножка для периферийного устройства. Когда вывод мультиплексирован с одним или двумя функциями встроенных в кристалл периферийных устройств, выбор управляется регистрами PIO_PER (PIO Enable Register) и PIO_PDR (PIO Disable Register). Регистр PIO_PSR (PIO Status Register) показывает результат записи в эти регистры, и показывают, управляется ли вывод соответствующим периферийным устройством или контроллером PIO. Значение 0 показывает, что вывод управляется соответствующим встроенным в кристалл периферийным устройством, выбранным регистром PIO_ABSR (AB Select Status Register). Значение 1 показывает, что вывод управляется контроллером PIO. Если ножка используется как порт GPIO (т. е. она не мультиплексирована со встроенным в кристалл микроконтроллера периферийным устройством), регистры PIO_PER и PIO_PDR не оказывают никакого эффекта, и чтение PIO_PSR возвратит 1 для соответствующего бита. После сброса обычно сигналы I/O по умолчанию управляются контроллером PIO, например PIO_PSR сбрасывается в 1. Однако для некоторых случаев важно управлять сигналами PIO со стороны периферийного устройства (как это необходимо для сигналов выборки микросхем памяти, которые должны быть неактивны после сброса или сигналов адреса, которые должны быть переведены в 0 для загрузки из внешней памяти). Таким образом, значение сброса для регистра PIO_PSR определяется маркой микроконтроллера, в зависимости от мультиплексирования функциональных возможностей выводов. Выбор Peripheral A или B. Контроллер PIO предоставляет мультиплексирование до 2 периферийных функций на одном выводе порта. Выбор выполняется записью в регистр PIO_ASR (A Select Register) и PIO_BSR (Select B Register). PIO_ABSR (AB Select Status Register) показывает, какой сигнал периферийного устройства в настоящий момент выбран. Для каждого вывода соответствующий бит в состоянии лог. 0 показывает, что выбрана функция peripheral A, в то время как соответствующий бит в состоянии лог. 1 показывает, что выбрана функция peripheral B. Обратите внимание, что мультиплексирование сигналов peripheral A и B влияет только на выходные сигналы. Периферийные входные сигналы всегда подключены к выводу входа. После сброса PIO_ABSR находится в состоянии лог. 0, и это показывает, что все сигналы PIO сконфигурированы для функций peripheral A. Однако peripheral A обычно не управляют выводом, поскольку контроллер PIO сбрасывается в режим сигнала ввода/вывода (GPIO). Запись в PIO_ASR и PIO_BSR управляет состоянием PIO_ABSR независимо от конфигурации вывода. Однако назначение для вывода функции периферийного устройства требует записи в соответствующий регистр выбора периферийного устройства (PIO_ASR или PIO_BSR) в дополнение к записи в PIO_PDR. Управление выходом. Когда сигнал I/0 назначен под функцию периферийного устройства, например когда соответствующий бит в регистре PIO_PSR находится в состоянии лог. 0, управление сигналом I/O осуществляется встроенным периферийным устройством микроконтроллера. Peripheral A или B, в зависимости от значения в регистре PIO_ABSR, определяет, работает ли вывод как выход, или нет. Когда сигнал I/O управляется контроллером PIO, вывод может быть сконфигурирован как выход. Это осуществляется записью в регистры PIO_OER (Output Enable Register) и PIO_ODR (Output Disable Register). Результат этих операций записи отображается в регистре PIO_OSR (Output Status Register). Когда бит в этом регистре читается как 0, то соответствующий сигнал I/O используется только как вход. Когда бит читается как 1, то соответствующий сигнал I/O работает как выход и управляется программированием контроллера PIO. Уровень, который выставлен на выходе, определяется записью в регистры PIO_SODR (Set Output Data Register) и PIO_CODR (Clear Output Data Register). Результат этих операций записи отображается в регистре PIO_ODSR (Output Data Status Register), который показывает логические уровни на выходных линиях I/O. Запись в PIO_OER и PIO_ODR управляет состоянием PIO_OSR независимо от того, как управляется вывод - или от контроллера PIO, или от периферийного устройства. Эта позволяет конфигурировать сигнал I/O перед установкой его под управление контроллера PIO. Подобным образом запись в регистры PIO_SODR и PIO_CODR влияет на содержимое регистра PIO_ODSR. Это важно, поскольку определяет первый уровень, который выдается на выходной сигнал I/O. Синхронный вывод данных. Управление параллельными шинами с использованием нескольких контроллеров PIO требует двух последовательных операций записи в регистры PIO_SODR и PIO_CODR соответствующих контроллеров PIO. Это может привести к нежелательным переходным значениям на параллельной шине. Контроллер PIO предоставляет прямое управление выходами PIO за один доступ на запись в регистр PIO_ODSR (Output Data Status Register). Будут записаны только биты, демаскированные регистром PIO_OWSR (Output Write Status Register). Биты маски в регистре PIO_OWSR устанавливаются записью в регистр PIO_OWER (Output Write Enable Register), и очищаются записью в регистр PIO_OWDR (Output Write Disable Register). После сброса синхронный вывод данных для всех сигналов I/O запрещен, поскольку состояние по умолчанию регистра PIO_OWSR сбрасывается в значение 0x0. Совмещенное управление выходом (открытый сток). Каждая ножка I/O может быть запрограммирована независимо от других для работы как выход с открытым стоком (Open Drain), это так называемая функция совмещенного управления выходом (Multi Drive). Эта функция позволяет параллельно соединить друг с другом несколько выходов I/O, которые могут переводиться в состояние лог. 0 каждым из подключенных на этот сигнал устройств (так называемая монтажная функция ИЛИ-НЕ). Обычно для такого функционала требуется подключение внешнего верхнего нагрузочного резистора pull-up (или подключения внутреннего резистора pull-up) это обычно требуется для гарантии формирования на полученном сигнале уровня лог. 1. Эта функция Multi Drive управляется регистрами PIO_MDER (Multi-driver Enable Register) и PIO_MDDR (Multi-driver Disable Register). Multi Drive может быть выбрано независимо от того, управляется ли сигнал I/O контроллером PIO, либо функцией периферийного устройства. Регистр PIO_MDSR (Multi-driver Status Register) показывает, как сконфигурирован вывод для поддержки внешних драйверов. После сброса функция Multi Drive для всех выводов запрещена, т. е. PIO_MDSR сбрасывается в значение 0x0. Параметры времени для изменения состояния выхода. На рис. 27-4 показано, как выходы управляются записью либо в регистр PIO_SODR, либо в регистр PIO_CODR, либо прямой записью в регистр PIO_ODSR. Этот последний случай разрешен только тогда, когда установлен соответствующий бит в регистре PIO_OWSR. Рис. 27-4 также показывает, когда доступна обратная связь в регистре PIO_PDSR. Рис. 27-4. Диаграммы времени управления выходом. Входы. Логический уровень на каждом из сигналов I/O может быть прочитан через регистр PIO_PDSR (Pin Data Status Register). Этот регистр показывает уровень на ножке I/O независимо от её конфигурации, т. е. независимо от того, работает ли ножка уникально как вход, либо управляется контроллером PIO, либо управляется встроенным периферийным устройством микроконтроллера. Чтение уровней I/O требует наличия разрешенного тактирования контроллера PIO, иначе чтения PIO_PDSR будет возвращать уровни на сигналах I/O в тот момент времени, когда такты PIO были запрещены. Фильтрация иголок на входе (Input Glitch Filtering). На каждом выводе порта I/O присутствует фильтр помех по входу, программируемый независимо от других выводов портов I/O, это так называемый glitch filter. Когда этот фильтр разрешен, импульсные выбросы на входе с длительностью меньше чем 1/2 периода главной тактовой частоты (Master Clock, MCK) будут автоматически отбрасываться, и не будут проходить в аппаратуру микроконтроллера, в то время импульсы с длительностью 1 такт MCK или более длинные будут восприняты. Импульсы с длительностями между 1/2 периода MCK и 1 периодом MCK могут случайным образом восприняты или нет, в зависимости от того, в какой момент времени эти импульсы появились. Таким образом, чтобы импульс был гарантированно воспринят, его длительность должна превышать 1 такт MCK, в то время как для гарантированной фильтрации входных помех требуется, чтобы их длительность была не больше 1/2 такта MCK. Этот фильтр, если он разрешен, вносит дополнительную задержку входного сигнала на 1 такт MCK, если изменение сигнала на входе произошло перед фронтом нарастания. Однако эта задержка не наблюдается, если изменение сигнала на входе произошло перед спадом уровня на входе. Это показано на рис. 27-5. Рис. 27-5. Интервалы времени работы фильтра входных помех. Фильтры помех управляются настройкой регистров PIO_IFER (Input Filter Enable Register), PIO_IFDR (Input Filter Disable Register), и состояние активности фильтра можно отследить в регистре PIO_IFSR (Input Filter Status Register). Запись в PIO_IFER и PIO_IFDR соответственно устанавливает и очищает биты в регистре PIO_IFSR. Состояние регистра PIO_IFSR определяет, разрешен или запрещен входной фильтр на каждом разряде порта I/O. Когда фильтр помех разрешен, это не влияет на поведение входов периферийных устройств. Фильтр влияет только на значения, которые читаются в регистре PIO_PDSR, и также фильтр влияет на детектирование прерывания по изменению уровня входного сигнала. Фильтры помех требуют, чтобы было разрешено тактирование контроллера PIO. Прерывание по изменению уровня на входе (Input Change Interrupt). Контроллер PIO может быть запрограммирован для генерации прерывания, когда обнаружено изменение входа сигнала I/O. Прерывание Input Change управляется записью в регистр PIO_IER (Interrupt Enable Register) и PIO_IDR (Interrupt Disable Register), которые соответственно разрешают и запрещают прерывание по изменению входа, что отражается в установке и очистке бит регистра PIO_IMR (Interrupt Mask Register). Детектирование изменения сигнала на входе возможно только путем сравнения двух следующих друг за другом по времени выборок входного уровня на входе, при этом должно быть разрешено тактирование контроллера PIO. Прерывание Input Change доступно независимо от конфигурации порта ввода вывода, т. е. он может быть сконфигурирован только как вход, управляться контроллером PIO как выход или назначен на управление функцией периферийного устройства микроконтроллера. Когда было детектировано изменение уровня на ножке порта I/O, будет установлен соответствующий бит в регистре PIO_ISR (Interrupt Status Register). Если установлен соответствующий бит регистра PIO_IMR, то будет выставлено прерывание контроллера PIO. Сигналы прерывания от 32 каналов суммируются функцией ИЛИ друг с другом для генерации одного сигнала прерывания для контроллера прерываний AIC (Advanced Interrupt Controller). Когда программа читает PIO_ISR, все прерывания автоматически очищаются. Это означает, что все ожидающие прерывания, которые обозначены состоянием регистра PIO_ISR, должны быть обработаны после единственной операции чтения регистра PIO_ISR. Рис. 27-6. Интервалы времени прерывания по изменению входа (Input Change Interrupt). [Пример программирования I/O] Пример программирования, показанный в таблице 27-1, используется для определения следующей конфигурации: • 4-разрядный выходной порт для сигналов I/O с номерами бит 0 .. 3 (это должно быть сконфигурировано одной операцией записи), с открытым стоком, с разрешенным внутренним pull-up резистором. Таблица 27-1. Пример программирования ножек микроконтроллера.
// Пример управления портом для включения/выключения светодиода.
// Светодиод подключен к 21-му разряду порта PIOB.
#include "AT91SAM7X256.h"
// Вывод порта светодиода:
#define LED_PIN (1<<21)
// Макрос для переключения вывода в лог. 0:
#define LED0() (AT91C_BASE_PIOB->PIO_CODR = LED_PIN)
// Макрос для переключения вывода в лог. 1:
#define LED1() (AT91C_BASE_PIOB->PIO_SODR = LED_PIN)
// Макрос для переключения вывода в противоположное состояние:
#define LEDCHANGE() {(AT91C_BASE_PIOB->PIO_ODSR & LED_PIN)?LED0():LED1();}
//*----------------------------------------------------------------------------
//* Функция разрешает тактирование периферйного устройства
//*----------------------------------------------------------------------------
__inline void AT91F_PMC_EnablePeriphClock ( AT91PS_PMC pPMC, // указатель на контроллер PMC unsigned int periphIds) // идентификаторы периферийных устройств // в виде OR-маски { pPMC->PMC_PCER = periphIds; } //*----------------------------------------------------------------------------
//* Функция разрешает PIO в режиме выхода output mode
//*----------------------------------------------------------------------------
__inline void AT91F_PIO_CfgOutput( AT91PS_PIO pPio, // указатель на контроллер PIO unsigned int pioEnable) // OR-маска вывода, который должен быть разрешен { pPio->PIO_PER = pioEnable; // переключение вывода в режим GPIO pPio->PIO_OER = pioEnable; // конфигурирование порта как выхода } // Разрешение тактирования PIOB: AT91F_PMC_EnablePeriphClock ( AT91C_BASE_PMC, 1 << AT91C_ID_PIOB ); // Конфигурация вывода порта для светодиода в режиме выхода:
AT91F_PIO_CfgOutput(AT91C_BASE_PIOB, LED_PIN);
// Вывод лог. 0:
LED0();
// Вывод лог. 1:
LED0();
// Переключение в противоположное состояние:
LEDCHANGE();
// Пример определения лог. уровня на входе с целью узнать, установлена ли
// карта памяти в слот, или нет. На вход подается сигнал с контакта установки
// в слот карты памяти SD. Этот сигнал подключен к 26-му биту порта PIOB.
// Маска для ножки порта:
#define CARD_SENSE_SW (1<<26)
//*----------------------------------------------------------------------------
//* Функция разрешает PIO в режиме входа
//*----------------------------------------------------------------------------
__inline void AT91F_PIO_CfgInput( AT91PS_PIO pPio, // указатель на контроллер PIO unsigned int inputEnable) // OR-маска выводов { // Запрет работы порта в режиме выхода: pPio->PIO_ODR = inputEnable; // Разрешение работы порта: pPio->PIO_PER = inputEnable; } // Разрешение тактирования PIOB: AT91F_PMC_EnablePeriphClock ( AT91C_BASE_PMC, 1 << AT91C_ID_PIOB ); // Конфигурация ножки карточки (0: карта SD вставлена, 1: нет)
AT91F_PIO_CfgInput(AT91C_BASE_PIOB, CARD_SENSE_SW);
//*----------------------------------------------------------------------------
//* Функция определяет, установлена ли карта SD в слот. Если карта установлена,
//* то будет возвращено значение true, иначе будет возвращено false.
//*---------------------------------------------------------------------------- boolean isCardInSlot (void) { if (CARD_SENSE_SW & AT91F_PIO_GetInput(AT91C_BASE_PIOB)) return false; else return true; } [Интерфейс программирования PIO] Каждая ножка I/O управляется контроллером PIO Controller связанным с ней битом в каждом из регистров интерфейса программирования контроллера PIO. Каждый регистр размером в 32 бита. Если параллельный сигнал I/O не определен, то запись в соответствующий бит не даст никакого эффекта. Неопределенные биты будут прочитаны как 0. Если сигнал I/O не мультиплексируется с каким-либо периферийным устройством, то эта линия I/O управляется контроллером PIO, и бит в в регистре PIO_PSR систематически будет читаться как лог. 1. В микроконтроллере ARM7 обычно имеется несколько контроллеров PIO, каждый из которых отвечает за определенную группу из 32 выводов, выведенных из корпуса микроконтроллера. Количество контроллеров PIO зависит от марки микроконтроллера, обратитесь за информацией к даташиту. Таблица 27-2 в первом столбце показывает смещения от начального базового адреса, который назначен контроллеру PIO (адрес указан в даташите на микроконтроллер). Например, у микроконтроллеров AT91SAM7X128, AT91SAM7X256, AT91SAM7X512 имеется 2 контроллера PIO: PIOA (базовый адрес 0xFFFFF400) и PIOB (базовый адрес 0xFFFFF600). Таблица 27-2. Регистры PIO.
Примечания: (1). Значение при сбросе PIO_PSR зависит от марки микроконтроллера. Регистр разрешения управления выводом со стороны контроллера PIO (PIO Controller PIO Enable Register). Работает только на запись.
P0-P31: PIO Enable, разрешение управления выводами контроллером PIO. Регистр запрещения управления выводом со стороны контроллера PIO (PIO Controller PIO Disable Register). Работает только на запись.
P0-P31: PIO Disable, запрет управления выводами контроллером PIO. Регистр состояния управления выводом со стороны контроллера PIO (PIO Controller PIO Status Register). Работает только на чтение.
P0-P31: PIO Status, состояние настройки управления выводом. Регистр разрешения выхода (PIO Controller Output Enable Register). Работает только на запись.
P0-P31: Output Enable, разрешение работы вывода в режиме выхода. Регистр запрета выхода (PIO Controller Output Disable Register). Работает только на запись.
P0-P31: Output Disable, запрет работы вывода в режиме выхода. Регистр состояния выхода (PIO Controller Output Status Register). Работает только на чтение.
P0-P31: Output Status, состояние работы вывода. Регистр разрешения работы фильтра помех на входе (PIO Controller Input Filter Enable Register). Работает только на запись.
P0-P31: Input Filter Enable, разрешение входного фильтра. Регистр запрета работы фильтра помех на входе (PIO Controller Input Filter Disable Register). Работает только на запись.
P0-P31: Input Filter Disable, запрет входного фильтра. Регистр состояния входного фильтра (PIO Controller Input Filter Status Register). Работает только на чтение.
P0-P31: Input Filer Status, состояние работы входного фильтра помех. Регистр установки данных на выходе (PIO Controller Set Output Data Register). Работает только на запись.
P0-P31: Set Output Data, запись в эти биты позволяет установить на выводах выхода лог. 1. Регистр сброса данных на выходе (PIO Controller Clear Output Data Register). Работает только на запись.
P0-P31: Clear Output Data, запись в эти биты позволяет установить на выводах выхода лог. 0. Регистр состояния данных на выходе (PIO Controller Output Data Status Register). Работает либо только на чтение, либо на чтение и запись.
P0-P31: Output Data Status, показывает логический уровень, который выводится на выходы. Регистр состояния данных на выводе порта (PIO Controller Pin Data Status Register). Работает либо только на чтение.
P0-P31: Pad Data Status, показывает логический уровень, который установлен выводится на выводе порта. Регистр разрешения прерывания по изменению уровня на выводе порта (PIO Controller Interrupt Enable Register). Работает только на запись.
P0-P31: Input Change Interrupt Enable, разрешение прерывания по изменению уровня на этом выводе порта. Регистр запрета прерывания по изменению уровня на выводе порта (PIO Controller Interrupt Disable Register). Работает только на запись.
P0-P31: Input Change Interrupt Disable, разрешение прерывания по изменению уровня на этом выводе порта. Регистр маски прерывания по изменению уровня на выводе порта (PIO Controller Interrupt Mask Register). Работает только на чтение.
P0-P31: Input Change Interrupt Mask, состояние разрешения прерывания по изменению уровня на этом выводе порта. Регистр состояния прерывания по изменению уровня на выводе порта (PIO Controller Interrupt Status Register). Работает только на чтение.
P0-P31: Input Change Interrupt Status, состояние прерывания по изменению уровня на этом выводе порта. Регистр разрешения работы выводов в режиме выхода с открытым стоком (PIO Multi-driver Enable Register). Работает только на запись.
P0-P31: Multi Drive Enable, разрешает работу выходного драйвера в режиме открытого стока. Регистр запрета работы выводов в режиме выхода с открытым стоком (PIO Multi-driver Disable Register). Работает только на запись.
P0-P31: Multi Drive Disable, запрещает работу выходного драйвера в режиме открытого стока. Регистр состояния работы выводов в режиме выхода с открытым стоком (PIO Multi-driver Status Register). Работает только на чтение.
P0-P31: Multi Drive Status, состояние работы выходного драйвера в режиме открытого стока. Регистр запрета подключения внутренних верхних нагрузочных резисторов (PIO Pull Up Disable Register). Работает только на запись.
P0-P31: Pull Up Disable, запрещает подключение внутренних верхних нагрузочных резисторов (pull-up). Регистр разрешения подключения внутренних верхних нагрузочных резисторов (PIO Pull Up Disable Register). Работает только на запись.
P0-P31: Pull Up Enable, разрешает подключение внутренних верхних нагрузочных резисторов (pull-up). Регистр состояния подключения верхних внутренних нагрузочных резисторов (PIO Pull Up Status Register). Работает только на чтение.
P0-P31: Pull Up Status, состояние подключения нагрузочных резисторов. Регистр выбора периферийных устройств A (Peripheral A Select Register). Работает только на запись.
P0-P31: Peripheral A Select, выбор для вывода периферийных устройств группы A. Регистр выбора периферийных устройств B (Peripheral B Select Register). Работает только на запись.
P0-P31: Peripheral B Select, выбор для вывода периферийных устройств группы B. Регистр состояния выбора периферийных устройств A или B (PIO Peripheral A B Status Register). Работает только на чтение.
P0-P31: Peripheral A B Status, показывает выбор периферийной функции на выводе порта. Регистр разрешения синхронной записи в выходы портов (PIO Output Write Enable Register). Работает только на запись.
P0-P31: Output Write Enable, разрешает запись в регистр PIO_ODSR для синхронного управления выходами. Регистр запрета синхронной записи в выходы портов (PIO Output Write Disable Register). Работает только на запись.
P0-P31: Output Write Disable, запрещает запись в регистр PIO_ODSR для синхронного управления выходами. Регистр состояния синхронной записи для управления выходами (PIO Output Write Status Register). Работает только на чтение.
P0-P31: Output Write Status, состояние разрешения синхронного управления выходами. [Ссылки] 1. SAM7X512 / SAM7X256 / SAM7X128 DATASHEET site:atmel.com. |