Страница 1 из 2

1-Wire DS2408: Некоторые наброски (клавиатура 8x8 и дисплей)

Добавлено: Сб апр 02, 2011 05:14:55
Paguo-86PK
В datasheet к DS2408 имеются примеры схем организации клавиатур 4x4 и 3x5. А можно ли расширить количество кнопок до 32?
Вот схема:Изображение
Работает так:
1) P0-P3 настраиваются на вывод, P4-P7 - на ввод;
2) В цикле на P0-P3 выдаётся бегущий 0, проходящий через диоды к Q1-Q4;
3) Опрашивается состояние первых 16 кнопок через возврат R5-R8 к P4-P7;
4) P0-P3 настраиваются на ввод, P4-P7 - на вывод;
5) В цикле на P4-P7 выдаётся бегущий 0, проходящий через диоды к Q5-Q8;
6) Опрашивается состояние других 16 кнопок через возврат R1-R4 к P0-P3.

Таким образом, вместо предельного количества до 16 кнопок достигается до 32.
Но, будет ли работать вообще такое включение в схеме с паразитным питанием?

Re: 1-Wire: Некоторые наброски

Добавлено: Сб апр 02, 2011 08:09:21
asteroid7
Не будет работать. Тем более бегущим нулём...
Нарисуйте упрощённую схему на 4 кнопки с 2-мя портами. Увидите, 3 опрашиваются, а 4-ая нет.

Есть вариант сделать 32 на матрице 4х4. К каждой кнопке последовательно диод. В перекрестие матрицы 2 кнопки включаются встречно-параллельно. Управляющая единица. За два такта можно опросить 4 кнопки.
И да, нажимать по одной. Сразу несколько - схема не перенесёт...

Re: 1-Wire: Некоторые наброски

Добавлено: Сб апр 02, 2011 09:07:59
ChipKiller
Paguo-86PK писал(а):А можно ли расширить количество кнопок до 32?
...может так - P0-P2 настраиваются на вывод, P3-P7 - на ввод, к P0-P2 подключаем дешифратор 3х8 (например 555ид4, 555ид7). Получаем клавиатуру 8х5 (40 кнопок)

1-Wire: Некоторые наброски

Добавлено: Сб апр 02, 2011 09:14:00
Paguo-86PK
asteroid7 писал(а):Есть вариант сделать 32 на матрице 4х4. К каждой кнопке последовательно диод. В перекрестие матрицы 2 кнопки включаются встречно-параллельно. Управляющая единица. За два такта можно опросить 4 кнопки.
И да, нажимать по одной. Сразу несколько - схема не перенесёт...
Т.е. примерно с таким включением(как в игре "Крестики-Нолики")?
Изображение
ChipKiller писал(а):...может так - P0-P2 настраиваются на вывод, P3-P7 - на ввод, к P0-P2 подключаем дешифратор 3х8 (например 555ид4, 555ид7). Получаем клавиатуру 8х5 (40 кнопок)
Я бы с удовольствием так и поступил бы! Но, сейчас XXI век и хотелось бы одним чипом решить всю задачу :)))

Re: 1-Wire: Некоторые наброски

Добавлено: Сб апр 02, 2011 09:25:48
ChipKiller
Paguo-86PK писал(а):Я бы с удовольствием так и поступил бы! Но, сейчас XXI век и хотелось бы одним чипом решить всю задачу :)))
ну не знаю нужен-ли такой "аскетизм" - ИМХО простота превыше всего :)

1-Wire: Некоторые наброски

Добавлено: Сб апр 02, 2011 12:51:55
Paguo-86PK
ChipKiller писал(а):ну не знаю нужен-ли такой "аскетизм" - ИМХО простота превыше всего :)
Стоп! :kill:
Я же специально пытаюсь обойтись без сторонней логики, чтобы не питать её. А с ИД7 надо будет питание предусмотреть. Иначе на кой мне 1-Wire? :shock:
С таким же успехом я бы мог пользоваться 555ИР8 в сочетании с 555ИР9: Идеально подходят для сканирования клавиатуры по пяти проводам (шнур от джойстика Dendy).
Так что, мне надо без всяких довесок. Чтобы без внешних элементов питания. Думаю, как вариант, можно две DS2408 использовать. Одна - на вывод, вторая - на ввод. Получится 8x8 клавиш. Что в моём случае слишком много.

Re: 1-Wire: Некоторые наброски

Добавлено: Сб апр 02, 2011 12:51:56
asteroid7
Paguo-86PK писал(а):Т.е. примерно с таким включением...
Ага.

