Инициализировать регистр 74HC595N

Здесь принимаются все самые невообразимые вопросы... Главное - не стесняйтесь. Поверьте, у нас поначалу вопросы были еще глупее :)
Ответить
Встал на лапы
Аватара пользователя
Сообщения: 93
Зарегистрирован: Пн окт 31, 2016 06:23:19

Сообщение KorbenDallas »

Задача такая:

1. У нас есть сдвиговый регистр 74HC595N. Этот регистр зациклен сам на себя, то есть по сигналу тактового генератора гоняет по кругу некий 8-битный набор.
2. В качестве тактового генератора используется генератор прямоугольных импульсов на базе 555 таймера.

Теоретически битовый набор в регистре может быть любым. Но хотелось бы чтобы при подаче питания значение в регистре инициализировалось одинокой единицей. То есть чтобы "по умолчанию" после включения питания регистр сразу начинал гонять по кругу одинокую единицу.

Как проще всего сделать такую инициализацию для 74HC595N?
Реклама
Друг Кота
Сообщения: 7722
Зарегистрирован: Вс июл 24, 2011 11:38:09

Сообщение 74LS00 »

Проще всего взять МК и выкинуть регистр, будут схема проще и на одной детале.
А то бы все уже сделали такую штуковину чтоб 1307 заставить секундным генератором вроде ИЕ5 и ставили бы в часики на рассыпуху. Но чтото пока никто не смог, и все собирают на МК.

Деталюшек надо не меньше чем логики в самом 595.
Подтянуть входы к нулю что уже не правильно.
И сделать логику установки единицы с последующей записью и рабочим режимом, и логику отвязки что регистр продолжить работать как обычный, отключающий первый костыль до отключения питания
Контактная информация:
Реклама
Друг Кота
Аватара пользователя
Сообщения: 15754
Зарегистрирован: Вт мар 16, 2010 22:02:27
Откуда: ДОНЕЦК

Сообщение BOB51 »

595й для таких целей не подходит.
Для предварительной инициализации произвольным кодом нужен комбинированный регистр с возможностью параллельной записи данных. что-то похожее на К176ИР6 (IW4034B http://tec.org.ru/_bd/35/3572_IW4034Be.pdf ).
Но там на "рассыпухе" придется потрудиться с автоматом управления (или МК ставить).
8)
Друг Кота
Аватара пользователя
Сообщения: 39197
Зарегистрирован: Сб сен 13, 2014 16:27:32
Откуда: СпиртоГонск созвездия Омега

Сообщение musor »

некогда делал автмат светоэфектоф на 74хх175 куча редимоф была
ZМудрость(Опыт и выдержка) приходит с годами.
Все Ваши беды и проблемы, от недостатка знаний.
Умный и у дурака научится, а дураку и ..
Алберт Ейнштейн не поможет и ВВП не спасет.и МЧС опаздает
Реклама
Эиком - электронные компоненты и радиодетали
Мудрый кот
Сообщения: 1882
Зарегистрирован: Чт авг 10, 2017 20:57:51

Сообщение diplodok »

Изображение

После первого такта должна появится 1.

Схему не делал
Реклама
Друг Кота
Аватара пользователя
Сообщения: 44357
Зарегистрирован: Пн ноя 30, 2009 03:00:01
Откуда: Нерезиновая

Сообщение АлександрЛ »

[uquote="KorbenDallas",url="/forum/viewtopic.php?p=3973089#p3973089"]Но хотелось бы чтобы при подаче питания значение в регистре инициализировалось одинокой единицей. То есть чтобы "по умолчанию" после включения питания регистр сразу начинал гонять по кругу одинокую единицу.

Как проще всего сделать такую инициализацию для 74HC595N?[/uquote]
Бегущий огонь.png
(65.71 КБ) 128 скачиваний
Файл протеуса:
Бегущий огонь.zip
(14.55 КБ) 145 скачиваний
Недостаток этой ПРОСТЕЙШЕЙ схемы - необходимость подбора параметров цепочки R4 C2 в зависимости от частоты, вырабатываемой 555 таймером- если длительность "установочного импульса" будет малой- то ничего не побежит, а, если большой- то побежит две звёздочки, или три звёздочки.. Лучше всего, конечно, пять звёздочек.... :))) :))) :))) :)))
Спойлер
Реклама
Встал на лапы
Аватара пользователя
Сообщения: 93
Зарегистрирован: Пн окт 31, 2016 06:23:19

Сообщение KorbenDallas »

