Мегаобучалка Главная | О нас | Обратная связь


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



2019-10-11 528 Обсуждений (0)
Конфигурирование портов ввода/вывода 0.00 из 5.00 0 оценок




Как уже было отмечено, порты имеют всего две возможности по конфигурированию:

- задание направления передачи данных (вход или выход);

- подключение/отключение внутреннего подтягивающего резистора.

Направление передачи данных определяется содержимым регистра передачи данных DDRx. Если разряд DDRхn - этого регистра установлен в "1", соответствующий n-й вывод порта является выходом. Если же разряд DDRxn этого регистра сброшен в "0", соответствующий вывод порта является входом.

А вот управление подтягивающим резистором осуществляется с помощью регистра данных порта PORTx. Если разряд Рхn регистра PORTx установлен в "1" и соответствующий вывод порта является входом, между этим выводом и проводом питания подключается подтягивающий резистор. Чтобы отключить подтягивающий резистор, необходимо либо сбросить соответствующий разряд регистра PORTx, либо сделать вывод порта выходом.

 

Таблица 3.3 – Влияние регистров DDRx и PORTx на конфигурацию выводов портов

Разряды регистров

функции вывода

Резистор

 

Примечание

DDRxn PORTxn
0 0 вход отключен Третье состояние
0 1 вход подключен При подключении вывода к общему проводу является источником тока
1 0 выход отключен Выход установлен в "0"
1 1 выход отключен Выход установлен в "1"

Примечание:

n = 7. . . 0 номер вывела (разряд порта).

Примеры конфигурирования

Предположим, что все выводы 8-разрядного порта А определены как выходы и требуется установить младшие 4 разряда в "1", а старшие 4 разряда – в "0". Это можно осуществить путем записи в этот порт соответствующего значения, как показано ниже.

 

; Программа вывода числа 0Fh из порта А

include   "8515def.inc"

  rjmp RESET                   ;Reset Handle

;-------------------------------------------------------------------

RESET:

;задание направления передачи

ldi   r 0,$ FF                    ;запись числа F Fh в регистр r 0

out DDRA , r 0                ;запись числа F Fh в регистр DDRA

;запись числа 0Fh в порт А

ldi   r0,$0F                    ;запись числа 0Fh в регистр r 0

  out PORTA ,r0              ;запись числа 0Fh в порт А (0..3=«1», 4. .7=«0»)

 

Теперь предположим, что все выводы порта А определены как входы и требуется узнать их состояние. Это осуществляется следующим образом:

 

;Программа чтения состояния выводов порта А

include   "8515 def . inc "

  rjmp RESET                   ;Reset Handle

;-------------------------------------------------------------------

RESET:

;задание направления передачи

ldi   r 0,$ FF

out DDRA , r 0

;запись числа 0Fh в порт А

ldi   r0,$0F              ;запись числа 0Fh в регистр r 0

  out PORTA ,r0             ;запись числа 0Fh в порт А (0..3=«1», 4. .7=«0»)

;формирование задержки

  nop                                      ;пустая операция

in     r 0, PINA                   ;в регистре r 0 - сигналы на выводах порта А

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

 

Исследование таймера

 

Большинство задач управления, которые реализуются с помощью МК, требуют исполнения их в реальном времени. Под этим понимается способность системы получить информацию о состоянии управляемого объекта, выполнить необходимые расчетные процедуры и выдать управляющие воздействия в течение интервала времени, достаточного для желаемого изменения состояния объекта.

Возлагать функции формирования управления в реальном масштабе времени только на центральный процессор неэффективно, так как это занимает ресурсы, необходимые для расчетных процедур. Поэтому в большинстве современных МК используется аппаратная поддержка работы в реальном времени с использованием таймера (таймеров).

Модули таймеров служат для приема информации о времени наступления тех или иных событий от внешних датчиков событий, а также для формирования управляющих воздействий во времени.

Рассмотрим принципы построения и режимы работы таймеров на примере восьмиразрядных универсальных микроконтроллеров AVR семейства Classic.

 

