Вопрос из серии "Советы мастеров".

Sonologist
Sonologist аватар
Offline
Зарегистрирован: 08.06.2018

Возможно вопрос бессмысленен, но всёже...

Предположим, в лупе присутствуют объемный цикл for() на 1000 строк c большим количеством вычислений и проверок. Естественно, он выполняется медленнее, нежели, скажем, простое присвоение значения какой-либо переменной (int aaa=123;). Как грамотнее расположить эти объекты? Сначала объемный, а потом короткий. Или наоборот? Или без разницы?

Заранее спасибо!

b707
Онлайн
Зарегистрирован: 26.05.2017

Если в вашей системе не поддерживается многозадачность (хотя в виде костыля типа RTOS) - у вас в луп не должно быть подобных циклов

rkit
Онлайн
Зарегистрирован: 23.11.2016

Код пишут соответственно задаче. Задача не поставлена, как всегда.

wdrakula
wdrakula аватар
Offline
Зарегистрирован: 15.03.2016

Sonologist пишет:

Возможно вопрос бессмысленен...

Предположим, в лупе присутствуют объемный цикл for() на 1000 строк c большим количеством вычислений и проверок.

Это значит, что loop() написан неправильно. Дальнейшие предположение стоит обсуждать после изменения loop().

-----------------------

Ты ж всегда можешь спросить меня по почте и не позориться? ;))) Или так интереснее?

wdrakula
wdrakula аватар
Offline
Зарегистрирован: 15.03.2016

Я добавлю отдельным постом:

Правило "короткого лупа"  - конечно не догма. НО ЧАЩЕ ВСЕГО на микроконтроллерах строят системы, реагирующие на какие-либо воздействия, будь то данные сенсоров или действия оператора. Опять же "ЧАЩЕ ВСЕГО", независимо от способа фиксации воздействия (через прерывание или опросом), при фиксации поднимается флаг, который затем обрабатывается в loop().

Так вот время выполнения loop() получается определяет время реакции системы на воздействие. Снова не говорю, что всегда, но ОБЫЧНО разработчик хочет быстрой реакции ;))), а не задумчивости на секунды.

Таким образом желаемое время выполнения loop() = ожидаемое время реакции системы на воздействие.

=====================

Исходя из древнего правила: "делай хорошо, плохо - само получится!", следует проектировать свои системы так, чтобы всегда можно было "добавить кнопку". Физиологически нормальное ожидание реакции на нажатие - 100-500 мс, то есть не более полсекунды. Хотя лично мне кажется полсекунды - уже многовато. Однако, не стану спорить, есть много исключений из этого подхода.

Sonologist
Sonologist аватар
Offline
Зарегистрирован: 08.06.2018

wdrakula пишет:

Я добавлю отдельным постом:

Правило "короткого лупа"  - конечно не догма. НО ЧАЩЕ ВСЕГО на микроконтроллерах строят системы, реагирующие на какие-либо воздействия, будь то данные сенсоров или действия оператора. Опять же "ЧАЩЕ ВСЕГО", независимо от способа фиксации воздействия (через прерывание или опросом), при фиксации поднимается флаг, который затем обрабатывается в loop().

Так вот время выполнения loop() получается определяет время реакции системы на воздействие. Снова не говорю, что всегда, но ОБЫЧНО разработчик хочет быстрой реакции ;))), а не задумчивости на секунды.

Таким образом желаемое время выполнения loop() = ожидаемое время реакции системы на воздействие.

=====================

Исходя из древнего правила: "делай хорошо, плохо - само получится!", следует проектировать свои системы так, чтобы всегда можно было "добавить кнопку". Физиологически нормальное ожидание реакции на нажатие - 100-500 мс, то есть не более полсекунды. Хотя лично мне кажется полсекунды - уже многовато. Однако, не стану спорить, есть много исключений из этого подхода.

Спасибо, Влад.  Суть уловил. Касательно неправильности лупа - я, конечно аггравировал намеренно, упоминая "1000 строк" только для того, чтобы выпукло озвучить вопрос.

Green
Offline
Зарегистрирован: 01.10.2015

Бывает нужно править ужасно написанный чужой код, типа как в примере...
Делаешь прерывание по таймеру с нужным периодом и размещаешь там что необходимо.
Ну а в луп добавляешь неспешные процессы.