Только, за два раза опрашиваются 4-е кнопки. Для опроса всей клавиатуры - 16 запросов. Шина 1W не "засрётся"? А то, если есть другие устройства на шине, им может не хватить времени на обмен. Нормальная частота сканирования кнопки - 15...35 мс.

Re: 1-Wire: Некоторые наброски

Добавлено: Сб апр 02, 2011 15:45:12
ChipKiller
Paguo-86PK писал(а):Я же специально пытаюсь обойтись без сторонней логики, чтобы не питать её. А с ИД7 надо будет питание предусмотреть. Иначе на кой мне 1-Wire? :shock:
...пардон конечно, но в 1-ом сообщении об ограничении в питании ни слова.....

1-Wire: Некоторые наброски

Добавлено: Вс апр 03, 2011 03:16:43
Paguo-86PK
asteroid7 писал(а):Только, за два раза опрашиваются 4-е кнопки. Для опроса всей клавиатуры - 16 запросов. Шина 1W не "засрётся"? А то, если есть другие устройства на шине, им может не хватить времени на обмен. Нормальная частота сканирования кнопки - 15...35 мс.
Я экспериментировал и в "РАДИО-86РК", и в "ZX-Spectrum" с поиском быстрого алгоритма сканирования.
Внешне он похож на "эксперимент печатать биотоками мозга":

Код: Выделить всё

1) Сначала опрашиваем состояние всей первой половины матрицы:
1.1) Настраиваем P7..P4 на ввод и P3..P0 на вывод;
1.2) Выдаём на P3..P0 четыре единицы (1111);
1.3) Проверяем, вернулась хотя бы одна из них в P7..P4?
1.3.1) Да? Выдаём на P3..P0 старшую половину (1100);
1.3.2) Проверяем, нажато ли в P7..P4?
1.3.2.1) Да? Выдаём на P3..P0 старший бит (1000) и запоминаем P7..P4;
1.3.2.2) Сдвигаем бит на P3..P0 (0100) и запоминаем P7..P4;
1.3.3) Выдаём на P3..P0 младшую половину (0011);
1.3.4) Проверяем, есть нажатие в P7..P4?
1.3.4.1) Да? Выдаём на P3..P0 младший бит (0001) и запоминаем P7..P4;
1.3.2.2) Сдвигаем бит на P3..P0 (0010) и запоминаем P7..P4;
2) Теперь опрашиваем состояние всей второй половины матрицы:
2.1) Настраиваем P3..P0 на ввод и P7..P4 на вывод;
2.2) Выдаём на P7..P4 четыре единицы (1111);
2.3) Проверяем, вернулась хотя бы одна из них в P3..P0?
2.3.1) Да? Выдаём на P7..P4 старшую половину (1100);
2.3.2) Проверяем, нажато ли в P3..P0?
2.3.2.1) Да? Выдаём на P7..P4 старший бит (1000) и запоминаем P3..P0;
2.3.2.2) Сдвигаем бит на P7..P4 (0100) и запоминаем P3..P0;
2.3.3) Выдаём на P7..P4 младшую половину (0011);
2.3.4) Проверяем, есть нажатие в P3..P0?
2.3.4.1) Да? Выдаём на P7..P4 младший бит (0001) и запоминаем P3..P0;
2.3.2.2) Сдвигаем бит на P7..P4 (0010) и запоминаем P3..P0;
Т.е. сначала отображается одна половина "алфавита" и если "мозг" "видит" в ней нужный символ, начинается уточнение. Половина делится ещё и ещё. И т.д.
И если нажатия небыло, будет происходить всего два вывода и два ввода. :wink:
Примерно вот так:
Изображение
ChipKiller писал(а): ...пардон конечно, но в 1-ом сообщении об ограничении в питании ни слова.....
Исправил :)))

Re: 1-Wire: Некоторые наброски

Добавлено: Вс апр 03, 2011 10:48:18
Dmitry Dubrovenko
Paguo-86PK писал(а):Иначе на кой мне 1-Wire?
Сорри, за оффтоп,
но я, честно говоря, вообще не вижу соответствия названия темы её содержанию.

1-Wire: Некоторые наброски

Добавлено: Ср апр 06, 2011 10:55:36
Paguo-86PK
Dmitry Dubrovenko писал(а):Сорри, за оффтоп,
но я, честно говоря, вообще не вижу соответствия названия темы её содержанию.
Дык. На данном этапе - 1-Wire клавиатура.

