Параллельное управление тремя реле с помощью трех потенциометров

apg_777
Offline
Зарегистрирован: 22.09.2020

Поставьте Serial.println и убедитесь сколько раз это было сделано.

Это форум или что? Тот же digitalRead превращается в кучу команд и не важно, в каком компиляторе это сделано, присвоение в любом случае короче. Любой вызов функции превращается как минимум в загон в стек адреса возврата и параметров, плюс возврат результата, вытаскивание адреса возврата и прыжок обратно. Ну не бывает короче, чем просто обращение к переменной, которое в большинстве случаев просто обмен регистрами.

Про те же 9 миллионов. Это наглядный пример доверия к любимой функции этого форума millis(). У меня micros(), но это значения не имеет. Обмен данными в любом случае происходит быстрее, чем вызов функции.

Если человек от вас просит помощи, то ответ должен быть конкретным, а не отправка в поиск. А конкретно в этом случае millis самый худший вариант — контроллер не должен работать как счётчик, для этого есть таймеры. Но нет, давайте изобразим из себя крутых программистов!

А если вмешался какой-то дедок, то чего он может знать! Не поверите, знает! И в большинстве случаев не пользуется модулями, потому что готовая схема оказывается гораздо экономичней, чем сборка из модулей. По сути модули это функции, а общая схема это программа. И если убрать лишнее, то получится схема проще, а программа оптимальней.

Но здесь это никому не нужно. Главное пальцы покрутить.

Это не форум, а так, название.

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

О как забавно то... Я то думал, что 9 миллионов - это просто недомыслие - ну не обратил человек внимания, что результат какой-то странный...
А тут прям букет - оказывается он это сделал специально! :), чтобы показать нам неадекватность миллис?:)
Тут прям медицинский случай налицо - человек настолько мнит себя великим программистом, что даже свои ляпы пытается представить гениальными ходами :)

Я хочу сказать, что это не просто грубая отмазка - похоже он на самом деле даже не замечает, как "переобулся" на ходу - пытался доказать одно, а как поймали на ошибке - стал доказывать другое.

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

apg_777 пишет:

Это не форум, а так, название.

Добро пожаловать отсюда. :) 

asam
asam аватар
Offline
Зарегистрирован: 12.12.2018

apg_777 пишет:

Про те же 9 миллионов. Это наглядный пример доверия к любимой функции этого форума millis(). У меня micros(), но это значения не имеет. Обмен данными в любом случае происходит быстрее, чем вызов функции.

Это наглядный пример непонимания того, как работает оптимизирующий компилятор. И millis()/micros() тут ни в чем не виноваты

Запустите такой код

long t1, t2, t3;
byte tmp; 
byte flag;
volatile byte flag_v;

void setup() {
  flag = 0;
  flag_v = 0;
  Serial.begin(115200);
  Serial.println("Start");

  t1 = micros();
  for (long i = 0; i < 10000000; i++) {
    tmp = flag;
  }
  t2 = micros();
  for (long i = 0; i < 10000000; i++) {
    tmp = flag_v;
  }
  t3 = micros();
  Serial.print("t2 - t1 = "); Serial.println(t2 - t1);
  Serial.print("t3 - t2 = "); Serial.println(t3 - t2);
}

void loop() {
}

И вы получите 

Start
t2 - t1 = 4
t3 - t2 = 5030444
 
Казалось бы в обоих циклах одно и то же чтение байтового флага, а какая разница! 

 

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

asam пишет:

Как уже сказал выше - без рандом разница в выполнении осталось ровно той-же 18мс на 10000 делений.

Что Вы там сделали "без рандом" - никто не видел. А потому и обсуждать это бессмысленно.

Цитата:

Про то что "что целочисленное деление long занимает гораздо больше времени, чем любая арифметическая операция с плавающей точкой." утверждали? А это и есть, ну если не абсурдное, то уж точно неверное утверждение. 

Неверное утверждение в Вашем последнем предложении.

Приведите Ваш новый код без random и без volatile - тогда появится предмет для обсуждения. Пока говорить не о чем.

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

apg_777 пишет:

Нормальные программисты прекрасно делятся своими наработками и им наплевать на каком языке и как это написано, главное написать максимально эффективный код.

Если заменить слово "нормальные" словом "начинающие", то фраза, пожалуй, даже станет истинной.

С приобретением опыта программист начинает понимать, что "максимальная эффективность":

- является далеко не самой важной характеристикой кода,

- нужна далеко не везде.

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

Цитата:

Вы правда считаете что человек не в состоянии разделить 4 микросекунды на миллион циклов?

Среди тех, кто на форуме появился только что, таких больше половины.

 

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

asam пишет:

apg_777 пишет:

