Есть такое очень простое и очень популярное схемотехническое решение. Но, несмотря на его простоту, для многих начинающих оно незнакомо, а при встрече неочевидно. Что порой вызвает непонимание сути процесса, а порой и выход из строя оборудования.
Что такое соединение в монтажное И.
Представь себе линию, подтянутую резистором к плюсу питания. Так как сопротивление между линией и землей бесконечность, а между питанием и линией равно резистору, то напряжение на линии равно напряжению питания. То есть высокий уровень aka (обычно) логическая единица.
К линии подключаются девайсы. Которые могут замыкать эту линию на землю. Так вот, исходя из этого подключения, на линии будет высокий уровень только тогда, когда все остальные девайсы выставят выставят высокий уровень на своих выходах. Стоит какому-либо одному поганцу придавить линию к земле нулем, как вся шина станет низкого уровня и никто из других девайсов на это повлиять не сможет.
Как это можно использовать? Да по разному. Простеший пример — сигнал готовности. Есть куча блоков единого устройства. Каждый из которых работает по своему алгоритму и, например, требует начальную инициализацию. Чтобы главный понял, что все остальные блоки закончили инициализацию и подготовились он «слушает» линию связи. В качестве сигнала готовности — блок отпускает линию. Когда каждый блок пройдет инициализацию, то линия примет высокий уровень и это будет сигналом полной готовности устройства.
На этом же принципе работает и шина 1-Wire и I2C — там если приемник не успевает прожевать байт, то он просто придавливает тактовую линию, не давая передатчику генерировать импульсы. А передатчик, видя что его обламывают, делает паузу.
Как с этим работать
Очевидно, что при работе на шину с монтажным И нельзя в эту шину подавать сильный высокий уровень. Иначе если какой либо из блоков выдаст свой сильный низкий то один из них выгорит в результате КЗ. Соответственно, если говорить про AVR, то ноль задаем сочетанием DDR=1 PORT=0, а единицу (когда линия отпущена) DDR=0 PORT=0. Вот такая вот инверсная логика.
Я бы в раздел «Как с этим работать» добавил бы упоминание Pull-down транзистора. Мало ли у кого в Slave-устройстве какая-нибудь неинтеллектуальная микросхема с Push-pull-выходом.
Резистор нужен для того, чтобы между питанием и землей не было КЗ?
Да и чтобы можно было опустить уровень. Без него будет просто КЗ.
Вот по такому же принципу устроена линия сигнала RESET на материнских платах. Но на последних как правило установлена куча вот таких вот условных блоков, что приводит к трудностям нахождения неисправного блок, просаживающего уровень; приходится поочередно поднимать ноги RST на всех блоках;)
Даешь ИЛИ Монтажное! Вроде как отдельной статьи не было!
Ура! Я знаю Монтажное И:)!
Поменяйте {+5В на Землю} и {Землю на +5В} на рисунке и будет монтажное ИЛИ 8)
Я про такое слышал, только монтажное И делалось для выходов «открытый коллектор». А с портами AVR интересная идея :) Главное КЗ не сделать случайно.
Для страховки между выходами микросхем и общей точкой можно поставить диоды. Тогда пофигу, ОК или двухтактный выход. Правда, тогда «Монтажное И» превратится в диодную логику… Если критично падение напряжения на диодах, можно использовать германиевые или ВЧ Шоттки.
А разве это не «ИЛИ»?
«И», насколько я помню, означает, что на выходу блока логическая 1 если на всех! входах так же логическая единица. А тут как бы один любой замкнул и усе. Так что это вроде как «ИЛИ» а не «И». Или нет?
Хотя здесь «ИЛИ», если на логическую единицу принять 0 вольт.
Тут изображены нижние ключи ОК. Т.е. ноль это замкнуто. Да, надо бы пояснение внести.
Короче я чего то чуш спорол.
Гыгыгы. И про старуху бывает порнуха :)
Никогда не видел PLC на диодной логике? Адская вещь! Там внутри плат 1 это +10В, снаружи плат 1 это 0В. Все программирование идет напайкой диодов на шины. И таких шин несколько сотен. Но блин как оно фурычит… ЫЫЫ! Я когда впервые с этим монстром столкнулся то прифигел.
осталось рассказать про и-не элементы и как на их основе смастерить триггер :)
Не совсем понял, а как получается, что мы задаем единицу DDR=0,Port=0? этим мы определяем порт как вход, причем без подтягивающего резистора. Так же? Получается мы этим придавливаем линию..
Когда порт как вход без резистора, он имеет очень большое сопротивление, сотни мегаоом. Так что он просто слушает, не вмешиваясь в процесс.
В то же время сочетанием DDR=1 PORT=0 мы определим вывод как выход без сигнала. Тогда в линии установится высокий уровень..
А в этом случае линия порта лежит на земле и в линии ноль.
В смысле, когда мы на выход подаем сигнал, мы просто сажаем ножку на + внутри АVR, а когда 0, то она сидит на земле? Я правильно понял?
Нет ,ты не понял.
Тут единица возникает сама, Т.е. мы ее не устанавливаем. Мы просто включаем порт на вход. А ноль устанавливаем вручную.
А то что ты сказал это нормальаня работа порта AVR при работе не на шину, а напрямую с ведомым устройством.
Я как раз насчет нормальной работы и уточнял. Спасибо за ответ, понятно )
если я не шибаюсь по этому принципу работают датчики пожарной сигнализации
Не ошибаешься. А еще всякие охранные датчики.
Вообще-то когда я работал в охране все датчики соединялись в шлейф последовательно т.е и ЕРОХ и уважаемый DI HALT ошибаетесь. Тут все просто один датчик оторвался никто и не заметит а при последовательном соединении вылезет обрыв. Ну и чтобы не коротили в конце шлейфа обычно ставится или диод (в самых первых приборах) или резистор или конденсатор (в самых навороченных — там еще сравнение фаз идет)
Но я другой вопрос хотел задать. Появилась идея вместо одного мощного БП для компьютера использовать три. Один питает материнку, второй винчестеры а третий после переделки отдает только +12В по максимуму (переделки описаны достаточно подробно) Только вот не хотелось бы чтобы выход из строя одного из БП прошел незамеченным. Хотел объединить сигналы PowerGood по схеме И. Ну а так как ничего из мелкой логики 3И у себя не нашел полез искать монтажное И. Все вроде бы хорошо но вот вроде как не нравиться мне что все уже подтянуто к +5В.
По другому сделать никак нельзя?
Шлейф это тоже разновидность монтажного И. Плюс несколько контрольных приборов, у которых есть логический выход, бывают соединяются в единую систему через монтажное И.
А что смущает в подтяге до 5 вольт?
Шлейф скорее тогда монтажное ИЛИ
«А что смущает в подтяге до 5 вольт?»
Просто +5В в данном случае нормальный сигнал и значит материнка начнет запускаться что не есть хорошо.
Уже есть есть идея твое монтажное И подтянуть через ключ и линию задержки Не слишком наворочено? То есть сначала соберем все +5В а потом через ключ подадим на материнку?
Смотря какое состояние считать единицей ;)
Сделай инверсию на транзисторе и все.