Z-состояние порта

Все о микроконтроллерах: AVR, PIC, STM8, STM32, Arduino, Altera, Xilinx, все что угодно. Этот раздел для всего что клацает байтиками.
geodx
Сообщения: 54

Сообщение geodx » 06 мар 2018, 18:57

Всем привет! Извините за детский вопрос ))

Хочу отцепить порт от микроконтроллера atmega8.

В CVAVR набрал код:

#include <mega8.h>
void main(void)
{
DDRD = 0;
}

Это правильно? Как проверить, что ножка порта находится в Z-состоянии? Померить тестером, и омметр должен показывать разрыв?

Аватара пользователя
iEugene0x7CA
Адепт
Сообщения: 1570
Откуда: Киев

Сообщение iEugene0x7CA » 06 мар 2018, 21:43

Здорова.
В AVR'ках должно быть целых 3 регистра для управления портом ввода-вывода: DDR, PORT, и PIN.
Нам понадобятся первые два.
DDR фактически указывает, будет ли ножка управлять какой-то нагрузкой. Если выставлен 1, то выход подтягивается транзистором либо к +, либо - питания в зависимости от бита PORT.
Если же бит в DDR выставлен как 0, то ножка уже считай висит в воздухе. При этом PORT при DDR == 0 начинает управлять подтяжкой, она что-то около 40 кОм и если бит PORT будет выставлен как 1 — висящая в воздухе нога будет подтянута к + через внутренний резистор. Подтяжка юзается например с кнопками, если нога порта подтянута к + через внутренний резистор – можно закорачивать её кнопкой на землю и через регистр PIN смотреть на ноге 1 или 0.
Подтягивать к земле AVR не умеет, такие фичи только в STM32 и других более продвинутых процах.

Ну, т.е. да, дабы было чисто Z-состояние – соответствующие биты в регистрах DDR и PORT оба должны быть 0.

P.S. Ух, 100 лет не касался AVR'ок и Codevision, аж ностальгия накатила. :)

Вернуться в «Микроконтроллеры и ПЛИС»



Кто сейчас на конференции

Сейчас этот форум просматривают: Google [Bot] и 3 гостя