3.4.1 Таймеры микроконтроллеров AVR семейства Classic

Микроконтроллеры семейства Classic, в зависимости от модели, имеют в своем составе от одного до трех таймеров общего назначения – T0, T1, T2 и один сторожевой таймер WDT, обеспечивающий перезапуск микроконтроллера при зацикливании программ. В таблице 3.4 приведен состав таймеров микроконтроллеров семейства Classic, а в таблице 3.5 – выводы, используемые таймерами.

8-разрядный таймер Т0 имеется во всех моделях. Он может использоваться только для отсчета и измерения временных интервалов или как счетчик внешних событий. При переполнении счетного регистра таймера генерируется запрос на прерывание. 16-разрядный таймер Т1 и 8-разрядный таймер Т2 за счет введения дополнительных аппаратных средств входного захвата (input capture – IС) и выходного сравнения (output compare – ОС) обладают более широкими возможностями реализации алгоритмов реального времени. Эти таймеры также могут использоваться в качестве широтно-импульсных модуляторов. Таймер Т2, кроме того, может работать в асинхронном (относительно тактового сигнала микроконтроллера) режиме.

В микроконтроллере АТ90С8534 8-разрядный таймера/счетчика Т0 и 16-разрядный Т1 функционально идентичны и могут использоваться только для формирования временных интервалов.

 

Таблица 3.4 – Таймеры/счетчики реального
времени

Таймер/счетчик AT90S1200 AT90S2 313 AT90S/ LS2323 AT90S/ LS2343 AT90S/ LS2333 AT90S/ LS4433 AT90S/ LS 4434 AT90S/ LS 8535 AT90S4414 AT90S8515 АТ90С8534
Таймер/счетчик ТО + + + + + + +
Таймер/счетчик Т1   +   + + + +
Таймер/счетчик Т2         +    

Каждый таймер/счетчик (кроме таймеров/счетчиков в АТ90С8534) использует один или более выводов портов ввода/вывода микроконтроллера. При совместном использовании линий портов ввода/вывода с таймерами/счетчиками необходимо самостоятельно сконфигурировать выводы в соответствии с их функциональным назначением (вход/выход).

 

 

Таблица 3.5 – Выводы, используемые таймерами/счетчиками

Название AT90S1200 AT90S2 313 AT90S/LS2323 AT90S/LS2343 AT90S/LS2333 AT90S/LS4433 AT90S/LS 4434 AT90S/LS 8535 AT90S4414 AT90S8515 Описание
ТО PD4 PD4 РВ2 PD4 РВО РВО Вход внешнего сигнала таймера ТО
Т1 PD5 PD5 PBI РВ1 Вход внешнего сигнала таймера Т 1
I СР PD6 РВО PD6 ICP* Вход захвата таймера Т1
ОС1 РВЗ РВ1 Выход схемы сравнения таймера Т1
ОС1А PD5 PD5 Тоже
ОС1В PD4 ОС 1В* Тоже
ОС2 PD7 Выход схемы сравнения таймера Т2
TOSC 1 РС6 Вход для подключения резонатора
TOSC2 РС7 Выход для подключения резонатора

* Выделенный вывод микроконтроллера (не линия порта ввода/вывода).

 

3.4.2 Таймер Т0

8-разрядный таймер/счетчик Т0 может использоваться для формирования временных интервалов или для подсчета числа внешних событий. Структурная схема таймера Т0 приведена на рисунке 3.5.

В состав таймера входят: регистр управления (TCCR0); счетный регистр (TCNT0); блок управления таймером. Флаг переполнения счетного регистра таймера T0V0 находится в регистре флагов прерываний таймеров TIFR. Разрешение и запрещение прерываний от таймера Т0 осуществляются установкой/сбросом флага T0IE0 регистра TIMSK.

Счетный регистр таймера TCNT0 доступен в любой момент времени как для чтения, так и для записи. При записи в регистр TCNT0 во время работы таймера счет будет продолжен в следующем за командой записи машинном цикле. После подачи напряжения питания в регистре TCNT0 находится нулевое значение.

 

