Я инженер-программист, играю с PIC, и у меня есть старая мышь PS/2, которую я использую (успешно), которая имеет соединения CLK и DATA в качестве открытых коллекторов.
Итак, я настроил внутренние подтяжки на соответствующих контактах PIC и устанавливаю TRIS на 1, чтобы линии были высокими, и устанавливаю TRIS на 0 и записываю 0 в соответствующий бит PORT, чтобы установить его на низкий уровень.
Однако я видел несколько похожих реализаций мыши PIC-to-PS/2, которые при записи в мышь устанавливали TRIS в 0 и записывали 1 в бит PORT вместо установки TRIS в 1.
Насколько я понимаю, любой из них приведет к тому, что линия будет выше (правильно ли это?), но мне не ясно, является ли один из них каким-то образом «лучше/безопаснее», чем другой.
Должен ли я просто следовать примерам (предположительно) более опытных реализаций и записывать 1 в ПОРТ, когда PIC контролирует шину, или я должен всегда делать линию высокой, три-состояние до высокого импеданса и позволяя подтягиванию делать это?
Я надеюсь, что это имеет смысл, и я не перепутал никакую терминологию — буду рад любым общим советам о передовых методах подключения с открытым коллектором.
Нет ничего плохого в том, чтобы установить вывод ВЫСОКИЙ, но это может привести к конфликтам на выходе . То есть вы можете столкнуться с ситуацией, когда ваш код устанавливает на контакт ВЫСОКИЙ уровень, а устройство на другом конце пытается перевести тот же контакт на НИЗКИЙ уровень. Протокол мыши (и клавиатуры) PS/2 использует сигнализацию с открытым коллектором, чтобы избежать конкуренции. В системе с открытым коллектором предполагается, что сигналы имеют ВЫСОКИЙ уровень, когда они не управляются выводом, т. е. когда вывод (выводы) имеет высокий импеданс. Устройство может безопасно вытянуть НИЗКИЙ контакт на любом конце провода.
Так что, вероятно, лучше всего использовать TRIS в этом случае.
Есть один случай, когда полезно установить вывод ВЫСОКИЙ.
Там, где логика с открытым коллектором относительно медленная, либо из-за того, что подтягивающий резистор должен иметь высокий уровень (для экономии энергии), либо из-за того, что он подключен к длинному проводу или дорожке печатной платы, выход может быть переведен в ВЫСОКИЙ уровень в течение одного тактового цикла и трижды. указано в след. (Это должно происходить как атомарная операция, например, с отключенными прерываниями)
Это дает относительно быстрое время нарастания и ограничивает продолжительность любой конкуренции, чтобы она была достаточно короткой, чтобы не причинить ущерба. (и, конечно, это должно быть проверено через таблицы данных)
Роджер Роуленд
Джон Хоннибалл
Роджер Роуленд
Джон Хоннибалл
Роджер Роуленд