Реклама ⓘ
Главная » Микроконтроллеры
Призовой фонд
на апрель 2024 г.
1. 100 руб.
От пользователей

Похожие статьи:


Реклама ⓘ

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

Систему ввода-вывода микроконтроллеров AVR можно считать одной из самых сильных сторон архитектуры. Каждая линия допускает независимое управление, имеет симметричные нагрузочные характеристики и номинальные втекающий и вытекающий токи до 20…25 мА (максимальный до 40 мА) с просадкой напряжения не более 0.7 В.

Линии объединяются в 8-разрядные порты ввода-вывода, которые у AVR имеют названия A,B,C…K,L. Обозначение каждой линии на схеме определяет ее принадлежность к порту и порядковый номер. Например, выводы порта B имеют названия PB0,PB1…PB7, порта D - PD0,PD1…PD7 и т.д. В различных моделях отдельные порты могут содержать меньше 8 линий ввода-вывода.

Расположение выводов ATmega8
Рис.11 Расположение выводов ATmega8

Большинство выводов AVR-микроконтроллеров имеют также альтернативные назначения. Это аналоговые линии компаратора и АЦП, цифровые модулей SPI, TWI, USART и т.д. Описание выводов микроконтроллера ATmega8 находится в табл.6, а схема их расположения на рис.11.

Внутрення схема линии порта ввода-вывода
Рис.12 Внутрення схема линии порта ввода-вывода

Упрощенная внутренняя схема линии порта ввода-вывода приведена на рис.12. Каждым портом микроконтроллера управляют 3 РВВ. Это DDRx, PORTx и PINx (x – название порта: A,B,C и т.д.). Регистры портов A,B,C,D всех моделей находятся в первой половине адресного пространства ввода-вывода и поэтому допускают прямые операции над отдельными их битами. В цифровых портах AVR реализована истинная функциональность “чтение-модификация-запись”.

Регистр DDRx отвечает за направление передачи данных. Запись лог.1 в разряды DDRx настраивает линии на вывод, а запись лог.0, соответственно, на ввод. Например:

    ldi  R16,0b11100011 ;настроить на ввод линии 2,3,4 и
    out  DDRB,R16       ;на вывод линии 0,1,5,6,7 порта B

    sbi  DDRB,0  ;настроить на вывод линию 0 порта B
    cbi  DDRB,1  ;настроить на ввод линию 1 порта B

Регистр PORTx имеет двойное предназначение. Если линии порта настроены на вывод, то содержимое PORTx определяет логическое состояние выводов порта. Для линий настроенных на ввод значение PORTx определяет состояние внутреннего подтягивающего (pull-up) резистора к шине питания. В этом случае при уровне лог.1 в разрядах PORTx резистор подключен, а при уровне лог.0 – отключен и линии переведены в высокоимпедансное состояние (z-состояние):

    ldi  R16,0b11110000  ;настроить на вывод линии 4…7 
    out  DDRC,R16        ;и на ввод линии 0…3 порта С
    ldi  R16,0b11111111  ;выставить на линиях 4…7 порта С уровень лог.1 
    out  PORTC,R16       ;и подключить к линиям 0…3 порта С pull-up резисторы

    sbi  DDRC,0   ;настроить на вывод линию 0 порта C
    cbi  PORTC,0  ;выставить на линии 0 порта С уровень лог.0

    сbi  DDRC,1   ;настроить на ввод линию 1 порта C
    сbi  PORTC,1  ;перевести линию 1 порта С в z-состояние

Регистр PINx предназначен для считывания уровней сигнала с выводов микроконтроллера. Естественно, что необходимость в этом существует только для линий настроенных на ввод (для линий настроенных на вывод содержимое PINx повторяет состояние выходного регистра PORTx). Разряды PINx не оказывают ни какого влияния на состояние выводов, а сам регистр доступен только для чтения. Логический уровень входной линии фиксируется в триггере-защелке в каждом цикле тактовой частоты. Таким образом, реальное значение сигнала при считывании может иметь отставание порядка 0.5…1.5 машинных циклов. Пример использования:

   cbi  DDRD,0  ;настроить на ввод линию 0 порта D
   sbi  PORTD,0  ;подключить к линии 0 порта D pull-up резистор
   nop           ;задержка 1 цикл для установки режима
   sbis PIND,0   ;считать состояние линии 0 порта D  
   rjmp ulo      ;если лог.0, то перейти на метку ulo 
   rjmp uhi      ;если лог.1, то перейти на метку uhi

У микроконтроллеров AVR имеется возможность управлять pull-up резисторами сразу на всех его выводах. За это свойство отвечает бит PUD из РВВ SFIOR либо MCUCR. При установке разряда PUD запрещается подключение всех резисторов. При PUD=0 (значение после сброса) состояние внутренних резисторов определяется состоянием регистра PORTx.

