Поклонники продукции Microchip Technology Inc тусуются тут.
Ответить

16F628 защелки портов и программный Hi-Z

Сб сен 16, 2023 15:24:43

Раз уж здесь не игнорят вопросы новичков, то хочется поделиться идеей трех позиционной кнопки на одну ножку контролера.

У кнопки три положения, 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

Сб сен 16, 2023 16:23:21

Если порт настроен на выход - у нас при ШИМе двухтактный каскад задействован - "коротнуть" что на + питания, что на GND равноценно "зажарить" выходной каскад.
Как вариант - использовать компаратор (их в "среднемладших" обычно один или два, или АЦП) с контролем точек +, Z(среднее напряжение), и GND.
Возможно с внешним резистивным делителем...
:roll:
Команды с режимом Чтение-Модификация-Запись даже одного бита могут "зацепить" состояние всего порта.
8)

Re: 16F628 защелки портов и программный Hi-Z

Сб сен 16, 2023 16:49:46

Какие-либо специальные параметры кнопок пытаетесь получить? Дребезг контактов кнопки и debounce - тривиальная задача, а решения бесконечны, их плюсы и минусы уже давно выяснены. Бывают быстрые, простые, надежные, сложные ... И все они работают.

Re: 16F628 защелки портов и программный Hi-Z

Сб сен 16, 2023 16:56:30

Что будет, если ножка сидит на земле, мы в порт принудительно прописываем 1, а потом считываем состояние порта? Там будет 1 или 0 ?
Наверное, надо смотреть диаграмму порта в даташите. И смотря что читать, именно порт или защёлку выхода... на порту 0 будет, на защёлке 1

Добавлено after 3 minutes 36 seconds:
А, у этого мк нет RD_LAT...

Re: 16F628 защелки портов и программный Hi-Z

Сб сен 16, 2023 17:01:25

Мне видится такой вариант: параллельно кнопке ставим небольшой конденсатор и к порту подключаем через резистор. В порт выводим, сначала лог1 - читаем - выводим лог0 - снова читаем. Если оба чтения лог0 - земля, если оба лог1 - питание. Если совпадает - то HiZ. Если не сопадает - нас кто-то дурит.

Re: 16F628 защелки портов и программный Hi-Z

Сб сен 16, 2023 17:16:09

а конденсатор зачем? не очень понял

Martian, я имел ввиду регистр порта считать, и следить за битом ножки.

veso74, нет, просто есть трехпозиционный переключатель, дребезг не важен

BOB51 компаратор жалко, он уже нужен для более важных целей.. ЧМЗ ведь только к биту относится? а если записывать целиком регистр или константу? например скопировать и переставить бит в общем регистре и вернуть в обратно в порт? к сожалению именно в моем случае это не годится, тк остальные ножки более важны ( речь про электронное зажигание), но вопрос просто теоретический о возможностях

Re: 16F628 защелки портов и программный Hi-Z

Сб сен 16, 2023 17:27:10

Кнопка подключена ко входу МК. Выход МК через резистор подключается к этому же входу.
Опрос состояния. Допустим, считалось 1. Смотрим выход МК. Если там 0, то значит кнопка в сост. 1. Если на выходе 1, то переворачиваем выход и читаем вход снова. Если состояние изменилось, значит вход болтается.

Re: 16F628 защелки портов и программный Hi-Z

Сб сен 16, 2023 18:22:22

а конденсатор зачем? не очень понял
Чтобы не тратить почем зря энергию пытаясь кнопкой пересилить выход МК. А так вывели - зарядили конденсатор, переключились на чтение, и всё - ток больше не течет. При этом конденсатор будет перезаряжаться только когда кнопка в высокооимпедансном состоянии. В остальных случаях конденсатор будут или постоянно заряжен, или разряжен.

Была бы у этого микроконтроллера фича, позводяющая подключить pullup и pulldown подтяжки, как есть у более вменяемых контроллеров - можно было бы обойтись без конденсатора. Но 628-й в этом плане совершенно слабый контроллер.

Re: 16F628 защелки портов и программный Hi-Z

Сб сен 16, 2023 20:46:12

...

BOB51 компаратор жалко, он уже нужен для более важных целей.. ЧМЗ ведь только к биту относится? а если записывать целиком регистр или константу? ...

Есть МК с парой компараторов и иными "наворотами", есть и внешние компоненты (логика-"рассыпуха", ОУ и прочие деталюшки).
Есть и справочники по "среднемладшим" в хорошем переводе:
https://web.archive.org/web/20080208141 ... t/?mid=1x0
в частности там как раз про ЧМЗ и затрагиваемые ими команды/ситуации на страницах 46-48
https://web.archive.org/web/20090220075 ... C16_29.pdf
PIC16_29.pdf
(318.31 KiB) Скачиваний: 27

8)
Кроме компаратора альтернатива - два вывода МК (плюс внешняя логика) - так как у цифровой логики есть только два возможных состояния 1 или 0, а требуется фиксация ТРЕХ возможных вариантов, один из которых (Z) исключает оба других варианта.
:roll:

Re: 16F628 защелки портов и программный Hi-Z

Вс сен 17, 2023 23:03:12

можно, можно еще проще второй провод протянуть, но тут вопрос обще теоретический, как из одного контакта получить 3 состояния

uldemir, поянял, да хорошая идея, кроме того, если нет доступа к печатной плате, то взять переключатель именно 3 позиции, и конденсатор можно на третий контакт переключателя. Тогда на время движения ручки переключателя будет сохраняться предыдущее значение.
Если есть доступ к плате и подпаять кондер прям туда, то можно сэкономить на монтаже и проводке, и третий контакт оставить в воздухе.

Если бы были внутренние подтягивающие резисторы, то я не придумал комбинацию, только если они имею приоритет над внешним сигналом, ну или внешние над внутренними.

mont-oriol
Да, это именно то что я имел ввиду, только перемудрил с высокочастотным шим, теперь все логично. Но получается с кондером можно использовать всего одну ножку, это максимально выгодно


спасибо всем, делаю вывод, что три позиции по одному проводу возможно, и даже по одной ножке

Re: 16F628 защелки портов и программный Hi-Z

Вс сен 17, 2023 23:12:52

Если вспомнить, как делают серьезные компании, то возникает вопрос - почему только 3 состояния?
Чтобы долго не описывать, вспомните, как подключается (сканирующая) клавиатура.
Если контактов не 100500, то можно слегка упростить алгоритм и проверять на следующие состояния:
- 0
- 1
- другой порт
- еще более другой порт
Для ценителей можно еще задействовать изменение типа выхода Out/OD, но польза умозрительна.
А вот использовать состояние Z, это сс... наделать себе в тапки.

Re: 16F628 защелки портов и программный Hi-Z

Вс сен 17, 2023 23:33:30

вспомните, как подключается (сканирующая) клавиатура.
.


тут как говориться, не знал - не знал, и забыл

Z на переключателе, на ножке будет перебор комбинаций 1 и 0, исключающих 1или0 на переключателе
Ответить