Fast Pins - (быстрые пины). -- Оптимизация работы входов/выходов -- digitalRead, digitalWrite, analogRead, analogWrite
Правила форума
Рекомендации по размещению блоков:
Автор блока создает подробное описание блока, отличие от подобных(если есть на данный момент).Сложные блоки очень желательно с примерами.
При выходе новых версий редактирует/дополняет свой первый пост с указанием даты, версии, причины.
В каждой теме обсуждается только выложенный автором блок - баги, возможность (или предложение) доработки и прочие хотелки.
Свои блоки, переработанные, с другими библиотеками, протоколами и т.д.- размещаем либо сами отдельно, либо обсуждаем и дорабатываем в форуме Разработка блоков.
Пользователи улучшив блок автора и проверив его работоспособность - могут обратиться к автору или модераторам с просьбой добавить их версию блока в первое сообщение темы.
Рекомендации по размещению блоков:
Автор блока создает подробное описание блока, отличие от подобных(если есть на данный момент).Сложные блоки очень желательно с примерами.
При выходе новых версий редактирует/дополняет свой первый пост с указанием даты, версии, причины.
В каждой теме обсуждается только выложенный автором блок - баги, возможность (или предложение) доработки и прочие хотелки.
Свои блоки, переработанные, с другими библиотеками, протоколами и т.д.- размещаем либо сами отдельно, либо обсуждаем и дорабатываем в форуме Разработка блоков.
Пользователи улучшив блок автора и проверив его работоспособность - могут обратиться к автору или модераторам с просьбой добавить их версию блока в первое сообщение темы.
- Dryundel
- Полковник
- Сообщения: 2423
- Зарегистрирован: 22 май 2017, 23:15
- Откуда: Ярославль
- Имя: Андрей
- Благодарил (а): 2 раза
- Поблагодарили: 29 раз
Fast Pins - (быстрые пины). -- Оптимизация работы входов/выходов -- digitalRead, digitalWrite, analogRead, analogWrite
Fast Pins
Блок актуален для AVR ATmega168 / 328 и ATtiny85 / 13 (UNO, NANO, MINI, PROMINI)
. .
Актуальная версия:
Fast_Pins_(Быстрые_пины)_V1.2_(Code_-_Professional).ubi
Полностью переработана оптимизация analogWrite.
Доработано описание настроек.
История версий Исправлен баг не полного отключения ШИМ при совместной оптимизации analogWrite и digitalWrite (Аналоговых и Цифровых выходов)
.
Возможности:
- Оптимизация Цифровых входов (digitalRead)
- Оптимизация Цифровых выходов (digitalWrite)
- Оптимизация Аналоговых входов (analogRead)
- Оптимизация Аналоговых(ШИМ) выходов (analogWrite)
- Выбор оптимизируемых позиций
[spoiler=Краткое описание блока]Блок Fast Pins ускоряет работу входов / выходов в стандартно созданном
проекте в десятки раз. Он заменяет все digitalRead, digitalWrite, analogRead, analogWrite
на быстрые аналоги. Эти команды создаются не только штатными блоками вход / выход,
но и многими другими блоками работающими в пинами. К примеру при работе штатного
блока "Матричная клавиатура" 4х4 - 24 таких команд в каждом цикле.
Блок Fast Pins почти не требует настроек. Его надо разместить
в любом месте проекта. Всю работу он сделает автоматически.
Достаточно только выбрать цели оптимизации
Блок актуален только для AVR ATmega168 / 328 и ATtiny85 / 13
Если в проекте использован другой коньроллер замена проигнорируется.
В этом случае блок мешать не будет, но и помогать тоже.[/spoiler]
Тестирование в #23 посте
.
История версий . .
Этот блок ускоряет работу чтения и записи портов в стандартно созданном
проекте в десятки раз. Он заменяет все digitalRead и digitalWrite на быстрые
аналоги. Эти команды создаются не толко блоками вход / выход, но и многими
другими блоками работающими с пинами. К примеру при работе только одного штатного
блока "Матричная клавиатура" 4х4 - выполняется 24 таких команды в каждом цикле программы.
Блок fastDigitalRead / Write не требует настроек. Его надо разместить
в любом месте проекта. Всю работу он сделает автоматически.
Блок актуален только для AVR ATmega168 / 328 и ATtiny85 / 13 (UNO, NANO, MINI, MINIPRO)
Если в проекте использован другой контроллер замена проигнорируется.
В этом случае блок мешать не будет, но и помогать тоже.
.
Альтернативные блоки от [ref=#ff8000]aidar_i[/ref]
Работа с портами ввода и вывода Ардуино через регистры.
.
Пропускаем несколько постов с личным мнением некоторых, сильно продвинутых, товарищей и сразу переходим к посту #12 , посту #19 и посту#20 с тестами!
Блок актуален для AVR ATmega168 / 328 и ATtiny85 / 13 (UNO, NANO, MINI, PROMINI)
. .
Актуальная версия:
Fast_Pins_(Быстрые_пины)_V1.2_(Code_-_Professional).ubi
Полностью переработана оптимизация analogWrite.
Доработано описание настроек.
История версий Исправлен баг не полного отключения ШИМ при совместной оптимизации analogWrite и digitalWrite (Аналоговых и Цифровых выходов)
.
Возможности:
- Оптимизация Цифровых входов (digitalRead)
- Оптимизация Цифровых выходов (digitalWrite)
- Оптимизация Аналоговых входов (analogRead)
- Оптимизация Аналоговых(ШИМ) выходов (analogWrite)
- Выбор оптимизируемых позиций
[spoiler=Краткое описание блока]Блок Fast Pins ускоряет работу входов / выходов в стандартно созданном
проекте в десятки раз. Он заменяет все digitalRead, digitalWrite, analogRead, analogWrite
на быстрые аналоги. Эти команды создаются не только штатными блоками вход / выход,
но и многими другими блоками работающими в пинами. К примеру при работе штатного
блока "Матричная клавиатура" 4х4 - 24 таких команд в каждом цикле.
Блок Fast Pins почти не требует настроек. Его надо разместить
в любом месте проекта. Всю работу он сделает автоматически.
Достаточно только выбрать цели оптимизации
Блок актуален только для AVR ATmega168 / 328 и ATtiny85 / 13
Если в проекте использован другой коньроллер замена проигнорируется.
В этом случае блок мешать не будет, но и помогать тоже.[/spoiler]
Тестирование в #23 посте
.
История версий . .
Этот блок ускоряет работу чтения и записи портов в стандартно созданном
проекте в десятки раз. Он заменяет все digitalRead и digitalWrite на быстрые
аналоги. Эти команды создаются не толко блоками вход / выход, но и многими
другими блоками работающими с пинами. К примеру при работе только одного штатного
блока "Матричная клавиатура" 4х4 - выполняется 24 таких команды в каждом цикле программы.
Блок fastDigitalRead / Write не требует настроек. Его надо разместить
в любом месте проекта. Всю работу он сделает автоматически.
Блок актуален только для AVR ATmega168 / 328 и ATtiny85 / 13 (UNO, NANO, MINI, MINIPRO)
Если в проекте использован другой контроллер замена проигнорируется.
В этом случае блок мешать не будет, но и помогать тоже.
.
Альтернативные блоки от [ref=#ff8000]aidar_i[/ref]
Работа с портами ввода и вывода Ардуино через регистры.
.
Пропускаем несколько постов с личным мнением некоторых, сильно продвинутых, товарищей и сразу переходим к посту #12 , посту #19 и посту#20 с тестами!
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Последний раз редактировалось Dryundel 15 апр 2023, 20:16, всего редактировалось 2 раза.
- Sancho
- Полковник
- Сообщения: 4066
- Зарегистрирован: 25 дек 2015, 17:32
- Откуда: Ярославль.
- Имя: Александр
- Поблагодарили: 5 раз
- Контактная информация:
fastDigital Read / Write - Ускоритель работы портов (быстрые пины)
Блоки от Айдара работают быстрее.
Вся эта скорость эфимерная.
для поиграться.
практически любой пб положит всю скорость работы пина по сравнению со скоростью цикла в несоизмеримое число крат.
скорость работы пина важна при прерываниях, любых.
иначе - просто понты. отыграть несколько мкс на цикле в пару сотен мкс - для этого буду использовать прямую работу с регистрами, код от айдара. чтобы по макс.
сугубо моё мнение. основанное на реалиях.
Вся эта скорость эфимерная.
для поиграться.
практически любой пб положит всю скорость работы пина по сравнению со скоростью цикла в несоизмеримое число крат.
скорость работы пина важна при прерываниях, любых.
иначе - просто понты. отыграть несколько мкс на цикле в пару сотен мкс - для этого буду использовать прямую работу с регистрами, код от айдара. чтобы по макс.
сугубо моё мнение. основанное на реалиях.
мой ник в нете и почте omelchuk890, если что. запомните на всякий. многие знают номер тлф.
-
- Полковник
- Сообщения: 4005
- Зарегистрирован: 12 фев 2016, 11:40
- Откуда: Шатура
- Имя: Энвер
- Благодарил (а): 137 раз
- Поблагодарили: 153 раза
fastDigital Read / Write - Ускоритель работы портов (быстрые пины)
Ну не совсем так, на контроллерах AVR очень быстро набегают задержки, когда несколько блоков вывода.Sancho писал(а): 16 июл 2022, 21:42 иначе - просто понты. отыграть несколько мкс на цикле в пару сотен мкс - для этого буду использовать прямую работу с регистрами, код от айдара. чтобы по макс.
сугубо моё мнение. основанное на реалиях.
----
Блоки ecoins изначально работают на прямую с регистрами и на всех поддерживаемых архитектурах (AVR,ESP,STM,Raspberry Pi Pico, Seeeduino, SAMD21).
И соотвественно почти не "тормозят".
- Dryundel
- Полковник
- Сообщения: 2423
- Зарегистрирован: 22 май 2017, 23:15
- Откуда: Ярославль
- Имя: Андрей
- Благодарил (а): 2 раза
- Поблагодарили: 29 раз
fastDigital Read / Write - Ускоритель работы портов (быстрые пины)
Это откуда такие заявления? Может для начала потестировать тот и другой вариант, после чего писать такие заявления ?Sancho писал(а): 16 июл 2022, 21:42 Блоки от Айдара работают быстрее.
Вся эта скорость эфимерная.
для поиграться.
И чем же здесь помогут блоки от Айдара? Что за голословные заявления?Sancho писал(а): 16 июл 2022, 21:42 практически любой пб положит всю скорость работы пина по сравнению со скоростью цикла в несоизмеримое число крат.
скорость работы пина важна при прерываниях
Есть штатный блок "Матричная клавиатура", там в каждом цикле куча обращений к портам. Для AVR-ки это уже серьезно. И как в этом случае помогут блоки от Айдара?Sancho писал(а): 16 июл 2022, 21:42 иначе - просто понты. отыграть несколько мкс на цикле в пару сотен мкс - для этого буду использовать прямую работу с регистрами, код от айдара. чтобы по макс.
[ref=#ff8000]Sancho[/ref], нафига мозг то людям парить?
Возьми, попробуй, сравни, предложи альтернативу. Или извинись.
- Sancho
- Полковник
- Сообщения: 4066
- Зарегистрирован: 25 дек 2015, 17:32
- Откуда: Ярославль.
- Имя: Александр
- Поблагодарили: 5 раз
- Контактная информация:
fastDigital Read / Write - Ускоритель работы портов (быстрые пины)
Я посмотрел код.Dryundel писал(а): 16 июл 2022, 21:52 Это откуда такие заявления? Может для начала потестировать тот и другой вариант, после чего писать такие заявления ?
Отправлено спустя 41 секунду:
не буду. я знаю.
мой ник в нете и почте omelchuk890, если что. запомните на всякий. многие знают номер тлф.
- Dryundel
- Полковник
- Сообщения: 2423
- Зарегистрирован: 22 май 2017, 23:15
- Откуда: Ярославль
- Имя: Андрей
- Благодарил (а): 2 раза
- Поблагодарили: 29 раз
fastDigital Read / Write - Ускоритель работы портов (быстрые пины)
[ref]ecoins[/ref], выложите пожалуйста ссылку на вашу альтернативную версию работы с портами. Я размещу ее в первом посте, так же как и ссылку на блоки от Айдара. У пользователей должен быть выбор.ecoins писал(а): 16 июл 2022, 21:47 Блоки ecoins изначально работают на прямую с регистрами и на всех поддерживаемых архитектурах (AVR,ESP,STM,Raspberry Pi Pico, Seeeduino, SAMD21).
И соотвественно почти не "тормозят".
- Sancho
- Полковник
- Сообщения: 4066
- Зарегистрирован: 25 дек 2015, 17:32
- Откуда: Ярославль.
- Имя: Александр
- Поблагодарили: 5 раз
- Контактная информация:
fastDigital Read / Write - Ускоритель работы портов (быстрые пины)
есть пб. это случай один на тысячу. который Вам навеял Анатолий.Dryundel писал(а): 16 июл 2022, 21:52 Есть штатный блок "Матричная клавиатура", там в каждом цикле куча обращений к портам. Для AVR-ки это уже серьезно. И как в этом случае помогут блоки от Айдара?
мой ник в нете и почте omelchuk890, если что. запомните на всякий. многие знают номер тлф.
- Dryundel
- Полковник
- Сообщения: 2423
- Зарегистрирован: 22 май 2017, 23:15
- Откуда: Ярославль
- Имя: Андрей
- Благодарил (а): 2 раза
- Поблагодарили: 29 раз
fastDigital Read / Write - Ускоритель работы портов (быстрые пины)
Ну знай. И ни в коем случае не рассказывай об этом другим.



Поражает меня ваша упертость, сэээр.
- Sancho
- Полковник
- Сообщения: 4066
- Зарегистрирован: 25 дек 2015, 17:32
- Откуда: Ярославль.
- Имя: Александр
- Поблагодарили: 5 раз
- Контактная информация:
fastDigital Read / Write - Ускоритель работы портов (быстрые пины)
Извинений не будет. Однозначно.
мой ник в нете и почте omelchuk890, если что. запомните на всякий. многие знают номер тлф.
- Dryundel
- Полковник
- Сообщения: 2423
- Зарегистрирован: 22 май 2017, 23:15
- Откуда: Ярославль
- Имя: Андрей
- Благодарил (а): 2 раза
- Поблагодарили: 29 раз
fastDigital Read / Write - Ускоритель работы портов (быстрые пины)
Ладно, так прощаю.

-
- Полковник
- Сообщения: 4005
- Зарегистрирован: 12 фев 2016, 11:40
- Откуда: Шатура
- Имя: Энвер
- Благодарил (а): 137 раз
- Поблагодарили: 153 раза
fastDigital Read / Write - Ускоритель работы портов (быстрые пины)
Выбор есть и он простой - пользоваться блоками ecoins. Они во многом и получились компактными и быстрыми, потому, что интегрированы в единую ЭкоСистему, которая в том числе и адаптирует функции к разным архитектурам контроллеров.Dryundel писал(а): 16 июл 2022, 21:55 ecoins, выложите пожалуйста ссылку на вашу альтернативную версию работы с портами. Я размещу ее в первом посте, так же как и ссылку на блоки от Айдара. У пользователей должен быть выбор.
- Dryundel
- Полковник
- Сообщения: 2423
- Зарегистрирован: 22 май 2017, 23:15
- Откуда: Ярославль
- Имя: Андрей
- Благодарил (а): 2 раза
- Поблагодарили: 29 раз
fastDigital Read / Write - Ускоритель работы портов (быстрые пины)
ИТАК ТЕСТ
.
Два проекта.
1. Генератор максимальной частоты на цифровом выходе с блоком от [ref=#ff8000]aidar_i[/ref]. .
2. Генератор максимальной частоты на штатном цифровом выходе с блоком fastDigital Read / Write Заключения
Размер проекта
1. 1,8 MB
2. 218 kB
Размер скетча
1. 472 байт
2. 584 байт
Скорость (генерируемая частота) Самое главное!
1. 548385 Гц
2. 548385 Гц
Абсолютный паритет.
Без изменений, штатный блок выхода, генерирует 101943 Гц
И как бы то ни было странно размер скетча в данном случае оказался самым большим 746 байт (Удивило)
Видимо компилятор оптимизировал код при прямом обращении к портам. .
[ref=#ff8000]Sancho[/ref], но ты все равно можешь не извиняться.
.
Два проекта.
1. Генератор максимальной частоты на цифровом выходе с блоком от [ref=#ff8000]aidar_i[/ref]. .
2. Генератор максимальной частоты на штатном цифровом выходе с блоком fastDigital Read / Write Заключения
Размер проекта
1. 1,8 MB
2. 218 kB
Размер скетча
1. 472 байт
2. 584 байт
Скорость (генерируемая частота) Самое главное!
1. 548385 Гц
2. 548385 Гц
Абсолютный паритет.
Без изменений, штатный блок выхода, генерирует 101943 Гц
И как бы то ни было странно размер скетча в данном случае оказался самым большим 746 байт (Удивило)
Видимо компилятор оптимизировал код при прямом обращении к портам. .
[ref=#ff8000]Sancho[/ref], но ты все равно можешь не извиняться.

У вас нет необходимых прав для просмотра вложений в этом сообщении.
- Dryundel
- Полковник
- Сообщения: 2423
- Зарегистрирован: 22 май 2017, 23:15
- Откуда: Ярославль
- Имя: Андрей
- Благодарил (а): 2 раза
- Поблагодарили: 29 раз
fastDigital Read / Write - Ускоритель работы портов (быстрые пины)
А вот это уже неприкрытая, голословная реклама. И можно сказать хамство в данной теме.ecoins писал(а): 16 июл 2022, 23:45 Выбор есть и он простой - пользоваться блоками ecoins. Они во многом и получились компактными и быстрыми, потому, что интегрированы в единую ЭкоСистему, которая в том числе и адаптирует функции к разным архитектурам контроллеров.
Я попросил ссылку на альтернативное предложение, а не бла-бла-бла.
Отправлено спустя 2 минуты 30 секунд:
[ref]ecoins[/ref], , забацайте ка тестик. Может сможете удивить своей ЭкоСистемой.

- Sancho
- Полковник
- Сообщения: 4066
- Зарегистрирован: 25 дек 2015, 17:32
- Откуда: Ярославль.
- Имя: Александр
- Поблагодарили: 5 раз
- Контактная информация:
fastDigital Read / Write - Ускоритель работы портов (быстрые пины)
Для такого проекта я поставлю 531ла3.
Если не сложно, добавь в проект чтение двух аналоговых входов, датчика с real выходом, пид регулятор и любой из входов или выходов, пб или встроенные, - сравни время цикла.
Когда осознаёшь, приходит понимание - быстрые вещи нужны в прерываниях, иначе уже согласен на просто функционирование программы.
Отправлено спустя 3 минуты 26 секунд:
Просто я тоже когда-то был вдохновлен тестами с пинами/регистрами.
Но со временем, осознав масштаб, пользую по мере необходимости, а именно в прерываниях.
мой ник в нете и почте omelchuk890, если что. запомните на всякий. многие знают номер тлф.
- Dryundel
- Полковник
- Сообщения: 2423
- Зарегистрирован: 22 май 2017, 23:15
- Откуда: Ярославль
- Имя: Андрей
- Благодарил (а): 2 раза
- Поблагодарили: 29 раз
fastDigital Read / Write - Ускоритель работы портов (быстрые пины)
Не надо выкручиваться.
За это ответь.

-
- Полковник
- Сообщения: 4005
- Зарегистрирован: 12 фев 2016, 11:40
- Откуда: Шатура
- Имя: Энвер
- Благодарил (а): 137 раз
- Поблагодарили: 153 раза
fastDigital Read / Write - Ускоритель работы портов (быстрые пины)
Если Вы не желаете избегать моего общения в Ваших темах, прошу уклоняться от подобных не лицеприятных формулировок.Dryundel писал(а): 16 июл 2022, 23:53 А вот это уже неприкрытая, голословная реклама. И можно сказать хамство в данной теме.
Я попросил ссылку на альтернативное предложение, а не бла-бла-бла.
Тем более, что они не соответствуют фактическим обстоятельствам.
Тесты я не бацаю, а делаю - обычно это сам по себе не простой труд.Dryundel писал(а): 16 июл 2022, 23:53 Отправлено спустя 2 минуты 30 секунд:
ecoins, , забацайте ка тестик. Может сможете удивить своей ЭкоСистемой.
Тесты в большом количестве размещены в ветках с блоками ecoins.
Все так.Sancho писал(а): 17 июл 2022, 05:44 Если не сложно, добавь в проект чтение двух аналоговых входов, датчика с real выходом, пид регулятор и любой из входов или выходов, пб или встроенные, - сравни время цикла.
Когда осознаёшь, приходит понимание - быстрые вещи нужны в прерываниях, иначе уже согласен на просто функционирование программы.
analogRead() в AVR занимает время >130мкс, digitalWrite() >4 мкс.
Много времени занимает обмен по шине i2c.
Рассматривать быстродействие отдельных блоков с отрывом от реальных, даже простых проектов, не имеет практического смысла.
Проблемы быстродействия работы с пинами проявляются в функциях с прерываниями и в библиотеках для работы с шиной 1-Wire.
Обычно это касается двух функций - дискретное чтение и дискретная запись.
- Dryundel
- Полковник
- Сообщения: 2423
- Зарегистрирован: 22 май 2017, 23:15
- Откуда: Ярославль
- Имя: Андрей
- Благодарил (а): 2 раза
- Поблагодарили: 29 раз
fastDigital Read / Write - Ускоритель работы портов (быстрые пины)
[ref=#ff8000]Sancho[/ref], [ref]ecoins[/ref], вы что, решили вдвоём задавить конкретно меня интеллектом?
Разошлись тут о бесполезности того, что я делаю.
А где вы б... были когда Айдар вот эту тему поднимал? viewtopic.php?f=112&t=7641
Что вы там писали? Напомнить?
Ну а Вы можете и дальше трепать языком....
.
Чо за фигня то? Я вам что, на больную мозоль наступил? Что вы Айдара то не гнобили, в таком случае? Или там все по феншую?
Спелись тут, умники...
[spoiler=Офтоп]
Нет не нашла коса на камень,
Она попала в борозду.
Хотите что б я спорим с вами?
А не пошли бы вы в ....[/spoiler]
Разошлись тут о бесполезности того, что я делаю.
А где вы б... были когда Айдар вот эту тему поднимал? viewtopic.php?f=112&t=7641
Что вы там писали? Напомнить?
А между тем, блоки Айдара работают только с вновь созданными входами выходами и никак не влияют на уже имеющиеся digitalRead / digitalWrite в других блоках. Кроме того, данный алгоритм заменит все digitalRead / digitalWrite в функциях, в том числе и по прерыванию, если таковые имеются в других пользовательских блоках, используемых в проекте.
Ну а Вы можете и дальше трепать языком....
.
Чо за фигня то? Я вам что, на больную мозоль наступил? Что вы Айдара то не гнобили, в таком случае? Или там все по феншую?
Спелись тут, умники...
[spoiler=Офтоп]
Нет не нашла коса на камень,
Она попала в борозду.
Хотите что б я спорим с вами?
А не пошли бы вы в ....[/spoiler]
- Dryundel
- Полковник
- Сообщения: 2423
- Зарегистрирован: 22 май 2017, 23:15
- Откуда: Ярославль
- Имя: Андрей
- Благодарил (а): 2 раза
- Поблагодарили: 29 раз
fastDigital Read / Write - Ускоритель работы портов (быстрые пины)
ПРОДОЛЖАЕМ ТЕСТИРОВАТЬ
Соединяем пины 9 и 10.
Берем сигнал с Pin 9, инвертируем и отправляем на Pin 10 и так в каждом цикле.
Замеряем частоту на этой спайке.
Результат.
1. Просто штатные блоки цифровых входа и выхода. .
Генерируемая частота - 53727 Гц
2. Штатные блоки цифровых входа и выхода + fastDigital Read / Write. .
Генерируемая частота - 837010 Гц
Разница более чем в 15 раз !
Соединяем пины 9 и 10.
Берем сигнал с Pin 9, инвертируем и отправляем на Pin 10 и так в каждом цикле.
Замеряем частоту на этой спайке.
Результат.
1. Просто штатные блоки цифровых входа и выхода. .
Генерируемая частота - 53727 Гц
2. Штатные блоки цифровых входа и выхода + fastDigital Read / Write. .
Генерируемая частота - 837010 Гц
Разница более чем в 15 раз !
У вас нет необходимых прав для просмотра вложений в этом сообщении.
- Dryundel
- Полковник
- Сообщения: 2423
- Зарегистрирован: 22 май 2017, 23:15
- Откуда: Ярославль
- Имя: Андрей
- Благодарил (а): 2 раза
- Поблагодарили: 29 раз
fastDigital Read / Write - Ускоритель работы портов (быстрые пины)
ПЕРЕХОДИМ К ПРАКТИЧЕСКИМ ИСПЫТАНИЯМ
Берем штатный блок "Матричная клавиатура" (4х4) и с помощью дешифратора отправляем в UART номер нажатой кнопки.
Измеряем усредненное количество циклов программы с помощью блока из комплекта "ОТЛАДКА" и тоже отправляем в UART.
[spoiler=1. Штатный блок "Матричная клавиатура"] [/spoiler] .
Результат - 7260 циклов в секунду.
.
Теперь просто кидаем в проект блок fastDigitalReadWrite и повторяем измерение.
[spoiler=Штатный блок Матричная клавиатура + fastDigitalReadWrite] [/spoiler] .
Результат - 43900 циклов в секунду.
.
Вывод: В конкретном случае блок "Матричная клавиатура" тормозил программу более чем на 36600 циклов в секунду, а блок fastDigitalReadWrite исправил эту ситуацию. При этом не внес никаких изменений в алгоритм проекта.
.
Для тех кто пропустил, рекомендую тему - ВРЕМЯ ЦИКЛА или что убивает ваш проект.
Берем штатный блок "Матричная клавиатура" (4х4) и с помощью дешифратора отправляем в UART номер нажатой кнопки.
Измеряем усредненное количество циклов программы с помощью блока из комплекта "ОТЛАДКА" и тоже отправляем в UART.
[spoiler=1. Штатный блок "Матричная клавиатура"] [/spoiler] .
Результат - 7260 циклов в секунду.
.
Теперь просто кидаем в проект блок fastDigitalReadWrite и повторяем измерение.
[spoiler=Штатный блок Матричная клавиатура + fastDigitalReadWrite] [/spoiler] .
Результат - 43900 циклов в секунду.
.
Вывод: В конкретном случае блок "Матричная клавиатура" тормозил программу более чем на 36600 циклов в секунду, а блок fastDigitalReadWrite исправил эту ситуацию. При этом не внес никаких изменений в алгоритм проекта.
.
Для тех кто пропустил, рекомендую тему - ВРЕМЯ ЦИКЛА или что убивает ваш проект.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
- Sancho
- Полковник
- Сообщения: 4066
- Зарегистрирован: 25 дек 2015, 17:32
- Откуда: Ярославль.
- Имя: Александр
- Поблагодарили: 5 раз
- Контактная информация:
fastDigital Read / Write - Ускоритель работы портов (быстрые пины)
[spoiler]
Всё таки Извиняюсь.
Компилятор преобразует функции на этапе сборки в прямую работу с регистрами. Скорость одинакова.
Правда, как он это делает я не могу предположить, т.к.
Извиняюсь ещё раз. Был не прав.
Применений, остаюсь при своём, реально не много - выбор пина при использовании прерываний(типа фазорез), клавиатура и ещё несколько.
[spoiler]
Dryundel писал(а): 16 июл 2022, 21:52Это откуда такие заявления? Может для начала потестировать тот и другой вариант, после чего писать такие заявления ?Sancho писал(а): 16 июл 2022, 21:42 Блоки от Айдара работают быстрее.
Вся эта скорость эфимерная.
для поиграться.И чем же здесь помогут блоки от Айдара? Что за голословные заявления?Sancho писал(а): 16 июл 2022, 21:42 практически любой пб положит всю скорость работы пина по сравнению со скоростью цикла в несоизмеримое число крат.
скорость работы пина важна при прерыванияхЕсть штатный блок "Матричная клавиатура", там в каждом цикле куча обращений к портам. Для AVR-ки это уже серьезно. И как в этом случае помогут блоки от Айдара?Sancho писал(а): 16 июл 2022, 21:42 иначе - просто понты. отыграть несколько мкс на цикле в пару сотен мкс - для этого буду использовать прямую работу с регистрами, код от айдара. чтобы по макс.
[ref=#ff8000]Sancho[/ref], нафига мозг то людям парить?
Возьми, попробуй, сравни, предложи альтернативу. Или извинись.
[/spoiler]
Всё таки Извиняюсь.
Компилятор преобразует функции на этапе сборки в прямую работу с регистрами. Скорость одинакова.
Правда, как он это делает я не могу предположить, т.к.
не даёт прояснений.Dryundel писал(а): 16 июл 2022, 23:48 Размер проекта
1. 1,8 MB
2. 218 kB
Размер скетча
1. 472 байт
2. 584 байт
Извиняюсь ещё раз. Был не прав.
Применений, остаюсь при своём, реально не много - выбор пина при использовании прерываний(типа фазорез), клавиатура и ещё несколько.
[spoiler]
Sancho писал(а): 16 июл 2022, 21:42 Вся эта скорость эфимерная.
для поиграться.
практически любой пб положит всю скорость работы пина по сравнению со скоростью цикла в несоизмеримое число крат.
скорость работы пина важна при прерываниях, любых.
иначе - просто понты. отыграть несколько мкс на цикле в пару сотен мкс - для этого буду использовать прямую работу с регистрами, код от айдара. чтобы по макс.
сугубо моё мнение. основанное на реалиях.
[/spoiler]Sancho писал(а): 17 июл 2022, 05:44 Для такого проекта я поставлю 531ла3.
Если не сложно, добавь в проект чтение двух аналоговых входов, датчика с real выходом, пид регулятор и любой из входов или выходов, пб или встроенные, - сравни время цикла.
Когда осознаёшь, приходит понимание - быстрые вещи нужны в прерываниях, иначе уже согласен на просто функционирование программы.
мой ник в нете и почте omelchuk890, если что. запомните на всякий. многие знают номер тлф.
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 4 гостя