Рисунок 3.5 – Структурная схема таймера/счетчика Т0

 

  

Разряд 7 6 5 4 3 2 1 0
Наименование - - - - - CS 0 2 CS01 CS0 0
Чтение( R )/Запись( W ) R R R R R R/W R/W R/W
Начальное значение   0  0  0   0   0   0   0 0

Рисунок 3.6 –  Формат регистра TCCRO

 

При переходе таймера из состояния "$FF" в состояние "$00" устанавливается флаг T0V0 регистра TIFR и генерируется запрос на прерывание. Разрешение прерывания осуществляется установкой в "1" разряда T0IE0 регистра TIMSK при установленном флаге общего разрешения прерываний I регистра SREG.

Таймер Т0 может работать в двух режимах:

1. Режим таймера. В этом режиме на вход таймера поступают импульсы тактового сигнала микроконтроллера (непосредственно или через предделитель).

2. Режим счетчика событий. В этом режиме инкремент содержимого счетного регистра производится по активному фронту сигнала на входе ТО микроконтроллера.

Выбор режима работы (источника тактового сигнала), а также запуск и остановка таймера осуществляются с помощью разрядов CS02...CS00 регистра управления таймером TCCR0 (рисунок 3.6), расположенного по адресу $33 ($53). Соответствие между состоянием этих разрядов и режимом работы таймера/счетчика приведено в таблице 3.6. Остальные разряды регистра доступны только для чтения и содержат "0".

При использовании таймера в режиме счета внешних событий необходимо помнить, что сигнал, присутствующий на выводе Т0, синхронизируется с частотой тактового генератора микроконтроллера (состояние вывода Т0 считывается по нарастающему фронту внутреннего тактового сигнала). Поэтому для обеспечения корректной работы таймера от внешнего сигнала промежуток времени между соседними импульсами должен быть больше периода тактового сигнала микроконтроллера.

 

Таблица 3.6 – Выбор источника тактового сигнала для таймера ТО

CS02 CS01 CS0 0 Источник тактового сигнала
0 0 0 Таймер/счетчик остановлен
0 0 1 СК (тактовый сигнал микроконтроллера)
0 1 0 СК/8
0 1 1 СК/64
1 0 0 СК/256
1 0 1 СК/1024
I 1 0 Спадающий фронт импульса на выводе Т0*
1 1 1 Нарастающий фронт импульса на выводе Т0

В модели АТ90С8534 значения «110» и «111» разрядов CS 02... CS 00 зарезервированы (режим счет внешних событий отсутствует).

Обратите внимание, что инкремент содержимого счетного регистра таймера/счетчика при работе в режиме счета внешних событий производится даже в том случае, если вывод Т0 сконфигурирован как выход. Эта особенность дает пользователю возможность программно управлять процессом счета.

 

3.4.3 Таймер Т1

16-разрядный таймер/счетчик Т1 реализует следующие функции:

- формирование временных интервалов (аналогично функции таймера Т0);

- подсчет числа внешних событий (аналогично функции таймера Т0);

- входной захвата (input capture – IС) – сохранение текущего состояния таймера в отдельном РВВ по внешнему сигналу;

- выходного сравнения (output compare – ОС) – формирование прерывания при равенстве содержимого счетного регистра заданному значению;

- генерация ШИМ-сигнала.

Существует три варианта рассматриваемого таймера/счетчика в зависимости от модели микроконтроллера. Рассмотрим структуру таймера Т1 микроконтроллера AT90S8515 (рисунок 3.7).

В состав таймера входят четыре 16-разрядных регистра (счетный регистр TCNT1, регистр захвата ICR1, регистры сравнения OCR1А и OCR1В), 16-разрядный компаратор, два 8-разрядных управляющих регистра TCCR1А и TCCR1B, а также блок управления таймером.

Два других варианта имеют сокращенный набор устройств.

