Микроконтроллеры | "Выкрутасы" из-за нехватки ног |
|
---|---|---|
В схемотехнике на жесткой логике существует такая схема управления триггером (см прилагаемый рисунок). Нельзя ли на микроконтроллере (ПИК) осуществить нечто подобное? Я понимаю, можно вывод порта постоянно перенастраивать со входа на выход и ловить нажатие кнопок. Но... нужен выход постоянной 1 или 0 без просечек. Светодиод на выходе изображен условно. Вывод используется для других более серьезных целей. Нет ли какого-то более изящного решения? |
|
|
Нажатия кнопок?Кнопки вообще необреметельная вещь если в схеме есть какой нибудь индикатор с динамическим отображением.Вешаешь кнопки либо на аноды либо на катоды.И ни одного порта не занимают.Подобные схемы применяються везде.даже в калькуляторах китайских ))) Минус в небольшой подсветке индикаторов, но она практически не заметна. Ну а как вариант триг. защелку на выход порта которая и держит нужный вам уровень не зависимо от состояния порта. |
|
|
Я тоже думаю, что поставить дополнительно регистр было бы корректнее. Например что-то из ИР22/ИР23, записал в него значение и можно делать другие дела по тем же выводам, можно даже несколько таких регистров на один порт поставить. Это, кончно, если некритично наличие дополнительных корпусов. |
|
|
Поразмышляю... Или задача в том, чтоб переключать вывод в то лог. состояние, которое мы на него принудительно подаём кнопкой? Как на схеме в аттаче? Тогда получается, что выход порта должен выдерживать кратковременное короткое замыкание на шину питания или "общий", так, чтоб МК успел уловить изменение уровня на ноге (которая настроена на выход) и переключить выходную защёлку в соответствии с новым уровнем. В этом случае будут дополнительные помехи из-за бросков тока в моменты коротких замыканий. Кроме того, если МК по каким-либо причинам не переключит защёлку своевременно, могут быть неприятности, вплоть до сгорания выходного транзистора порта. Еще и аппаратная защита от одновременного нажатия на 2 кнопки может потребоваться. |
|
|
Ставить дополнительные регистры я не могу, места нет. Если бы было, поставил бы другой МК. Контроллер PIC12F629 - всего 6 активных выводов. Динамической индикации нет. Все выводы задействованы для работы. Все кнопки - принадлежат внешнему устройству, которое подключается к МК для перепрограммирования его функций и запоминания состояния в EEPROM. В штатном режиме МК работает автономно. Я понимаю, что можно было бы в "пульте" поставить еще один МК и организовать последовательную передачу данных в штатный МК по одному проводу, и, наверное, это было бы самое изящное решение. Но тут хочется обойтись "малой кровью". Все уже сделано, программа написана, все работает. Как вдруг потребовалось перепрограммировать еще одну дополнительную функцию, а остался всего один свободный вывод на МК. Всего-то управление ключом. Либо он замкнут, либо разомкнут. Пока напрашивается такое решение (см. рис.). На короткое время (один раз в 10 мс) вывод переводится в состояние входа. Накопительный конденсатор, висящий на этом выводе устраняет просечки. Возможно ли такое решение? Грамотно ли? Возможно ли сделать проще (лучше)? |
|
|
Задайте себе ряд простых вопросов, глядя при этом на схему. |
|
|
Хорошо, вы хотите сказать, что времени нахождения вывода в состоянии "на вход" не хватит для того, чтобы конденсатор 100 нФ успел перезарядиться через резистор 1кОм. Постоянная времени 100 мкс. Три постоянных времени 300 мкс. Что ж, действительно долго придется держать вывод в состоянии "на вход". Это вы имели в виду? Плохо - да, но ведь не криминал. Тут действительно идет "игра" на разнице постоянных времени перезаряда конденсатора от кнопок и постоянных времени перезаряда через резисторы 100 кОм в базах транзисторов. Хорошо, рисуем схему по-другому (см. рис.). Разносим постоянные времени еще больше. Может кто предложит, как проще все это реализовать? |
|
|
Считаю, что конденсатор подключать прямо к выводу (выходу) микроконтроллера нельзя, опасно. Разрядный (или зарядный) ток конденсатора, в момент переключения выхода с 1 на 0 (или с 0 на 1), превысит максимально допустимый ток выхода микроконтроллера. Плюс ко в сему, в моменты переключения, будут создаваться импульсные радиопомехи. |
|
|
Zandy: Это вы имели в виду? Я бы подключил к ноге МК кнопки через резисторы небольшого сопротивления (эдак по 1 кОм) - одну кнопку на шину питания, другую на "общий". Как и нарисовано на схеме. А вот ключи подключил бы через интегрирующую RC-цепочку - резистор (эдак на 10 кОм) на тот же вывод МК и конденсатор после резистора на "общий", а потом через ещё один резистор на управление ключом. В этом случае кнопки не будут оказывать заметного влияния на напряжение на конденсаторе за те короткие промежутки времени, пока происходит опрос. И состояние ключа будет оставаться неизменным в моменты опроса кнопок. |
|
|
picmaniac: Открывания от кнопки, а не от сигнала МК! Не, не уловил. Если МК в момент состояния вывода, как входа, засек 1, то и в состоянии выхода там станет 1 (ну так программа должна работать). picmaniac: Я бы подключил к ноге МК кнопки через резисторы небольшого сопротивления (эдак по 1 кОм) - одну кнопку на шину питания, другую на "общий". picmaniac: А ключи подключил бы через интегрирующую RC-цепочку - резистор (эдак на 10 кОм) на тот же вывод МК и конденсатор после резистора на "общий", а потом через ещё один резистор на управление ключом. А вот тут уже большой вопрос. В случае биполярных ключей конденсаторы при открытых тр-ах будут заряжены до 0.6В и это напряжение будет распознаваться МК как лог. 0. Т. е. при ненажатых кнопках устройство всегда будет устанавливать на выходе лог. 0. Надо, чтобы резисторы отличались значительно. АК: Только через резистор, а дальше уже что угодно городить, Да, тут я вижу рациональное зерно и совокупляя сказанное picmaniacом и АК переделываю схему окончательно. (см. рис.) Резисторы, последовательно с кнопками - защита "от дурака". Если кому-то вздумается нажать обе кнопки одновременно. Ну теперь-то то хоть все корректно? |
|
|
Форум про радио — сайт, посвященный обсуждению электроники, компьютеров и смежных тем. pro-radio.online | Обратная связь |
© 2003—2024 |