Страница 2 из 4

Входной сдвиговый регистр 74HC165

Добавлено: 08.12.2016{, 09:01}
robocraft
поддерживаю.

Входной сдвиговый регистр 74HC165

Добавлено: 31.01.2018{, 13:39}
seri0shka
Возвращаясь к теме регистров, у кого-нибудь есть пользовательские блоки, позволяющие работать по 5-проводной схеме одновременно с несколькими 74HC165 на входах и 74HC595 на выходах? Упомянутые выше блоки arisov77 работают отлично, но там SPI программный, а у Слимпера SPI аппаратный, но что-то не работает. А хотелось бы попробовать именно аппаратный SPI, выше скорость работы и прочие плюсы. Как вариант, неплохо бы иметь универсальные блоки "отправка переменной в SPI" и "приём переменной из SPI", не привязанные к конкретным микросхемам или шилдам. Возможно, уже такие есть, дайте ссылку. Возможно, Boroda уже делал такие, тема должна быть востребована.

Входной сдвиговый регистр 74HC165

Добавлено: 06.03.2018{, 21:39}
seri0shka
Чтоб темы не плодить, здесь спрошу. Есть у кого ссылка на блоки для регистров 74НС165 с подключением к любым пинам ардуино? Нужен блок для цепочки из 4 микросхем (32 входа).

Входной сдвиговый регистр 74HC165

Добавлено: 07.03.2018{, 17:25}
Sancho
seri0shka,
Попробуй, не тестил - нет железа...
На 32 бита.

Отправлено спустя 7 минут 42 секунды:
При 1 на Read - чтение.

Входной сдвиговый регистр 74HC165

Добавлено: 07.03.2018{, 18:18}
seri0shka
Спасибо. А чем преобразовать unsigned long int в байты?

Отправлено спустя 2 минуты 33 секунды:
И что такое clock enable pin ?

Входной сдвиговый регистр 74HC165

Добавлено: 07.03.2018{, 20:13}
Sancho
seri0shka писал(а):
07.03.2018{, 18:21}
А чем преобразовать unsigned long int в байты?
Чтением нужного бита. Или нужны байты?
seri0shka писал(а):
07.03.2018{, 18:21}
И что такое clock enable pin ?
Сделал по фэн-шую, завтра уберу. Вход разрешения тактовых импульсов.
Можно и без него....

Входной сдвиговый регистр 74HC165

Добавлено: 07.03.2018{, 22:01}
seri0shka
Байты в биты мне удобней переводить блоками Бороды, поэтому мне нужны 4 байта. А какой смысл разрешения тактовых импульсов? Только пин занимает.

Входной сдвиговый регистр 74HC165

Добавлено: 08.03.2018{, 09:06}
Sancho
seri0shka,
Ок, пробуйте так.

Входной сдвиговый регистр 74HC165

Добавлено: 08.03.2018{, 17:13}
seri0shka
Sancho, работает правильно только до 15 бит, дальше фигня.
Вот такой работает отлично, хотя написан не очень (делал на основе чужого, быстро не вспомню, кого именно, лишнее удалил, недостающее дописал). Почему-то не отправляется на сайт пример рабочего блока, завтра попробую отправить.
Вот так примерно:
Код внутриПоказать

Код: Выделить всё

setup......
pinMode(PL_pin,OUTPUT);
pinMode(Clock_pin,OUTPUT);
pinMode(Q7_pin,INPUT);
digitalWrite(Q7_pin, HIGH); //подключаем подтягивающий резистор

loop.......
byte Q1 = 0;
byte Q2 = 0;
byte Q3 = 0;
byte Q4 = 0;							
digitalWrite(PL_pin,HIGH);
for (int i=7; i>=0; i--) {				
digitalWrite(Clock_pin,LOW);  	
   delayMicroseconds(1);
   Q1 |= (digitalRead(Q7_pin) ? (1<<i) : 0);
   digitalWrite(Clock_pin,HIGH); 		
   delayMicroseconds(1);
} 
for (int i=7; i>=0; i--) {				
digitalWrite(Clock_pin,LOW);  	
   delayMicroseconds(1);
   Q2 |= (digitalRead(Q7_pin) ? (1<<i) : 0);
   digitalWrite(Clock_pin,HIGH); 		
   delayMicroseconds(1);
}
for (int i=7; i>=0; i--) {				
digitalWrite(Clock_pin,LOW);  	
   delayMicroseconds(1);
   Q3 |= (digitalRead(Q7_pin) ? (1<<i) : 0);
   digitalWrite(Clock_pin,HIGH); 		
   delayMicroseconds(1);
}
for (int i=7; i>=0; i--) {				 
digitalWrite(Clock_pin,LOW);  	
   delayMicroseconds(1);
   Q4 |= (digitalRead(Q7_pin) ? (1<<i) : 0);
   digitalWrite(Clock_pin,HIGH); 		
   delayMicroseconds(1);
}
digitalWrite(PL_pin,LOW); 

