Заголовок сообщения: 16F628 защелки портов и программный Hi-Z
Добавлено: Сб сен 16, 2023 15:24:43
Открыл глаза
Зарегистрирован: Чт сен 14, 2023 23:53:12 Сообщений: 44
Рейтинг сообщения:0
Раз уж здесь не игнорят вопросы новичков, то хочется поделиться идеей трех позиционной кнопки на одну ножку контролера.
У кнопки три положения, 1. земля, 2. +5V , и 3. обрыв
Теперь, в третьем состоянии нужно исключить случайности и контролировать ножку во времени.
Сначала была идея завести на ножку шим на полчастоты процессора, и трижды опрашивать ее состояние, запоминать и сравнивать значение бита в регистре порта. Тогда земля или +5 подавляли бы шим, и мы получили бы неизбежную последовательную комбинацию или для 1. 0,0,0 или для 2. 1,1,1 или для 3. Hi-Z 1,0,1 либо 0,1,0.
Ну или наоборот, частота ШИМ в три раза ниже, а ножку опрашивать 4 раза, вооощем нужно сравнение чет и нечет.
Таким образом мы могли бы четко определять третье состояние кнопки в обрыве. В другой автомобильной конфе, где где используют Атмегу, мне ответили, что чип не способен надежно принимать высокочастотный сигнал. Вникать в атмегу мне не по силам, и не хочется, хочу спросить про PIC.
Что если ШИМ заменить программой?
Я читал предупреждение про read and write modificftion , но если я правильно понял, там речь только про операции с битами. А что будет, если целиком регистр порта записывать типа MOV F ?
Что будет, если ножка сидит на земле, мы в порт принудительно прописываем 1, а потом считываем состояние порта? Там будет 1 или 0 ?
Если порт настроен на выход - у нас при ШИМе двухтактный каскад задействован - "коротнуть" что на + питания, что на GND равноценно "зажарить" выходной каскад. Как вариант - использовать компаратор (их в "среднемладших" обычно один или два, или АЦП) с контролем точек +, Z(среднее напряжение), и GND. Возможно с внешним резистивным делителем... Команды с режимом Чтение-Модификация-Запись даже одного бита могут "зацепить" состояние всего порта.
Какие-либо специальные параметры кнопок пытаетесь получить? Дребезг контактов кнопки и debounce - тривиальная задача, а решения бесконечны, их плюсы и минусы уже давно выяснены. Бывают быстрые, простые, надежные, сложные ... И все они работают.
Использование модульных источников питания открытого типа широко распространено в современных устройствах. Присущие им компактность, гибкость в интеграции и высокая эффективность делают их отличным решением для систем промышленной автоматизации, телекоммуникационного оборудования, медицинской техники, устройств «умного дома» и прочих приложений. Рассмотрим подробнее характеристики и особенности трех самых популярных вариантов AC/DC-преобразователей MW открытого типа, подходящих для применения в промышленных устройствах - серий EPS, EPP и RPS представленных на Meanwell.market.
Мне видится такой вариант: параллельно кнопке ставим небольшой конденсатор и к порту подключаем через резистор. В порт выводим, сначала лог1 - читаем - выводим лог0 - снова читаем. Если оба чтения лог0 - земля, если оба лог1 - питание. Если совпадает - то HiZ. Если не сопадает - нас кто-то дурит.
Заголовок сообщения: Re: 16F628 защелки портов и программный Hi-Z
Добавлено: Сб сен 16, 2023 17:16:09
Открыл глаза
Зарегистрирован: Чт сен 14, 2023 23:53:12 Сообщений: 44
Рейтинг сообщения:0
а конденсатор зачем? не очень понял
Martian, я имел ввиду регистр порта считать, и следить за битом ножки.
veso74, нет, просто есть трехпозиционный переключатель, дребезг не важен
BOB51 компаратор жалко, он уже нужен для более важных целей.. ЧМЗ ведь только к биту относится? а если записывать целиком регистр или константу? например скопировать и переставить бит в общем регистре и вернуть в обратно в порт? к сожалению именно в моем случае это не годится, тк остальные ножки более важны ( речь про электронное зажигание), но вопрос просто теоретический о возможностях
Кнопка подключена ко входу МК. Выход МК через резистор подключается к этому же входу. Опрос состояния. Допустим, считалось 1. Смотрим выход МК. Если там 0, то значит кнопка в сост. 1. Если на выходе 1, то переворачиваем выход и читаем вход снова. Если состояние изменилось, значит вход болтается.
Чтобы не тратить почем зря энергию пытаясь кнопкой пересилить выход МК. А так вывели - зарядили конденсатор, переключились на чтение, и всё - ток больше не течет. При этом конденсатор будет перезаряжаться только когда кнопка в высокооимпедансном состоянии. В остальных случаях конденсатор будут или постоянно заряжен, или разряжен.
Была бы у этого микроконтроллера фича, позводяющая подключить pullup и pulldown подтяжки, как есть у более вменяемых контроллеров - можно было бы обойтись без конденсатора. Но 628-й в этом плане совершенно слабый контроллер.
Кроме компаратора альтернатива - два вывода МК (плюс внешняя логика) - так как у цифровой логики есть только два возможных состояния 1 или 0, а требуется фиксация ТРЕХ возможных вариантов, один из которых (Z) исключает оба других варианта.
Заголовок сообщения: Re: 16F628 защелки портов и программный Hi-Z
Добавлено: Вс сен 17, 2023 23:03:12
Открыл глаза
Зарегистрирован: Чт сен 14, 2023 23:53:12 Сообщений: 44
Рейтинг сообщения:0
можно, можно еще проще второй провод протянуть, но тут вопрос обще теоретический, как из одного контакта получить 3 состояния
uldemir, поянял, да хорошая идея, кроме того, если нет доступа к печатной плате, то взять переключатель именно 3 позиции, и конденсатор можно на третий контакт переключателя. Тогда на время движения ручки переключателя будет сохраняться предыдущее значение. Если есть доступ к плате и подпаять кондер прям туда, то можно сэкономить на монтаже и проводке, и третий контакт оставить в воздухе.
Если бы были внутренние подтягивающие резисторы, то я не придумал комбинацию, только если они имею приоритет над внешним сигналом, ну или внешние над внутренними.
mont-oriol Да, это именно то что я имел ввиду, только перемудрил с высокочастотным шим, теперь все логично. Но получается с кондером можно использовать всего одну ножку, это максимально выгодно
спасибо всем, делаю вывод, что три позиции по одному проводу возможно, и даже по одной ножке
Если вспомнить, как делают серьезные компании, то возникает вопрос - почему только 3 состояния? Чтобы долго не описывать, вспомните, как подключается (сканирующая) клавиатура. Если контактов не 100500, то можно слегка упростить алгоритм и проверять на следующие состояния: - 0 - 1 - другой порт - еще более другой порт Для ценителей можно еще задействовать изменение типа выхода Out/OD, но польза умозрительна. А вот использовать состояние Z, это сс... наделать себе в тапки.
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 4
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения