Цифровые входы/выходы
В этом разделе описывается работа портов цифровых входов/выходов. Порты P1-P2 имеются в устройствах MSP430x11xx. Порты Р1-Р3 реализованы в устройствах MSP430x12xx. Порты Р1-Р6 реализованы в устройствах MSP430x14, MSP430x15x и MSP430x16x.
9.1 Введение в цифровые входы/выходы
Устройства MSP430 имеют до 6 портов цифровых входов/выходов от Р1 до Р6. Каждый порт имеет 8 выводов входа/выхода. Каждый вывод индивидуально конфигурируется как вход или выход и каждая линия ввода/вывода может быть индивидуально считана или записана.
Порты Р1 и Р2 имеют возможность вызывать прерывание. Для каждой линии ввода/вывода портов Р1 и Р2 можно индивидуально разрешить прерывания и сконфигурировать их так, чтобы прерывание происходило по фронту или спаду входного сигнала. Все линии ввода/вывода порта Р1 являются источником одного вектора прерывания, а все линии ввода/вывода порта Р2 – источник другого вектора прерывания.
Цифровые входы/выходы обладают следующими возможностями:
- Независимые индивидуально программируемые входы/выходы;
- Любые комбинации входа или выхода;
- Индивидуально конфигурируемые прерывания от Р1 и Р2;
- Раздельные регистры данных для входов и выходов.
9.1 Функционирование цифровых входов/выходов
Цифровые входы/выходы конфигурируются программным обеспечением пользователя. Настройка и работа цифровых входов/выходов описывается в нижеследующих разделах.
9.2.1 Регистры ввода PnIN
Каждый бит в каждом регистре PnIN отражает величину входного сигнала на соответствующей ножке ввода/вывода, когда она сконфигурирована на функцию ввода/вывода.
Бит = 0: Входной сигнал имеет низкий уровень;
Бит = 1: Входной сигнал имеет высокий уровень.
Примечание: Запись в регистры «только для чтения» PxIN
Запись в эти регистры «только для чтения» приводит к увеличению потребления тока на время выполнения попытки записи.
|
9.2.2 Регистры вывода PnOUT
Каждый бит в каждом регистре PnOUT содержит значение, которое будет выведено на соответствующую ножку ввода/вывода, сконфигурированную на функцию ввода/вывода и имеющую направление на вывод.
Бит = 0: Выходной сигнал имеет низкий уровень;
Бит = 1: Выходной сигнал имеет высокий уровень.
9.2.3 Регистры направления PnDIR
Каждый бит в каждом регистре PnDIR позволяет выбрать направление соответствующей ножки ввода/вывода, независимо от выбранной для этой ножки функции. Биты PnDIR для ножек ввода/вывода, выбранные для других функций модуля должны быть установлены так, как это требуется для другой функции.
Бит = 0: Ножка порта переключается на ввод;
Бит = 1: Ножка порта переключается на вывод.
9.2.4 Регистры выбора функции PnSEL
Ножки порта часто мультиплексированы с другими функциями периферийных модулей. См. справочное руководство по конкретному устройству для выяснения возможных функций вывода. Каждый бит PnSEL определяет, как будет использована ножка – в качестве порта ввода/вывода или в качестве функции периферийного модуля.
Бит = 0: Для ножки выбирается функция ввода/вывода
Бит = 1: Для ножки выбирается функция периферийного модуля
Установка PnSEL=1 автоматически не определяет направление движения информации для ножки. Некоторые функции периферийных модулей требуют конфигурирования битов PnDIR для выбора направления, необходимого для правильной работы этой функции.
;Вывод ACLK на P2.0 в устройстве MSP430F11x1
BIS.B #01h,&P2SEL ; Выбор функции ACLK для ножки
BIS.B #01h,&P2DIR ; Установка направления на вывод (необходимо)
Примечание: Отключение прерываний от Р1 и Р2 при PnSEL=1
Когда какой-либо бит P1SELx или P2SELx установлен, функция прерывания от соответствующей ножки отключена. Поэтому сигналы на этих ножках не будут генерировать прерывания Р1 или Р2, независимо от состояния соответствующего бита P1IE или P2IE.
|
Когда вывод порта работает как вход периферии, входным сигналом периферии является зафиксированное в защелке представление сигнала на выводе устройства. Когда PnSELx=1, внутренний входной сигнал соответствует сигналу на ножке. Однако, если PnSELx=0, на входе периферии сохраняется значение входного сигнала на выводе устройства, имевшееся перед сбросом бита PnSELx.
9.2.5 Прерывания Р1 и Р2
Каждая ножка портов Р1 и Р2 имеет возможность вызова прерывания, конфигурируемую регистрами PnIFG, PnIE и PnIES. Все ножки Р1 – источник одного вектора прерывания, а все выводы Р2 – источник другого одиночного вектора прерывания. Определить источник прерывания - Р1 или Р2 можно путем проверки регистра PnIFG.
Регистры флагов прерывания Р1IFG, Р2IFG
Каждый бит PnIFG – это флаг прерывания соответствующей ножки ввода/вывода, устанавливаемый, когда происходит перепад выбранного входного сигнала на ножке. Все флаги прерывания PnIFG запрашивают прерывание, когда установлен их соответствующий бит PnIE и установлен бит GIE. Каждый флаг PnIFG должен быть сброшен программно. Программное обеспечение также может устанавливать каждый флаг PnIFG, обеспечивая возможность генерации программно-инициированного прерывания.
Бит = 0: Прерывание не ожидается
Бит = 1: Прерывание ожидается
Прерывания вызывают только перепады уровней, а не статические уровни. Если любой флаг PnIFG оказывается установленным во время выполнения процедуры обработки прерывания Px или устанавливается после команды RETI выполняемой процедуры обработки прерывания Px, установка флага PnIFGx генерирует другое прерывание. Таким образом, гарантируется, что каждый перепад уровня будет учтен.
Примечание: Состояние флагов PnIFG при изменении PnOUT или PnDIR
Запись в P1OUT, P1DIR, P2OUT или P2DIR может привести к установке соответствующих флагов P1IFG или P2IFG.
|
Примечание: Длительность события вызова прерывания на ножке ввода/вывода
Любое событие вызова внешнего прерывания должно иметь длительность, по крайней мере, равную 1,5 MCLK или дольше, чтобы быть гарантировано принятым и вызвать установку соответствующего флага прерывания.
|
Регистры выбора фронта прерывания P1IES, P2IES
Каждый бит PnIES позволяет выбрать, по какому фронту сигнала будет происходить прерывание для соответствующей ножки ввода/вывода.
Бит = 0: Флаг PnIFG устанавливается при изменении уровня сигнала с низкого на высокий;
Бит = 1: Флаг PnIFG устанавливается при изменении уровня сигнала с высокого на низкий.
Примечание: Запись в PnIESx
Запись в P1IES или P2IES может привести к установке соответствующих флагов прерывания.
PnIESx |
PnINx |
PnIFGx |
0 -> 1 |
0 |
Не изменяется |
0 -> 1 |
1 |
Может быть установлен |
1 -> 0 |
0 |
Может быть установлен |
1 -> 0 |
1 |
Не изменяется |
|
Разрешение прерываний P1IE, P2IE
Каждый бит PnIE разрешает прерывание от соответствующего флага прерываний регистра PnIFG.
Бит = 0: Прерывание запрещено
Бит = 1: Прерывание разрешено
9.2.6 Конфигурирование неиспользуемых выводов порта
Неиспользуемые ножки ввода/вывода должны быть сконфигурированы на функцию ввода/вывода, в направлении вывода и оставаться неподключенными на печатной плате для уменьшения потребляемой мощности. Значение бита PxOUT может быть любым, поскольку ножка не подключена. См. раздел «Системный сброс, прерывания и режимы работы» для уточнения вопросов подключения неиспользуемых выводов.
9.3 Регистры цифровых входов/выходов
Для конфигурирования Р1 и Р2 используются семь регистров. Четыре регистра необходимы для конфигурирования портов Р3-Р6. Регистры цифровых входов/выходов приведены в таблице 9-1.
Таблица 9-1. Регистры цифровых входов-выходов.
Порт |
Регистр |
Краткое обозначение |
Адрес |
Тип регистра |
Исходное состояние |
P1 |
Ввод |
P1IN |
020h |
Только чтение |
- |
Вывод |
P1OUT |
021h |
Чтение/запись |
Не изменяется |
Направление |
P1DIR |
022h |
Чтение/запись |
Сброс с PUC |
Флаг прерывания |
P1IFG |
023h |
Чтение/запись |
Сброс с PUC |
Выбор фронта прерывания |
P1IES |
024h |
Чтение/запись |
Не изменяется |
Разрешение прерывания |
P1IE |
025h |
Чтение/запись |
Сброс с PUC |
Выбор порта |
P1SEL |
026h |
Чтение/запись |
Сброс с PUC |
P2 |
Ввод |
P2IN |
028h |
Только чтение |
- |
Вывод |
P2OUT |
029h |
Чтение/запись |
Не изменяется |
Направление |
P2DIR |
02Ah |
Чтение/запись |
Сброс с PUC |
Флаг прерывания |
P2IFG |
02Bh |
Чтение/запись |
Сброс с PUC |
Выбор фронта прерывания |
P2IES |
02Ch |
Чтение/запись |
Не изменяется |
Разрешение прерывания |
P2IE |
02Dh |
Чтение/запись |
Сброс с PUC |
Выбор порта |
P1SEL |
026h |
Чтение/запись |
Сброс с PUC |
P3 |
Ввод |
P3IN |
018h |
Только чтение |
- |
Вывод |
P3OUT |
019h |
Чтение/запись |
Не изменяется |
Направление |
P3DIR |
01Ah |
Чтение/запись |
Сброс с PUC |
Выбор порта |
P3SEL |
01Bh |
Чтение/запись |
Сброс с PUC |
P4 |
Ввод |
P4IN |
01Ch |
Только чтение |
- |
Вывод |
P4OUT |
01Dh |
Чтение/запись |
Не изменяется |
Направление |
P4DIR |
01Eh |
Чтение/запись |
Сброс с PUC |
Выбор порта |
P4SEL |
01Fh |
Чтение/запись |
Сброс с PUC |
P5 |
Ввод |
P5IN |
030h |
Только чтение |
- |
Вывод |
P5OUT |
031h |
Чтение/запись |
Не изменяется |
Направление |
P5DIR |
032h |
Чтение/запись |
Сброс с PUC |
Выбор порта |
P5SEL |
033h |
Чтение/запись |
Сброс с PUC |
P6 |
Ввод |
P6IN |
034h |
Только чтение |
- |
Вывод |
P6OUT |
035h |
Чтение/запись |
Не изменяется |
Направление |
P6DIR |
036h |
Чтение/запись |
Сброс с PUC |
Выбор порта |
P6SEL |
037h |
Чтение/запись |
Сброс с PUC |
|