Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
228.doc
Скачиваний:
5
Добавлен:
30.04.2022
Размер:
1.41 Mб
Скачать

Порты ввода/вывода

Основными характеристиками подсистемы ввода/вывода являются:

• программное конфигурирование и выбор портов ввода/вы­вода;

• возможность запрограммировать каждый вывод как входной или как выходной независимо от других;

• входные буферы с триггером Шмитта на всех выводах;

• возможность подключения ко всем входам внутренних подтягивающих резисторов (сопротивление резисторов составляет 35.. .120 кОм);

• нагрузочная способность всех выходов, поз­воляющая непосредственно управлять светодиодными индикаторами (до 20 мА).

Как и любые другие микроконтроллеры, микроконтроллеры AVR имеют порты ввода/вывода. Каждый порт состоит из опре­деленного числа выводов, через которые микроконтроллер может принимать или передавать цифровые сигналы. Конфигурирование каждой линии порта (задание направления передачи данных) может быть произведено программно в любой момент времени.

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

Обращение к портам производится через регистры ввода/вывода, причем под каждый порт в адресном пространстве ввода/вывода заре­зервировано по 3 адреса. По этим адресам размещаются три регистра: регистр данных порта PORTx, регистр направления данных DDRx и ре­гистр выводов порта PINx. Разряды этих регистров имеют названия: Рх7...Рх0 -– для регистров PORTx, DDx7...DDx0 – для регистров DDRx и PINx7...PINx0–для регистров PINx. Действительные назва­ния регистров (и их разрядов) получаются подстановкой названия порта вместо символа «х», соответственно для порта А регистры называются PORTA, DDRA, PINA, для порта В – PORTB. DDRB, PINB и т.д. При сбросе микроконтроллера регистры DDRx и PORTx очищаются, а все выводы портов после сброса устанавливаются в третье состояние.

Следует заметить, что «регистры» PINx на самом деле регистрами не являются. По этим адресам осуществляется доступ к физическим значениям сигналов на выводах порта. Соответственно, они доступны только для чтения, тогда как регистры PORTx и DDRx доступны и для чтения, и для записи. Порядковый номер вывода порта соответствует, разумеется, порядковому номеру разряда регистров этого порта. Поэтому если разрядность порта­ меньше восьми, в регистрах порта используется соответствующее число младших разрядов. Незадействованные старшие разряды регистров доступны только для чтения и всегда содержат «0».

Таким образом, запись в порт означает запись требуемого состояния для каждого вывода порта в соответствующий регистр данных порта PORTx. А чтение состояния порта выполняется чтением либо регистра данных порта PORTx, либо регистра выводов порта PINx. При чтении регистра выводов порта PINx происходит считывание логических уровней сигналов, присутствующих на выводах порта, а при чтении регистра данных порта PORTx происходит считывание данных, находящихся в регистре-защелке порта. Причем сказанное справедливо как для входных, так и для выходных контактов.

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

Помимо задания направления передачи данных порты имеют возможность подключения/отключения внутреннего подтягивающего резистора. Управление подтягивающим резистором осуществляется с помощью регистра данных порта PORTx. Если разряд Рхn регистра PORTx установлен в «1» и соответствующий вывод порта является входом, между этим выводом и проводом питания (+ 5 В) подключается подтягивающий резистор. Чтобы отключить подтягивающий резистор, необходимо либо сбросить соответствующий разряд регистра PORTx, либо сделать вывод порта выходом.

В табл. 14.2 приведены все возможные конфигурации выводов портов ввода/вывода.

Таблица 14.2

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

DDxn

Функция вывода

Рхn

Резистор

Примечания

0

вход

0

отключен

Третье состояние (Hi-Z)

0

вход

1

подключен

Вывод является источником тока

1

выход

0

отключен

Выход установлен в «0»

1

выход

1

отключен

Выход установлен в «1»

Примечание: n = 7...0 – номер вывода (разряд порта).

И в заключение еще одно замечание по поводу конфигурирования выводов портов. Если вывод используется каким-либо периферийным устройством микроконтроллера (альтернативно), то соответствующие этому выводу разряды регистров DDRx и PORTx по умолчанию должны быть установлены в соответствии с дополнительной функцией вывода (в соответствии с табл. 14.2) программно. Однако некоторые периферийные устройства при активизации самостоятельно переопределяют конфигурацию используемых выводов. Об этом можно узнать из описания конкретных периферийных устройств.

  1. Порядок выполнения работы

Контрольные вопросы по допуску к работе

  1. Перечислите основные особенности программ для управляющих ЭВМ.

  2. Перечислите основные требования к структуре и составу управляющей ЭВМ.

2.1. Предварительное задание

2.1.1. Изучите приведенные выше сведения о регистрах МК. В случае надобности используйте файлы учебных материалов и лекции.

2.1.2. Изучите рабочее задание и подготовьтесь к его выполнению.

2.2. Рабочее задание

