На версии 9.7.1
ограничения сайта не дают заливать больше 10 файлов остальные блоки будут ниже
два направления:
--- через байтовое управление
--- через байтовый массив управление
Продолжим тематику изучения «мусорных»* контроллеров на примере 8266 с расширителем портов 595.
* — по мнению разработчиков FLProg
Не требует тормозной библиотеки.
Из интересного, пожалуй, есть тут в аппаратном SPI буфер данных, а именно 16 слов по 32 бита = 64 байта.
И, как вы уже все поняли, это значит, что можно, заполнив этот буфер, отправить одной транзакцией данные сразу на все 64 каскада, исключая лишние операции процессора.
Доступ через регистры.
Нечто подобное я делал на 328-й через USART, но там был двойной байтовый буфер, что мало, но и его хватило значительно, чтобы превзойти аппаратный SPI свой.
Можно задать:
— любую частоту тактирования (округлится до ближайшей);
— каскадов 1–64;
— пин защёлки на выбор;
— смену направления битов;
— непрерывную отправку в каждом цикле.
64 каскада — это не предел, а выбрал, чтобы заполнить весь буфер.
Сравнивать будем с блоком-кандидатом на типичные 100500 контроллеров.
Как показала практика, если сделать блок, заточенный под конкретный МК, то тот же 328-й может быть в более чем 5 раз быстрее, чем блок кандидатов.
Здесь результаты поскромнее, и, более того, их занижает ещё библиотека FLProg от чистового варианта.
Тестирование:
Возьмём частоту 4 МГц, 1 каскад, диспетчер отключен.
декодер видит 5 которую отправили
а тут декодер невидит потомучто защёлка у них через единицу движется
но там тоже 5 по моси
возьмём 4 каскада
тут уже через буфер видим одну транзакцию
декодер показывает правильную рашифровку и движения байтов
тут типичная древняя SPI по байтовая отправка
с кучей трат на время между ними
74HC595 для 8266 через его SPI
Правила форума
Рекомендации по размещению блоков:
Автор блока создает подробное описание блока, отличие от подобных(если есть на данный момент).Сложные блоки очень желательно с примерами.
При выходе новых версий редактирует/дополняет свой первый пост с указанием даты, версии, причины.
В каждой теме обсуждается только выложенный автором блок - баги, возможность (или предложение) доработки и прочие хотелки.
Свои блоки, переработанные, с другими библиотеками, протоколами и т.д.- размещаем либо сами отдельно, либо обсуждаем и дорабатываем в форуме Разработка блоков.
Пользователи улучшив блок автора и проверив его работоспособность - могут обратиться к автору или модераторам с просьбой добавить их версию блока в первое сообщение темы.
Рекомендации по размещению блоков:
Автор блока создает подробное описание блока, отличие от подобных(если есть на данный момент).Сложные блоки очень желательно с примерами.
При выходе новых версий редактирует/дополняет свой первый пост с указанием даты, версии, причины.
В каждой теме обсуждается только выложенный автором блок - баги, возможность (или предложение) доработки и прочие хотелки.
Свои блоки, переработанные, с другими библиотеками, протоколами и т.д.- размещаем либо сами отдельно, либо обсуждаем и дорабатываем в форуме Разработка блоков.
Пользователи улучшив блок автора и проверив его работоспособность - могут обратиться к автору или модераторам с просьбой добавить их версию блока в первое сообщение темы.
-
lfgjikjjyj
- Лейтенант
- Сообщения: 391
- Зарегистрирован: 27 мар 2025, 12:13
- Имя: Коля
- Поблагодарили: 106 раз
74HC595 для 8266 через его SPI
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Последний раз редактировалось lfgjikjjyj 07 авг 2026, 12:06, всего редактировалось 4 раза.
-
lfgjikjjyj
- Лейтенант
- Сообщения: 391
- Зарегистрирован: 27 мар 2025, 12:13
- Имя: Коля
- Поблагодарили: 106 раз
Re: 74HC595 для 8266 через его SPI
возьмём 64 каскада
скорость лупа 7000 в сек получится
Если поставить тактирование 16 МГц, то скорость лупа — 22 150 в сек, длина лупа — 45 мкс.
Если поставить 20 МГц, то скорость лупа — 25 900 в сек, длина лупа — 38,5 мкс.
Результаты замеров:
Пока кандидат работает с одним каскадом, то профильный блок успевает пообщаться примерно с 6 каскадамю.
Или пока кандидат отправляет на 4 каскада, то профильный блок успевает поработать с примерно 14 каскадами...
Ну и если увеличивать частоту, то и транзакция проходит быстрее. Если на 64 каскада она занимает от лупа на 4 МГц 128 мкс, то на 8 МГц — 64 мкс, а на 16 МГц — 32 мкс.
Как пользоваться и настроить блок:
Выбираем общее количество каскадов.
В каждом блоке по 4 каскада, сумма которых должна равняться общему, а также выставляем идентификатор блока от 0 до 15.
К примеру, нужно нам 3 каскада: берём один блок, ставим общее 3 каскада и ниже 3 каскада от экземпляра, идентификатор 0.
Если надо 15 каскадов:
берём 4 блока, выбираем общее каскадов 15, и в одном блоке ставим 4 каскада, идентификатор 0;
второй блок — 4 каскада, идентификатор 1;
третий блок — 4 каскада, идентификатор 2;
четвёртый блок — 3 каскада, идентификатор 3.
Идентификатор нам нужен, чтобы данные блока ложились в одну ячейку памяти, а их, как вы помните, у нас 16 слов по 32 бита, то есть 16 ячеек по 4 байта, ну или 4 микросхемы в данном случае.
Ну и мне было лень делать в одном блоке 64 входа, 64 условий и т. д.
скорость лупа 7000 в сек получится
Если поставить тактирование 16 МГц, то скорость лупа — 22 150 в сек, длина лупа — 45 мкс.
Если поставить 20 МГц, то скорость лупа — 25 900 в сек, длина лупа — 38,5 мкс.
Результаты замеров:
Пока кандидат работает с одним каскадом, то профильный блок успевает пообщаться примерно с 6 каскадамю.
Или пока кандидат отправляет на 4 каскада, то профильный блок успевает поработать с примерно 14 каскадами...
Ну и если увеличивать частоту, то и транзакция проходит быстрее. Если на 64 каскада она занимает от лупа на 4 МГц 128 мкс, то на 8 МГц — 64 мкс, а на 16 МГц — 32 мкс.
Как пользоваться и настроить блок:
Выбираем общее количество каскадов.
В каждом блоке по 4 каскада, сумма которых должна равняться общему, а также выставляем идентификатор блока от 0 до 15.
К примеру, нужно нам 3 каскада: берём один блок, ставим общее 3 каскада и ниже 3 каскада от экземпляра, идентификатор 0.
Если надо 15 каскадов:
берём 4 блока, выбираем общее каскадов 15, и в одном блоке ставим 4 каскада, идентификатор 0;
второй блок — 4 каскада, идентификатор 1;
третий блок — 4 каскада, идентификатор 2;
четвёртый блок — 3 каскада, идентификатор 3.
Идентификатор нам нужен, чтобы данные блока ложились в одну ячейку памяти, а их, как вы помните, у нас 16 слов по 32 бита, то есть 16 ячеек по 4 байта, ну или 4 микросхемы в данном случае.
Ну и мне было лень делать в одном блоке 64 входа, 64 условий и т. д.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
-
lfgjikjjyj
- Лейтенант
- Сообщения: 391
- Зарегистрирован: 27 мар 2025, 12:13
- Имя: Коля
- Поблагодарили: 106 раз
Re: 74HC595 для 8266 через его SPI
в общем сайт запрещает грузить больше 10 файлов
так что продолжим тут
-- работа через массив
Оказалось намного удобнее, да и луп стал чуть побыстрее.
Удалились идентификаторы и дополнительные 4 байта для каскадов.
В итоге теперь один блок, и требуется 3 действия: нужно нажать «массив» и ввести имя и количество каскадов (они же индексы для массива теперь) либо выбрать, если в проекте уже настроен массив.
Также, если его нет и вы создали его прямо в блоке, он всё равно появится во всём проекте через штатный блок массива, а там через индексы и дата вносятся изменения.
Единственное, что напрягает, — это почему-то Сергей отказался добавлять в массив импорт Excel, хотя чтобы заполнить несколько сотен данных массива в Excel — это пару секунд надо, а вот в программе — мат будет стоять полчаса.
В остальном массив просто порадовал.
Как создавать байтовый кадр действий, я уже рассказывал.
Берёте битовую шкалу (она же соответствует ножкам расширителя), выбираете, где будет 1, где 0, и суммируете (то есть, к примеру, гидроузел: составляем кадр «наполнить бочку» — выбираем, где какие клапана, мотор включить, это байт «наполнить»; далее «перемес»: составляем новый кадр «перемес» — так же на каких портах что открыть, суммируем биты, это байт «перемеса»; или «полив» — те же действия... У меня 16 комбинаций набралось байтовых на два регистра).
так что продолжим тут
-- работа через массив
Оказалось намного удобнее, да и луп стал чуть побыстрее.
Удалились идентификаторы и дополнительные 4 байта для каскадов.
В итоге теперь один блок, и требуется 3 действия: нужно нажать «массив» и ввести имя и количество каскадов (они же индексы для массива теперь) либо выбрать, если в проекте уже настроен массив.
Также, если его нет и вы создали его прямо в блоке, он всё равно появится во всём проекте через штатный блок массива, а там через индексы и дата вносятся изменения.
Единственное, что напрягает, — это почему-то Сергей отказался добавлять в массив импорт Excel, хотя чтобы заполнить несколько сотен данных массива в Excel — это пару секунд надо, а вот в программе — мат будет стоять полчаса.
В остальном массив просто порадовал.
Как создавать байтовый кадр действий, я уже рассказывал.
Берёте битовую шкалу (она же соответствует ножкам расширителя), выбираете, где будет 1, где 0, и суммируете (то есть, к примеру, гидроузел: составляем кадр «наполнить бочку» — выбираем, где какие клапана, мотор включить, это байт «наполнить»; далее «перемес»: составляем новый кадр «перемес» — так же на каких портах что открыть, суммируем биты, это байт «перемеса»; или «полив» — те же действия... У меня 16 комбинаций набралось байтовых на два регистра).
У вас нет необходимых прав для просмотра вложений в этом сообщении.
-
lfgjikjjyj
- Лейтенант
- Сообщения: 391
- Зарегистрирован: 27 мар 2025, 12:13
- Имя: Коля
- Поблагодарили: 106 раз
Re: 74HC595 для 8266 через его SPI
байтовый блок как в первом сообщении только с мелкими правка
-- чуть быстрее стал функционал тот же
-- чуть быстрее стал функционал тот же
У вас нет необходимых прав для просмотра вложений в этом сообщении.
-
lfgjikjjyj
- Лейтенант
- Сообщения: 391
- Зарегистрирован: 27 мар 2025, 12:13
- Имя: Коля
- Поблагодарили: 106 раз
Re: 74HC595 для 8266 через его SPI
================================================================
Обновлённые :
— любую частоту тактирования (округлится до ближайшей);
— каскадов 1–64;
— смену направления битов;
+ Режим Статический массив непрерывно
+ Режим Обновление данных непрерывно
+ Режим Обновление данных по изменению (приоритет 595)
+ пин защёлки фиксированый апаратный Д8
================================================================
Статический массив непрерывно:
Создаётся в блоке либо указывается внешний массив, и он будет вращаться постоянно. Это самый быстрый режим.
Обновление данных непрерывно:
Шлёт массив непрерывно, можно менять значения в нём (как вариант — борьба с мусором на 595 от статики, шумов, наводок и прочего: если с десяток данных придёт «багованных» на выходах у 595, то при транзакции пакета, к примеру, в 4 мкс, клапана и моторы их даже не заметят — они тут же затрутся новыми значениями).
Обновление данных по изменению:
Если на входе поменялись данные, то они отправятся один раз.
Применён аппаратный пин для защёлки, но он всего один; у него остальные два почему-то висят на другом канале, и связи с ними нету.
За щет апаратности сам пин вообще не участвует в лупе.
================================================================
Результаты замеров:
У кандидата взял режим (в каждом цикле), ибо статики у него нет, но принцип тот же.
А также этот же режим использовал к своему: обновление данных непрерывно.
Так как данные не менялись, то и получается, что оба режима выполняли один функционал. Третьим вариантом выбрал у него изменение входов, аналогичное моему: имитация изменения — это генератор на 100 мс период через массив данных.
Режим у кандидата в начале был грустный, а вот другой — прям бодричком.
Но я сделал третий режим приоритет на 595 на случай длинного лупа, чтобы он мог в каждом лупе отправлять, так что тут такое двоякое впечатление.
Но будем надеяться, что они починят кандидата на 100500 контроллеров и он начнёт давать нормальные результаты либо начнут использовать возможности каждого МК.
А так смотреть: пока он отправляет 1 каскад, а профильник уже обновил дважды 64 каскада — ну, это такое...
Обновлённые :
— любую частоту тактирования (округлится до ближайшей);
— каскадов 1–64;
— смену направления битов;
+ Режим Статический массив непрерывно
+ Режим Обновление данных непрерывно
+ Режим Обновление данных по изменению (приоритет 595)
+ пин защёлки фиксированый апаратный Д8
================================================================
Статический массив непрерывно:
Создаётся в блоке либо указывается внешний массив, и он будет вращаться постоянно. Это самый быстрый режим.
Обновление данных непрерывно:
Шлёт массив непрерывно, можно менять значения в нём (как вариант — борьба с мусором на 595 от статики, шумов, наводок и прочего: если с десяток данных придёт «багованных» на выходах у 595, то при транзакции пакета, к примеру, в 4 мкс, клапана и моторы их даже не заметят — они тут же затрутся новыми значениями).
Обновление данных по изменению:
Если на входе поменялись данные, то они отправятся один раз.
Применён аппаратный пин для защёлки, но он всего один; у него остальные два почему-то висят на другом канале, и связи с ними нету.
За щет апаратности сам пин вообще не участвует в лупе.
================================================================
Результаты замеров:
У кандидата взял режим (в каждом цикле), ибо статики у него нет, но принцип тот же.
А также этот же режим использовал к своему: обновление данных непрерывно.
Так как данные не менялись, то и получается, что оба режима выполняли один функционал. Третьим вариантом выбрал у него изменение входов, аналогичное моему: имитация изменения — это генератор на 100 мс период через массив данных.
Режим у кандидата в начале был грустный, а вот другой — прям бодричком.
Но я сделал третий режим приоритет на 595 на случай длинного лупа, чтобы он мог в каждом лупе отправлять, так что тут такое двоякое впечатление.
Но будем надеяться, что они починят кандидата на 100500 контроллеров и он начнёт давать нормальные результаты либо начнут использовать возможности каждого МК.
А так смотреть: пока он отправляет 1 каскад, а профильник уже обновил дважды 64 каскада — ну, это такое...
У вас нет необходимых прав для просмотра вложений в этом сообщении.
-
lfgjikjjyj
- Лейтенант
- Сообщения: 391
- Зарегистрирован: 27 мар 2025, 12:13
- Имя: Коля
- Поблагодарили: 106 раз
Re: 74HC595 для 8266 через его SPI
================================================================
Обновлённые :
*******************************************************************************************
================================================================
На 1,2 скорость упала от 1,0 на мелких каскадах, но значительно поднялась на больших.
На 2,0 — это больше переход по части на 32-битное общение от байтового, но и тут двоякое впечатление, но большие каскады приподнялись.
2,0 — это про большие каскады.
1,2 — это уже скорее компромисс малых и больших.
================================================================
Результаты замеров:
Обновлённые :
*******************************************************************************************
================================================================
На 1,2 скорость упала от 1,0 на мелких каскадах, но значительно поднялась на больших.
На 2,0 — это больше переход по части на 32-битное общение от байтового, но и тут двоякое впечатление, но большие каскады приподнялись.
2,0 — это про большие каскады.
1,2 — это уже скорее компромисс малых и больших.
================================================================
Результаты замеров:
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость