Порты ввода/вывода микроконтроллера ATmega 32
Поможем в ✍️ написании учебной работы
Поможем с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой

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

момент времени [2].

Отличительной особенностью портов микроконтроллеров семейства Mega при использовании их в качестве цифровых портов ввода/вывода общего назначения является реализация истинной функциональности вида «чтение/модификация/запись». Благодаря этому можно выполнять операции над любым выводом, не влияя на другие выводы порта. Это относится к изменению режима работы контакта ввода/вывода, к изменению состояния выходного буфера (для выходов) и к изменению состояния внутреннего подтягивающего резистора (для входов).

    МК ATmega32 имеют четыре 8-разрядных порта ввода/вывода (порты A, B, C, D). Всего контактов ввода/вывода – 32.

Обращение к портам производится через регистры ввода/вывода. Под

каждый порт в адресном пространстве ввода/вывода зарезервировано по 3 адреса, по которым размещены следующие регистры: регистр данных порта PORTx, регистр направления данных DDRxn, регистр выводов порта PINx. Действительные названия регистров получаются подстановкой названия порта вместо символа «x», соответственно регистры порта A называются PORTA, DDRA, PINA, порта B — PORTB, DDRB, PINB и т. д. Поскольку с помощью регистров PINx осуществляется доступ к физическим значениям сигналов на выводах порта, они доступны только для чтения, тогда как остальные два регистра доступны и для чтения, и для записи.

Структурная схема одного из каналов порта ввода/вывода Pxn при работе его в качестве цифрового входа/выхода общего назначения приведена на рис. 4.1.

Рис. 4.1. Структурная схема контакта ввода/вывода

Каждому выводу порта соответствуют три разряда регистров ввода/вывода: PORTxn (регистр PORTx), DDxn (регистр DDRx) и PINxn (регистр PINx). Действительные названия разрядов регистров получаются подстановкой названия порта вместо символа «x» и номера разряда вместо символа «n». Порядковый номер вывода порта соответствует порядковому номеру разряда регистров этого порта. Поэтому, если разрядность порта меньше восьми, в регистрах порта используется соответствующее число младших разрядов. Незадействованные старшие разряды регистров доступны только для чтения и всегда содержат «0».

Разряд DDxn регистра DDx определяет направление передачи данных через контакт ввода/вывода. Если этот разряд установлен в «1», то n-й вывод

порта является выходом, если же сброшен в «0» — входом.

Разряд PORTxn регистра PORTx выполняет двойную функцию. Если вывод функционирует как выход (DDxn = «1») – этот разряд определяет состояние вывода порта. Если разряд установлен в «1», на выводе устанавливается напряжение ВЫСОКОГО уровня. Если разряд сброшен в «0», на выводе устанавливается напряжение НИЗКОГО уровня.

Если же вывод функционирует как вход (DDxn = «0») – разряд PORTxn определяет состояние внутреннего подтягивающего резистора для данного вывода. При установке разряда PORTxn в «1» подтягивающий резистор подключается между выводом микроконтроллера и проводом питания.

Управление подтягивающими резисторами в микроконтроллере ATmega32 осуществляется настройками двух регистров. Общее управление (для всех выводов портов) осуществляется разрядом PUD (2-й разряд) регистра специальных функций SFIOR.

Если разряд PUD сброшен в «0» (начальное состояние) – состояние подтягивающих резисторов будет определяться состоянием разрядов PORTxn для каждого входа порта. Если же разряд PUD установлен в «1» - подтягивающие резисторы отключаются от всех выводов микроконтроллера.

При переключении вывода между третьим состоянием (DDxn = «0», PORTxn = «0») и состоянием ВЫСОКОГО уровня (DDxn = «1», PORTxn = «1») происходит переход через одно из промежуточных состояний: либо включается подтягивающий резистор (DDxn = «0», PORTxn = «1»), либо выход переключается в состояние НИЗКОГО уровня (DDxn = «1», PORTxn = «0»). Наиболее применимым является, как правило, первый вариант, поскольку для высокоимпедансных систем безразлично, каким образом формируется ВЫСОКИЙ уровень. Если в каком-либо случае это не подходит, пользователь может отключить подтягивающие резисторы от всех портов установкой в «1» разряда PUD регистра SFIOR.

