74hc165 и ещё какой-либо SPI-источник
- Войдите на сайт для отправки комментариев
Хало all, тема навеяна лютым вывихом мозга от статьи товарища burjui про регистр ввода, конкретно мой вопрос про порядок действий с проводом SS. Или CS, как его ещё называют, в общем то что "когда ноль, оно активно".
Итак, как мы знаем, с выводом всё просто: клацаем у 595 этот провод к минусу, и всё, можно писать в регистр. Поднимем до плюса, и регистру будет плевать, что там передаётся по MOSI.
C 165м значит схема такая: входы находятся в каком-то состоянии, чтобы оно запомнилось, кладём SS вниз. Так, ага. Теперь поднимаем на плюс, ясьненько... И читаем. ЛОЛШТО!? КАК ТАК, из НЕАКТИВНОГО регистра? А допустим у нас ещё Ethernet на этом SPI? И чё, они одновременно передавать могут? Не, так то статья норм, всё ясно, но как, выходит что кнопки с 74165 это всё, единственный SPI-передатчик, приехали? А там RF24 какой-нибудь, это получается на отдельный надо вешать. Или софтварный. Потому что я реально не вижу, какие ещё варианты. Вставим 165 с кнопками и они будут друг другу мешать, потому что провод MISO только один. Не?
Просветите. Позязя...
Ну единственным логичным объяснением видится вход Clock inhibit, который CE. Как я понимаю, если сделать на нём HIGH, регистр не сможет передавать данные по MISO и тогда мешать соседям не будет.
С одним регистром я работал нормально. В "Саге о кнопках" в приложении есть работающая схема и скеч с драйверами и прочими обработчиками. Насколько я понимаю, если есть несколько источников сигнала на один порт, то можно поступить двояко. Либо включить все источники в одну последовательную цепь "а-ля регистры", и считывать каждый раз весь объём данных. Либо на другие ноги вывести чип-селекты для каждого источника сигнала и управлять ими. Но в этом случае выходы устройств должны допускать переход в высокоимпедансное состояние.
Я как раз так и делал (управление 16 каналами освещения как с выключателей, так и по сети). На одной шине работают уже больше года Ethernet+SD+595+165.
За основу брал схему подключения со страницы http://robocraft.ru/blog/3126.html
P.S.
Сейчас работаю с STM32 и использовал на одной шине 74HC595 (через нее подключен LCD1602) и AT25160B. Наблюдаются сбои в работе индикатора, пришлось добавить 74HC08, через который отключаю тактирование 74HC595. Теперь все работает нормально. В предыдущем проекте этого не наблюдал, видимо это связано с тем, что там 74HC595 управляет SSR, а они или медленные или глаз не замечает.