2.2.1. Создайте в папке Users каталог своей учебной группы, в нем каталог своей бригады (ВНИМАНИЕ! Имя каталога и весь путь к нему НЕ должны содержать знаков КИРИЛЛИЦЫ!). Создайте в нем папку LR14.

2.2.2. Составьте заготовку отчета в виде файла MS Word с названием и целью работы, сохраните ее под именем LR14 в своем каталоге.

2.2.3. Запустите AlgorithmBuilder.exe. Программа является однозадачной, поэтому, если вместе с программой загрузился какой-либо алгоритм, обязательно дайте команду Файл / Закрыть проект.

2.2.4. Откройте и прочитайте мануал программы (подробно до стр. 10, далее ознакомительно), в частности, найдите упрощенный способ ввода символа « –> ». Особое внимание обратите также на раздел «Редактирование алгоритма».

2.2.5. Наберите «Простой пример», приведенный в мануале (без комментариев, стрелки переходов – после полного ввода алгоритма).

2.2.6. Задайте тип МК, выбрав AT90S4434. Запустите симуляцию.

2.2.7. Для наблюдения процессов во введенном алгоритме откройте окна “Processor”, “Port B” и “Working registers”.

2.2.8. Опробуйте работу кнопок F5-F9, изменяя положение и количество точек останова. Учтите, что полное отсутствие точек останова не позволит вам наблюдать отработку алгоритма. В этом случае придется воспользоваться кнопкой Стоп или Reset.

2.2.9. Многократно проходя циклы (F9) и пользуясь комментариями к примеру из мануала, составьте письменное изложение алгоритма управления, определив цель каждого этапа. Обратите внимание, что основная часть любого алгоритма управления объектом должна быть цикличной, дабы непрерывно повторять стадии получения информации от датчиков и других устройств объекта и направления результа­тов обработки в исполнительные механизмы.

2.2.10. Многократно проходя циклы, проследите изменение значений разрядов слова состояния процессора, объясните результаты.

2.2.11. Проследите изменение значений r17 и порта B, объясните результаты.

2.2.12. Снимая флажки DDR, определите их влияние на поступление сигналов на выходы порта (Pin), объясните результаты. Установите флажки Pin в тех разрядах, где флажки DDR сняты, пронаблюдайте за ними, многократно проходя циклы. Восстановите флажки DDR.

2.2.13. Проследите начальную установку стека, с помощью встроенного редактора (наведя курсор) определите десятичное значение загруженного числа. Объясните необходимость двух команд для загрузки стека. Объясните изменение значения указателя стека SP при входе в подпрограмму и выходе из нее.

2.2.14. Сохраните в папке своей бригады созданный вами алгоритм под именем LR14_1.

2.2.15. Изучите раздел мануала «Редактирование алгоритма». Переработайте операции загрузки SP и DDRB, удалив промежуточный шаг, связанный с регистром R16. Проверьте работу алгоритма. Выполняя его по шагам, пронаблюдайте использование регистра R16 на этапе инициализации.

2.2.16. Выполняя алгоритм по шагам (без заходов в подпрограмму), пронаблюдайте изменение регистра R17 внутри цикла. Замените условный переход С = 0 на переход по состоянию R17. Проверьте работу алгоритма.

2.2.17. Замените в алгоритме ручную загрузку начального значения SP на инструмент SETTER. Изучите его описание, в окне его настройки определите, как этот инструмент работает. Проверьте функционирование алгоритма. Сохраните его под именем LR14_2.

2.2.18. Измените тип МК (AT90S2333 или иной – тип задает преподаватель). Проверьте работу алгоритма. Пронаблюдайте при проходе по шагам без захода в подпрограмму, при каких значениях R17 происходит уход «1» из задействованных разрядов порта.

2.2.19. Переработайте алгоритм так, чтобы при каждом нажатии F9 происходил переход «1» из разряда порта B в следующий разряд без ухода в состояния, не отображаемые в задействованных разрядах порта. Проверьте работу алгоритма. Сохраните его под именем LR14_3.

2.2.20. Переработайте свой алгоритм так, чтобы логические единицы в биты порта B выводились поочередно в обратном порядке – от старшего к младшему разряду. Выполните симуляцию и сохраните алгоритм под именем LR14_4.

2.2.21. В режиме симуляции установите курсором в окне порта B такую последовательность состояний, чтобы в порте перемещались две смежные логические единицы. Обратите внимание на их переход с одного края разрядной сетки на другой – переход должен происходить через состояние 10…01. Проанализируйте алгоритм и определите необходимое количество условных переходов и соответствующие значения R17. Переработайте свой алгоритм, выполните симуляцию, проверьте результат и сохраните алгоритм под именем LR14_5.

2.2.22. Составьте отчет по перечисленным выше пунктам, включая скриншоты алгоритмов и экранов эмуляции. Приведите в пунктах отчета полученные навыки составления алгоритмов и навыки пользования программой, запишите отчет в файл под именем LR14 в той же папке, что и алгоритмы.

2.2.23. Покажите результаты преподавателю, ответьте на его вопросы.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]