Перейти к содержанию

Два 74Hc165 Минимум Управляющих Сигналов


Рекомендуемые сообщения

Здравствуйте,

да, здесь уже было про 74hc165, и поиск тому подтверждение, но у меня не получилось просто взять схему из интернета и воткнуть "лишь бы заработало", и такая элементарная (для кого то) задача вызвала кучу вопросов:

есть блок на 16 кнопок, 74hc165 и МК (16Мгц),

нужно последовательно получить состояние всех кнопок, при этом нужно иметь ввиду, что в предыдущем цикле могли быть считаны не все 16, а например, 13 кнопок, поэтому нужно при каждом чтении заново записывать данные в параллельные регистры. Количество управляющих сигналов надо свести к минимуму.

1) Читаю документацию по 74hc165 от NXP - "When the parallel load (!PL) input is LOW, parallel data from the D0 to D7 inputs are loaded into the register asynchronously.", я это понимаю так, что когда на !PL низкий уровень, то что есть на входах D0-D7 то и будет на внутреннем регистре вне зависимости от других сигналов типа !CE или CP. Далее пишут "When !PL is HIGH, data enters the register serially at the DS input and shifts one place to the right (Q0 -> Q1 -> Q2, etc.) with each positive-going clock transition." т.е. когда на !PL высокий уровень, с каждым нарастающим фронтом на CP данные во внутреннем регистре будут сдвигаться на 1 позицию, при этом в первый D триггер будет записано значение из DS. Тут не ошибся?

2) "The clock input is a gated-OR structure which allows one input to be used as an active LOW clock enable (!CE) input. The pin assignment for the CP and !CE inputs is arbitrary and can be reversed for layout convenience." - !CE и CP подключены через лог. вентиль типа ИЛИ, и несмотря на названия, их можно менять местами ?

3) "The LOW-to-HIGH transition of input !CE should only take place while CP HIGH for predictable operation." - т.е. если 2 верно, то для того чтобы один использовать для чтения строба, на втором должен быть высокий уровень?

4) "Either the CP or the !CE should be HIGH before the LOW-to-HIGH transition of !PL to prevent shifting the data when !PL is activated." - если на выбраном (выше) !CE будет низкий сигнал, то при переключении !PL с низкого на высокий уровень произойдёт сдвиг?

5)(длинный :) ) :

Сначала решил соединить так:

74hc165#1 DS -> GND

74hc165#1 Q7 -> 74hc165#2 DS

74hc165#1 !CE -> 74hc165#2 !CE -> GND

74hc165#1 !PL -> 74hc165#2 !PL -> MCU

74hc165#1 CP -> 74hc165#2 CP -> MCU

74hc165#2 Q7 -> MCU

D0-D7 каждого к кнопкам (между кнопками и регистрами стоят max6818 (время устранения дребезга 60мс))

название, номер пина, описание

!PL 1 asynchronous parallel load input (active LOW)

CP 2 clock input (LOW-to-HIGH edge-triggered)

!Q7 7 complementary output from the last stage

GND 8 ground (0 V)

Q7 9 serial output from the last stage

DS 10 serial data input

D0 to D7 11, 12, 13, 14, 3, 4, 5, 6 parallel data inputs (also referred to as Dn)

!CE 15 clock enable input (active LOW)

VCC 16 positive supply voltage

Управление 2мя сигналами - !PL, CP, данные - Q7 второго регистра. на !CE всегда низкий уровень

Алгоритм:

1. вначале подаём низкий уровень на !PL

2. ждём 139нс (по документации "input transition rise and fall rate, VCC = 4.5V, Max=139ns" что кстати ограничивает частоту загрузки данных в каждый регистр до ~7Мгц, это так?), данные записываются во внутренний регистр, читаем первый из 16 бит с Q7 (на второй МС)

3. подаём высокий уровень на !PL

4. ждём 139нс чтобы дать время на запись Q7 первой микросхемы в DS второй

5. начинаем в цикле (16-1 итераций) подавать на CP импульсы, здесь нужна задержка между фронтами импульса ? (МК работает на 16Мгц, можно ли здесь иставить две инструкции установки нужного бита порта в 0 и 1 подряд или нужна задержка?)

6. после каждого импульса CP читаем бит из Q7 второй микросхемы. (нужна ли задержка ?)

7. конец

Ну и как бы всё нормально, так как алгоритм начинается с подачи низкого уровня на !PL то не важно что было до этого во внутренних регистрах.

6) Однако на просторах интернета было обнаружено предложение соединить !PL и CP и управлять с помощью одного сигнала, это возможно? Какой будет алгоритм?

Заранее благодарен.

P.S. Несмотря на то что период max6818=60мс, читать надо на макс. возможной скорости, так чтение состояния кнопок и вывод данных на светодиоды это основная программа, а критические части имеют свои кнопки с прерываниями.

Ссылка на комментарий
Поделиться на другие сайты

Реклама: ООО ТД Промэлектроника, ИНН: 6659197470, Тел: 8 (800) 1000-321

6) Однако на просторах интернета было обнаружено предложение соединить !PL и CP и управлять с помощью одного сигнала, это возможно?

