Victor_S писал(а):
Итак, в общем случае порт(бит,ножка) может находиться в одном из трех состояний:
1. Неопределеный(N/A). Понятно, что лучше в программе определить как либо порт(как лучше?) даже если мы его у себя и не планируем использовать. Но не всегда мы заливаем в контроллер свою прошивку и у нас есть ее исходники. Что делать с такой ножкой? Оставить "висеть в воздухе", притянуть к земле, или к питанию, через что(какое сопротивление для каждого из опорных напряжений)?..
2. Выход(OUT). К выходу мы можем подключить реле, симистор, ШИМ... Как поступить с данной ножкой в общем случае? Ну и в принципе общие схемы каждого из подключений с пояснениями тоже интересны... А если ножка просто определена как выход, но ничего к ней не подключаем?...
3. Вход(IN). Общая "развязка", если ничего не подключено...
а) "сухой контакт". Кнопка, геркон, датчик движения... Варианты аппаратного решения "дребезга" контактов...
Длинные линии, снижение помех...
б) цифровой вход. Общая схема подключения, при отсутствии датчиков, распространенные далласовские датики...
в) аналоговый вход. Общая схема подключения, при отсутствии датчиков...
1. Неопределеный(N/A).
Если ножка не используется, а программа пишется самим, то с ней моно поступить любым из нижеперечисленных способов:
1. Никуда не подключать, а пин программно настроить на выход. Так рекомендуют делать серьезные ребята из Texas Instruments. По мне так это лучшее решение.
2. Притянуть к плюсу питания через резистор, а в программе пин совсем не трогать, т.е. оставить его настроенным как вход. Цена решения - лишний резистор.
3. Притянуть к плюсу питания через внутренний подтягивающий резистор, если он на этом пине есть. Соответственно, придется пин программно настроить.
4. Соединить с землей или с плючом питания напрямую, а в программе опять таки оставить его настроенным как вход. Это самое негибкое решение, если захочется потом пин использовать, то удастся ли его освободить - неизвестно.
Если ножка не используется, а программа написана кем-то другим и потому неизвестно как пин настроен, то лучше использовать выриант 2, с внешним подтягивающим резистором.
2. Выход(OUT).
Неиспользуемый выход можно никуда не подключать, в этом нет никакого криминала.
Выход, управляющий чем-то внешним, можно подключать к этому внешнему устройству напрямую только если расстояния малы а земли одинаковы. Например, напрямую можно подключить к рядом расположенной микросхеме. Если расстояния превышают сантиметров 10 примерно, то лучше выход соединить через резистор, ом 100 хотя бы. Например, не советую управлять затворами внешних транзисторов напрямую, ставьте в цепь затвора резистор. Для управления биполярными транзисторами так или иначе все равно нужен резистор в цепи базы, что хорошо и для помехоустойчивости.
3. Вход(IN).
Собственно, для "кнопки, геркона" обсуждение в топике уже было.
Аппаратное подавление дребезга контактов можно реализовать при помощи триггеров. Например, обычным RS-триггером и т.п. Используется редко, поскольку проще дребег подавить программно.
Схема защиты аналогового ввода мало отличается от обсуждавшейся схемы ввода для контактных датчиков с двумя диодами. Только резисторы R1 и R3 надо выкинуть, а номинал R2 уменьшить до 5...10 кОм. Диоды надо ставить с малыми утечками, например, BAV199. Что делать при отсутствии датчиков - общего решения не существует.