Великое переполнение millis()

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

Ого! Неожиданно! Не думал, что ардуинщики сундук смотрят )))

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

ua6em пишет:

Ого! Неожиданно! Не думал, что ардуинщики сундук смотрят )))

Не только сундук.  Я еще после мухаморов ковёр смотрю.  Оч. познавательна. 

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

sva_khv, видимо православный человек? Идеи явно оттуда :))) Вот в теме есть ссылка на учебник, так там автор вообще предлагает тем, кто утверждает, что мнимые величины существуют, зарплату ими выплачивать.

bwn
Offline
Зарегистрирован: 25.08.2014

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

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

Ценнейшее предложение, а главное, моск прочищает моментально.))))

sva_khv
Offline
Зарегистрирован: 19.12.2016

bwn пишет:

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

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

Ценнейшее предложение, а главное, моск прочищает моментально.))))

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

sva_khv
Offline
Зарегистрирован: 19.12.2016

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

sva_khv, видимо православный человек? Идеи явно оттуда

Нет, просто мне что-бы разобраться в чем нибуть надо потрогать это руками, разобрать, собрать(если получиться  :-).   Или хотя бы придумать аналогию.  Вот мнимые числа и фейк ньюс - хорошая аналогия!

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

А че там придумывать, мнимые  - они везде. Заказали с китая ардуинку - она мнимая (деньги заплатил, вроде как есть, а пощупать и залить прогу некуда), услуги почты тоже мнимые - кто их вобще в руках держал?! А их произведение может оказатся реальной ардуиной. Если конечно оба множителя отличны от нуля ;)

maxvalin
Offline
Зарегистрирован: 22.02.2016

Да вы что издеваетесь!?

Где тот админ?!
Ну сколько можно!
Уже ни один способ не работет избавиться от уведомлений.

sva_khv
Offline
Зарегистрирован: 19.12.2016

maxvalin пишет:
Уже ни один способ не работет избавиться от уведомлений.

А это потому что уведомления это мнимые величины. Их не существует. А от того что не существует - избавиться нельзя!  :-))))

maxvalin
Offline
Зарегистрирован: 22.02.2016

Это уж точно)))
Простите все если чем обидел и я не держу зла))
Даже на этот неубиваемый деревянный движек форума.
Всех с праздником прощального воскресения.

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

maxvalin пишет:
Да вы что издеваетесь!? Где тот админ?! Ну сколько можно! Уже ни один способ не работет избавиться от уведомлений.

Работает. Надо просто настойчивей отписываться: в кажном уведомлении тыкать на "отписаться". Через некоторое время уведомления перестанут приходить. И главное (!) - не ставить галочку под камментом.

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

sva_khv пишет:
что-бы разобраться в чем нибуть надо потрогать это руками

Ну, руками Вы не можете потрогать никакие числа. Любое число - это только математическая абстракция.

sva_khv пишет:

Или хотя бы придумать аналогию.  Вот мнимые числа и фейк ньюс - хорошая аналогия!

Никакая аналогия. Вообще никакая. Какими именно свойствами комплесных чисел обладаю фейк ньюс? Никакими.

Если Вам нужно что-то представлять в уме, так и представляйте. Действительное число - точка на прямой. Комплексное число - точка на двумерной плоскости. Чего тут представлять-то?

kolyn
Offline
Зарегистрирован: 18.01.2019

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

двумерной плоскости

  Разрешите съязвить. А разве бывают другие, к примеру, трехмерные ПЛОСКОСТИ? :-))

qwone
qwone аватар
Offline
Зарегистрирован: 03.07.2016

ЕвгенийП пишет:
Если Вам нужно что-то представлять в уме, так и представляйте. Действительное число - точка на прямой. Комплексное число - точка на двумерной плоскости. Чего тут представлять-то?
Вот возьмем пример . Надо построить что-то на государсвенном уровне. Есть план, есть бюджет. Результат. Недострой. Почему ? денег не хватило. А куда пошли деньги которых не хватило. Налево. То есть в мнимую часть. По модулю денег хватает, а по факту не хватило. На действительную часть и построили. Скорее всего проектировщики не знакомы с комплексными числами и не учли расходы на мнимую часть. Тем более мнимая часть она конечно мнимая, а без учета ее влияния ничего не получтся реализовать.

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

kolyn пишет:

А разве бывают другие, к примеру, трехмерные ПЛОСКОСТИ? :-))

На школьному уровне - нет, а вообще, конечно бывают. Сколько-угодномерные.  Изучайте, если интересно.

kolyn
Offline
Зарегистрирован: 18.01.2019

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

а вообще, конечно бывают. Сколько-угодномерные.  Изучайте, если интересно.

  "Многие знания - многие печали".  Но таки да, нос утерли!

 

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

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

На школьному уровне - нет, а вообще, конечно бывают. Сколько-угодномерные.  Изучайте, если интересно.

Не "сколько угодоно", а хотя бы на единицу меньше размерности пространства.

Jeka_M
Jeka_M аватар
Offline
Зарегистрирован: 06.07.2014

Смотрю, вы тут за высшие материи беседуете. Тогда и я на правах оффтопа...

sva_khv пишет:

- Что там сегодня по телевизору?
- Комплексные числа!

Комплексные числа не только по телевизору показывают, но и в этих ваших ютубах: 
https://www.youtube.com/watch?v=xavhQ-uLOG0
https://www.youtube.com/watch?v=rEjF60aPRhg

arduinec
Offline
Зарегистрирован: 01.09.2015

Комплексные числа удобны при расчёте реактивных сопротивлений (сопротивление ёмкости и индуктивности при переменном напряжении): https://ru.wikipedia.org/wiki/Реактивное_сопротивление

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

Не токо сопротивление. В энергетике весь расчет режима электросети в комплексных. Огромные нелинейные системы уравнений 10^5 порядка и выше. Потому там так долго фортран любили.

dishin-di
Offline
Зарегистрирован: 09.04.2019

Правильно ли я понимаю, что выполнение программы приостанавливается на while?
И если это так, тогда чем это решение лучше обычного delay?

Я хочу использовать millis так, чтобы остальная часть программы выполнялась, пока в нужном куске программы значение millis сравнивается со стартовым значением, тем самым обеспечивая задержку. 
Например:

Система управления насосом и вентилятором. Оба включаются на определенный промежуток времени, но по разным условиям. 

Условия включения одного должны перепроверяться, пока включен другой. 

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

unsigned long upgradeMillis(unsigned long zad){
  if ((millis()+zad)>=4294967295) {
    unsigned long pered = (millis()+zad)-4294967295;
  } else {
    pered = millis();
  }
  return pered;
}

Как вам?

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

dishin-di пишет:

Правильно ли я понимаю, что выполнение программы приостанавливается на while?

Какой именно программы?

dishin-di пишет:

Предлагаю к критике следующий код обработки переполнения millis. ... 

<неперводимая игра слов> !!!

Весь этот топик посвящёт том, не нужна никакая обработка переполнения миллис. Не нужна от слова "нахрен не нужна", Никакая - от слова "ну ваще, совсем не надо обрабатывать".

dishin-di пишет:

Как вам?

Молодые матросы точат якоря, кот на подоконнике лижет яйца, а ардуинщики борются с переполнением миллис. Как-то так.

dishin-di
Offline
Зарегистрирован: 09.04.2019

Той, что в первом сообщении в топике.

Не нужна она в данном конкретном случае:)
В том, что в первом сообщении в топике. 

dishin-di
Offline
Зарегистрирован: 09.04.2019

Чтобы продолжить конструктивный диалог нужно разобраться, приостанавливается ли выполнение программы на while или нет

dishin-di
Offline
Зарегистрирован: 09.04.2019

Все. Я все понял. Молчу:)

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

dishin-di пишет:

Той, что в первом сообщении в топике.

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

dishin-di пишет:

Чтобы продолжить конструктивный диалог

Конструктивный диалог по проблеме переполнения миллис невозможен ввиду отсутствия таковой проблемы, т.е. предмета диалога.

"Проблема" переполнения миллис - исключительно связана с недостаточным уровнем грамотности разработчика. Читайте первое сообщение темы и делайте то, что там написано (изучайте арифметику, решайте задачи). И делайте это до тех пор, пока не поймёте - нет проблемы переполнения миллис - есть проблема уровня грамотности программистов.

dishin-di
Offline
Зарегистрирован: 09.04.2019

Всёвсё, вопрос снят:)
После первой задачи стало понятно, куда надо копать:)

 

Спасибо:)

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

Не знаю, куда запостить - то ли в юмор, то ли ещё куда. Вот вы Гувера ругаете всё... а посмотрите, что я в UIPEthernet нашёл в процесс разборок с неустойчивым коннектом ENC28J60 на внешний хост:

UIPClient::connect(IPAddress ip, uint16_t port)
...
#if UIP_CONNECT_TIMEOUT > 0
      int32_t timeout = millis() + 1000 * UIP_CONNECT_TIMEOUT;
#endif
...
#if UIP_CONNECT_TIMEOUT > 0
          if (((int32_t)(millis() - timeout)) > 0)
            {
              conn->tcpstateflags = UIP_CLOSED;
              break;
            }
#endif
...
}

 

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

sadman41 пишет:

Не знаю, куда запостить - то ли в юмор, то ли ещё куда. Вот вы Гувера ругаете всё... а посмотрите, что я в UIPEthernet нашёл в процесс разборок с неустойчивым коннектом ENC28J60 на внешний хост:

UIPClient::connect(IPAddress ip, uint16_t port)
...
#if UIP_CONNECT_TIMEOUT > 0
      int32_t timeout = millis() + 1000 * UIP_CONNECT_TIMEOUT;
#endif
...
#if UIP_CONNECT_TIMEOUT > 0
          if (((int32_t)(millis() - timeout)) > 0)
            {
              conn->tcpstateflags = UIP_CLOSED;
              break;
            }
#endif
...
}

 

а что, даже сутки не продержится?

А Гайвер всё таки популяризатор )))

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

Сутки продержится. А вот где-то через 24 дня, полагаю, можно ожидать странного поведения, если удалённый хост начнёт тупить с SYN ACK. У меня проблема схожего плана была, поэтому и полез смотреть, что в ::connect() происходит.

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

sadman41 пишет:

Сутки продержится. А вот где-то через 24 дня, полагаю, можно ожидать странного поведения, если удалённый хост начнёт тупить с SYN ACK. У меня проблема схожего плана была, поэтому и полез смотреть, что в ::connect() происходит.

добавить процедурку, если дисконнект длится более 10 минут ребутить не пойдёт?
Или править )))

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

Может и пойдет. Иллюстрация-то не к обработке экцепшна, а к тому, что в драйвере, которому уж лет 10 и читан который не раз (даже попал под форк с дальнейшим развитием в MBED) - такой вот ляпсус.

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

sadman41 пишет:

которому уж лет 10 и читан который не раз (даже попал под форк с дальнейшим развитием в MBED) - такой вот ляпсус.

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

MacSim
Offline
Зарегистрирован: 28.11.2012

Снимаю шляпу перед ТС. спасибо за интересные статьи.Спасибо что находите время их писать и учите других.

Maxim Z.
Offline
Зарегистрирован: 12.01.2016

Одно вот я не понимаю, если вы объясняете для новичков на кой хрен писать код так, чтобы новички половину не смогли понять?

Зачем в код добавлять шаблоны, о которых ардуинщики просто не слышалия? Сделайте стандартными Serial.print и для начинающего код сразу будет на порядок читабельнее!!!

Зачем скорость сериала ставить 115200 когда по умолчанию она 9600?

Зачем вообще использовать конструкции из Си, когда вы пишите на сайте ардуино, для начинающих ардуинщиков?

Почему не написать комментарии, которые объясняют для новичков то, что происходит в коде. (за каждой ключевой строкой)

А потом удивляетесь, откуда у новичков столько вопросов и почему они спотыкаются на каждом шагу!

Объясняйте максимально просто... Что тип переменной в которой хранится millis() - unsigned long и только положительная, а потом предложите сделать вычитание из меньшего значения, большее. И всем все сразу станет ясно!

P.S. Не в обиду, а в качестве обратно связи на будущее!

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

Maxim Z. пишет:

Зачем вообще использовать конструкции из Си, когда вы пишите на сайте ардуино, для начинающих ардуинщиков?

а на чем пишут рдуинщики? у них какой-то свой язык? или вы не в курсе. что "язык ардуино" - это С++ м есть?

Maxim Z.
Offline
Зарегистрирован: 12.01.2016

b707 пишет:

а на чем пишут рдуинщики? у них какой-то свой язык? или вы не в курсе. что "язык ардуино" - это С++ м есть?

Ардуинщики пишут в Ardiuni IDE на упрощенном С.

Напрямую на С начинают писать те, кому Arduino IDE уже становится мало.

Чем по вашему является Arduino IDE? И зачем он вообще нужен?

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

Maxim Z. пишет:

Чем по вашему является Arduino IDE? И зачем он вообще нужен?

Арлуино ИДЕ - это довольно глючный редактор для написания кода, не более того.

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

и если какие-то новички этого не знают - это не повод утрверждать, что "в ардуино этого нет". В конце концов. многие новички не понимают и, например. что такое миллис - что ж теперь, может и миллис будем считать "не ардуино" кодом?

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

Опять феерия идиотизма. Ардуино программируется на С++. Это не то же самое, что С.

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

Maxim Z. пишет:

Зачем скорость сериала ставить 115200 когда по умолчанию она 9600?

ждём, когда придёт понятие зачем скорость порта выставлять 115200 (Это кстати для UNO и NANO с новым бутлодырем), для старой NANO 57600 )))

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

Maxim Z. пишет:

на кой хрен писать код так

Пишу, как умею. Если Вы умеете писать по-другому - напишите, почитаю.

P.S. Вы правда считаете, что если говорить не владеющем русским немцу фразы типа: "Я есть не хотеть кушать, нихьт" -  ему будет существенно легче понимать, чем если бы Вы просто по-русски говорили?

Bruzzer
Онлайн
Зарегистрирован: 17.03.2020

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

Пишу, как умею. Если Вы умеете писать по-другому - напишите, почитаю.

P.S. Вы правда считаете, что если говорить не владеющем русским немцу фразы типа: "Я есть не хотеть кушать, нихьт" -  ему будет существенно легче понимать, чем если бы Вы просто по-русски говорили?

Скорее "Пишу как хочу" т.к. умеете вы наверняка писать по разному.

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

bwn
Offline
Зарегистрирован: 25.08.2014

Bruzzer пишет:

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

Все зависит от количества принятого срецтва. Как-то давали прощальный ужин командированным австрийцам, у меня языковый дебилизм, он по русски, ну никак, переводчица давно слиняла. А мы с Хельмутом отправились в вояж, по Сталинградским кабакам. Длился он, часов с десяти вечера, до пяти утра. Около пяти, ясное воспоминание, что мы сидим в гостиничном буфете, пьём пиво и о чем-то мило беседуем.)))) Когда проспался, так и не смог вспомнить, о чем мы семь часов говорили (ведь не молча водку жрали) и на каком языке??? А он, утром, улетел в фатерланд и больше я его не видел.))))

Green
Онлайн
Зарегистрирован: 01.10.2015

Так значит австрийцы тоже бойцы?) Тут со своими... Как то сидели с сотрудником в каком то "грильбаре". Часов в 13 сели, и только после 23-х нас попросили. Только пиво! Потом мужики с работы удивлялись: "ну о чём можно было столько говорить?")
Maxim Z. Касательно писания. Пишется так для удобства, для наглядности, для лаконичности. В любом случае преследуется КПД для достижения результата. И то что вам кажется сложным - это от отсутствия практики, ну и знаний, естественно. 

Maxim Z.
Offline
Зарегистрирован: 12.01.2016

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

Пишу, как умею. Если Вы умеете писать по-другому - напишите, почитаю.

Ну это не правда. Читал ваши посты, умеете вы писать по разному.

Green пишет:

Maxim Z. Касательно писания. Пишется так для удобства, для наглядности, для лаконичности. В любом случае преследуется КПД для достижения результата. И то что вам кажется сложным - это от отсутствия практики, ну и знаний, естественно. 

Так я про то и говорю, если мы хотим донести информацию первоклашкам, не стоит пользоваться терминологией из ВУЗа.

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

 

P.S. Ну и повторюсь, цель не оскорбить топикстартера, а дать обратную связь.

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

Maxim Z. пишет:

Так я про то и говорю, если мы хотим донести информацию первоклашкам, не стоит пользоваться терминологией из ВУЗа.

Вы всерьез считаете, что информацию первоклашкам следует доводить исключительно на ломаном русском вместо русского литературного языка?

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

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

Maxim Z.,

в своё время "Ваш тёзка" Горький спорил с футуристами, которые считали, что с людьми нужно разговаривать на их языке, доказывая, что задача писателя - не опускаться до уровня безграмотного читателя, а поднимать того до своего уровня. Мы с Вами на разных сторонах того спора.

Bruzzer
Онлайн
Зарегистрирован: 17.03.2020

Но был и Лев Толстой с его "Рассказы для детей".

mykaida
mykaida аватар
Offline
Зарегистрирован: 12.07.2018

А вы опять всё пишете, чёт как-то не смешно.

Обсуждено и понято всё  тут всё уже давно.

Как миллис переполнится - придет армагеддец,

Вот славная история - и топику конец!

mykaida
mykaida аватар
Offline
Зарегистрирован: 12.07.2018

Альтернативное окончание:

Как миллис переполнится - придет армагеддон,

Вы не чешите миллис, раз вам полезен он.