• Добро пожаловать на компьютерный форум Tehnari.ru. Здесь разбираемся с проблемами ПК и ноутбуков: Windows, драйверы, «железо», сборка и апгрейд, софт и безопасность. Форум работает много лет, сейчас он переехал на новый движок, но старые темы и аккаунты мы постарались сохранить максимально аккуратно.

    Форум не связан с магазинами и сервисами – мы ничего не продаём и не даём «рекламу под видом совета». Отвечают обычные участники и модераторы, которые следят за порядком и качеством подсказок.

    Если вы у нас впервые, загляните на страницу о форуме и правила – там коротко описано, как задать вопрос так, чтобы быстро получить ответ. Чтобы создавать темы и писать сообщения, сначала зарегистрируйтесь, а затем войдите под своим логином.

    Не знаете, с чего начать? Создайте тему с описанием проблемы – подскажем и при необходимости перенесём её в подходящий раздел.
    Задать вопрос Новые сообщения Как правильно спросить
    Если пришли по старой ссылке со старого Tehnari.ru – вы на нужном месте, просто продолжайте обсуждение.

Как обнаружить третье состояние вывода микроконтроллера?

Vaffanculo

Новые
Регистрация
11 Фев 2020
Сообщения
15
Реакции
0
Баллы
0
Как обнаружить третье состояние вывода микроконтроллера?

Привет всем!

Имеется мультиплексор 74HC4053 на три канала один к двум. Один канал не используется.
Переключение остальных двух каналов должно происходить одновременно.
Для управления этим мультиплексором есть ровно одна ножка микроконтроллера (ESP32).

Теперь нужно сделать так, чтобы МК мог отключить мультиплексор подав ему на вход E высокий уровень.
Добиться этого я надеялся путем переключения соответствующего GPIO в режим input, чтобы не тратить вторую ножку МК.

То есть нужно придумать как превратить 0 или 1 в режиме "на выход" в низкий уровень, а режим "на вход" в высокий уровень.
Как это сделать?

Спасибо.
 

Вложения

  • third-state-detection-2.png.jpg
    third-state-detection-2.png.jpg
    87.7 KB · Просмотры: 54
Теперь нужно сделать так, чтобы МК мог отключить мультиплексор подав ему на вход E высокий уровень.
Что Вы хотите , заставить 155-ю серию работать на 3В , не получится , нужен преобразователь уровня .
 
Что Вы хотите , заставить 155-ю серию работать на 3В , не получится , нужен преобразователь уровня .

Не нужен преобразователь. Про 155-ю серию я ничего не говорил. Вот документация разработчика на названную в теме микросхему, я выделил немного.

Сам мультиплексор и управление им работают от 3,3 вольт, это проверено на практике. Проблема именно в том, что я не понимаю как обнаружить, что ножка МК перешла в состояние "на вход".
 

Вложения

  • 01.png.jpg
    01.png.jpg
    70.2 KB · Просмотры: 50
  • 02.png.jpg
    02.png.jpg
    54.5 KB · Просмотры: 32
Чтобы вопрос был понятней, вот чего нужно добиться.

HTML:
|ESP32 GPIO        | Мультиплексор SELECT | Мультиплексор ENABLE |
|------------------+----------------------+----------------------|
|на выход, высокий | высокий              | низкий               |
|на выход, низкий  | низкий               | низкий               |
|на вход           | не важно             | высокий              |
|------------------+----------------------+----------------------|
 
Не пойму о каком третьем состоянии речь? Хотя есть ТТЛ с третьим состоянием на выходе,
это высокоомное, т.е. вобще ни чё не должно показывать, ни "0", ни "1" ... :)))
 
Коробочка с надписью загадка, это и есть гипотетическое устройство определения состояния пина проца? Если так, то могу предложить следующее: поскольку на выходе проца могут быть только логические ноль и единица, а то что на входе, ему пофиг - просто создать делитель напряжения питания, из достаточно высокоомных резисторов, к примеру одинакового номинала, чтобы не нагружать пин в режиме выхода. А вот ваша коробочка, с надписью загадка, должна определять уровень напряжения на этом пине. То есть она должна включать в себя компаратор, который будет следить за напряжением на этом пине - если на нём установится половина напряжения питания, значит пин переключился на вход, и компаратор должен выдать высокий уровень на вход enable мультиплексора
 
Это уже интересней! И как будет устроен такой компаратор?
 
Это уже интересней! И как будет устроен такой компаратор?
Наподобие такого. Читайте, изучайте принцип работы. Возможно придётся на выходе поставить диодную развязку и инвертор
 

Вложения

  • 220.png.jpg
    220.png.jpg
    11.4 KB · Просмотры: 24
Собрал пока в симуляторе. Вроде бы работает. Спасибо за идею!

Инвертор - не вижу зачем он тут; если на входе напряжение из середины диапазона, то на выходе имеем высокий уровень, то есть что и требовалось.

Смущает только выходная часть. Не уверен, что можно вот так просто соединить выходы операционников.
И про диодную развязку можно поподробнее?
 

Вложения

  • comparator-2.png.jpg
    comparator-2.png.jpg
    130.2 KB · Просмотры: 37
Еще мне на другом форуме говорят, что при таком подходе на входы S0 и S1 будет подаваться промежуточное напряжение, которое ни ноль ни единица, и так делать нельзя несмотря даже на то, что документация утверждает, что если EN=HI, то от S0 и S1 ничего не зависит.
Хотелось бы выяснить чем это чревато.
 

Вложения

  • 74HC4053-1.png.jpg
    74HC4053-1.png.jpg
    82.5 KB · Просмотры: 32
Еще мне на другом форуме говорят, что при таком подходе на входы S0 и S1 будет подаваться промежуточное напряжение, которое ни ноль ни единица, и так делать нельзя несмотря даже на то, что документация утверждает, что если EN=HI, то от S0 и S1 ничего не зависит.
Хотелось бы выяснить чем это чревато.
Пробуйте, и будет видно. В любом случае ничего опасного не произойдет. Диодная развязка не обязательна, компаратор имеет выход с открытым коллектором
 
Друзья, спасибо всем вам за участие и за советы.
В процессе обсуждения я переосмыслил задачу, и теперь сформулирую новые вопросы в отдельной ветке.
 
Боюсь даже предположить что это будут за вопросы. ;)
По сути данной темы:
Так никто никогда не делает! Это изначально неправильный подход к проектированию цифровых схем. Порт МК построен по такому принципу (три состояния, в Z-состоянии - вход) исключительно в целях экономии ножек. Подразумевалось, что разработчик после него поставит регистр-защёлку и всю дальнейшую коммутацию будет вести через этот регистр. Если регистр-защёлка не планируется, то порт МК в Z-состояние никогда не переводят.
 
Последнее редактирование:
Назад
Сверху