16F628 защелки портов и программный Hi-Z
16F628 защелки портов и программный Hi-Z
Раз уж здесь не игнорят вопросы новичков, то хочется поделиться идеей трех позиционной кнопки на одну ножку контролера.
У кнопки три положения, 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 ?
У кнопки три положения, 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 ?
- Реклама
Re: 16F628 защелки портов и программный Hi-Z
Если порт настроен на выход - у нас при ШИМе двухтактный каскад задействован - "коротнуть" что на + питания, что на GND равноценно "зажарить" выходной каскад.
Как вариант - использовать компаратор (их в "среднемладших" обычно один или два, или АЦП) с контролем точек +, Z(среднее напряжение), и GND.
Возможно с внешним резистивным делителем...
Команды с режимом Чтение-Модификация-Запись даже одного бита могут "зацепить" состояние всего порта.

Как вариант - использовать компаратор (их в "среднемладших" обычно один или два, или АЦП) с контролем точек +, Z(среднее напряжение), и GND.
Возможно с внешним резистивным делителем...
Команды с режимом Чтение-Модификация-Запись даже одного бита могут "зацепить" состояние всего порта.
-
veso74
- Поставщик валерьянки для Кота
- Сообщения: 1907
- Зарегистрирован: Сб май 05, 2012 20:24:52
- Откуда: KN34PC, Болгария
- Контактная информация:
Re: 16F628 защелки портов и программный Hi-Z
Какие-либо специальные параметры кнопок пытаетесь получить? Дребезг контактов кнопки и debounce - тривиальная задача, а решения бесконечны, их плюсы и минусы уже давно выяснены. Бывают быстрые, простые, надежные, сложные ... И все они работают.
Re: 16F628 защелки портов и программный Hi-Z
[uquote="Газзель!",url="/forum/viewtopic.php?p=4477482#p4477482"]Что будет, если ножка сидит на земле, мы в порт принудительно прописываем 1, а потом считываем состояние порта? Там будет 1 или 0 ?[/uquote] Наверное, надо смотреть диаграмму порта в даташите. И смотря что читать, именно порт или защёлку выхода... на порту 0 будет, на защёлке 1
Добавлено after 3 minutes 36 seconds:
А, у этого мк нет RD_LAT...
Добавлено after 3 minutes 36 seconds:
А, у этого мк нет RD_LAT...
Re: 16F628 защелки портов и программный Hi-Z
Мне видится такой вариант: параллельно кнопке ставим небольшой конденсатор и к порту подключаем через резистор. В порт выводим, сначала лог1 - читаем - выводим лог0 - снова читаем. Если оба чтения лог0 - земля, если оба лог1 - питание. Если совпадает - то HiZ. Если не сопадает - нас кто-то дурит.
- Реклама
Re: 16F628 защелки портов и программный Hi-Z
а конденсатор зачем? не очень понял
Martian, я имел ввиду регистр порта считать, и следить за битом ножки.
veso74, нет, просто есть трехпозиционный переключатель, дребезг не важен
BOB51 компаратор жалко, он уже нужен для более важных целей.. ЧМЗ ведь только к биту относится? а если записывать целиком регистр или константу? например скопировать и переставить бит в общем регистре и вернуть в обратно в порт? к сожалению именно в моем случае это не годится, тк остальные ножки более важны ( речь про электронное зажигание), но вопрос просто теоретический о возможностях
Martian, я имел ввиду регистр порта считать, и следить за битом ножки.
veso74, нет, просто есть трехпозиционный переключатель, дребезг не важен
BOB51 компаратор жалко, он уже нужен для более важных целей.. ЧМЗ ведь только к биту относится? а если записывать целиком регистр или константу? например скопировать и переставить бит в общем регистре и вернуть в обратно в порт? к сожалению именно в моем случае это не годится, тк остальные ножки более важны ( речь про электронное зажигание), но вопрос просто теоретический о возможностях
-
mont-oriol
- Мучитель микросхем
- Сообщения: 437
- Зарегистрирован: Пн май 27, 2019 07:18:28
- Откуда: ВВХ-ск
Re: 16F628 защелки портов и программный Hi-Z
Кнопка подключена ко входу МК. Выход МК через резистор подключается к этому же входу.
Опрос состояния. Допустим, считалось 1. Смотрим выход МК. Если там 0, то значит кнопка в сост. 1. Если на выходе 1, то переворачиваем выход и читаем вход снова. Если состояние изменилось, значит вход болтается.
Опрос состояния. Допустим, считалось 1. Смотрим выход МК. Если там 0, то значит кнопка в сост. 1. Если на выходе 1, то переворачиваем выход и читаем вход снова. Если состояние изменилось, значит вход болтается.
Re: 16F628 защелки портов и программный Hi-Z
[uquote="Газзель!",url="/forum/viewtopic.php?p=4477516#p4477516"]а конденсатор зачем? не очень понял[/uquote]Чтобы не тратить почем зря энергию пытаясь кнопкой пересилить выход МК. А так вывели - зарядили конденсатор, переключились на чтение, и всё - ток больше не течет. При этом конденсатор будет перезаряжаться только когда кнопка в высокооимпедансном состоянии. В остальных случаях конденсатор будут или постоянно заряжен, или разряжен.
Была бы у этого микроконтроллера фича, позводяющая подключить pullup и pulldown подтяжки, как есть у более вменяемых контроллеров - можно было бы обойтись без конденсатора. Но 628-й в этом плане совершенно слабый контроллер.
Была бы у этого микроконтроллера фича, позводяющая подключить pullup и pulldown подтяжки, как есть у более вменяемых контроллеров - можно было бы обойтись без конденсатора. Но 628-й в этом плане совершенно слабый контроллер.
Re: 16F628 защелки портов и программный Hi-Z
[uquote="Газзель!",url="/forum/viewtopic.php?p=4477516#p4477516"]...
BOB51 компаратор жалко, он уже нужен для более важных целей.. ЧМЗ ведь только к биту относится? а если записывать целиком регистр или константу? ...[/uquote]
Есть МК с парой компараторов и иными "наворотами", есть и внешние компоненты (логика-"рассыпуха", ОУ и прочие деталюшки).
Есть и справочники по "среднемладшим" в хорошем переводе:
https://web.archive.org/web/20080208141 ... t/?mid=1x0
в частности там как раз про ЧМЗ и затрагиваемые ими команды/ситуации на страницах 46-48
https://web.archive.org/web/20090220075 ... C16_29.pdf
Кроме компаратора альтернатива - два вывода МК (плюс внешняя логика) - так как у цифровой логики есть только два возможных состояния 1 или 0, а требуется фиксация ТРЕХ возможных вариантов, один из которых (Z) исключает оба других варианта.

