Официальный сайт компании Arduino по адресу arduino.cc
Вопрос из серии "Советы мастеров".
- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
Втр, 12/05/2020 - 16:38
Возможно вопрос бессмысленен, но всёже...
Предположим, в лупе присутствуют объемный цикл for() на 1000 строк c большим количеством вычислений и проверок. Естественно, он выполняется медленнее, нежели, скажем, простое присвоение значения какой-либо переменной (int aaa=123;). Как грамотнее расположить эти объекты? Сначала объемный, а потом короткий. Или наоборот? Или без разницы?
Заранее спасибо!
Если в вашей системе не поддерживается многозадачность (хотя в виде костыля типа RTOS) - у вас в луп не должно быть подобных циклов
Код пишут соответственно задаче. Задача не поставлена, как всегда.
Возможно вопрос бессмысленен...
Предположим, в лупе присутствуют объемный цикл for() на 1000 строк c большим количеством вычислений и проверок.
Это значит, что loop() написан неправильно. Дальнейшие предположение стоит обсуждать после изменения loop().
-----------------------
Ты ж всегда можешь спросить меня по почте и не позориться? ;))) Или так интереснее?
Я добавлю отдельным постом:
Правило "короткого лупа" - конечно не догма. НО ЧАЩЕ ВСЕГО на микроконтроллерах строят системы, реагирующие на какие-либо воздействия, будь то данные сенсоров или действия оператора. Опять же "ЧАЩЕ ВСЕГО", независимо от способа фиксации воздействия (через прерывание или опросом), при фиксации поднимается флаг, который затем обрабатывается в loop().
Так вот время выполнения loop() получается определяет время реакции системы на воздействие. Снова не говорю, что всегда, но ОБЫЧНО разработчик хочет быстрой реакции ;))), а не задумчивости на секунды.
Таким образом желаемое время выполнения loop() = ожидаемое время реакции системы на воздействие.
=====================
Исходя из древнего правила: "делай хорошо, плохо - само получится!", следует проектировать свои системы так, чтобы всегда можно было "добавить кнопку". Физиологически нормальное ожидание реакции на нажатие - 100-500 мс, то есть не более полсекунды. Хотя лично мне кажется полсекунды - уже многовато. Однако, не стану спорить, есть много исключений из этого подхода.
Я добавлю отдельным постом:
Правило "короткого лупа" - конечно не догма. НО ЧАЩЕ ВСЕГО на микроконтроллерах строят системы, реагирующие на какие-либо воздействия, будь то данные сенсоров или действия оператора. Опять же "ЧАЩЕ ВСЕГО", независимо от способа фиксации воздействия (через прерывание или опросом), при фиксации поднимается флаг, который затем обрабатывается в loop().
Так вот время выполнения loop() получается определяет время реакции системы на воздействие. Снова не говорю, что всегда, но ОБЫЧНО разработчик хочет быстрой реакции ;))), а не задумчивости на секунды.
Таким образом желаемое время выполнения loop() = ожидаемое время реакции системы на воздействие.
=====================
Исходя из древнего правила: "делай хорошо, плохо - само получится!", следует проектировать свои системы так, чтобы всегда можно было "добавить кнопку". Физиологически нормальное ожидание реакции на нажатие - 100-500 мс, то есть не более полсекунды. Хотя лично мне кажется полсекунды - уже многовато. Однако, не стану спорить, есть много исключений из этого подхода.
Спасибо, Влад. Суть уловил. Касательно неправильности лупа - я, конечно аггравировал намеренно, упоминая "1000 строк" только для того, чтобы выпукло озвучить вопрос.
Бывает нужно править ужасно написанный чужой код, типа как в примере...
Делаешь прерывание по таймеру с нужным периодом и размещаешь там что необходимо.
Ну а в луп добавляешь неспешные процессы.