Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
51
Добавлен:
23.02.2015
Размер:
6.23 Mб
Скачать

Конфигурирование портов

осуществляется с помощью:

регистров DDR (Data Direction Register), DR (Data Register) и OR (Option Register), которые ассоциируются с каждым портом.

Битами регистра DDR программируется направление передачи соответствующей линии порта. DDRx=0 настраивает данную линию на ввод в

контроллер, а DDRx=1 настраивает линию на вывод из контроллера.

Конфигурирование портов

Биты регистра OR выбирают схемные варианты входных и выходных цепей (входных с нагрузочным резистором или без него и выходных с открытым стоком или двухтактным). В режиме ввода значение битов линий входов читаются из регистра DR. Установка битов в регистре DDR настраивает соответствующие линии порта на вывод. Запись в регистр DR определяет цифровые значения на линиях вывода.

Переключение портов ввода–вывода из

 

одного состояния в другое должно быть

 

выполнено в последовательности, которая

 

предотвращает нежелательные побочные

 

эффекты, например формирование ложного

 

прерывания [1]. Рекомендованные безопасные

 

переходы приведены на рис. 4.2.

INPUT

 

INPUT

OUTPUT

OUTPUT

floating/pull-up

 

floating

open-drain

push-pull

interrupt

(reset state)

 

 

 

 

 

 

 

 

 

 

 

 

 

DDR, OR =

 

01

 

 

00

 

 

 

 

 

 

 

 

 

 

 

10

 

11

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Рис. 4.2. Рекомендованные безопасные переходы состояний выходных цепей портов

Функция внешнего прерывания

В зависимости от устройства линия ввода– вывода порта, настроенная как вход,

 

может быть использована для приема

 

запросов прерывания. В этой конфигурации

 

фронт или уровень сигнала на линии

 

ввода–вывода воспринимаются как запрос

 

прерывания через соответствующий вектор

 

прерывания (eix).

Чувствительность к сигналу запроса

 

программируется независимо для

 

каждого вектора eix в регистре EICR

 

(External Interrupt Control Register).

 

Каждый внешний вектор прерывания

 

eix связан с определенной группой

Функция внешнего прерывания

Несколько линий ввода–вывода объединяются на один и тот же вектор прерывания eix.

Чувствительность линий к сигналу запроса прерывания программируется только для группы линий, объединенных на один и тот же вектор eix.

Внешние прерывания вызываются аппаратными средствами. Вызванная по соответствующему вектору подпрограмма автоматически очищает запрос. Изменение чувствительности специфического внешнего прерывания очищает ожидающее прерывание. Это можно использовать для сброса нежелательного ожидающего прерывания.

Ложные прерывания

Когда разрешаются или запрещаются внешние прерывания, установка или сброс бита в регистре OR может вызвать ложное прерывание.

Чтобы избежать ложного прерывания, установку безопасного фронта чувствительности необходимо производить после установки необходимого бита в регистре OR [2].

Предостережение

Для исключения ложных прерываний 1. При разрешение внешних прерываний:

установить маску прерываний инструкцией SIM, если может произойти изменение уровня на линии;

выбрать повышающийся фронт;

разрешить внешнее прерывание через регистр OR;

выбрать желательную чувствительность, если

отличается от повышающегося фронта;

• перезагрузить маску прерывания инструкцией RIM, если возможно изменение уровня на линии.

Предостережение

2. Запрещение внешних прерываний:

• установить маску прерывания инструкцией SIM, если может быть изменение уровня на линии;

выбрать падающий фронт;

запретить внешние прерывания через регистр OR;

выбрать нарастающий фронт;

сбросить маску прерывания инструкцией RIM , если может быть изменение уровня на линии.

Соседние файлы в папке МПСслайды