На главную страницу | Новости | FAQ | Ссылки | Для детей | Контакты

ARDUINO ROBOTS
Arduino для начинающих электронщиков. Модули и проекты на базе Arduino. Разработка роботов


Порты ввода-вывода микроконтроллеров AVR


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

- Port(P) - параллельный порт

- SPI

- UART

- TWSI

Параллельные порты ввода-вывода


В состав порта Px (x=A,B,C,D,E) входят 3 регистра ввода-вывода:

1) DDRx (направление)

2) PORTx (состояние)

3) PINx (не имеет аппаратной реализации)

avr-ports

Для настройки портов нужно задать значения для DDRx и PORTx. Например так:

DDRB = 0x00;  
PORTB = 0x00; 

Состояние разряда DDRX.Y определяет направление передачи бита через вывод порта PX.Y:

DDRx.y = 0;  // вход
DDRx.y = 1;  // выход

Режимы работы портов:


1) режим входа (DDRX.Y=0)

PORTx.y = 0 – высокоимпендансное состояние (z-состояние) -- по умолчанию.

Cопротивление порта очень велико. Он не оказывает на шину никакого влияния. Но если он висит в воздухе, то напряжение на нем (и значение PIN) будет скакать в зависимости от внешних наводок.

PORTx.y = 1 – через внутренний подтягивающий резистор 100кОм ввод подключается к шине VCC. Поэтому в неподключенном состоянии на вводе будет висеть PIN=1.

2) режим выхода (DDRX.Y=1)

PORTx.y = 0 – низкий уровень (UOL, IOL<20mA) – логический 0

PORTx.y = 1 – высокий уровень (UOL, IOL<3mA) – логическая 1

* режимы работы показаны в таблице

avr-ports-table

Работа с отдельными выводами (пинами, ножками) порта:


Получить значение входного сигнала на отдельном выводе можно с помощью команд условного перехода:

* на asm:

SBIC	PINx, y					
SBIS	PINx, y	

* на C:

z = PINx.y;	

Задать значение выходного сигнала на отдельном выводе:

CBI	PORTx, y
SBI	PORTx, y

Приём и выдача байт на целый порт на asm:

IN Rd, PINx     (приём)
OUT PORTx, Pr   (выдача)

или на C:

z = PINx       (приём)
PINx = z       (выдача)

При сборосе по умолчанию все биты DDRx и PORTx установлены в «0».

Примечание: На некоторых котроллерах (например Atmega8) входной ток может быть выше чем выходной! Это значит, что лучше, если ток будет втекать в управлящий вывод, т.е. надо подключать к нему минусовой полюс светодиода.

Правда, это не относится к Arduino UNO.




Платы ARDUINO по низкой цене

Нажми на изображение, чтобы заказать в интернет-магазине:


arduino NANO купить дешево arduino UNO купить дешево arduino UNO R3 ORIG купить дешево arduino MEGA купить дешево arduino DUE купить дешево



Now 26.04.24 16:00:53, Your IP: 3.12.36.30; arduino.zl3p.com/avr/input-output
ePN