Различные возможности конфигурации линий портов ввода-вывода  AVR приведены в табл.7. На время спящего режима (после выполнения команды sleep) входной буфер порта отключается.

При использовании выводов микроконтроллера по их альтернативному назначению, может понадобится вручную сконфигурировать линии. Так, например, в случае применения компаратора, АЦП, внешних прерываний соответствующие линии должны быть переведены в z-состояние, а для ШИМ-выводов таймеров счетчиков и выходных сигналов других модулей линии должны быть настроены на вывод.

Табл.6. Описание выводов модели ATmega8(L):

Номер вывода в корпусе DIP-28

Номер вывода в корпусах
TQFP-32 и MLF-32

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

Описание

14

12

PB0

0-й бит порта B

ICP1

Вход захвата таймера-счетчика 1

15

13

PB1

1-й бит порта B

OC1A

ШИМ-вывод A таймера-счетчика 1

16

14

PB2

2-й бит порта B

OC1B

ШИМ-вывод B таймера-счетчика 1

SS

Вывод Slave нашине SPI

17

15

PB3

3-й бит порта B

OC2

ШИМ-вывод таймера-счетчика 2

MOSI

Выход Master или вход Slave данных на шине SPI

18

16

PB4

4-й бит порта B

MISO

Вход Master или выход Slave данных на шине SPI

19

17

PB5

5-й бит порта B

SCK

Выход Master или вход Slave тактового сигнала модуля SPI

9

7

PB6

6-й бит порта B

XTAL1

Вывод тактового генератора

TOSC1

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

10

8

PB7

7-й бит порта B

XTAL2

Вывод тактового генератора

TOSC2

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

2

30

PD0

0-й бит порта D

RXD

Вход USART

3

31

PD1

1-й бит порта D

TXD

Выход USART

4

32

PD2

2-й бит порта D

INT0

Вход внешнего прерывания 0

5

1

PD3

3-й бит порта D

INT1

Вход внешнего прерывания 1

6

2

PD4

4-й бит порта D

XCK

Вход/выход внешнего тактового сигнала модуля USART

T0

Вход/выход внешнего тактового сигнала таймера-счетчика 0

11

9

PD5

5-й бит порта D

T1

Вход/выход внешнего тактового сигнала таймера-счетчика 1

12

10

PD6

6-й бит порта D

AIN0

Неинвертирующий вход компаратора

13

11

PD7

7-й бит порта D

AIN1

Инвертирующий вход компаратора

23

23

PC0

0-й бит порта C

ADC0

0-й вход АЦП

24

24

PC1

1-й бит порта C

ADC1

1-й вход АЦП

25

25

PC2

2-й бит порта C

ADC2

2-й вход АЦП

26

26

PC3

3-й бит порта C

ADC3

3-й вход АЦП

27

27

PC4

4-й бит порта C

ADC4

4-й вход АЦП

SDA

Вход/выход данных модуля TWI

28

28

PC5

5-й бит порта C

ADC5

5-й вход АЦП

SCL

Вход/выход тактового сигнала модуля TWI

1

29

PC6

6-й бит порта C

RESET

Вход сброса

-

19

ADC6

6-й вход АЦП

-

22

ADC7

7-й вход АЦП

8,22

3,5,21

GND

Общий вывод

21

20

VREF

Вход опорного напряжения для АЦП

20

18

AVCC

Вывод источника питания АЦП

7

4,6

VCC

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

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

DDRxn

PORTxn

PUD

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

Резистор

Примечание

0

0

X

Вход

Отключен

На выводе z-состояние

0

1

0

Вход

Подключен

На выводе присутствует положительное смещение к источнику питания

0

1

1

Вход

Отключен

На выводе z-состояние

1

0

X

Выход

Отключен

На выводе лог.0

1

1

X

Выход

Отключен

На выводе лог.1

Перейти к следующей части:

Теги:

Котов Игорь Юрьевич Опубликована: 2012 г. 0 0
Я собрал 0 0
x

Оценить статью

  • Техническая грамотность
  • Актуальность материала
  • Изложение материала
  • Полезность устройства
  • Повторяемость устройства
  • Орфография
0

Средний балл статьи: 0 Проголосовало: 0 чел.

Комментарии (1) | Я собрал (0) | Подписаться

+2
КОСтян #
Автор, поправь пожалуйста пины корпуса MLF! РС0 поменяй местами с PC1...Сутки не мог понять почему нога PC0 не реагирует адекватно... И смех и грех
Ответить
Добавить комментарий
Имя:
E-mail:
не публикуется
Текст:
Защита от спама:
В чем измеряется электрическое сопротивление?
Файлы:
 
Для выбора нескольких файлов использйте CTRL

AVR-программатор USB ASP
AVR-программатор USB ASP
200 Вт усилитель класса D на IRS2092 Солнечная панель 10Вт 12В поликристаллическая
вверх