BOB51 компаратор жалко, он уже нужен для более важных целей.. ЧМЗ ведь только к биту относится? а если записывать целиком регистр или константу? ...[/uquote]
Есть МК с парой компараторов и иными "наворотами", есть и внешние компоненты (логика-"рассыпуха", ОУ и прочие деталюшки).
Есть и справочники по "среднемладшим" в хорошем переводе:
https://web.archive.org/web/20080208141 ... t/?mid=1x0
в частности там как раз про ЧМЗ и затрагиваемые ими команды/ситуации на страницах 46-48
https://web.archive.org/web/20090220075 ... C16_29.pdf
Кроме компаратора альтернатива - два вывода МК (плюс внешняя логика) - так как у цифровой логики есть только два возможных состояния 1 или 0, а требуется фиксация ТРЕХ возможных вариантов, один из которых (Z) исключает оба других варианта.
Re: 16F628 защелки портов и программный Hi-Z
можно, можно еще проще второй провод протянуть, но тут вопрос обще теоретический, как из одного контакта получить 3 состояния
uldemir, поянял, да хорошая идея, кроме того, если нет доступа к печатной плате, то взять переключатель именно 3 позиции, и конденсатор можно на третий контакт переключателя. Тогда на время движения ручки переключателя будет сохраняться предыдущее значение.
Если есть доступ к плате и подпаять кондер прям туда, то можно сэкономить на монтаже и проводке, и третий контакт оставить в воздухе.
Если бы были внутренние подтягивающие резисторы, то я не придумал комбинацию, только если они имею приоритет над внешним сигналом, ну или внешние над внутренними.
mont-oriol
Да, это именно то что я имел ввиду, только перемудрил с высокочастотным шим, теперь все логично. Но получается с кондером можно использовать всего одну ножку, это максимально выгодно
спасибо всем, делаю вывод, что три позиции по одному проводу возможно, и даже по одной ножке
uldemir, поянял, да хорошая идея, кроме того, если нет доступа к печатной плате, то взять переключатель именно 3 позиции, и конденсатор можно на третий контакт переключателя. Тогда на время движения ручки переключателя будет сохраняться предыдущее значение.
Если есть доступ к плате и подпаять кондер прям туда, то можно сэкономить на монтаже и проводке, и третий контакт оставить в воздухе.
Если бы были внутренние подтягивающие резисторы, то я не придумал комбинацию, только если они имею приоритет над внешним сигналом, ну или внешние над внутренними.
mont-oriol
Да, это именно то что я имел ввиду, только перемудрил с высокочастотным шим, теперь все логично. Но получается с кондером можно использовать всего одну ножку, это максимально выгодно
спасибо всем, делаю вывод, что три позиции по одному проводу возможно, и даже по одной ножке
Re: 16F628 защелки портов и программный Hi-Z
Если вспомнить, как делают серьезные компании, то возникает вопрос - почему только 3 состояния?
Чтобы долго не описывать, вспомните, как подключается (сканирующая) клавиатура.
Если контактов не 100500, то можно слегка упростить алгоритм и проверять на следующие состояния:
- 0
- 1
- другой порт
- еще более другой порт
Для ценителей можно еще задействовать изменение типа выхода Out/OD, но польза умозрительна.
А вот использовать состояние Z, это сс... наделать себе в тапки.
Чтобы долго не описывать, вспомните, как подключается (сканирующая) клавиатура.
Если контактов не 100500, то можно слегка упростить алгоритм и проверять на следующие состояния:
- 0
- 1
- другой порт
- еще более другой порт
Для ценителей можно еще задействовать изменение типа выхода Out/OD, но польза умозрительна.
А вот использовать состояние Z, это сс... наделать себе в тапки.
Re: 16F628 защелки портов и программный Hi-Z
[uquote="u37",url="/forum/viewtopic.php?p=4477929#p4477929"]вспомните, как подключается (сканирующая) клавиатура.
.[/uquote]
тут как говориться, не знал - не знал, и забыл
Z на переключателе, на ножке будет перебор комбинаций 1 и 0, исключающих 1или0 на переключателе
.[/uquote]
тут как говориться, не знал - не знал, и забыл
Z на переключателе, на ножке будет перебор комбинаций 1 и 0, исключающих 1или0 на переключателе


