• Система автоматизации с открытым исходным кодом на базе esp8266/esp32 микроконтроллеров и приложения IoT Manager. Наша группа в Telegram

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

Vaffanculo

New member
Привет всем!

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

third-state-detection-2.png

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

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

Спасибо.
 

Vaffanculo

New member
Попробую пояснить чего нужно добиться при помощи таблицы.

Код:
|ESP32 GPIO        | Мультиплексор SELECT | Мультиплексор ENABLE |
|------------------+----------------------+----------------------|
|на выход, высокий | высокий              | низкий               |
|на выход, низкий  | низкий               | низкий               |
|на вход           | не важно             | высокий              |
|------------------+----------------------+----------------------|
 

rst

Member
Если не хватает ног в МК, то применяют чипы - "расширители IO". Подключаемые по SPI или I2C. Их полно разных - гуглите.
 

Vaffanculo

New member
Думаете я не догадывался о такой возможности?
Нужно решение в рамках обозначенного задания.
 

esp340

Active member
Ну да, вопрос в том как это доп. железо будет устроено.
Лет ...дцать назад делал себе логический пробник для ТТЛ и КМОП микросхем который оппределял уровни логического ноля, единицы и неопределенное (Z) состояние. Схему уже не вспомню, но одной деталькой точно не обойдется. Проще, как уже было выше сказано, использовать расширитель портов.
 

rst

Member
Лет ...дцать назад делал себе логический пробник для ТТЛ и КМОП микросхем который оппределял уровни логического ноля, единицы и неопределенное (Z) состояние. Схему уже не вспомню, но одной деталькой точно не обойдется.
А что там вспоминать? Пара компараторов на уровень напряжения на ноге - и все дела! Но только ведь это наверняка "за рамками обозначенного задания" :D
ТС хочет некую магическую схему на двух резисторах которая всё будет делать и параллельно фотки в инстаграм постить. :cool:
 

Vaffanculo

New member
ТС хочет некую магическую схему на двух резисторах которая всё будет делать и параллельно фотки в инстаграм постить. :cool:
Телепаты вернулись из отпуска? Я где-то писал про два резистора?
Схема на компараторах мне известна, но она требует относительно большой обвязки для получения того, что я описал.
 

esp340

Active member
Телепаты вернулись из отпуска?
Ну если не подходят предложенные варианты, то только телепаты и могут вам помочь. Никто ж не знает над чем вы там колдуете. Я бы на вашем месте подумал, например, а нельзя ли использовать сигнал еще на каком-то пине(ах)? Может тогда обошлось бы простым добавлением какой нибудь м/схемы логики или просто монтажного И(ИЛИ).
 

CodeNameHawk

Moderator
Команда форума
Схема на компараторах мне известна, но она требует относительно большой обвязки для получения того, что я описал.
Возможно хватит четырех резисторов и одного компаратора.
Резисторный делитель на ноге проца подбираете чуть выше уровня лог единицы, второй делитель чуть ниже этого уровня.
Принцип такой, если проц в высокоимпедансном состоянии, уровень первого делителя выше второго.
Если на ноге лог единица или лог ноль, уровень первого делителя ниже второго.
 

nikolz

Well-known member
Привет всем!

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

Посмотреть вложение 9553

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

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

Спасибо.
У вас схема нарисована с ошибкой , сигнал E надо рисовать либо с крышей либо с o на входе. Так как он инверсный.
Тогда для того, чтобы U2 выключен при IO34 в режиме ввод и включен когда на IO34 ноль, надо E соединить с S0 S1
и подтянуть все это к питанию резистором 3..20 ком.
 

Vaffanculo

New member
Тогда для того, чтобы U2 выключен при IO34 в режиме ввод и включен когда на IO34 ноль, надо E соединить с S0 S1
и подтянуть все это к питанию резистором 3..20 ком.
Но ведь в такой схеме при подаче 1 на IO34 в режиме вывод U2 отключится.
 

Vaffanculo

New member
Друзья, спасибо всем вам за участие и за советы.
В процессе обсуждения здесь и на соседних форумах я переосмыслил задачу,
и теперь сформулирую новые вопросы в отдельной ветке.
 
Сверху Снизу