Про те же 9 миллионов. Это наглядный пример доверия к любимой функции этого форума millis(). У меня micros(), но это значения не имеет. Обмен данными в любом случае происходит быстрее, чем вызов функции.

Это наглядный пример непонимания того, как работает оптимизирующий компилятор. И millis()/micros() тут ни в чем не виноваты

Запустите такой код

long t1, t2, t3;

спрошу? почему переменные не беззнаковые?

asam
asam аватар
Offline
Зарегистрирован: 12.12.2018

ua6em пишет:

спрошу? почему переменные не беззнаковые?

А потому что были в исходном посте. На данном временном интервале абсолютно пофиг.

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

apg_777 пишет:

Это форум или что?

По поводу того, что это за форум и для чего он нужен, хорошо написано в прикрепленной теме "Всем начинающим".

Да и вообще, правила сетевой этики настоятельно рекомендуют почитать форум прежде, чем писать на него.

Цитата:

Любой вызов функции превращается как минимум в загон в стек адреса возврата и параметров, плюс возврат результата, вытаскивание адреса возврата и прыжок обратно.

Да?

Скажите это разработчикам архитектуры ARM.

Цитата:

Ну не бывает короче, чем просто обращение к переменной, которое в большинстве случаев просто обмен регистрами.

В очень многих случаях не бывает не только короче, но и длиннее. Сэр что-нибудь слышал об inline функциях? 

Цитата:

Про те же 9 миллионов. Это наглядный пример доверия к любимой функции этого форума millis().

Функция millis - вполне себе нормальная функция. И этот факт не отменяет даже то обстоятельство, что не все этой функцией умеют грамотно пользоваться.

Цитата:

Если человек от вас просит помощи, то ответ должен быть конкретным, а не отправка в поиск.

Так. Конкретно: кто, кому и на каком основании должен?

Лично я считаю, что человек, прежде чем писать на форум, сам много чего должен сделать. Если же он не хочет делать того, что должен, а вместо этого рассчитывает, что за него и поищут, и разжуют, и положат в ротик, то не грех ему напомнить, что должны не только ему, но и он сам.

Цитата:

А если вмешался какой-то дедок, то чего он может знать! Не поверите, знает!...

Но здесь это никому не нужно. Главное пальцы покрутить.

А здесь никто никому на слово не верит. В особенности, когда человек рассказывает о своих знаниях и умениях, не приводя никаких доказательств.

По поводу завсегдатаев форума - всегда можно заглянуть в раздел "Проекты" и узнать, кто что умеет, и кому что нужно. Но гораздо проще всех огульно обвинить в непрофессионализме. 

А где можно посмотреть, что умеет "какой-то дедок"?

sadman41
Offline
Зарегистрирован: 19.10.2016

apg_777 пишет:

sadman41 пишет:
Я думаю, что apg_777 увлекся сражением и забыл о топикстартере, для которого был написан пример. Ему в задаче скоростей прямого доступа к регистрам не требуется, а запутаться с ними он сумеет и без нашей помощи, если будет нужда в том.

Если Вы соизволите прочитать начало ветки, то Вы найдёте отзыв топикстартера на мой ответ. Мой ответ #5, который какая-то добрая душа не забыла заминусовать, и отзыв ТС #10.

Если бы Вы сразу не пыжились от гордости за самый правильный совет в топике, то поняли, бы что ТС остановился именно на "blink без delay" (см. #26 и далее). Для профилактики душевных расстройств рекомендую изучить психологию человека по отзывам на Алиэкспресс практически по любому товару: "Продавец молодец, 5 звезд, товар не открывал". 

apg_777 пишет:

Всё остальное — флуд, который я предложил перенести в другую ветку. Но, судя по всему, данный форум не имеет никакого отношения к реальному программированию, это просто секта "ни строки без millis"!

Нормальные программисты прекрасно делятся своими наработками и им наплевать на каком языке и как это написано, главное написать максимально эффективный код. Лет 35 назад я писал программы на Паскале, в других лабораториях писали на C, начальник писал на Фортране и при этом мы прекрасно делились наработками, не было никакой ругани.

Здесь же табу на всё, что не подходит под некий, никому не известный, стандарт.

В этом форуме нет программистов!

У меня есть предложение. Заводите свой топик с названием "Самый правильный код бесплатно и без смс", где сообщаете о своем стаже, опыте (с приложением сертификата, подтверждающего знание не менее 20 языков на уровне, выше университетского), а так же мнении о других участниках форума. В этом топике предлагаете всем желающим помощь в создании по краткому описанию "на пальцах" самого стандартного (по ГОСТ или ISO - выбор за "заказчиком") и оптимальнейшего из всех оптимальных кода для платформы Arduino с обязательством разъяснить его так, чтобы понял даже кот (или ёж).

Через полгода делаем контрольный замер по количеству удовлетворённых Вашими услугами новичков.

И, да - вы где-то спросоня увидели на форуме объявление, что здесь имеют право писать только профессиональные программисты?

P.S. Порой мне недостаёт Алегира, который с лёгкостью бы объяснил, что 50-летний опыт чтения журнала "Радио" и нюханья хлорного железа - лишь пыль на ботинках тех, кто чинил Алле Пугачевой японскую аппаратуру ещё тогда, когда она не была создана.

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

apg_777 пишет:

В этом форуме нет программистов! ... Ещё раз скажу — здесь нет программистов. ... И ещё раз повторю — в этом форуме программистов нет.

Ну, зачем так обижать? Как нет? А apg_777???

apg_777 пишет:

это было сделано специально

А, так это специально было сделано, чтобы потроллить дурачков и чтобы они возбудились. ...

Где-то я это уже видел .... а, ну да, конечно: "А допереть что volatile void как "возвращаемое значение" есть .. нонсенс и банальный троллинг "гураков" (заменить буковку на свое усмотрение) - .. не доперло!".

Поздравляю, господа, мы обрели нового Великого! :-)))

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

sadman41 пишет:

P.S. Порой мне недостаёт Алегира, который с лёгкостью бы объяснил, что 50-летний опыт чтения журнала "Радио" и нюханья хлорного железа - лишь пыль на ботинках тех, кто чинил Алле Пугачевой японскую аппаратуру ещё тогда, когда она не была создана.

Да ну? Первый японский аппарат (диктофон) юзал в 1965, это когда жеж он чинил?

SLKH
Offline
Зарегистрирован: 17.08.2015

apg_777 пишет:

asam пишет:

apg_777 пишет:

Меня здесь обвиняли про 9 миллионов, но никому в голову не пришло, что это было сделано специально. Результат был реальный, поэтому нормальный программист, получив те же результаты задумался бы. 

Поясните пожалуйста что было сделано специально и о чем должен был задуматься нормальный программист?

задумайтесь. 4 микросекунды на кучу циклов. Ясное дело что что-то не так, однако это реальный ответ ардуины. Я просто скопипастил результат.

а программист (без прилагательных) на вашем месте задумался бы, быстро нашел грубую ошибку в своей программе и не стал бы позориться, выкладывая на всеобщее обозрение эту вашу хню с 4 микросекундами и 9 миллионами.

- "это реальный ответ ардуины. Я просто скопипастил результат" (apg_777)

- "Я не знаю, у меня программа так посчитала" ( типовая "1с-бухгалтерша")

Logik
Offline
Зарегистрирован: 05.08.2014

Так хочется активно поучаствовать в вашей дискусии, но только вот нихрена не могу понять о чем она... Почитаю еще.

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

SLKH пишет:
эту вашу хню
Не катите бочку на человека, он полезное дело делает.

Вот Вы раньше знали, что одно присваивание байтовой переменной работает в 9 миллионов раз быстрее, чем "десять миллионов вызовов digitalRead + накладные расходы на цикл"? Именно в 9, а не в 8, и не в 10? Наверняка ведь не знали. И я не знал. А теперь вот знаем. Для того и форумы нужны :-)

SLKH
Offline
Зарегистрирован: 17.08.2015

Logik пишет:

Так хочется активно поучаствовать в вашей дискусии, но только вот нихрена не могу понять о чем она... Почитаю еще.

об японских диктофонах.

SLKH
Offline
Зарегистрирован: 17.08.2015

ЕвгенийП пишет:

SLKH пишет:
эту вашу хню
Не катите бочку на человека, он полезное дело делает.

Вот Вы раньше знали, что одно присваивание байтовой переменной работает в 9 миллионов раз быстрее, чем "десять миллионов вызовов digitalRead + накладные расходы на цикл"? Именно в 9, а не в 8, и не в 10? Наверняка ведь не знали. И я не знал. А теперь вот знаем. Для того и форумы нужны :-)

Вообще-то я на эти грабли наступал при моих первых тыканиях в ардуину: для получения короткой и достаточно точной паузы тоже написал что-то похожее на "for (i = 0; i < чего-то; i++) {tmp = flag;}" - ну и получил соответственно.

узнал, что ардуинский компилятор компилирует не то, что я ему пишу, а то, что ему представляется красивым в данный момент, а мой текст для него - только повод для вдохновения: "я художник, я так вижу!"

 
ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

SLKH пишет:
ардуинский компилятор компилирует не то, что я ему пишу, а то, что ему представляется красивым в данный момент
НЕ только ардуиновский. Компиляторы - они вообще своею жизнью живут "нам так сразу не понять".

SLKH
Offline
Зарегистрирован: 17.08.2015

ЕвгенийП пишет:

SLKH пишет:
ардуинский компилятор компилирует не то, что я ему пишу, а то, что ему представляется красивым в данный момент
НЕ только ардуиновский. Компиляторы - они вообще своею жизнью живут "нам так сразу не понять".

у меня в анамнезе Clipper - в нём что пальцАми натыкаешь, то и в *.exe будет (в т.ч. при каких-то опциях туда даже исходный текст программы впихивается для отладки). После него многие сишные извращения тяжело воспринимаются.

sadman41
Offline
Зарегистрирован: 19.10.2016

Ну, Клиппер - для работы с человеком, а Си - с компутером. Я тоже когда-то пописывал на этом клиппере мелочевку для работы с БД...

asam
asam аватар
Offline
Зарегистрирован: 12.12.2018

SLKH пишет:

узнал, что ардуинский компилятор компилирует не то, что я ему пишу, а то, что ему представляется красивым в данный момент, а мой текст для него - только повод для вдохновения: "я художник, я так вижу!"

Ну поменяй в platform.txt флаг оптимизации с -Os на -O0 и будет тебе счастие!

SLKH
Offline
Зарегистрирован: 17.08.2015

sadman41 пишет:

Ну, Клиппер - для работы с человеком, а Си - с компутером. Я тоже когда-то пописывал на этом клиппере мелочевку для работы с БД...

(*мечтательно) работа с массивами... а с текстами... 

apg_777
Offline
Зарегистрирован: 22.09.2020

Ну, спасибо за подтверждение того, что я не ошибся :) Пожалуй последую совету и свалю отсюда. Здесь только детский сад.

apg_777
Offline
Зарегистрирован: 22.09.2020

andriano пишет:

А где можно посмотреть, что умеет "какой-то дедок"?

Можно. В своё время я разрабатывал систему фиксации грозовых разрядов, проходящих через самолёт. Так вот. ТУ-154-му, который принял наработки, было наплевать на попадание молнии, а супер-пупер крутой Сухой Суперджет, при разработке которого были игнорированы эти наработки сдох при первом же попадании молнии.

Гуляйте дальше! Вы очень похожи на разработчиков SSJ-100.

Ещё раз повторю. Это не форум!

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

apg_777 пишет:

Можно. В своё время я разрабатывал ...

вот именно что "в свое время..". В свое время многие были "ого-го-го". Но прошлые заслуги никому не интересны.

А если теперь вы не в состоянии понять, что миллион присваиваний одной и той же переменной компилятор оптимизирует (сокращает) до одного действия  - это просто означет, что ваше время прошло.

sadman41
Offline
Зарегистрирован: 19.10.2016

Я тут с управляющей компанией сужусь - они тоже постоянно заявляют столько выполненных работ, что хватило бы на постройку нового дома )) Только доказать ничем кроме слов не могут.

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

sadman41 пишет:
Я тут с управляющей компанией сужусь - они тоже постоянно заявляют столько выполненных работ, что хватило бы на постройку нового дома )) Только доказать ничем кроме слов не могут.

ты эту тему как-нибудь в отвлечённых обозначь, думаю народу будет интересно

sadman41!!! Это не ты минусишь, если да - требую satisfactio ;-)))

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

sadman41 пишет:
Я тут с управляющей компанией сужусь - они тоже постоянно заявляют столько выполненных работ, что хватило бы на постройку нового дома )) Только доказать ничем кроме слов не могут.

эти могут :)

У меня дочь получила квартиру по расселению аварийного жилья, старый дом снесли в марте 19-ого, а квитки приходят до сих пор! Куда только не писал ... единственно что меняется - накопившийся к лету "долг" списали, а с августа пошли копить по новой. Квиточки идут :)

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

apg_777 пишет:

Можно. В своё время я разрабатывал систему фиксации грозовых разрядов, проходящих через самолёт. Так вот. ТУ-154-му, который принял наработки, было наплевать на попадание молнии, а супер-пупер крутой Сухой Суперджет, при разработке которого были игнорированы эти наработки сдох при первом же попадании молнии.

Еще раз: где можно посмотреть? Конкретно. (я не спрашивал "можно ли?", я спросил "где?")

Цитата:

Ещё раз повторю. Это не форум!

Вряд ли Вы можете об этом судить.

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

andriano пишет:
где можно посмотреть?
Ну, чего привязались? Я вот город от динозавров охраняю. И где это можно увидеть? Нигде нельзя! Их потому и нет ни одного, что я от них охраняю.

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

ЕвгенийП пишет:

andriano пишет:
где можно посмотреть?
Ну, чего привязались? Я вот город от динозавров охраняю. И где это можно увидеть? Нигде нельзя! Их потому и нет ни одного, что я от них охраняю.

Ну отчего же?

Можно указать точные координаты, а также точное время, в которое необходимо прибыть по данным координатам, чтобы своими глазами увидеть, что динозавров нет, ни одного!