Q1 = Q1  ^ ((B11<<8) | (B00000000)) ; 		// инвертировать побитно  байт (0 - нет инверсии, 1 - инвертировать)
Q2 = Q2  ^ ((B11<<8) | (B00000000)) ; 		
Q3 = Q3  ^ ((B11<<8) | (B00000000)) ; 		
Q4 = Q4  ^ ((B11<<8) | (B00000000)) ;

Входной сдвиговый регистр 74HC165

Добавлено: 08.03.2018{, 19:22}
Sancho
seri0shka,
Вот причёсанный твой вариант. Почти.
Отпишись о косяках.

Входной сдвиговый регистр 74HC165

Добавлено: 08.03.2018{, 23:48}
seri0shka
unsigned long int Out_long;- это рудимент от предыдущих версий блока?
После digitalWrite(clockPin, LOW); задержку пропустили или специально убрали?
Блок работает нормально.
Реально по этой схеме сделать универсальный блок с изменяемым количеством микросхем от 1 до ... , соответственно и выходов (они же байты)?
Тогда можно будет выложить для всеобщего доступа.

Входной сдвиговый регистр 74HC165

Добавлено: 09.03.2018{, 07:03}
KulibinOrsk
Поддерживаю и для полноты картины " чтобы было для всех" :
- главное сделайте описание к блоку - будет понятно что и как подключать и проверять.
- сделать вывод байтов и битов (кому как нужно будет так и раскроют). Или в описании указать как вывести биты (о каком то блоке бороды упоминалось...)
- сделать универсальность от 1 до 4 микросхем
- укажите возможное быстродействие, надо понимать скорость опроса.

Входной сдвиговый регистр 74HC165

Добавлено: 09.03.2018{, 07:20}
Sancho
seri0shka,
Сделаем. Количество регистров будет неограниченно.
Ещё один небольшой момент - есть одна идейка, надо будет протестить - по ДШ работает до 20мгц - убрать задержки ) .

Входной сдвиговый регистр 74HC165

Добавлено: 09.03.2018{, 17:46}
seri0shka
Sancho писал(а):
09.03.2018{, 07:20}
по ДШ работает до 20мгц
-не понял, что это значит.
Задержки полностью убирать пробовал (в исходном "моём" блоке- работает отлично с SN74HC165N и К555ИР9(!) при питании 5 вольт, но есть ещё несколько серий импортных и отечественных микросхем, кроме того и работать могут от 2 до 6 вольт (в случае с Ардуино от 3 до 5 в), так что задержки в блоке обязательно нужно оставить, но дать возможность менять по желанию от 0 до ...
Кстати, Sancho, Вы когда спите?
По поводу предложения KulibinOrsk, чтоб не увеличивать размер блока (как на схеме, так и в скетче), возможно стоит сделать два вида блока- первый с выходами в виде байтов и всё, а второй с байтовыми и битовыми выходами (то есть 9 выходов для одного регистра). Лично я стараюсь создавать проекты максимально читаемые и с минимумом незадействованных выходов.

Входной сдвиговый регистр 74HC165

Добавлено: 09.03.2018{, 18:20}
Sancho
seri0shka,
Думаю сделать так -
один блок - основной, самый первый при использовании, в нём все настройки и один регистр. два вида - выход или битами или байтом.
остальные блоки -слэйвы- каждый следующий регистр, с использованием функции основного. Может быть тоже двух видов.
Слэйвы не имеют номеров. Нумерация зависит от порядка в программе после основного.
Кол-во слэйвов не ограниченно.

Входной сдвиговый регистр 74HC165

Добавлено: 09.03.2018{, 18:43}
seri0shka
Sancho писал(а):
09.03.2018{, 18:20}
Нумерация зависит от порядка в программе после основного.
По этому поводу сомнение.

Входной сдвиговый регистр 74HC165

Добавлено: 09.03.2018{, 18:46}
Sancho
seri0shka писал(а):
09.03.2018{, 18:43}
По этому поводу сомнение.
Никаких.
Нажимаешь кнопку "порядок компиляции блоков", убеждаешься в правильности, компилишь.

Входной сдвиговый регистр 74HC165

Добавлено: 09.03.2018{, 19:25}
seri0shka
Я даже кнопки такой не знаю, версия 2.1

Входной сдвиговый регистр 74HC165

Добавлено: 09.03.2018{, 20:53}
Sancho
seri0shka,
Понято.
Но всё равно - боятся не стоит, всегда можно проверить код.
Можно, также, сделать в одном, но несколько, и с разной размерностью.
Ок, завтра напилю для теста разных. Но с возможностью задержек от 0 до ....

Входной сдвиговый регистр 74HC165

Добавлено: 15.03.2018{, 04:57}
KulibinOrsk
Sancho,
Не сориентируете когда можно ожидать блока работающего с входами расширения с выводом байта и битов и выбором необходимого кол-ва 74HC165 ?
А если будет блок описанный в 22 посте: блок, позволяющие работать по 5-проводной схеме SPI одновременно с несколькими 74HC165 на входах и 74HC595 на выходах то будет совсем полное гармоничное решение всех вопросов.