- •Глава 1. Архитектура микроконтроллерa Atmega 128
- •Организация памяти
- •Память программ
- •1.1.2. Память данных
- •1.2.Счетчик команд и выполнение программы
- •1.2.1.Счетчик команд
- •1.2.2.Функционирование конвейера
- •1.2.3.Стек
- •Глава 2
- •2.1Тактовый генератор
- •2.3Режимы пониженного энергопотребления
- •Idle (ждущий режим)
- •2.4. Сброс
- •Глава3. Прерывания
- •Глава4. Порты ввода/вывода
- •Глава5. Таймеры
- •Глава 6. Аналоговый компаратор
- •6.1. Функционирование компаратора
- •Глава7. Аналого-цифровой
- •7.1 Общие сведения
- •7.2. Функционирование модуля ацп
- •Глава 8. Универсальный асинхронный
- •8.1 Общие сведения
- •8.2. Использование модулей usart
- •Глава 9. Последовательный
- •9.1 Функционирование модуля spi
- •9.2 Режимы передачи данных
- •Глава 10. Последовательный двухпроводный интерфейс
- •10.1 Общие сведения
- •10.2. Принципы обмена данными по шине twi
- •10.3. Модуль twi
- •10.4. Взаимодействие прикладной программы
- •10.5. Режимы работы модуля twi
Глава4. Порты ввода/вывода
Каждый порт микроконтроллера состоит из определенного числа выводов, через которые микроконтроллер может осуществлять прием и передачу цифровых сигналов. Задание направления передачи данных через любой контакт ввода/вывода может быть произведено программно в любой момент времени.
ATmega128x имеет шесть 8_разрядных порта ввода/вывода (порты A, B, C, D, E, F) и один 5_разрядный порт ввода/вывода G. Всего контактов ввода/вывода 53.
Регистры портов ввода/вывода
Обращение к портам производится через регистры ввода/вывода. Под каждый порт в адресном пространстве ввода/вывода зарезервировано по 3 адреса, по которым размещены следующие регистры: регистр данных порта PORTx, из которого выдается предварительно записанные данные на выводы, регистр направления передачи DDRx, состояние которого определяет направление передачи и регистр ввода порта PINx. В котором записываются принимаемые из выводов данные. Действительные названия регистров получаются подстановкой названия порта вместо символа «x», соответственно регистры порта A называются PORTA, DDRA, PINA, порта B — PORTB, DDRB, PINB и т. д. Поскольку с помощью регистров PINx осуществляется доступ к физическим значениям сигналов на выводах порта, они доступны только для чтения, тогда как остальные два регистра доступны и для чтения, и для записи.
Конфигурирование портов ввода/вывода
Каждому выводу порта соответствуют по одному разряду трех регистров ввода/вывода: PORTxn (регистр PORTx), DDxn (регистр DDRx) и PINxn (регистр PINx). Действительные названия разрядов регистров получаются подстановкой названия порта вместо символа «x» и номера разряда вместо символа «n». Порядковый номер вывода порта соответствует порядковому номеру разряда регистров этого порта. Поэтому, если разрядность порта меньше восьми, в регистрах порта используется соответствующее число младших разрядов. Не задействованные старшие разряды регистров доступны только для чтения и всегда содержат «0».
Разряд DDxn регистра DDx определяет направление передачи данных через контакт ввода/вывода. Если этот разряд установлен в «1», то n_й вывод порта является выходом, если же сброшен в «0» — входом.
Если вывод функционирует как выход (DDxn = «1»), этот разряд определяет состояние вывода порта (вывод данных). Если выводимый разряд регистра PORTxn установлен в «1», на выводе устанавливается напряжение ВЫСОКОГО уровня. Если разряд сброшен в «0», на выводе устанавливается напряжение НИЗКОГО уровня.
Если вывод функционирует как вход (DDxn=« 0»), то данные заносятся в разряд регистра PINxn для дальнейшего чтения програмой.
В заключение отметим, что подавляющее большинство контактов ввода/вывода имеют дополнительные функции и могут использоваться различными периферийными устройствами микроконтроллеров. При этом возможны две ситуации. В одних случаях пользователь должен самостоятельно задавать конфигурацию вывода, а в других — вывод конфигурируется автоматически при включении соответствующего периферийного устройства. Об этом будет сказано при рассмотрении соответствующих периферийных устройств.
.