[uquote="АлександрЛ",url="/forum/viewtopic.php?p=3975385#p3975385"]Недостаток этой ПРОСТЕЙШЕЙ схемы - необходимость подбора параметров цепочки R4 C2 в зависимости от частоты, вырабатываемой 555 таймером- если длительность "установочного импульса" будет малой- то ничего не побежит, а, если большой- то побежит две звёздочки, или три звёздочки.. Лучше всего, конечно, пять звёздочек.... :))) :))) :))) :)))[/uquote]

Я соорудил нечто более навороченное с теми же недостатками :)

Для начала я собрал комбинацию из двух резисторов, двух конденсаторов и диода для генерации аналогового V-образного сигнала, который проваливается ниже 1/3 Vcc, как показано здесь.

Эта аналоговая "галочка" идет на входы двух 555, сконфигурированных в одновибраторы: короткий импульс и длинный импульс. Выход первого одновибратора (короткий) через инвертер подается на вход SRCLR регистра - это начальная очистка регистра после включения питания.

Второй одновибратор (длинный) генерирует более длительный импульс, который подается на вход данных SER регистра. Этот импульс должен призван "накрыть" ровно один положительный фронт тактового генератора (после отработки очистки) - это будет наша единственная входящая единица.

После подбора номиналов получаем

Изображение

- Аналоговый V-образный сигнал
- Выход 555, обеспечивающего SRCLR (до инвертера)
- Выход 555, обеспечивающего единицу на SER
- Выход 555, генерирующего тактовые импульсы для регистра

Как видите, малиновый SER импульс накрывает только один фронт синих тактовых импульсов после отработки голубого SRCLR импульса. Хотя надо сделать малиновый покороче, ибо может накрыть и два.

Все это, конечно, громоздко и шатко-валко. И не работает, пока конденсаторы не разрядятся после отключения питания. Но тем не менее...
DS1Z_QuickPrint1.png
(46.07 КБ) 550 скачиваний
---

[uquote="diplodok",url="/forum/viewtopic.php?p=3975315#p3975315"]После первого такта должна появится 1.[/uquote]

Хм... Замысел понял. Надо попробовать!

...

Работает отлично! С тем только незначительным замечанием, что каждый цикл "по 8" она пропускает один такт: проводит его в полностью выключенном состоянии. То есть если частота тактового генератора равна 72Гц, то каждый диод будет мерцать с частотой 8 Гц, а не 9 Гц.

Однако если на D завести данные как с инвертера, так и с RQ7 через диоды (добавив на D pull-down резистор), то эффект пропущенного такта исчезнет.
Последний раз редактировалось KorbenDallas Пт фев 12, 2021 23:31:24, всего редактировалось 3 раза.
Мудрый кот
Сообщения: 1882
Зарегистрирован: Чт авг 10, 2017 20:57:51

Сообщение diplodok »

KorbenDallas писал(а):полностью выключенном состоянии.
Странно. Z состояние должно получаться только при подаче 1 на вх. ОЕ. ????

Но Вы нашли решение. Поздравляю.

Я схему не делал, но здесь можно получать и другие "заполнения" регистра. Только время "установки" не будет 1 такт. а больше
Встал на лапы
Аватара пользователя
Сообщения: 93
Зарегистрирован: Пн окт 31, 2016 06:23:19

Сообщение KorbenDallas »

[uquote="diplodok",url="/forum/viewtopic.php?p=3979031#p3979031"]
KorbenDallas писал(а):полностью выключенном состоянии.
Странно. Z состояние должно получаться только при подаче 1 на вх. ОЕ. ????[/uquote]

А при чем здесь Z состояние?

Ваша схема изначально не использует выход переноса RQ7. Вместо этого она ждет, пока все выходы погаснут, и в ответ снова генерирует единицу на входе D. Именно это и требует один такт "темноты" на всех входах в конце каждого "пробега". То есть, образно выражаясь, ваша схема не гоняет одну и ту же единицу по кругу, а прогоняет единицу через все разряды, а затем "рожает" совершенно новую единицу на входе D с другой стороны :)

Если же аккуратно зациклить RQ7 на D, то тогда единицу ваш инвертер будет генерировать только один раз: на этапе инициализации. А далее уже она сама будет вечно бегать по кругу, без этапа "темноты".
Мудрый кот
Сообщения: 1882
Зарегистрирован: Чт авг 10, 2017 20:57:51

Сообщение diplodok »

Полностью выключенное состояние - это и есть Z

Сколько диода Вы соединили к выходами 7 или 8?
Логика такая - если на каком-то выходе (Q0-Q6) есть 1 то на входе D присуствует 0
Если на все с Q0 до Q6 есть 0 то на входе Д - 1.
Mы выход Q7 не обхватываем цепью ОС

Да ладно. Важно, что схема работает.
Встал на лапы
Аватара пользователя
Сообщения: 93
Зарегистрирован: Пн окт 31, 2016 06:23:19

Сообщение KorbenDallas »

[uquote="diplodok",url="/forum/viewtopic.php?p=3979282#p3979282"]Сколько диода Вы соединили к выходами 7 или 8?
Логика такая - если на каком-то выходе (Q0-Q6) есть 1 то на входе D присуствует 0
Если на все с Q0 до Q6 есть 0 то на входе Д - 1.
Mы выход Q7 не обхватываем цепью ОС[/uquote]

А, вот оно что! Этот момент я не разглядел в вашей схеме. Да, конечно, если Q7 исключить из ОС, то фактически мы получим "генератор переноса на один такт раньше". Тогда действительно "темный" такт пропадет.
Мудрый кот
Сообщения: 1882
Зарегистрирован: Чт авг 10, 2017 20:57:51

Сообщение diplodok »

Если мы подсоединим (скажем) только диоды к Q0,Q1,Q2,Q3 то мы получим заполнение 00001111
если к Q0, Q2, Q4, Q6 01010101
и т.д. как захотим

Плата за это - время "установки" первого набора - до 8 такта
Встал на лапы
Аватара пользователя
Сообщения: 93
Зарегистрирован: Пн окт 31, 2016 06:23:19

Сообщение KorbenDallas »

[uquote="diplodok",url="/forum/viewtopic.php?p=3979282#p3979282"]Полностью выключенное состояние - это и есть Z[/uquote]

Я, видимо, неправильно выразился терминологически. Под "полностью выключенным состоянием" я имел в виду состояние Q0=Q1=...=Q7=0, то есть логические нули на всех Q-выходах, а не состояние hi-Z на всех выходах.

Конечно, состояние hi-Z можно получить только единицей на OE, но я вел речь не об этом.
Друг Кота
Аватара пользователя
Сообщения: 15754
Зарегистрирован: Вт мар 16, 2010 22:02:27
Откуда: ДОНЕЦК

Сообщение BOB51 »

У 595 нет вывода обнуления содержимого (ни для накопительной части ни для сдвигового регистра).
Там единственно возможное решение Z-состояние до первой загрузки последовательного регистра и последующей перезаписи содержимого в параллельный.
А это уже на простой логике делать сложно - надо дать серию тактовых импульсов при 0 на входе, затем один для перезаписи содержимого. Это уже счетчики, дешифраторы, схемы совпадения, дополнительная шина начального сброса при подаче питания.
Вобщем - сделать можно... особо в учебных целях хорошая практика.
Однако городушка минимум в десяток корпусов будет.
8)
Мудрый кот
Сообщения: 1882
Зарегистрирован: Чт авг 10, 2017 20:57:51

Сообщение diplodok »

BOB51 писал(а):У 595 нет вывода обнуления содержимого (ни для накопительной части ни для сдвигового регистра).
Гады! И когда успели убрать обнуление сдвиг. регистра?
BOB51 писал(а):Там единственно возможное решение Z-состояние до первой загрузки последовательного регистра и последующей перезаписи содержимого в параллельный.
Вы о чем?
BOB51 писал(а):Однако городушка минимум в десяток корпусов будет.
Прочитайте что требовал ТС и посмотрите на схему.
KorbenDallas писал(а):неправильно выразился терминологически.
Для выхода с Z state есть три состояния
0 - Lo
1 - Hi
Z - выключ.
Я понял о чем Вы, но если Вы скажете так препода он (как я) станет придираться.
Встал на лапы
Аватара пользователя
Сообщения: 93
Зарегистрирован: Пн окт 31, 2016 06:23:19

Сообщение KorbenDallas »

Всем прекрасна реализация diplodok, но.. Но вот захотелось мне теперь, чтобы выходные импульсы на восьми выходах в совокупности не сливались в "сплошной забор", а оставляли относительно небольшие промежутки между "штакетинами". Надеюсь, понятно, что я имею в виду. То есть после исчезновения логической 1 на выходе Q0 логическая 1 на выходе Q1 должна появляться не сразу, а по прошествии какого-то короткого времени. То есть, скажем, 90% времени на одном из выходов присутствует логическая 1, а 10% времени все выходы равны 0.

Тут заманчиво было бы использовать вход OE, от того же тактового генератора, который движет наш регистр. Сделать коэффициент заполнения на тактовом генераторе 90%, получить с инвертера коэффициент заполнения 10% и пустить этот сигнал на OE. Но в реализации diplodok такой номер не пройдет по очевидным причинам: как только все выходы падают в 0, срабатывает диодный "детектор нулей" и запускает на вход регистра очередную единицу. А это нас совершенно не устраивает...

Очевидное альтернативное решение: реализовать все в самый последний момент перед выходом, то есть пропустить все выходы через ANDы или NANDы, которые будут глушить все выходы по сигналу с того же тактового генератора. Но для этого понадобятся 8 дополнительных логических вентилей и разводка для них. Громоздко...

Более остроумный вариант: посылаем единицу на OE и одновременно подавляем единицу с диодного детектора нулей... Понадобится один дополнительный вентиль... Надо попробовать. Тут, наверное, запросто можно влететь в проблемы с таймингом. Нет, не пойдет. Оно ведь будет давить и ту единицу, которая нам нужна... Ужос.

Добавлено after 2 hours 10 minutes 26 seconds:
Лобовой вариант с восемью дополнительными вентилями AND на выходе дает желаемый результат

Изображение

Четыре соседних выхода из восьми

Изображение
Вложения
DS1Z_QuickPrint2.png
(40.33 КБ) 410 скачиваний
DSC_0007.JPG
(192.78 КБ) 396 скачиваний
Мудрый кот
Сообщения: 1882
Зарегистрирован: Чт авг 10, 2017 20:57:51

Сообщение diplodok »

KorbenDallas писал(а):Тут заманчиво было бы использовать вход OE, ..... . Но в реализации diplodok такой номер не пройдет по очевидным причинам: как только все выходы падают в 0, срабатывает диодный "детектор нулей" и запускает на вход регистра очередную единицу. А это нас совершенно не устраивает...
Состояние на вход D регистра важно только в момент положителного фронта на вход CK - такт сдвиг. регистра. Таким образом если после фронта пустим на вход ОЕ короткий импульс то выходы "уйдут" в Z.
Изображение

Добавлено C2, R3. U2c, U2d - они формируют короткая 1 на вход ОЕ.

Опасность в тем, что выходы переключаются в Z состояния. Отсюда следует - последующие каскады должны оберегать себе от неподключенных входов. В идеале - каждый выход (Q0-Q6) должен быть притянуть к земле сопр. 10-100К

PS:
Можно отказаться от U2c, U2d. На вход ОЕ есть инвертор.
Встал на лапы
Аватара пользователя
Сообщения: 93
Зарегистрирован: Пн окт 31, 2016 06:23:19

Сообщение KorbenDallas »

[uquote="diplodok",url="/forum/viewtopic.php?p=3980501#p3980501"]Состояние на вход D регистра важно только в момент положителного фронта на вход CK - такт сдвиг. регистра. Таким образом если после фронта пустим на вход ОЕ короткий импульс то выходы "уйдут" в Z.[/uquote]


Так а что в этой схеме обеспечивает то, чтобы импульс на OE пришел после фронта? Откуда возьмется "после"? Задержка инвертерами?

И если импульс на OE действительно придет после фронта, то где гарантия, что состояние Z не "разрубит" уже присутствующую единицу на одном из выходов на манер: 1zzz1111111?
Мудрый кот
Сообщения: 1725
Зарегистрирован: Вт янв 05, 2016 10:14:25
Откуда: поселок Мелеуз

Сообщение Novice user »

дессартация наверно,,,
Мудрый кот
Сообщения: 1882
Зарегистрирован: Чт авг 10, 2017 20:57:51

Сообщение diplodok »

Как работает схема:
1. при включение C1R2 обнуляют регистр
- на вход D появляется 1 - с условием - читай ниже

2. Tакт (восходящий фронт) "принимает" инфо с входа D и сдвигает содер. вправо
3. На вход ОЕ появляется короткая 1. Выход в Z.
4. заканчиваем такт (падающий фронт) - перебрасываем инфо с сдвигового регистра в выходного регистра.
5. Формируется сигнал для входа D
6.повторяем с пункта 2

Видим, что нигде нет колизий

Таким образом мое выражение "после фронта" не имеет смысла - извини.

Но (усмотрел другое):
После пункта 1 на выходе мы может получить что угодно (0 или 1). Мы обнуляем только сдвиг. регистра, но не и вых регистра.
Таким образом состояние 10000000 можно не получится после первого такта. Макс время установки (в 10000000) будет 2 такта.

PS: Желателно чтобы тактовый начинался с падающий (отриц) фронт - переброска с сдвиг рег в вых. рег. Тогда все будет как надо.
Ответить

Вернуться в «Теория»