Зачем вам просторы интернета, когда даташит перед глазами?

Никогда не спорьте с дураком - люди могут не заметить между вами разницы

Ссылка на комментарий
Поделиться на другие сайты

20% скидка на весь каталог электронных компонентов в ТМ Электроникс!

Акция "Лето ближе - цены ниже", успей сделать выгодные покупки!

Плюс весь апрель действует скидка 10% по промокоду APREL24 + 15% кэшбэк и бесплатная доставка!

Перейти на страницу акции

Реклама: ООО ТМ ЭЛЕКТРОНИКС, ИНН: 7806548420, info@tmelectronics.ru, +7(812)4094849

Зачем вам просторы интернета, когда даташит перед глазами?

В нём не указано явным образом такое применение.

Изменено пользователем awpe01
Ссылка на комментарий
Поделиться на другие сайты

Выбираем схему BMS для корректной работы литий-железофосфатных (LiFePO4) аккумуляторов

 Обязательным условием долгой и стабильной работы Li-FePO4-аккумуляторов, в том числе и производства EVE Energy, является применение специализированных BMS-микросхем. Литий-железофосфатные АКБ отличаются такими характеристиками, как высокая многократность циклов заряда-разряда, безопасность, возможность быстрой зарядки, устойчивость к буферному режиму работы и приемлемая стоимость. Но для этих АКБ, также как и для других, очень важен контроль процесса заряда и разряда, а специализированных микросхем для этого вида аккумуляторов не так много. Инженеры КОМПЭЛ подготовили список имеющихся микросхем и возможных решений от разных производителей. Подробнее>>

Реклама: АО КОМПЭЛ, ИНН: 7713005406, ОГРН: 1027700032161

А как вы представляете себе работу регистра сдвига, если в каждом такте производить ещё и параллельную загрузку?

Никогда не спорьте с дураком - люди могут не заметить между вами разницы

Ссылка на комментарий
Поделиться на другие сайты

Я и не представляю :) , но помню что где то в сети встречал упоминание о такой возможности... Единственное что приходит на ум, это ставить счётчик на 16 импульсов CP, который будет PL дёргать, но не знаю существуют ли такие микросхемы в жизни... Может как то алгоритмически можно? Типа быстро дёргать CP с PL чтобы последний не успел переключится? А что 74hc166, там можно по одному проводу данные получать а другим управлять?

Изменено пользователем awpe01
Ссылка на комментарий
Поделиться на другие сайты

Алгоритмически вы уже всё описали выше. А в 74hc166 немного другая логика управления. Одним входом задается режим загрузка/сдвиг, другим тактируется. В любом случае нужно два управляющих сигнала.

Никогда не спорьте с дураком - люди могут не заметить между вами разницы

Ссылка на комментарий
Поделиться на другие сайты

Задержки в даташите. Число тактов управления портом смотрите в системе команд вашего МК.

Никогда не спорьте с дураком - люди могут не заметить между вами разницы

Ссылка на комментарий
Поделиться на другие сайты

Соединять PL и CP можно, но это приведет к усложнению алгоритма считывания.

Каким образом? Вывод PL независимо от состояния остальных сигналов производит параллельную загрузку в регистр.

Никогда не спорьте с дураком - люди могут не заметить между вами разницы

Ссылка на комментарий
Поделиться на другие сайты

Правильно, Григорий, никаким. Пока описывал процесс, нашел где тупанул. При по-тактовой загрузке в параллельный регистр (на каждом такте сдвига, если их совместить) не получится вытеснять данные в последовательный канал, т.к. параллельные данные будут постоянно обновляться. Да и второй гиморрой получился бы с мгновенным сдвигом разряда Q6 и замещением им значения Q7 сразу же после завершения импульса PL.

И все-таки у меня есть подозрение, что паралленый регистр-защелка.

Изменено пользователем Геннадий
Ссылка на комментарий
Поделиться на другие сайты

Они Вам не нужны

задержки всмысле? Если МК работает на 16МГц, а у регистров предельная частота около 7МГц, то всё таки нужны, разве нет?

max6818 тут лишние

на самом деле, у этой ИМС есть выход CH который указывает о том, что было, что то нажато, по нему делать прерывание в МК очень удобно.

Изменено пользователем awpe01
Ссылка на комментарий
Поделиться на другие сайты

...у регистров предельная частота около 7МГц...

Вы это сами расчитали или в даташите прочитали? В моем maximum frequency значится в 51МГц (при Uпит.= 4,5В и t=25C).

По max-ам. МК выполняет программу циклически, поэтому логичнее делать опрос кнопок, также циклически. Вот если бы вы делали конструкцию на "рассыпухе" тогда, несомненно, у max-ов был бы выигрыш в применении. Да и смешивать два сигнала на одно прерывание, опять же потребуется ИЛИ-конструкция.

Изменено пользователем Геннадий
Ссылка на комментарий
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.
Примечание: Ваш пост будет проверен модератором, прежде чем станет видимым.

Гость
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Ответить в этой теме...

×   Вставлено с форматированием.   Восстановить форматирование

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

Загрузка...
  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...