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

В данный форуме Вы можете создавать темы посвящённые расширению функционала программы или сайта. После рассмотрения Ваше предложение будет перенесено в соответствующее место
Аватара пользователя
Sancho
Полковник
Сообщения: 4066
Зарегистрирован: 25.12.2015{, 17:32}
Репутация: 590
Откуда: Ярославль.
Имя: Александр
Контактная информация:

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

#61

Сообщение Sancho » 20.03.2018{, 10:59}

Наверно, последнее моё творчество с 165 и 595-ми.
Версия с основными блоками и блоками входов/выходов, несовместима с предыдущими.
Важно помнить нумерацию:
Для входных, 165-х, номер 1 у блока обозначает ближайший к месту подключения цепочки микрух к мк, т.е. порядок от мк.
Для выходов, 595-х, номер блока 1 обозначает самый дальний от мк, т.е. для него надо загнать первым инфу, и прогнать через все, поэтому порядок - к мк.
На это хотелось обратить внимание для понимания нумерации, остальное в описании.
Надеюсь, seri0shka доведёт до ума и блоки и описание и оформит после тестов как положено в "Пользовательских" блоках.
Блоки добавляют веса программе:
V2, стандартные, настраиваемые пины, 6 блоков входных и 6 выходных - 830 байт, время выполнения 1450 мкс;
V1, быстрые, изменяемые только правкой кода, тот-же набор по 6 штук - 400 байт, время выполнения 230 мкс.
На сим здесь( в теме) до-свидания, я старался.
Вложения
165 и 595 кол-во настр.ubl
(300.05 КБ) 153 скачивания
мой ник в нете и почте omelchuk890, если что. запомните на всякий. многие знают номер тлф.

seri0shka
Лейтенант
Сообщения: 391
Зарегистрирован: 09.04.2016{, 12:17}
Репутация: 22
Откуда: Кременчуг
Имя: Сергей

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

#62

Сообщение seri0shka » 21.03.2018{, 00:42}

Sancho писал(а):
20.03.2018{, 08:55}
Что там происходит, если оставить как есть?
В приёмной части регистра данные висят, в первых восьми D- триггерах. По фронту на 12-м они записываются во вторые восемь, т.е на выходы.
Если этого не делать, то на выходах сигналы появятся только с началом следующего цикла, когда начнёт работать часть, относящаяся к 165.
Да, именно так! То есть на выходах сигналы будут появляться один раз за цикл. Если цикл очень длинный
Sancho писал(а):
20.03.2018{, 08:55}
несколько датчиков влажности, температуры, дисплеи и т.д
, то, возможно, это будет с запозданием. Данные, полученные в текущем цикле, обрабатываются в следующем цикле. Для моего применения это несущественно, тем более, что почти все блоки в FLProg построены подобным образом. А чтоб применить данные сразу же в этом цикле, в средину блока нужно впихнуть другой блок обработки данных (мы ведь не просто прочитали 4 регистра и записали в другие 4 регистра).
И сегодня проверил, ваш вариант тоже работает, где в цикле "D14_Low;D14_High;" повторяется дважды. До этого проверял- вроде не работало, но причина, наверно, была в другом.
Обязательно попробую 74НС 165 и 595_V2.ubl и 165 и 595 кол-во настр.ubl, и отпишусь о результатах, но уже в другой день и после работы, надо и спать иногда.
Sancho писал(а):
20.03.2018{, 10:59}
Наверно, последнее моё творчество с 165 и 595-ми
А я так надеялся на вашу помощь, у Вас опыта явно побольше. Хотя в этой теме вроде уж всё понял.

Отправлено спустя 3 минуты 42 секунды:
Sancho писал(а):
20.03.2018{, 10:59}
Надеюсь, seri0shka доведёт до ума и блоки и описание и оформит после тестов как положено в "Пользовательских" блоках
Обязательно. Но быстро не обещаю- работа, личная жизнь иногда. Если кому что надо быстрей, пишите. И не забывайте отписаться о результатах применения.

KulibinOrsk
Лейтенант
Сообщения: 515
Зарегистрирован: 25.02.2018{, 08:48}
Репутация: 21
Откуда: Оренбург
Имя: Александр

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

#63

Сообщение KulibinOrsk » 21.03.2018{, 09:48}

seri0shka, Надо конечно. Ждем. И вас и микросхемы которые заказал.
Я возможно не смогу проверить так детально как вы т.к. не знаю всех нюансов работы программы FLProg - в частности как правильно строить программу.
Но насколько смогу проверю. Моя задача - читать входа и записывать выхода и все это действо с учетом обработки чтобы укладывалось в 0.1 сек (для блоков с расширением) с учетом обработки в программе задач.
Но вот набросал тестовую задачу для проверки: часы+энкодер+LCD+2 аналоговых и программа уже отрабатывает с задержкой в 0.4 сек. Может я неправильно разместил платы или неверное вообще сформировал программу. Поэтому на первых порах я не могу достоверно проверить работу блока. Только на уровне - работает или нет. Т.е. подаю на входа и вижу как проходит через программу на выход. Но это наверное вы и без меня сможете проверить в течении 20 минут.

Аватара пользователя
Sancho
Полковник
Сообщения: 4066
Зарегистрирован: 25.12.2015{, 17:32}
Репутация: 590
Откуда: Ярославль.
Имя: Александр
Контактная информация:

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

#64

Сообщение Sancho » 21.03.2018{, 10:08}

seri0shka,
Тогда поменяй на вот так:
СпойлерПоказать

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

//  Вариант V2
if( _EN_Work )
{
digitalWrite(  PL_pin  , LOW);
delayMicroseconds( pauza );
write_output_595_reg( in_4_595 ); // Записываем дальний 595 регистр
write_output_595_reg( in_3_595 ); 
write_output_595_reg( in_2_595 );
write_output_595_reg( in_1_595 );  // Записываем ближний 595 регистр
delayMicroseconds( pauza ); 
digitalWrite(  PL_pin  , HIGH);  // Защёлкиваем данные в 165 и 595 В ОДИН ЩЕЛЧОК!!!
Out_1_165 =  read_input_165_reg(); // Читаем первый 165 регистр
Out_2_165 =  read_input_165_reg(); // 2-ой
Out_3_165 =  read_input_165_reg();  // 3-ий
Out_4_165 =  read_input_165_reg(); // Читаем четвёртый 165 регистр
digitalWrite( Clock_pin , LOW); // Зараннее, что-бы не проскочило ничего лишнего
}

//  Вариант V1
if( _EN_Work )
{
D14_Low;
delayMicroseconds( pauza );
write_output_595_reg( in_4_595 ); // Записываем дальний 595 регистр
write_output_595_reg( in_3_595 ); 
write_output_595_reg( in_2_595 );
write_output_595_reg( in_1_595 );  // Записываем ближний 595 регистр
delayMicroseconds( pauza ); 
D14_High;  // Защёлкиваем данные в 165 и 595 В ОДИН ЩЕЛЧОК!!!
Out_1_165 =  read_input_165_reg(); // Читаем первый 165 регистр
Out_2_165 =  read_input_165_reg(); // 2-ой
Out_3_165 =  read_input_165_reg();  // 3-ий
Out_4_165 =  read_input_165_reg(); // Читаем четвёртый 165 регистр
D15_Low; // Зараннее, что-бы не проскочило ничего лишнего
}
Отправлено спустя 4 минуты 20 секунд:
KulibinOrsk писал(а):
21.03.2018{, 09:48}
Но вот набросал тестовую задачу для проверки: часы+энкодер+LCD+2 аналоговых и программа уже отрабатывает с задержкой в 0.4 сек.
Оптимизируй проект: если lcd по i2c - разгоняй бибку до 400кГц и оптимизируй вывод инфы, аналоговые - поставь "быстрые", опрашивай часы по мере необходимости...
мой ник в нете и почте omelchuk890, если что. запомните на всякий. многие знают номер тлф.

seri0shka
Лейтенант
Сообщения: 391
Зарегистрирован: 09.04.2016{, 12:17}
Репутация: 22
Откуда: Кременчуг
Имя: Сергей

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

#65

Сообщение seri0shka » 22.03.2018{, 00:18}

Sancho писал(а):
21.03.2018{, 10:12}
Тогда поменяй на вот так
Вроде можно и так. К сожалению, все эксперименты с ардуино вынужден отложить на несколько дней.
Sancho писал(а):
21.03.2018{, 10:12}
аналоговые - поставь "быстрые"
Там, как мне помнится, с аналоговыми очень небольшой прирост скорости.

seri0shka
Лейтенант
Сообщения: 391
Зарегистрирован: 09.04.2016{, 12:17}
Репутация: 22
Откуда: Кременчуг
Имя: Сергей

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

#66

Сообщение seri0shka » 01.04.2018{, 14:48}

Sancho, я протестировал ваши последние блоки, выложенные в сообщении 61, всё работает отлично с паузой не менее 1 микросекунды (при 0 не работает нормально ни чтение, ни запись). Давайте Вы выложите в "Пользовательские блоки" под своим именем, чтоб по-честному. Для тех, кому интересно больше, дайте ссылку на эту тему.

