Вопрос по работе со сдвиговым регистром 74HC595

Тема в разделе "Arduino & Shields", создана пользователем DrProg, 20 апр 2015.

  1. DrProg

    DrProg Вечный нерд

    В тексте скетча эксперимента 14 мы видим следующее:

    #define LATCH_PIN 12 // пин такта (англ. clock)
    #define CLOCK_PIN 11 // пин строба (англ. latch)

    Либо в комментариях перепутаны местами названия, либо строб и такт работают в другом порядке чем написано. Судя по самому скетчу строб таки 12 пин (и ножка). В самой datasheet ножки 11 и 12 названы соответственно как shift register clock input и storage register clock input. Так какая из них все же строб, а какая такт?
     
  2. 9xA59kK

    9xA59kK Гик

  3. DrProg

    DrProg Вечный нерд

    То есть в комментарии все же опечатка?
     
  4. vvr

    vvr Инженерище

    даташит - исходная информация.
    как написали - так и есть true
     
  5. DrProg

    DrProg Вечный нерд

    В общем вопрос был об одном, а ответ о другом. Ну да ладно.
     
  6. iglooshtosser

    iglooshtosser Гик

    Просто, если я ничего не путаю, то по фронту "shift register clock input" очередной бит заносится в сдвиговый регистр, а по фронту "storage register clock input" байт из сдвигового регистра переносится в регистр хранения, то есть на выходы микросхемы.
     
  7. iglooshtosser

    iglooshtosser Гик

    То есть работает эта штука так:
    0. Вы формируете высокий уровень на ОЕ. (Этого можно не делать, но тогда на выходе может быть "мусор", возникающий в процессе переключения.)
    1. Выходы переходят в третье состояние.
    2. Вы формируете очередной бит байта на DS.
    3. Вы формируете фронт на SHcp.
    4. Содержимое сдвигового регистра сдвигается на один бит, а значение с DS записывается в младший бит сдвигового регистра.
    5. Если не весь байт передан, переходите к 2, иначе далее.
    6. Вы формируете фронт на STcp.
    7. Данные из сдвигового регистра копируются в регистр хранения.
    8. Вы формируете низкий уровень на ОЕ.
    9. На Q0-Q7 возникают уровни в соответствии с содержимым регистра хранения.

    На выходе Q7' старший бит сдвигового регистра.
     
    Последнее редактирование: 21 апр 2015
    DrProg нравится это.
  8. ANV

    ANV Гуру

    Расскажите, пожалуйста, подробнее про "мусор" в результате переключения
     
    iglooshtosser нравится это.
  9. iglooshtosser

    iglooshtosser Гик

    Издеваететсь. :)
     
  10. iglooshtosser

    iglooshtosser Гик

    Когда я это пислал, мне представлялось (безосновательно), что на выходе будут промежуточные значения. На деле - не будет, так как до "6. Вы формируете фронт на STcp." новые данные на регистр хранения, а значит и на выходы, не попадают. :(
     
  11. DrProg

    DrProg Вечный нерд

    С одним регистром все просто и понятно. Если коротко - открыл его, напихал туда байт данных, закрыл. После этого байт отобразится на ножках Q в виде вкл и выкл.

    Со вторым пока не эксперементировал, но из примеров понял так, что информация выталкивается сквозь первый регистр по второй через Q7 с черточкой. То есть, открываем оба регистра одновременно через запараллеленные командные ножки, запихиваем в первый регистр сначала один байт, потом второй. При этом первый байт "выдавится" во второй регистр. Защелкиваем их и получаем на ножках два байта. Так же можно ставить паровозиком несколько регистров.

    Сегодня пришел в почтамат заказ в котором, кроме прочего, второй регистр. Вечером буду разбираться до победного. )
     
  12. iglooshtosser

    iglooshtosser Гик

    Как-то так, только непонятно, что значит "открыл"/"закрыл"?
    Он всегда открыт.
     
  13. DrProg

    DrProg Вечный нерд

    Пин строба LOW - открыли для записи, потом записали и пин строба в HIGH, что значит закрыли.
     
  14. iglooshtosser

    iglooshtosser Гик

    В даташите нет описания пина строба :( Поэтому мне трудно вас понять... :(
    Кого вы называете пином строба? SHcp или STcp?
     
  15. DrProg

    DrProg Вечный нерд

    Пином строба STsp называю не я, а Амперка. Причем, именно про эту путаницу я и говорил в самом начале: в программе одна, в комментариях другое.
     
  16. iglooshtosser

    iglooshtosser Гик

    Я это всё к тому что STsp вернее всегда держать в LOW (и когда загружаем новые данные и когда не загружаем, а просто ждем) и только когда закончен ввод на короткое время перевести в HIGH, а потом опять вернуть в LOW. Командой за передачу в регистр хранения является сам ФАКТ ПРЕРЕХОДА в HIGH. не стоит дежать его в HIGH постоянно.

    Хотя чисто функционально и пофиг. Главное восходящий фронт...
     
  17. DrProg

    DrProg Вечный нерд

    Да я и не настаиваю на том, чтобы держать его HIGH постоянно. И вообще весь вопрос в терминологии, где то процесс называется защелкиванием, где то по другому. Сегодня буду пытать каскад пока не пойму всех деталей.
     
  18. iglooshtosser

    iglooshtosser Гик

    Удачи.
     
  19. DrProg

    DrProg Вечный нерд

    Возможно, вопросами еще помучаю. )
     
  20. DrProg

    DrProg Вечный нерд

    Да, разобрался окончательно, действительно все проще чем кажется. Удобная штука, особенно в каскаде. Единственный минус: всего 7 выходов, даже на цифровой индикатор не хватает, если нужна точка, не говоря уже про шкалу на 10 светодиодов. То есть, например, для двух индикаторов нужно устанавливать третий регистр и шаманить с математикой. Но всерввно лучше, чем ограничение в 13 пин.