Все флаги состояния таймера/счетчика (переполнения, совпадения и захвата) находятся в регистре флагов прерываний от таймеров TIFR, а разрешение/запрещение прерываний от таймера осуществляется установкой/сбросом соответствующих флагов регистра TIMSK.

Счетный регистр таймера Т1 реализован как суммирующий (в режиме ШИМ — как суммирующий/вычитающий) счетчик и доступен в любой момент времени как для чтения, так и для записи. При записи в регистр TCNT1 во время работы таймера счет будет продолжен по следующему за операцией записи импульсу тактового сигнала таймера/счетчика. После подачи напряжения питания в регистре TCNT1 находится нулевое значение.

 

Примечание: Позиции разрядов регистров TIMSK и TIFR показаны условно

Рисунок 3.7 – Структурная схема таймера Т1

 

Физически регистр TCNT1 размещен в двух регистрам TCNT1H:TCNT1L, расположенных по адресам $2D:$2C (адреса в адресном пространстве ОЗУ, соответственно, $4D:$4C). Чтобы при обращении ЦПУ микроконтроллера к этим регистрам запись или чтение обоих байтов содержимого счетного регистра происходило одновременно, обращение производится с использованием специального 8-разрядного регистре TEMP (этот регистр используется только процессором и программно недоступен). Этот же регистр используется и при обращении к остальным 16-разрядным регистрам таймера/счетчика Tl: OCR1 (OCR1A и OCR1B) и ICR1. Прерывания на время обращения к любому из этих регистров должны быть запрещены.

Запись в регистр TCNT1.При записи старшего байта значения в регистр TCNT1H он помещается в регистр TEMP. Далее, при записи младшего байта в регистр TCNT1L он объединяется с содержимым регистра TEMP и оба байта записываются в регистр TCNT1 одновременно. Из сказанного видно, что для выполнения полного цикла записи в 16-разрядный регистр первым должен быть загружен старший байт (регистр TCNT1H).

Чтение регистра TCNT1. При чтении регистра TCNT1L (младший байт) содержимое регистра TCNT1H пересылается в регистр TEMP. А при последующем чтении регистра TCNT1H возвращается значение, сохраненное в регистре TEMP. Следовательно, для выполнения полной операции чтения 16-разрядного регистра первым должен быть прочитан младший байт (регистр TCNT1L).

Управление таймером/счетчиком Т1 осуществляется с помощью двух регистров управления TCCR1A и TCCR1B (в модели АТ90С8534 — с помощью одного регистра TCCR1). Эти регистры расположены по адресам $2F ($4F) (регистр TCCR1A) и $2Е ($4Е) (регистры TCCR1B, TCCR1).

Формат регистра TCCR1A приведен на рисунке 3.8, а регистров TCCR1B и TCCR1 — на рисунке 3.9. Неиспользуемые разряды регистров доступны только для чтения.

 

Разряд 7 6 5 4 3 2 1 0
2019-10-11 528 Обсуждений (0)
Конфигурирование портов ввода/вывода 0.00 из 5.00 0 оценок









Обсуждение в статье: Конфигурирование портов ввода/вывода

Обсуждений еще не было, будьте первым... ↓↓↓

Отправить сообщение

Популярное:
Как построить свою речь (словесное оформление): При подготовке публичного выступления перед оратором возникает вопрос, как лучше словесно оформить свою...
Как выбрать специалиста по управлению гостиницей: Понятно, что управление гостиницей невозможно без специальных знаний. Соответственно, важна квалификация...
Личность ребенка как объект и субъект в образовательной технологии: В настоящее время в России идет становление новой системы образования, ориентированного на вхождение...
Почему наличие хронического атрофического гастрита способствует возникновению и развитию опухоли желудка?



©2015-2024 megaobuchalka.ru Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. (528)

Почему 1285321 студент выбрали МегаОбучалку...

Система поиска информации

Мобильная версия сайта

Удобная навигация

Нет шокирующей рекламы



(0.009 сек.)