Отправлено спустя 7 минут 1 секунду:
Ещё вопрос: несколько дней назад связался с ATtiny13, интересная штучка, хватает для многих проектов и стоит копейки. Заодно и пригодилось подсоединение регистров по 4 проводам. Но здесь борьба за каждый байт. Можно ли ещё ужать блоки для минимального потребления ресурсов? Пробовал, убрал пару байтов. Кстати, с месяц назад была тема про переназначение переменных, не могу найти.

Аватара пользователя
Sancho
Полковник
Сообщения: 4066
Зарегистрирован: 25.12.2015{, 17:32}
Репутация: 590
Откуда: Ярославль.
Имя: Александр
Контактная информация:

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

#67

Сообщение Sancho » 01.04.2018{, 16:14}

seri0shka,
нужно ужимать и переходить на более низший язык програмирования. Как Вы уже заметили, все мои "телодвиженния" как раз и направлены на экономию "байтов" и увеличение быстродействия. Создание переменных, временных, возможно лишь в чистом С++...
Однако блоки лучше выложите Вы - опыт использования микрух даёт о себе знать при описании. Если в нём (описании) будет упомянуто моё имя - буду признателен.
мой ник в нете и почте omelchuk890, если что. запомните на всякий. многие знают номер тлф.

seri0shka
Лейтенант
Сообщения: 391
Зарегистрирован: 09.04.2016{, 12:17}
Репутация: 22
Откуда: Кременчуг
Имя: Сергей

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

#68

Сообщение seri0shka » 06.04.2018{, 23:07}

seri0shka писал(а):
15.03.2018{, 12:04}
А что если попробовать так: притянули защёлку вниз, серия импульсов на CLK- отправили данные на 595, потом защёлку вверх, дальше переключили вывод данных на вход, серия импульсов на CLK- приняли данные с 165, снова переключили вывод данных на вЫход, закончили упражнение. Получится трёхпроводная схема. Такой ещё не встречал, но стоит попробовать.
Сделал блок, работает! При подключении микросхем входных регистров нужно добавить три деталюхи, на рисунке выделены, в описании блока расписано подробно. Здесь только мастер-блок, остальные здесь: http://forum.flprog.ru/viewtopic.php?f= ... 200#p45200
Проверено в железе.
СпойлерПоказать
по 5 проводам-1.jpg
СпойлерПоказать
165_595_Master_3_lines_(CODE).ubi
(19.08 КБ) 104 скачивания
Sancho, посмотрите, если не затруднит.
KulibinOrsk писал(а):
15.03.2018{, 09:32}
Со дня на день приедут микросхемы (заказал и те и те т.к. надо 32 входа и 32 выхода) и сразу начну проверять.
KulibinOrsk, ждём ваших результатов тестирования.

KulibinOrsk
Лейтенант
Сообщения: 515
Зарегистрирован: 25.02.2018{, 08:48}
Репутация: 21
Откуда: Оренбург
Имя: Александр

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

#69

Сообщение KulibinOrsk » 07.04.2018{, 17:04}

Я помню. Жду микрухи. Китай что то нереально долго едет. Бывает порой за 10 дней, а порой 2 месяца идут.

seri0shka
Лейтенант
Сообщения: 391
Зарегистрирован: 09.04.2016{, 12:17}
Репутация: 22
Откуда: Кременчуг
Имя: Сергей

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

#70

Сообщение seri0shka » 09.10.2018{, 20:27}

Sancho, вот фрагмент блока для управления входными-выходными регистрами по трём проводам, с настраиваемым количеством регистров. Всё давно проверено и отлажено. Но мне нужно, чтобы запись велась начиная с ближнего к контроллеру регистра, а начинается с дальнего, что создаёт некоторые неудобства при составлении проектов. Как правильно переписать следующую строку? :

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

for (byte i = 0; i <  reg_595  ; i++)  //reg_595- количество 595 регистров
{write_output_595_reg(  In_595_reg [i] );}  // Записываем 595 регистры
Отправлено спустя 2 минуты 2 секунды:
KulibinOrsk, пробовали что-нибудь по теме?

seri0shka
Лейтенант
Сообщения: 391
Зарегистрирован: 09.04.2016{, 12:17}
Репутация: 22
Откуда: Кременчуг
Имя: Сергей

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

#71

Сообщение seri0shka » 15.10.2018{, 23:38}

Жаль, что никто не подсказал. Проблема была в том, что я пытался использовать конструкцию

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

for(byte i = reg_595; i >= 0  ; i--)
а нужно

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

for(char i = reg_595; i >= 0  ; i--)
Собственно, работает так же, как и

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

for(int i = reg_595; i >= 0  ; i--)
хотя при компиляции должно занимать на 1 байт меньше места в памяти, реально же выигрыша нет почему-то.

Аватара пользователя
Sancho
Полковник
Сообщения: 4066
Зарегистрирован: 25.12.2015{, 17:32}
Репутация: 590
Откуда: Ярославль.
Имя: Александр
Контактная информация:

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

#72

Сообщение Sancho » 16.10.2018{, 09:41}

seri0shka, Цикл
seri0shka писал(а):
09.10.2018{, 20:29}
Код: Выделить всё

for (byte i = 0; i < reg_595 ; i++) //reg_595- количество 595 регистров
{write_output_595_reg( In_595_reg );} // Записываем 595 регистры

Выполнится reg_595 раз. //reg_595- количество 595 регистров
А цикл
seri0shka писал(а):
15.10.2018{, 23:38}
Код: Выделить всё

for(char i = reg_595; i >= 0 ; i--)

выполнится reg_595+1 раз! //reg_595- количество 595 регистров
seri0shka писал(а):
15.10.2018{, 23:38}
Код: Выделить всё

for(byte i = reg_595; i >= 0 ; i--)

Бесконечный цикл, т.к. i>=0 верно всегда! Байт не может быть отрицательным.
Поэтому правильно делать так:
for(byte i = reg_595; i > 0 ; i--)
{write_output_595_reg( In_595_reg [i-1] );} // Записываем 595 регистры
мой ник в нете и почте omelchuk890, если что. запомните на всякий. многие знают номер тлф.

seri0shka
Лейтенант
Сообщения: 391
Зарегистрирован: 09.04.2016{, 12:17}
Репутация: 22
Откуда: Кременчуг
Имя: Сергей

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

#73

Сообщение seri0shka » 16.10.2018{, 12:21}

Sancho писал(а):
16.10.2018{, 09:41}
выполнится reg_595+1 раз!
Да, точно, спасибо за подсказку! Я думал, что i-- выполнится уже при первом проходе, не нашёл толкового описания. Теперь всё стало на свои места. И ещё 20 байт экономии (откуда?).

6altay
Рядовой
Сообщения: 1
Зарегистрирован: 22.09.2023{, 09:25}
Репутация: 0
Имя: Николай

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

#74

Сообщение 6altay » 23.10.2023{, 06:34}

Добрый день. Помогите разобраться с блоком автора по 74HC165. Что то у меня не работает. Константы в нем, как я понял это пины ардуины и я могу задать любой пин!? Или все таки там другое какое-то значение?

ecoins
Полковник
Сообщения: 2921
Зарегистрирован: 12.02.2016{, 11:40}
Репутация: 452
Откуда: Шатура
Имя: Энвер

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

#75

Сообщение ecoins » 23.10.2023{, 17:27}

6altay писал(а):
23.10.2023{, 06:34}
Добрый день. Помогите разобраться с блоком автора по 74HC165. Что то у меня не работает. Константы в нем, как я понял это пины ардуины и я могу задать любой пин!? Или все таки там другое какое-то значение?
А разве есть штатный блок 74HC165? Поискал, не нашел. Выложите проект, чтобы можно было бы понять вопрос.
С Уважением, Энвер.

skynet83
Рядовой
Сообщения: 1
Зарегистрирован: 16.01.2024{, 21:29}
Репутация: 0
Имя: Иван

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

#76

Сообщение skynet83 » 16.01.2024{, 21:34}

Ребят код заточек под какие кнопки заточен с фиксацией или без? Мне нужно чтобы работало по принципу нажал включил еще раз нажал выключил.

Отправлено спустя 3 часа 44 минуты 36 секунд:
165_595_Master_3_lines_(CODE).ubi проверил в протеусе - работает только 1 регистр остальные 3 молчат.

Artem851213
Рядовой
Сообщения: 29
Зарегистрирован: 11.09.2020{, 20:29}
Репутация: 1
Откуда: Almaty
Имя: Artem

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

#77

Сообщение Artem851213 » 06.03.2024{, 18:39}

Вечер добрый !!!Ребята так в итоге есть нормальный рабочий пользовательский блок под 165 микросхему? :smile427:

WildCat
Лейтенант
Сообщения: 422
Зарегистрирован: 04.06.2022{, 04:14}
Репутация: 48
Имя: Михаил

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

#78

Сообщение WildCat » 06.03.2024{, 19:23}

Artem851213 писал(а):
06.03.2024{, 18:39}
Ребята так в итоге есть нормальный рабочий пользовательский блок под 165 микросхему?
Есть

Я пользуюсь блоком 165+595 из этой темы
viewtopic.php?f=88&t=3535&p=83426&hilit ... %8B#p83426

При желании блок можно настроить (код) под неделе количество регистров

Ответить

Вернуться в «Новые»