Как два отдельных устройства могут отправлять данные часов на микросхему сдвигового регистра?

Я использую микроконтроллер для синхронизации байта в сдвиговом регистре 74HC595 и его фиксации. Затем он отправляет сигнал другому устройству, которое отправляет 8 тактовых импульсов, когда оно готово принять байт.

Итак, мой вопрос: могут ли два устройства совместно использовать один тактовый вывод сдвигового регистра? Должны ли они быть изолированы друг от друга?

Один из способов состоит в том, чтобы соединить оба тактовых сигнала через вентиль ИЛИ.
@BrianDrummond Разве ворота ИЛИ не просто два диода, образующих соединение?
Два диода и подтягивающий резистор — это один из способов сделать вентиль ИЛИ, да. Не лучший способ для быстрых сигналов, но подходит для микроконтроллера.
Подойдет ли это для сигналов с периодом 80 мкс? Чем отличается микросхема затвора 4071 AND от описанного выше метода?
(а) да, (б) любой базовый текст по булевой логике объяснит разницу между И и ИЛИ.
Извините, я имел в виду микросхему ворот 4071 ИЛИ.

Ответы (1)

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

Как вы уже поняли, спросив об «изолировании» линий тактовых сигналов друг от друга, вы хотите установить три состояния контактов, чтобы не было «конфликта», когда один микроконтроллер пытается управлять линией тактового сигнала в одном направлении (например, высокий), а другой микро пытается направить его в другом направлении (например, низком) - что может привести к тому, что два микроконтроллера будут генерировать / потреблять много тока, нагревать вещи, потенциально позволять волшебному дыму выходить и, как правило, вызывать проблемы. . В результате вы должны быть осторожны, чтобы никогда не было времени, когда оба микроконтроллера активно управляют (т. е. не имеют высокого импеданса) тактовой линией в одно и то же время, особенно во время передачи, когда вы меняете, какой микроконтроллер управляет тактовой частотой. линия часов.

Вы, вероятно, также захотите добавить подтягивающий резистор на общую линию синхронизации, чтобы избежать свободных колебаний линии синхронизации из-за любого шума, который она улавливает в то время, когда ни один из микроконтроллеров активно не управляет линией (т.е. у обоих есть свои часы). установите высокий импеданс - это, вероятно, произойдет, по крайней мере, на короткое время, если вы обратите внимание на предыдущее предложение...). Возможно, вы сможете обойтись без подтягивающего резистора, используя внутренние подтягивающие резисторы на микроконтроллерах, или просто вам повезет, и вы не поймаете никаких «ложных» тактовых сигналов, но было бы безопаснее добавить внешний подтягивающий резистор.