Вот ещё один вариант схемы подключения 64-клавишной клавиатуры 8x8 к одной микросхеме DS2408 с паразитным питанием.
Алгоритм работы следующий:
Сначала P0-P7 настраиваются на вывод и через диоды прямым током (Q1-Q8) заряжаются конденсаторы тех столбцов матрицы, которые должны участвовать в опросе.
Затем P0-P7 настраиваются на ввод и через диоды обратным током снимается состояния клавиш, подключенных к заряженным конденсаторам.
Резисторы, параллельные ёмкостям, служат их разрядке. И ёмкости, и сопротивления подобраны оптимально к жёстким временным параметрам частоты сканирования клавиатуры.
Таким образом, по аналогии с устройством динамических ОЗУ, здесь так же, в целях экономии аппаратных ресурсов, используется техника утекающего заряда.

Вот анимация:
Изображение

Видно, как сначала через P0 заряжается первый конденсатор. А потом разряжается через кнопку к P2.
Однако, как побочный эффект, напряжение поступает через кнопку и два диода также к третьему конденсатору. Как с этим быть? Может прямые диоды (Q1-Q8) пустить также через диоды, заземлённые через сопротивление? И как-то использовать STB-микросхемы для этой цели?

Re: 1-Wire: Некоторые наброски

Добавлено: Ср апр 06, 2011 13:23:26
Dmitry Dubrovenko
Paguo-86PK писал(а):Дык. На данном этапе - 1-Wire клавиатура.
Да 1-Wire тут постольку поскольку.
Суть вопроса у Вас: "Как организовать матричную клавиатуру".
Вполне актуальная тема, только названию не соответствует. :wink:

Re: 1-Wire: Некоторые наброски

Добавлено: Ср апр 06, 2011 20:01:03
asteroid7
2 Dmitry Dubrovenko!

ИМХО, одна из тем на этом форуме, где название поста полностью отражает желание ТС-а.
И 1W не "тут постольку поскольку", а именно это и есть основной вопрос, т.к. ТС-у нужен не обыденный матричный опрос клавиатуры.

1-Wire: Некоторые наброски

Добавлено: Чт апр 07, 2011 03:37:36
Paguo-86PK
asteroid7 писал(а):ИМХО, одна из тем на этом форуме, где название поста полностью отражает желание ТС-а.
И 1W не "тут постольку поскольку", а именно это и есть основной вопрос, т.к. ТС-у нужен не обыденный матричный опрос клавиатуры.
Не спорю.
Понимаете, с применением DS2408 для отображения информации всё более-менее понятно. В основном, так-как отдельное питание по-любому необходимо.
А вот с клавиатурой. Здесь нужно убить основного зайца, т.е. никакого дополнительного источника питания. Иначе легче пользоваться ИК-пультом.
Когда я работал ещё с РАДИО-86РК, неудобство вызывала клавиатура, так-как игры, напрямую считывающие её порты, реагировали не на те клавиши. И это послужило одним из стимулов изучать программирование и электроннику. Клавиатура была расширенная МС-подобная. А клавиш там больше. И завод-изготовитель дополнительные строки клавиш через пары диодов расширял на другие линии. Таким образом, на матрице 8x8 уместилось где-то на 20 клавиш больше. И этот опыт меня увлёк!
Так, когда я ещё занимался на ZX-Spectrum, решил джойстик от Dendy переделать под Kempston. Ну, отковырял дохлую капельку мумиё с чипом и напрямую развёл. А вот с Select и Pause кнопками не знал, что делать. И полезные, и подключить никак.
И тут я взял 4 диода и впаял их так, чтобы Select было вверх+вниз одновременно, а Pause - влево+вправо. Скажите, а толку то? Э-ээ, нет. В своих тест-программах на Бейсике и Select, и Pause работали. И в играх, во время крякинга, легко было организовать таким образом и Паузу, и нечто другое.
Я тогда подумал: Почему разработчики Dendy упустили это? Ведь Select и Pause используются крайне редко. И если бы они их реализовали по моей схеме, то освободилось бы место (бинарное) под ещё две кнопки! И было бы не две A и B, а четыре (не считая Turbo-A и Turbo-B).

Теперь понимаете, почему я так нудно занимаюсь этой клавиатурой? Даже если матрица будет 8x8=64 кнопки, в реализации их будет больше через диодные комбинации. Понимаете?
Например, наиболее редкие сочетания клавиш можно использовать под клавиши расширения.
Так, Esc+Left=Backspace или Esc+Right=Insert и т.д.

