Монтажное И

Распечатать

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

Что такое соединение в монтажное И.
Представь себе линию, подтянутую резистором к плюсу питания. Так как сопротивление между линией и землей бесконечность, а между питанием и линией равно резистору, то напряжение на линии равно напряжению питания. То есть высокий уровень aka (обычно) логическая единица.


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

Как это можно использовать? Да по разному. Простеший пример — сигнал готовности. Есть куча блоков единого устройства. Каждый из которых работает по своему алгоритму и, например, требует начальную инициализацию. Чтобы главный понял, что все остальные блоки закончили инициализацию и подготовились он «слушает» линию связи. В качестве сигнала готовности — блок отпускает линию. Когда каждый блок пройдет инициализацию, то линия примет высокий уровень и это будет сигналом полной готовности устройства.

На этом же принципе работает и шина 1-Wire и I2C — там если приемник не успевает прожевать байт, то он просто придавливает тактовую линию, не давая передатчику генерировать импульсы. А передатчик, видя что его обламывают, делает паузу.

Как с этим работать
Очевидно, что при работе на шину с монтажным И нельзя в эту шину подавать сильный высокий уровень. Иначе если какой либо из блоков выдаст свой сильный низкий то один из них выгорит в результате КЗ. Соответственно, если говорить про AVR, то ноль задаем сочетанием DDR=1 PORT=0, а единицу (когда линия отпущена) DDR=0 PORT=0. Вот такая вот инверсная логика.

Запись опубликована в рубрике Начинающим с метками , , . Добавьте в закладки постоянную ссылку.

27 комментариев: Монтажное И

  1. firehacker говорит:

    Я бы в раздел «Как с этим работать» добавил бы упоминание Pull-down транзистора. Мало ли у кого в Slave-устройстве какая-нибудь неинтеллектуальная микросхема с Push-pull-выходом.

  2. Thi3f говорит:

    Резистор нужен для того, чтобы между питанием и землей не было КЗ?

  3. Alex T. говорит:

    Вот по такому же принципу устроена линия сигнала RESET на материнских платах. Но на последних как правило установлена куча вот таких вот условных блоков, что приводит к трудностям нахождения неисправного блок, просаживающего уровень; приходится поочередно поднимать ноги RST на всех блоках;)

  4. denilson говорит:

    Даешь ИЛИ Монтажное! Вроде как отдельной статьи не было!
    Ура! Я знаю Монтажное И:)!

  5. Я про такое слышал, только монтажное И делалось для выходов «открытый коллектор». А с портами AVR интересная идея :) Главное КЗ не сделать случайно.

    • SWG говорит:

      Для страховки между выходами микросхем и общей точкой можно поставить диоды. Тогда пофигу, ОК или двухтактный выход. Правда, тогда «Монтажное И» превратится в диодную логику… Если критично падение напряжения на диодах, можно использовать германиевые или ВЧ Шоттки.

  6. MasterAlexei говорит:

    А разве это не «ИЛИ»?
    «И», насколько я помню, означает, что на выходу блока логическая 1 если на всех! входах так же логическая единица. А тут как бы один любой замкнул и усе. Так что это вроде как «ИЛИ» а не «И». Или нет?

  7. Nikita Nazarenko говорит:

    осталось рассказать про и-не элементы и как на их основе смастерить триггер :)

  8. Mer говорит:

    Не совсем понял, а как получается, что мы задаем единицу DDR=0,Port=0? этим мы определяем порт как вход, причем без подтягивающего резистора. Так же? Получается мы этим придавливаем линию..

  9. Mer говорит:

    В то же время сочетанием DDR=1 PORT=0 мы определим вывод как выход без сигнала. Тогда в линии установится высокий уровень..

  10. DI HALT говорит:

    Нет ,ты не понял.
    Тут единица возникает сама, Т.е. мы ее не устанавливаем. Мы просто включаем порт на вход. А ноль устанавливаем вручную.

    А то что ты сказал это нормальаня работа порта AVR при работе не на шину, а напрямую с ведомым устройством.

  11. Mer говорит:

    Я как раз насчет нормальной работы и уточнял. Спасибо за ответ, понятно )

  12. EPOX говорит:

    если я не шибаюсь по этому принципу работают датчики пожарной сигнализации

  13. Bear2010 говорит:

    Вообще-то когда я работал в охране все датчики соединялись в шлейф последовательно т.е и ЕРОХ и уважаемый DI HALT ошибаетесь. Тут все просто один датчик оторвался никто и не заметит а при последовательном соединении вылезет обрыв. Ну и чтобы не коротили в конце шлейфа обычно ставится или диод (в самых первых приборах) или резистор или конденсатор (в самых навороченных — там еще сравнение фаз идет)

    Но я другой вопрос хотел задать. Появилась идея вместо одного мощного БП для компьютера использовать три. Один питает материнку, второй винчестеры а третий после переделки отдает только +12В по максимуму (переделки описаны достаточно подробно) Только вот не хотелось бы чтобы выход из строя одного из БП прошел незамеченным. Хотел объединить сигналы PowerGood по схеме И. Ну а так как ничего из мелкой логики 3И у себя не нашел полез искать монтажное И. Все вроде бы хорошо но вот вроде как не нравиться мне что все уже подтянуто к +5В.
    По другому сделать никак нельзя?

    • DI HALT говорит:

      Шлейф это тоже разновидность монтажного И. Плюс несколько контрольных приборов, у которых есть логический выход, бывают соединяются в единую систему через монтажное И.

      А что смущает в подтяге до 5 вольт?

      • Bear2010 говорит:

        Шлейф скорее тогда монтажное ИЛИ
        «А что смущает в подтяге до 5 вольт?»

        Просто +5В в данном случае нормальный сигнал и значит материнка начнет запускаться что не есть хорошо.
        Уже есть есть идея твое монтажное И подтянуть через ключ и линию задержки Не слишком наворочено? То есть сначала соберем все +5В а потом через ключ подадим на материнку?

Добавить комментарий