Есть неизвестное устройство, которое выдает информацию в виде 2х байт на два 7ми сегментных индикатора через два последовательных сдвиговых регистра 74htc495. Задача: подключиться паралельно до сдвиговых регистров и принять на ESP8266 эти 2байта. Пробовал через I2C и SPI, но принять больше одного байта не получилось. Пока примитивно принимаю по-битно с digitalRead. Защелка, такт и данные на разных пинах имеются. Есть у кого идеи упростить решение?
Ну так протокол простейший, отщелкнули, битов накидали, защелкнули. Если умеете отправлять на регистр, то и считать не проблема.
Дело в том, что мастер отщелкивает, передает два байта и защелкивает, а в регистре только 1 байт остается. Остальное вываливается.
Ардуиновский шифт-ин - только под один байт заточен. В АВР бейсике - управляемый до 256 бит, В Пик бейсике - тоже управляемый.. То что хочет ТС - называется "снифферинг". А программа слежения - сниффер. При передаче в регистр сдвига мастер никак не обязан "оформлять" начало и конец чего либо. Так что все зависит от изощренности сниффера ловить райз-ап (0-1) фронты сигнала сдвига (SH_CP) и сигнала сохранения ST_CP). (Сигнала сохранения может и не быть. Схема может работать с автосохранением - через Q7" на ST_CP). ПС. В арсенале ардуины не густо, но есть - прерывания (Interrupts). Попробуйте их. Тут реально не сложно будет.
В итоге, есть ли смысл заморачиваться, если я читаю бит при каждом сдвиге до защелки и записываю значение в int? С прерываниями интересно, но не понятно пока..
А что такое "при каждом сдвиге" ? - бесконечный цикл чтения текущего значения и сравнение с предыдущим. По изменению - отработка. С прерываниями не нужен цикл отслеживания события. Работает "железо периферии" процессора. Его ради этого туда пихают. Написали процедуру обработчика прерывания, сконфигурили линию по какому событию срабатывать, и процессор перейдет на обработчика ТОЛЬКО по событию. Программа быстрей и эффективней. Вот вам идея :>)) В хелпе ардуины есть.