Аналогичная ситуация возникает и при переключении между состоянием с включенным подтягивающим резистором (DDxn = «0», PORTxn = «1») и состоянием НИЗКОГО уровня (DDxn = «1», PORTxn = «0»). В этом случае промежуточным состоянием является либо высокоимпедансное состояние (DDxn = «0», PORTxn = «0»), либо состояние ВЫСОКОГО уровня (DDxn = «1», PORTxn = «1»).

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

Таблица 4.1. Конфигурации выводов портов

Состояние вывода микроконтроллера (независимо от установок разряда DDxn) может быть получено путем чтения разряда PINxn регистра PINx. При этом следует помнить, что между действительным изменением сигнала на выводе и изменением разряда PINxn существует задержка. Эта задержка вносится узлом синхронизации, состоящего, как показано на рис. 4.1, из разряда PINxn и дополнительного триггера-защелки. Значение сигнала на выводе микроконтроллера фиксируется триггером-защелкой при НИЗКОМ уровне тактового сигнала и переписывается затем в разряд PINxn по нарастающему фронту тактового сигнала. Соответственно, величина задержки может составлять от 0.5 до 1.5 периода системного тактового сигнала.

 

В качестве примера на рис. 4.2. рассмотрены регистры для управления периферийным модулем PORTA.

 

Рис. 4.2. Регистры для управления периферийным модулем PORTA

 

Основы языка Си

 

    Для выполнения лабораторной работы №1 необходимо ознакомиться со следующими пунктами главы 3 [3]:

- вводные понятия;

- структура программы на Си;

- типы данных, переменные, константы;

- операторы ветвления;

- циклические конструкции;

- директивы препроцессора.


 


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

1. Собрать схему стенда УМС-1 в соответствии с рис. 3.1.

2. Включить Персональный компьютер.

3. Включить Источник питания.

4. Включить Модуль МК.

5. В соответствии с разделом 2 в ИСР CodeVisionAVR на базе проекта Lab_01 написать программу, зажигающую светодиодный индикатор «PC4».

Функциональная схема подключения светодиодного индикатора «PC4», звукоизлучателя HA1 и кнопок «Кн.1», «Кн.2» в УМС-1 приведена на рисунке 4.3.

Рис. 4.3.

6. На основе п.5 написать программу мигания светодиодного индикатора «PC4».

7. На основе п.6 написать программу мигания светодиодного индикатора «PИ0» при нажатии кнопки «Кн.1».

8. Разработать алгоритм управления светодиодным индикатором «PC4» и звуковым сигналом в зависимости от сочетания нажатий кнопок «Кн.1», «Кн.2» в соответствии с вариантом задания (см. подраздел 4.1.4).

9. Написать программу, реализующую требуемый алгоритм (см. п.8), и скомпилировать ее.

Необходимые функции:

delay_us(x) – функция, реализующая задержку на x мкс

delay_ms(x) - функция, реализующая задержку на x мс

 

10. Загрузить полученную прошивку в микроконтроллер УМС-1, как показано в разделе 3.

11. Запротоколировать полученные результаты.

12. Выключить Модуль МК.

13. Выключить Источник питания.

14. Завершить работу Персонального компьютера.

 

Варианты заданий управления светодиодным индикатором и звуковым сигналом в зависимости от сочетания нажатий кнопок

Вариант Сочетание кнопок Характеристики светодиодной индикации (« PC 4») (рис. 4.4) Характеристики звукового сигнала ( PB 1) (Рис. 4.5)

1

КН1 tсв = 0,5 с. tвыкл = 1 с. -
КН2 tсв = 1 с. tвыкл = 0,5 с. tзв = 1 с. fзв = 4 кГц

2

КН2 tсв = 2 с. tвыкл = 1 с. -
КН1 tсв = 1 с. tвыкл = 2 с. tзв = 1 с. fзв = 6 кГц

3

КН1 + КН2 tсв = 3 с. tвыкл = 1 с. -
КН2 tсв = 1 с. tвыкл = 3 с. tзв = 1 с. fзв = 8 кГц

4

КН1 + КН2 tсв = 4 с. tвыкл = 1 с. -
КН1 tсв = 1 с. tвыкл = 4 с. tзв = 1 с. fзв = 10 кГц

5

КН1 tсв = 5 с. tвыкл = 1 с. tзв = 1 с. fзв = 12 кГц
КН1 + КН2 tсв = 1 с. tвыкл = 5 с. -

 

Рис. 4.4. Временная диаграмма светодиодной индикации («PC4»)

 

Рис. 4.5. Пример временной диаграммы звукового сигнала (PB1), f = 1кГц

Дата: 2018-12-21, просмотров: 383.