Кактус, не совсем прав. Это код, где 1 диод горит 800мс и не горит 300 мс. Он состоит из двух абслолютно одинаковых частей, одну из которых можно безболененно выкинуть (это к слову об "эффективности" :)
Кактус, вот нафига подсказывать? - у меня нет сомнений. что вы это можете :) - цель была привести ник Вавгат к пониманию, что он не разбирается в сути миллис.
А теперь он напишет, что "что-то такое имел в виду... " Вспомните Великого - чтобы не признавать свой промах. подобные люди идут на любое вранье.
Действительно невнимательный. Только вот Вы изначально ставите такие условия, при которых мой вариант будет выглядеть как быдлокод. При таких условиях конечно же алгоритм нужно менять, но не беда, попробуем набыдлокодить и так.
Задача: использовать мой код и Ваше условие (2 светодиода), а также условие автора (действие 1, 500 мс, действие 2, 500 мс, действие 3, 500 мс, действие 4, 500 мс).
Решение возможно, только если действие 1, 2, 3 и 4 длятся менее 100 мс, а ведь мы этого наверняка не знаем. Нам понадобятся доп. переменные.
Кактус. я же говорил? - чудо просто скопировало ваше решение, а чтобы это не было так заметно - вставило его внутрь своего быдлокода про 4 задачи по 500 мс
Кактус, вот нафига подсказывать? - у меня нет сомнений. что вы это можете :) - цель была привести ник Вавгат к пониманию, что он не разбирается в сути миллис.
А теперь он напишет, что "что-то такое имел в виду... " Вспомните Великого - чтобы не признавать свой промах. подобные люди идут на любое вранье.
Вы меня не знаете, а уже судите обо мне. Я всегда стараюсь говорить правду, вместо того, чтобы врать. Может я в чём-то не разбираюсь - это да. Только вот кричать "это всё фигня, так никто не делает" может любой. А подсказать где и в чём ошибка... Пусть сам ищет и придумывает.
Кактус. я же говорил? - чудо просто скопировало ваше решение, а чтобы это не было так заметно - вставило его внутрь своего быдлокода про 4 задачи по 500 мс
Только вот Вы изначально ставите такие условия, при которых мой вариант будет выглядеть как быдлокод.
вы абсолютно правы. Я намеренно выбрал такие условия, чтобы доказать вам. что ваш вариант - это быдлокод . Доказать именно вам, потому абсолютно всем остальным в этой ветке это и так ясно.
И в итоге в вашем последнем решении, кроме полностью спиз... ого кода Кактуса - вы опять не смогли продемонстрировать, как код с циклами while обеспечит вам независмое мигание двух диодов.
(за быдлокод прошу прощения :) - но это слово для своего "творчества" вы выбрали сами.
Да. Вы всё правильно поняли. Это то что нужно, как бы странно это кому ни казалось. Спасибо. Вопрос решен)
Я как это прочитал... Это ж просто ДЗ по информатике. Сказал препод:"Заменить delay() на millis()". Ну на тебе - заменили. Всё. Какие там "блокирующие"/"не блокирующие"... Я вас умоляю. Пиво на самоизоляции по интернету с доставкой заказал - полдня ждешь, да ещё за деньги. А ДЗ по интернету с доставкой заказал - меньше двух часов и бесплатно. А ещё и срач эпический - бонусом. Всё можно от игрушек или порнухи отвлечься. Разнообразие. :))
ТС, на. 4 функции вызываются друг за другом с интервалом в секунду, потом останавливаются. При этом loop() вообще не при делах, пишы туда что хочешь, хоть delay(100500) на вызов функций это не отразица. Захочешь узнать как эта магия работает - спроси меня как.
Хера се. Мощно. Этот как проехать 10 метров на формуле-1 вместо то, чтобы пройти пешком). Спасибо схоронил на будущее:)
а я то всё ждал, когда Дед со своей библиотекой нарисуется, дождались )))
А человек далёкий от программирования завёл бы четыре переменных на значения задержек, четыре булевых под флаг необходимости отработки конкретного таймера и всех делов и, никаких блокирующих задержек
Впрочем, коллеги, я пас. Такой упертости можно только позавидовать :)
Если хотите - обьясняйте ему сами или просто заблочте нафик.... хотя нет, если заблочить, он будет чувствовать себя несправедливо обиженным героем... :)
насчет секунд свое замечание снимаю, сам слепой. множитель 100 не увидел.
А насчет самого сравнения - оно бессмысленно, потому что варианты кода делают разные действия.
Вавгат, когда вы наконец поймете, что код садмана и кактуса лучше не потому, что он "быстрее" или "эффективнее", а потому что он выполняет свою задачу. а ваш нет.
(200003172 / 4 ) / 100 циклов. = 500007,93 что примерно равно 500 мс. Что не так? Не верите, проверьте и выложите свой результат. Полный скетч я прикрепил.
Плоскоголовый, ты прежде чем такие тесты писать с кодом разберись. Ты нахера все переменные сбрасываешь в одном месте ? Слабо при входе в функцию сбросить, при выходе из нее значение запомнить, а после всех функций вывести результаты ?
Думаете это сильно повлияет на результат? Проведите свой тест. Я уже понял, что кричать с места вы тут горазд, а как правильно - сами не знаете.
(200003172 / 4 ) / 100 циклов. = 500007,93 что примерно равно 500 мс. Что не так? Не верите, проверьте и выложите свой результат. Полный скетч я прикрепил.
все верно. В отличии от вас я умею признавать ошибки. Множитель 100 не заметил.
А ответ по существу читайте выше. вы сравниваете скорость вашего НЕ_РАБОЧЕГО кода с двумя рабочими. даже если ваш и быстрее - зачем он нужен, если не работает?
Так объясните почему он не рабочий? У меня на столе прекрасно работал, причём проверял по три раза и с 10 циклами и с 50-ю и со 100. И даже порядок тестов пробовал менять, но так и не понял чем мой вариант в конкретно данной задаче (а не в любой другой гипотетической), хуже?
Может я чего-то не понимаю? Почему мой код "НЕРАБОЧИЙ"? Только пожалуйста без унижений и оскорблений.
Задача любого учителя (а Вы здесь выступаете в роли учителя), не дать готовый результат, а показать в каком направлении двигаться. Разве нет?
Я дал человеку готовый результат под его задачу? Нет! Я лишь показал на примере его кода, как заменить delay на millis. Человек понял суть? Вроде да.
А вы берёте, меняете задачу и пытаетесь алгоритм от задачи А применить к задаче Б без каких либо изменений. Показали свой вариант - хорошо. Знаете больше меня? Тоже хорошо. Но обзывать дебилами, тупоголовыми и пр. - это уже уровень Вашего воспитания.
Не понимаю и хочу чтобы мне объяснили, если конечно это не тайна какого-то общества.
Есть такой термин - "спор с подменой тейзисов". Вот лично мне кажется, что именно этим мы и занимаемся. В общем случае Ваш вариант будет неоспоримо лучше моего, но речь в данном топике идет не об общем случае, а о конкретной задаче:
делаем действие 1
ждём 500 мс
...
Данную задачу (как и любую другую) можно решить разными способами. Я предложил свой. Он решает задачу? Да. Так в чём моя ошибка?
насчет секунд свое замечание снимаю, сам слепой. множитель 100 не увидел.
А насчет самого сравнения - оно бессмысленно, потому что варианты кода делают разные действия.
Вавгат, когда вы наконец поймете, что код садмана и кактуса лучше не потому, что он "быстрее" или "эффективнее", а потому что он выполняет свою задачу. а ваш нет.
И в свой код я могу добавить еще много всего и все будет выполнятся ПАРАЛЛЕЛЬНО: опрос кнопок,вывод на дисплей, передача данных и тд и тп.
А твое говно будет висеть каждый раз при мигании светодиодом.
Потому , что я просто в цикле проверяю, не пора ли переключить состояние пина ? если не пора . то просто иду дальше, если пора то переключаю и опять же иду дальше, эта проверка занимает 2мкс.
А дебилы переключают диод и ждут полсекунды ничего не делая, что бы включить его обратно.
И в свой код я могу добавить еще много всего и все будет выполнятся ПАРАЛЛЕЛЬНО: опрос кнопок,вывод на дисплей, передача данных и тд и тп.
А твое говно будет висеть каждый раз при мигании светодиодом.
Потому , что я просто в цикле проверяю, не пора ли переключить состояние пина ? если не пора . то просто иду дальше, если пора то переключаю, эта проверка занимает 2мкс.
А дебилы переключают диод и ждут полсекунды ничего не делая, что бы включить его обратно.
В этом отличие millis() от delay()
Теперь подробно про уродов:
Выполнить 100 раз цикл, в котором 4 действия попеременно выполняются с интервалом в 0,5 секунды. Теоретически расчетное время 4*0,5*100=200 сек. А ваш вариант уложился в 236 микросекунд. Круто. И у кого тут теперь нерабочий вариант?
Я взял задачу автора, провёл 100 итераций и замерял время. То, как Вы реализовали данную задачу - это уже Ваша проблема. Я поставил итерацию переменной i в такое место, где получится 100 итераций всей задачи, а не конкретно вашего цикла.
100 раз do1(), 100 раз ждем 0,5 сек после do1(), ... 100 раз do4(), 100 раз ждем 0,5 сек после do4().
Все три теста работают именно так. А у Вас что? Что с чем Вы сравнили?
Я взял задачу автора, провёл 100 итераций и замерял время. То, как Вы реализовали данную задачу - это уже Ваша проблема. Я поставил итерацию переменной i в такое место, где получится 100 итераций всей задачи, а не конкретно вашего цикла.
100 раз do1(), 100 раз ждем 0,5 сек после do1(), ... 100 раз do4(), 100 раз ждем 0,5 сек после do4().
Все три теста работают именно так. А у Вас что? Что с чем Вы сравнили?
Совсем кретин ?
Зачем нужен мк , что бы посчитать сколько раз мигнет 200 раз диод с частотой 1ГЦ ?
200*1=200 секунд.
Просто у дебилов 200секунд будет выполнятся 100циклов.
А у нормальных людей 1000000000 циклов.
Ты вообще разницы не видишь в том висит у тебя МК или работает ?
Я взял задачу автора, провёл 100 итераций и замерял время. То, как Вы реализовали данную задачу - это уже Ваша проблема. Я поставил итерацию переменной i в такое место, где получится 100 итераций всей задачи, а не конкретно вашего цикла.
100 раз do1(), 100 раз ждем 0,5 сек после do1(), ... 100 раз do4(), 100 раз ждем 0,5 сек после do4().
Все три теста работают именно так. А у Вас что? Что с чем Вы сравнили?
Совсем кретин ?
Зачем нужен мк , что бы посчитать сколько раз мигнет 200 раз диод с частотой 1ГЦ ?
200*1=200 секунд.
Просто у дебилов 200секунд будет выполнятся 100циклов.
А у нормальных людей 1000000000 циклов.
Ты вообще разницы не видишь в том висит у тебя МК или работает ?
А при чём тут количество циклов программы? Я ещё в начале темы подметил, что два дополнительных условия увеличат время ожидания между выполнением задач с 1 по 4-ую. Тест это доказал на практике. Ваш код красивее, читабельнее - ДА. Я и не спорил об этом. Вы утверждаете что мой код не рабочий, а показать в каком месте он не работает так и не удосужились. То, что микроконтроллер в это время ничего не делает и не может делать - так в задаче ему и не нужно что-то делать.
На все машины ставят гидроусилитель руля, потому что так НАДА!. Давайте и на велосипеды будем гидроусилитель ставить - вот Ваша логика. Так надо и хоть ты тресни, а почему - да просто все вокруг .... и не знают, что нужно именно так и по другому просто никак нельзя, даже если и работает, оно всё равно работает неправильно, потому что написано не по правилам! (а где эти правила написаны?)
ТС, как вариант почитай тут пост #7. Может поможет
не поможет, Макс.
Ты очень точно описал ситуацию - "чел честно заменил делей на миллис". И потом он включил дурака и не желает понимать, что хотя он решил задачу формально верно, смысл от его решения в плане программирования ровно такой же , как если бы он просто в тексте поиском и заменой заменил слово "delay" на слово "millis".
Но формально он прав. И теперь его с этого не свернуть.
Да и фиг с ним. Мне надоело его переубеждать. С его "знаниями" он уже в двух других ветках налажал и наверняка продолжит так и дальше, так что долго не задержится
Я не ТС. Я понимаю зачем его меняют, но это не панацея. Есть места, где делай вполне себе может жить и никому не мешать.
А, если знаете и понимаете, то зачем нарисовали свой пример, и не объяснили ТС, что ничего не изменилось, а делей для его конкретной задачи идеален?
То b707: Вы в "Чистим форум", по этой теме вопрос задавали или какой другой? Здесь почитал чищенные, криминала не заметил, просто убрали часть срача, сохранив общую мысль.
Есть места, где делай вполне себе может жить и никому не мешать.
С этим-то как раз никто и не спорит. Ты же взялся заменить этот delay() на миллис, и сделал это, мягко говоря, не очень корректно. Вот об этом тебе все тут толкуют, а ты упёрся. Скажу прямо, чтобы тебе было понятно. delay() заменяют на millis() в тех случаях, когда программа не должна простаивать, т.е. в программе есть другие части, которые должны также выполняться корректно, например опрос кнопок (который не терпит долгого прохода loop, а delay как раз и задерживает проход loop) и т.д.
Если у тебя эти другие части программы отстутсвуют, то оставляй ты свой delay() и менять его на millis() , особенно по твоему способу, совершенно незачем, от слова совсем.
Такого гоунокода давно тут не постили.
Неоспоримые моменты конечно есть.
Перечислю.
Это заявка на оригинальность , нерабочесть и дурость автора.
Поясню:
Вот смотри
Вначале цикла обновляет таймер.
Первые 300мс диод не горит.
Это действие 1
Следующие 800мс диод не горит, по истечении загорается
Это было действие 2
Горит он 300мс и гаснет
Действие 3
Диод зажигается (действие 4) и сразу тухнет, начало следующего цикла.
Итого диод горит 300мс и ещё пару тактов.
Задача не выполнена, код кривой и слабочитаемый.
Садись двойка
Кактус, не совсем прав. Это код, где 1 диод горит 800мс и не горит 300 мс. Он состоит из двух абслолютно одинаковых частей, одну из которых можно безболененно выкинуть (это к слову об "эффективности" :)
сократив код ровно вдвое :)
Как этот код должен примерно выглядеть:
Как этот код должен примерно выглядеть:
Кактус, вот нафига подсказывать? - у меня нет сомнений. что вы это можете :) - цель была привести ник Вавгат к пониманию, что он не разбирается в сути миллис.
А теперь он напишет, что "что-то такое имел в виду... " Вспомните Великого - чтобы не признавать свой промах. подобные люди идут на любое вранье.
Действительно невнимательный. Только вот Вы изначально ставите такие условия, при которых мой вариант будет выглядеть как быдлокод. При таких условиях конечно же алгоритм нужно менять, но не беда, попробуем набыдлокодить и так.
Задача: использовать мой код и Ваше условие (2 светодиода), а также условие автора (действие 1, 500 мс, действие 2, 500 мс, действие 3, 500 мс, действие 4, 500 мс).
Решение возможно, только если действие 1, 2, 3 и 4 длятся менее 100 мс, а ведь мы этого наверняка не знаем. Нам понадобятся доп. переменные.
Кактус. я же говорил? - чудо просто скопировало ваше решение, а чтобы это не было так заметно - вставило его внутрь своего быдлокода про 4 задачи по 500 мс
Как этот код должен примерно выглядеть:
Кактус, вот нафига подсказывать? - у меня нет сомнений. что вы это можете :) - цель была привести ник Вавгат к пониманию, что он не разбирается в сути миллис.
А теперь он напишет, что "что-то такое имел в виду... " Вспомните Великого - чтобы не признавать свой промах. подобные люди идут на любое вранье.
Вы меня не знаете, а уже судите обо мне. Я всегда стараюсь говорить правду, вместо того, чтобы врать. Может я в чём-то не разбираюсь - это да. Только вот кричать "это всё фигня, так никто не делает" может любой. А подсказать где и в чём ошибка... Пусть сам ищет и придумывает.
Кактус. я же говорил? - чудо просто скопировало ваше решение, а чтобы это не было так заметно - вставило его внутрь своего быдлокода про 4 задачи по 500 мс
И в каком месте я его скопировал?
Только вот Вы изначально ставите такие условия, при которых мой вариант будет выглядеть как быдлокод.
вы абсолютно правы. Я намеренно выбрал такие условия, чтобы доказать вам. что ваш вариант - это быдлокод . Доказать именно вам, потому абсолютно всем остальным в этой ветке это и так ясно.
И в итоге в вашем последнем решении, кроме полностью спиз... ого кода Кактуса - вы опять не смогли продемонстрировать, как код с циклами while обеспечит вам независмое мигание двух диодов.
(за быдлокод прошу прощения :) - но это слово для своего "творчества" вы выбрали сами.
И в каком месте я его скопировал?
в процедурах testled1 testled2
Кроме того, в этих процедурах нет вашего кода через while - так что это не решение, а читерство
Да. Вы всё правильно поняли. Это то что нужно, как бы странно это кому ни казалось. Спасибо. Вопрос решен)
Я как это прочитал... Это ж просто ДЗ по информатике. Сказал препод:"Заменить delay() на millis()". Ну на тебе - заменили. Всё. Какие там "блокирующие"/"не блокирующие"... Я вас умоляю. Пиво на самоизоляции по интернету с доставкой заказал - полдня ждешь, да ещё за деньги. А ДЗ по интернету с доставкой заказал - меньше двух часов и бесплатно. А ещё и срач эпический - бонусом. Всё можно от игрушек или порнухи отвлечься. Разнообразие. :))
ТС, на. 4 функции вызываются друг за другом с интервалом в секунду, потом останавливаются. При этом loop() вообще не при делах, пишы туда что хочешь, хоть delay(100500) на вызов функций это не отразица. Захочешь узнать как эта магия работает - спроси меня как.
Timerlist возьмешь там https://github.com/DetSimen/Arduino_TimerList
Вывод в порт:
Хера се. Мощно. Этот как проехать 10 метров на формуле-1 вместо то, чтобы пройти пешком). Спасибо схоронил на будущее:)
Хера се. Мощно. Этот как проехать 10 метров на формуле-1 вместо то, чтобы пройти пешком). Спасибо схоронил на будущее:)
а я то всё ждал, когда Дед со своей библиотекой нарисуется, дождались )))
А человек далёкий от программирования завёл бы четыре переменных на значения задержек, четыре булевых под флаг необходимости отработки конкретного таймера и всех делов и, никаких блокирующих задержек
А тем временем у микроконтроллера своё мнение:
Из результата
вроде как даже delay не "грузит" так ядро, как "продвинутый код".
А тем временем у микроконтроллера своё мнение:
это не у микроконтроллера....
Впрочем, коллеги, я пас. Такой упертости можно только позавидовать :)
Если хотите - обьясняйте ему сами или просто заблочте нафик.... хотя нет, если заблочить, он будет чувствовать себя несправедливо обиженным героем... :)
Плоскоголовый, ты прежде чем такие тесты писать с кодом разберись.
Ты нахера все переменные сбрасываешь в одном месте ?
Слабо при входе в функцию сбросить, при выходе из нее значение запомнить, а после всех функций вывести результаты ?
насчет секунд свое замечание снимаю, сам слепой. множитель 100 не увидел.
А насчет самого сравнения - оно бессмысленно, потому что варианты кода делают разные действия.
Вавгат, когда вы наконец поймете, что код садмана и кактуса лучше не потому, что он "быстрее" или "эффективнее", а потому что он выполняет свою задачу. а ваш нет.
(200003172 / 4 ) / 100 циклов. = 500007,93 что примерно равно 500 мс. Что не так? Не верите, проверьте и выложите свой результат. Полный скетч я прикрепил.
Думаете это сильно повлияет на результат? Проведите свой тест. Я уже понял, что кричать с места вы тут горазд, а как правильно - сами не знаете.
(200003172 / 4 ) / 100 циклов. = 500007,93 что примерно равно 500 мс. Что не так? Не верите, проверьте и выложите свой результат. Полный скетч я прикрепил.
все верно. В отличии от вас я умею признавать ошибки. Множитель 100 не заметил.
А ответ по существу читайте выше. вы сравниваете скорость вашего НЕ_РАБОЧЕГО кода с двумя рабочими. даже если ваш и быстрее - зачем он нужен, если не работает?
Так объясните почему он не рабочий? У меня на столе прекрасно работал, причём проверял по три раза и с 10 циклами и с 50-ю и со 100. И даже порядок тестов пробовал менять, но так и не понял чем мой вариант в конкретно данной задаче (а не в любой другой гипотетической), хуже?
Может я чего-то не понимаю? Почему мой код "НЕРАБОЧИЙ"? Только пожалуйста без унижений и оскорблений.
Может я чего-то не понимаю? Почему мой код "НЕРАБОЧИЙ"? Только пожалуйста без унижений и оскорблений.
не понимаете, очевидно.
перечитайте еще раз ветку. я отвечал на этот вопрос несколько раз. И не только я. Оскорбления можно не читать.
Задача любого учителя (а Вы здесь выступаете в роли учителя), не дать готовый результат, а показать в каком направлении двигаться. Разве нет?
Я дал человеку готовый результат под его задачу? Нет! Я лишь показал на примере его кода, как заменить delay на millis. Человек понял суть? Вроде да.
А вы берёте, меняете задачу и пытаетесь алгоритм от задачи А применить к задаче Б без каких либо изменений. Показали свой вариант - хорошо. Знаете больше меня? Тоже хорошо. Но обзывать дебилами, тупоголовыми и пр. - это уже уровень Вашего воспитания.
Не понимаю и хочу чтобы мне объяснили, если конечно это не тайна какого-то общества.
Есть такой термин - "спор с подменой тейзисов". Вот лично мне кажется, что именно этим мы и занимаемся. В общем случае Ваш вариант будет неоспоримо лучше моего, но речь в данном топике идет не об общем случае, а о конкретной задаче:
делаем действие 1
ждём 500 мс
...
Данную задачу (как и любую другую) можно решить разными способами. Я предложил свой. Он решает задачу? Да. Так в чём моя ошибка?
насчет секунд свое замечание снимаю, сам слепой. множитель 100 не увидел.
А насчет самого сравнения - оно бессмысленно, потому что варианты кода делают разные действия.
Вавгат, когда вы наконец поймете, что код садмана и кактуса лучше не потому, что он "быстрее" или "эффективнее", а потому что он выполняет свою задачу. а ваш нет.
Он даже не знает, что такое конец цикла.
Специально для дебилов, делаю как положено
Я предложил свой. Он решает задачу? Да. Так в чём моя ошибка?
все. я сдаюсь. ваш код лучше. быстрее и эффективнее других кодов, которые выложены в этой ветке. И полностью решает задачу "замены делай на миллис".
Кажется. у Полякова одна героиня говорила "Зануда - это мужчина, которому проще отдаться. чем обьяснить свое нежелание это делать" (с)
а смысл?
а смысл?
Да бесят такие уроды.
В моем коде не туда инкремент всунул и сравнивает со своим говном.
Вот так должен выглядеть код.
Потому, что миллис без делей, это ОТСУТСТВИЕ БЛОКИРОВКИ КОДА
Значит и замерять мы должны время за которое проходит цикл.
Вот оно:
Найди отличия со своим говном
мой цикл прошел 100 раз за 236микросекунд
а твой за 200млн+ микросекунд
И в свой код я могу добавить еще много всего и все будет выполнятся ПАРАЛЛЕЛЬНО: опрос кнопок,вывод на дисплей, передача данных и тд и тп.
А твое говно будет висеть каждый раз при мигании светодиодом.
Потому , что я просто в цикле проверяю, не пора ли переключить состояние пина ? если не пора . то просто иду дальше, если пора то переключаю и опять же иду дальше, эта проверка занимает 2мкс.
А дебилы переключают диод и ждут полсекунды ничего не делая, что бы включить его обратно.
В этом отличие millis() от delay()
мой цикл прошел 100 раз за 236микросекунд
увы, но это невозможно. Ищи ошибку. В цикле стоит задержка 500мс и потому сто таких циклов не могут быть существенно быстрее 200 секунд
Это не отменяет того, что само это сравнение - бред. Не ведись.
Вот так должен выглядеть код.
Потому, что миллис без делей, это ОТСУТСТВИЕ БЛОКИРОВКИ КОДА
Значит и замерять мы должны время за которое проходит цикл.
Вот оно:
Найди отличия со своим говном
мой цикл прошел 100 раз за 236микросекунд
а твой за 200млн+ микросекунд
И в свой код я могу добавить еще много всего и все будет выполнятся ПАРАЛЛЕЛЬНО: опрос кнопок,вывод на дисплей, передача данных и тд и тп.
А твое говно будет висеть каждый раз при мигании светодиодом.
Потому , что я просто в цикле проверяю, не пора ли переключить состояние пина ? если не пора . то просто иду дальше, если пора то переключаю, эта проверка занимает 2мкс.
А дебилы переключают диод и ждут полсекунды ничего не делая, что бы включить его обратно.
В этом отличие millis() от delay()
Теперь подробно про уродов:
Выполнить 100 раз цикл, в котором 4 действия попеременно выполняются с интервалом в 0,5 секунды. Теоретически расчетное время 4*0,5*100=200 сек. А ваш вариант уложился в 236 микросекунд. Круто. И у кого тут теперь нерабочий вариант?
ППЦ.
Данный тест показывает время прохождения 100 циклов.
Если мигать нужно с частотой 1Гц то для того что бы мой диод мигнул, должно пройти 1000000/2=500000 циклов.
Во время прохождения всех этих циклов, я могу выполнять кучу других действий.
это и есть ОТСУТСТВИЕ БЛОКИРОВКИ КОДА
Сколько раз в Вашем варианте выполнилась задача №2? (функция do2())
Сколько раз в Вашем варианте выполнилась задача №2? (функция do2())
А сколько раз в моем коде выполнилось условие : if (millis()-TestTime>500) ?
Замер дает время выполнения 100 циклов кода . а не время мигания 100раз светодиодом.
Правильно, нисколько. Потому , что за 236мкс ниразу не прошло 500мс .
что не помешало 100 раз проверить: а точно ли не прошло 500мс
Как еще обьяснить Долб***у ( не ошибка, действительно в данном случае с большой буквы) что такое НЕБЛОКИРУЮЩАЯ ФУНКЦИЯ
Я взял задачу автора, провёл 100 итераций и замерял время. То, как Вы реализовали данную задачу - это уже Ваша проблема. Я поставил итерацию переменной i в такое место, где получится 100 итераций всей задачи, а не конкретно вашего цикла.
100 раз do1(), 100 раз ждем 0,5 сек после do1(), ... 100 раз do4(), 100 раз ждем 0,5 сек после do4().
Все три теста работают именно так. А у Вас что? Что с чем Вы сравнили?
Я взял задачу автора, провёл 100 итераций и замерял время. То, как Вы реализовали данную задачу - это уже Ваша проблема. Я поставил итерацию переменной i в такое место, где получится 100 итераций всей задачи, а не конкретно вашего цикла.
100 раз do1(), 100 раз ждем 0,5 сек после do1(), ... 100 раз do4(), 100 раз ждем 0,5 сек после do4().
Все три теста работают именно так. А у Вас что? Что с чем Вы сравнили?
Совсем кретин ?
Зачем нужен мк , что бы посчитать сколько раз мигнет 200 раз диод с частотой 1ГЦ ?
200*1=200 секунд.
Просто у дебилов 200секунд будет выполнятся 100циклов.
А у нормальных людей 1000000000 циклов.
Ты вообще разницы не видишь в том висит у тебя МК или работает ?
сурово...Чел честно заменил delay на millis
Совсем кретин ?
у дебилов
Давай без этого обойдемся, а то уже я тебя чистить буду
Вот тебе тест количества прохождений циклов за 10 секунд.
Что бы кое кто увидел, что в моем случае диод тоже мигает когда надо
Вот что получилось:
В общем ну иго нафик.
у человека wavgat головного мозга
у человека wavgat головного мозга
с этим я согласен, но правила приличия требуют...
Я взял задачу автора, провёл 100 итераций и замерял время. То, как Вы реализовали данную задачу - это уже Ваша проблема. Я поставил итерацию переменной i в такое место, где получится 100 итераций всей задачи, а не конкретно вашего цикла.
100 раз do1(), 100 раз ждем 0,5 сек после do1(), ... 100 раз do4(), 100 раз ждем 0,5 сек после do4().
Все три теста работают именно так. А у Вас что? Что с чем Вы сравнили?
Совсем кретин ?
Зачем нужен мк , что бы посчитать сколько раз мигнет 200 раз диод с частотой 1ГЦ ?
200*1=200 секунд.
Просто у дебилов 200секунд будет выполнятся 100циклов.
А у нормальных людей 1000000000 циклов.
Ты вообще разницы не видишь в том висит у тебя МК или работает ?
А при чём тут количество циклов программы? Я ещё в начале темы подметил, что два дополнительных условия увеличат время ожидания между выполнением задач с 1 по 4-ую. Тест это доказал на практике. Ваш код красивее, читабельнее - ДА. Я и не спорил об этом. Вы утверждаете что мой код не рабочий, а показать в каком месте он не работает так и не удосужились. То, что микроконтроллер в это время ничего не делает и не может делать - так в задаче ему и не нужно что-то делать.
На все машины ставят гидроусилитель руля, потому что так НАДА!. Давайте и на велосипеды будем гидроусилитель ставить - вот Ваша логика. Так надо и хоть ты тресни, а почему - да просто все вокруг .... и не знают, что нужно именно так и по другому просто никак нельзя, даже если и работает, оно всё равно работает неправильно, потому что написано не по правилам! (а где эти правила написаны?)
ТС, как вариант почитай тут пост #7. Может поможет. Тебе надо как бы понять, зачем в принципе меняют delay на миллис
ТС, как вариант почитай тут пост #7. Может поможет. Тебе надо как бы понять, зачем в принципе меняют delay на миллис
Я не ТС. Я понимаю зачем его меняют, но это не панацея. Есть места, где делай вполне себе может жить и никому не мешать.
Да просто до тебя видимо не дойдет , что твоя замена это не замена ни разу, а те же грабли , только в другой проекции
ТС, как вариант почитай тут пост #7. Может поможет
не поможет, Макс.
Ты очень точно описал ситуацию - "чел честно заменил делей на миллис". И потом он включил дурака и не желает понимать, что хотя он решил задачу формально верно, смысл от его решения в плане программирования ровно такой же , как если бы он просто в тексте поиском и заменой заменил слово "delay" на слово "millis".
Но формально он прав. И теперь его с этого не свернуть.
Да и фиг с ним. Мне надоело его переубеждать. С его "знаниями" он уже в двух других ветках налажал и наверняка продолжит так и дальше, так что долго не задержится
Я не ТС. Я понимаю зачем его меняют, но это не панацея. Есть места, где делай вполне себе может жить и никому не мешать.
А, если знаете и понимаете, то зачем нарисовали свой пример, и не объяснили ТС, что ничего не изменилось, а делей для его конкретной задачи идеален?
То b707: Вы в "Чистим форум", по этой теме вопрос задавали или какой другой? Здесь почитал чищенные, криминала не заметил, просто убрали часть срача, сохранив общую мысль.
С этим-то как раз никто и не спорит. Ты же взялся заменить этот delay() на миллис, и сделал это, мягко говоря, не очень корректно. Вот об этом тебе все тут толкуют, а ты упёрся. Скажу прямо, чтобы тебе было понятно. delay() заменяют на millis() в тех случаях, когда программа не должна простаивать, т.е. в программе есть другие части, которые должны также выполняться корректно, например опрос кнопок (который не терпит долгого прохода loop, а delay как раз и задерживает проход loop) и т.д.
Если у тебя эти другие части программы отстутсвуют, то оставляй ты свой delay() и менять его на millis() , особенно по твоему способу, совершенно незачем, от слова совсем.