Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Шапошников_диплом.docx
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
1.02 Mб
Скачать

2.2.8 Управление состоянием вывода

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

В случае, если линия управляется контроллером параллельного ввода - вывода (PIO), она может быть сконфигурирована как выход или как вход. Настройка осуществляется изменением значения регистров PIO_OER (регистр разрешения вывода) и PIO_ODR (регистр запрещения вывода). Результат операций записи в эти регистры отражается в регистре PIO_OSR (регистр состояния вывода). Если соответствующий бит в этом регистре установлен в 0, линия используется только для ввода. Если бит установлен в 1, состояние линии управляется контроллером шины периферийных устройств. Уровень, выдаваемый на линию, задается записью в регистр PIO_SODR (регистр записи выводимых данных) и PIO_CODR (регистр сброса выводимых данных). Эти операции соответственно записывают и стирают биты данных в регистре PIO_ODSR (регистр состояния выводимых данных), который хранит выводимые через порт данные.[2] Изменение значений в регистрах PIO_OER и PIO_ODR в любом случае изменяет соответствующие биты PIO_OSR, независимо от того, назначена ли линия для параллельного ввода - вывода или как функциональная периферийного устройства. Это дает возможность конфигурировать состояние линии до того, как будет назначено управляющее ее состоянием периферийное устройство.Аналогичным образом, запись в PIO_SODR и PIO_CODR изменяет состояние регистра PIO_ODSR. Это очень важно, так как определяет уровень, который будет первым выведен на линии ввода - вывода.

2.2.9 Синхронный вывод данных

Для осуществления параллельного ввода - вывода, то есть вывода по нескольким линиям одновременно, необходимо провести две операции записи в регистры PIO_SODR и PIO_CODR.[1] Результатом могут быть неожиданные паразитные переходные процессы на линиях. Контроллер периферийной шины дает возможность непосредственно осуществлять прямое управление состоянием выводов путем единственной операции записи значений в регистр PIO_ODSR (Output data status register - регистр состояния выводимых данных). Могут быть записаны только те биты, которые не маскированы в регистре PIO_OSWSR (Output write status register - регистр состояния записи выходных данных). Установка маски записи, размещенной в регистре PIO_OSWSR, производится записью в регистры PIO_OWER(output write enable register - регистр разрешения записи выходных данных) и PIO_OWDR (output write disable register - регистр запрещения записи выходных данных). После перезагрузки параллельный вывод данных запрещается на всех линиях ввода-вывода, так как значение регистра PIO_OWSR сбрасывается в 0х0.

2.2.10 Работа линий ввода - вывода, аналогичная схеме с открытым стоком

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

Функция работы с несколькими драйверами контролируется регистром PIO_MDER (Multi driver enable register - регистр разрешения работы с несколькими драйверами), и PIO_MDDR (multi driver disable register - регистр запрещения работы с несколькими драйверами). Функция работы с несколькими драйверами может быть включена независимо от того, управляется ли линия - периферийным контроллером ввода - вывода или назначена для работы с каким - то периферийным устройством. Регистр PIO_MDSR (Multi driver status register - регистр состояния работы с несколькими драйверами) показывает выводы, конфигурированные для работы с внешними драйверами. После перезагрузки функция управления внешними драйверами запрещена на всех выводах, то есть содержимое регистра PIO_MDSR после перезагрузки сбросится в 0х0.