Но я увлёкся. Скажите, а если я применю КМОП-транзисторы в указанном на схеме включении, это поможет?
Изображение
И верно ли вообще? STB-микросхемы устанавливается в "0" написано при записи, что должно открыть ключи для зарядки конденсаторов. Но, во время чтения на том же выводе также появляется низкий уровень, если я верно понял. Вот никак не пойму, нельзя ли отключить смену уровней тогда при чтении? Перечитал datasheet по ds2408 вдоль и поперёк, но некоторые моменты не могу понять.

Спасибо!

Re: 1-Wire: Некоторые наброски

Добавлено: Чт апр 07, 2011 09:46:43
Dmitry Dubrovenko
Paguo-86PK писал(а):Теперь понимаете, почему я так нудно занимаюсь этой клавиатурой?
Я выше уже писАл, что тема интересна и актуальна. И против самой темы никаких возражений нет. :beer:

asteroid7 писал(а):одна из тем на этом форуме, где название поста полностью отражает желание ТС-а
Название должно отображать не желание, а содержание (прям поэт, млин). :)))
Попытаюсь объяснить "на пальцах".
Вот я сюда "залез" потому, что меня интересует тема 1-Wire. А вот про матричные клавиатуры я ничего гениального сказать не могу.
Так же, с точностью до наоборот, тот кто имеет наработки по клавиатурам "пройдёт мимо", поскольку тема 1-Wire ему "до лампочки".
:wink:

1-Wire: Некоторые наброски

Добавлено: Пт апр 08, 2011 00:24:33
Paguo-86PK
Dmitry Dubrovenko писал(а):Я выше уже писАл, что тема интересна и актуальна. И против самой темы никаких возражений нет. :beer:
asteroid7 писал(а):одна из тем на этом форуме, где название поста полностью отражает желание ТС-а
Название должно отображать не желание, а содержание (прям поэт, млин). :)))
Попытаюсь объяснить "на пальцах".
Вот я сюда "залез" потому, что меня интересует тема 1-Wire. А вот про матричные клавиатуры я ничего гениального сказать не могу.
Хорошо. Раз название темы не соответствует содержанию, надо содержание подтянуть.
Т.е. "некоторые наброски" - означает.
Набросок #2: Индикация
Итак, используя DS2408 можно подключить миниатюрный матричный четырёх разрядный индикатор ИПВ70А.
Изображение
Здесь, P0-P4 работают на вывод и выбор столбцов. P5 выводит бит смещения по строкам. P7 работает на ввод для сигнализации о конце знакомест, на случай, если микросхем-индикаторов несколько.
Соответственно, схема работает от внешнего источника питания.

Re: 1-Wire: Некоторые наброски

Добавлено: Пт апр 08, 2011 22:37:56
asteroid7
Dmitry Dubrovenko писал(а):Название должно отображать не желание, а содержание (прям поэт, млин). :)))
Попытаюсь объяснить "на пальцах". Вот я сюда "залез" потому, что меня интересует тема 1-Wire...
Отсутствие понимания причинно-следственных связей делают вам огроменный минус.
А то, что вас интересует - никакого отношения к этой теме не имеет.

Re: 1-Wire: Некоторые наброски

Добавлено: Сб апр 09, 2011 11:55:40
Dmitry Dubrovenko
Разговор глухого со слепым. 8)

Re: 1-Wire: Некоторые наброски

Добавлено: Сб апр 09, 2011 12:13:11
dosikus
Гы ... Если следовать логике топик стартера :
Я обзову тему : "Работаем с Ethernet " .
И начну ковырять АЦП в PIC18FxxJ60 .
И буду прав ???? Ну как же Ethernet там есть... :)))

Re: 1-Wire: Некоторые наброски

Добавлено: Вс апр 10, 2011 08:00:53
asteroid7
Dmitry Dubrovenko писал(а):Разговор глухого со слепым. 8)
Возможно, вы измените свое мнение... в будущем... если захотите...

---

В 1-wire на физическом уровне скорость, времянки и уровни - константы. Электрически - 2(3) провода и резистор. Про шину и протокол 1-wire это всё!
Не понимаю, что тут можно ещё обсасывать. Светофор сложнее.

Работа с 1-wire на 99% состоит из составлении программы транспортного уровня и взаимодействия с этой программой железа.

Исходя из сообщений уверен, что многие не понимают проблему ТС-а. Это не просто "гонка фронтов" или вычисление времён защёлкивания. В данном случае, нужно учитывать ёмкости диодов и токи утечек.

блин, да кому я это пишу...