Монтажное И


Есть одно очень простое и популярное схемное решение. Несмотря на его простоту, многим оно незнакомо.
Что такое соединение в монтажное И?

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

Монтажное И

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

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

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

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


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

Ваш адрес email не будет опубликован. Обязательные поля помечены *