Easyelectronics.ru

Электроника для всех
Текущее время: 14 дек 2018, 08:18

Часовой пояс: UTC + 5 часов




Начать новую тему Ответить на тему  [ Сообщений: 13 ] 
Автор Сообщение
 Заголовок сообщения: Z-состояние порта
СообщениеДобавлено: 06 мар 2018, 20:37 
Заглядывает иногда

Зарегистрирован: 23 апр 2015, 13:58
Сообщения: 41
Всем привет! Извините за детский вопрос ))

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

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

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

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Z-состояние порта
СообщениеДобавлено: 06 мар 2018, 20:55 
Заглядывает иногда

Зарегистрирован: 21 мар 2016, 01:19
Сообщения: 99
а) Это полуправильно. Нужно добавить
PORTD=0;

б) поверить на слово даташиту


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Z-состояние порта
СообщениеДобавлено: 06 мар 2018, 21:01 
Старожил
Аватара пользователя

Зарегистрирован: 22 июл 2017, 11:48
Сообщения: 2585
Проверить можно, ткнув светодиод с резистором в ту и в другую сторону (между ножкой и землей и между ножкой и +питания, перевернув светодиод). Либо, ткнув щуп осциллографа в ножку и прижав палец к острию щупа. Z-состояние покажет наличием наводок на щупе. Примерно тот же результат будет при аналогичном подключении мультиметра в режиме AC-напряжения.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Z-состояние порта
СообщениеДобавлено: 06 мар 2018, 21:57 
Заглядывает иногда

Зарегистрирован: 23 апр 2015, 13:58
Сообщения: 41
Вот так? Последовательность важна?

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Z-состояние порта
СообщениеДобавлено: 06 мар 2018, 22:08 
Заглядывает иногда

Зарегистрирован: 23 апр 2015, 13:58
Сообщения: 41
Ага, подключил осцилл, ткнул пальцем - помехи дикие ))

Изображение


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Z-состояние порта
СообщениеДобавлено: 06 мар 2018, 23:02 
Старожил

Зарегистрирован: 19 мар 2013, 19:37
Сообщения: 2536
Откуда: Санкт-Петербург
Кстати, если мне не изменяет склероз, после ресета порты изначально в hi-z (проверьте по даташиту), так что достаточно не трогать нужные биты PORT/DDR.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Z-состояние порта
СообщениеДобавлено: 06 мар 2018, 23:11 
Старожил
Аватара пользователя

Зарегистрирован: 14 апр 2014, 11:06
Сообщения: 1399
Откуда: Курск
Вложение:
Z.jpg
Z.jpg [ 41.78 Кб | Просмотров: 441 ]


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Z-состояние порта
СообщениеДобавлено: 07 мар 2018, 00:00 
Заглядывает иногда

Зарегистрирован: 21 мар 2016, 01:19
Сообщения: 99
geodx писал(а):
Вот так? Последовательность важна?

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

В общем и целом - нет.
PORTD=0 переключает все пины порта в HZ.
Если нужно переключить какой-то определенный, то выражение будет несколько более сложным (развернуто):
PORTD = (~MASK) & PORTD;
где MASK содержит 1 в нужных битах и 0 - в остальных.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Z-состояние порта
СообщениеДобавлено: 07 мар 2018, 00:07 
Заглядывает иногда

Зарегистрирован: 21 мар 2016, 01:19
Сообщения: 99
aamonster писал(а):
...после ресета порты изначально в hi-z..., так что достаточно не трогать нужные биты PORT/DDR.

Так-то оно так. Но человеку нужно знать, как сделать требуемое. Не всегда ведь у него программа будет состоять из пяти строк.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Z-состояние порта
СообщениеДобавлено: 07 мар 2018, 00:23 
Старожил

Зарегистрирован: 19 мар 2011, 05:05
Сообщения: 2435
Цитата:
PORTD=0 переключает все пины порта в HZ.

по-моему это высказывание как-то противоречит табличке чуть выше? или я выдернул из контекста?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Z-состояние порта
СообщениеДобавлено: 07 мар 2018, 00:33 
Заглядывает иногда

Зарегистрирован: 21 мар 2016, 01:19
Сообщения: 99
goreprogrammist писал(а):
по-моему это высказывание как-то противоречит табличке чуть выше? или я выдернул из контекста?

Нет, не противоречит.

"Общее управление (для всех выводов портов) осуществляется разрядом PUD (2-й разряд) регистра специальных функций
SFIOR. Если разряд PUD сброшен в «0» (начальное состояние), состояние подтягивающих резисторов будет определяться состоянием разрядов PORTxn для каждого входа порта. Если же разряд PUD установлен в «1», подтягивающие резисторы отключаются от всех выводов микроконтроллера."
Цитата из Евстифеева "Микроконтроллеры AVR семейств Tiny и Mega фирмы ATMEL"


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Z-состояние порта
СообщениеДобавлено: 07 мар 2018, 00:37 
Заглядывает иногда

Зарегистрирован: 23 апр 2015, 13:58
Сообщения: 41
aamonster писал(а):
Кстати, если мне не изменяет склероз, после ресета порты изначально в hi-z (проверьте по даташиту), так что достаточно не трогать нужные биты PORT/DDR.


Не, мне надо в процессе отключить порт.

Команда PORTD = 0 прижимает ноги к земле. Я слышал, нужна именно комбинация с регистром DDRD.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Z-состояние порта
СообщениеДобавлено: 07 мар 2018, 01:20 
Старожил

Зарегистрирован: 19 мар 2011, 05:05
Сообщения: 2435
ну вот табличка выше как раз отвечает на вопрос.


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 13 ] 

Часовой пояс: UTC + 5 часов


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

Сейчас этот форум просматривают: нет зарегистрированных пользователей


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

Найти:
Перейти:  

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB