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

28-05-2014, 17:52 От: admin Посмотрели: 532
Здравствуйте,



да, здесь уже было про 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 Минимум Управляющих Сигналов ) :



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

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мс, читать надо на макс. возможной скорости, так чтение состояния кнопок и вывод данных на светодиоды это основная программа, а критические части имеют свои кнопки с прерываниями.
Раздел: Начинающим

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

Обсудить на форуме


На момент добавления Два 74Hc165 Минимум Управляющих Сигналов все ссылки были рабочие.
Все публикации статей, книг и журналов, представлены на этом сайте, исключительно для ознакомления,
авторские права на эти публикации принадлежат авторам статей, книг и издательствам журналов!
Подробно тут | Жалоба
Информация
Посетители, находящиеся в группе Гости, не могут оставлять комментарии к данной публикации.


Опрос

Ваши предпочтения в TRX


Одинарное преобразование
Двойное преобразование
Прямое преобразование
SDR
Другое
Мне всё равно

Популярные новости
Календарь новостей
«    Май 2024    »
ПнВтСрЧтПтСбВс
 12345
6789101112
13141516171819
20212223242526
2728293031