-
- Миллисекунды - это "вечность" по сравнению с тиками контроллера. Тут некоторые уже в эту кучу и микросекунды накидали. А ведь разница в 1000 раз. Кстати, если вам действительно нужны миллисекунды с "копейками", то используйте микросекунды. - Costic(25.12.2019 18:31)
- микросекунды мне не нужны. Основная проблема в том что duration не позволяет конвертировать из миллисекунд в тики, если размерность дробная. То есть если 1:1 то значение 473ms конвертируется в тики на этапе компиляции. в случае же 1:5 необходим _Constantin24(361 знак., 26.12.2019 08:05)
- Ты какую-то чушь несешь. Как до этого в голом C жили 40 лет с CLOCKS_PER_SEC и целыми числами, где тоже на цело не делится? Для задержек округляли в большую сторону. Смысл доли тика ловить? В unix не зря в timespec хранятся секунды и наносекунды fk0(245 знак., 26.12.2019 12:04)
- Возьмем пример: Есть ось с тиком 1 миллисекунда( 1:1 ). Sleep( 500ms ) _Constantin24(743 знак., 26.12.2019 13:37)
- Delay с флоатом и весом в полкило... Паноптикум) ant333(82 знак., 26.12.2019 15:25 - 15:36)
- milliseconds использует int64_t и получаем полкило оверхеда при использовании duration<float>. Сменил на int32_t получил 8 байт. (copy _Constantin24(6 знак., 26.12.2019 15:49)
- Я, честно говоря, не понял о какой платформе идет речь, но все равно все это как-то странно - ant333(26.12.2019 15:57)
- Отладочная плата на stm32f4 + atollic truestudio - _Constantin24(26.12.2019 16:05)
- Я, честно говоря, не понял о какой платформе идет речь, но все равно все это как-то странно - ant333(26.12.2019 15:57)
- milliseconds использует int64_t и получаем полкило оверхеда при использовании duration<float>. Сменил на int32_t получил 8 байт. (copy _Constantin24(6 знак., 26.12.2019 15:49)
- Delay с флоатом и весом в полкило... Паноптикум) ant333(82 знак., 26.12.2019 15:25 - 15:36)
- Возьмем пример: Есть ось с тиком 1 миллисекунда( 1:1 ). Sleep( 500ms ) _Constantin24(743 знак., 26.12.2019 13:37)
- Ты какую-то чушь несешь. Как до этого в голом C жили 40 лет с CLOCKS_PER_SEC и целыми числами, где тоже на цело не делится? Для задержек округляли в большую сторону. Смысл доли тика ловить? В unix не зря в timespec хранятся секунды и наносекунды fk0(245 знак., 26.12.2019 12:04)
- микросекунды мне не нужны. Основная проблема в том что duration не позволяет конвертировать из миллисекунд в тики, если размерность дробная. То есть если 1:1 то значение 473ms конвертируется в тики на этапе компиляции. в случае же 1:5 необходим _Constantin24(361 знак., 26.12.2019 08:05)
- Я не стал связываться с хроно, и сделал так (тоже упражнение, ни для чего не нужно) йцукен(391 знак., 25.12.2019 11:42)
- примерно так и сделал c литералами. У меня сложилось так, что sleep _Constantin24(53 знак., 25.12.2019 11:53)
- часто sleep не совсем то же, что delay. тики и delay ещё как-то можно сопоставить, и даже если оверхед на вход/выход из функции типа отсутствует (inline), то всякие прерывания могут джитера подогнать. а когда sleep уже как бы системный, то само Vit(55 знак., 25.12.2019 11:22)
- FreeRTOS использует для задержек значение в тиках. - _Constantin24(25.12.2019 11:46)
- Что значит "тики не равные 1:1 с миллисекундами"? Зачем float??? Достаточно хранить timespec состоящий из секунд и наносекунд и использовать только умножение (деления может не быть на некоторых CPU). - fk0(25.12.2019 11:11)
- FreeRTOS настроена, что каждое прерывание возникает 1 раз в 5 мс. Впервые такое увидел у nxp. - _Constantin24(25.12.2019 11:17)
- В нормальных RTOS вообще тика нет. Что теперь делать? Для sleep период должен растягиваться до ближайших 5мс сверху. - fk0(25.12.2019 11:22)
- А я чота ваще не догоняю, зачем спать "на N мс"? Зарядил таймер и услипнул до ближайшего прерывания. - mse homjak(25.12.2019 12:39)
- В нормальных RTOS вообще тика нет. Что теперь делать? Для sleep период должен растягиваться до ближайших 5мс сверху. - fk0(25.12.2019 11:22)
- FreeRTOS настроена, что каждое прерывание возникает 1 раз в 5 мс. Впервые такое увидел у nxp. - _Constantin24(25.12.2019 11:17)
- Кажется я знаю, почему космический корабль от Боинга не долетел до МКС. Там движок не вовремя включили. Наверняка мотором управляла программа на Яве. - Крок(25.12.2019 11:10)
- Вот поэтому плюсы злейшее зло. Неокрепшие умы заставляет заниматься тщетным рукоблудием. Нормальный
крепкий хозяйственниксишник просто сделает две функции sleep_ms() и sleep_ticks(). - SciFi(25.12.2019 08:26)- А sleep_ticks -- это просто говнокод, особенно при переносе на другую платформу. - fk0(25.12.2019 11:12)
- milliseconds использует int64_t и получаем полкило оверхеда при использовании duration<float>. Сменил на int32_t получил 8 байт. - _Constantin24(25.12.2019 10:37)
- Зачем миллисекундам int64_t? Нужна задержка больше, чем на 50 лет? О_о - SciFi(25.12.2019 10:43)
- вопрос разработчикам arm-atollic-eabi - _Constantin24(25.12.2019 11:14)
- Даже интересно стало. Где "разработчики arm-atollic-eabi" применили миллисекунды и int64_t? Хочу всё знать. - SciFi(25.12.2019 11:20)
- узнаете, поделитесь) - _Constantin24(25.12.2019 11:39)
- Даже интересно стало. Где "разработчики arm-atollic-eabi" применили миллисекунды и int64_t? Хочу всё знать. - SciFi(25.12.2019 11:20)
- "Мёртвая рука". - Крок(25.12.2019 11:08)
- вопрос разработчикам arm-atollic-eabi - _Constantin24(25.12.2019 11:14)
- Зачем миллисекундам int64_t? Нужна задержка больше, чем на 50 лет? О_о - SciFi(25.12.2019 10:43)
- Не могу не согласиться: вместо решения необходимой задачи приходится тратить время на "рукоблудие" (на самом деле я просто исследую). Но вопрос остался открытым. Причины использования следующие: защита от дурака при перечади timeout, перерасчет _Constantin24(30 знак., 25.12.2019 08:34)
- На самом деле для счётчика времени достаточно 32-битной величины. И пусть она периодически переполняется. Важно лишь не пытаться оперировать периодами большими чем период переполнения. И не рассчитывать время в будущем (что, очевидно, невозможно). fk0(652 знак., 25.12.2019 11:17)
- Вы совершенно правы: мне нет необходимости делать задержки более размерности 32 битной величины. - _Constantin24(25.12.2019 11:52)
- "На самом деле я просто исследую" - чтобы заложить мину для следующего исследователя. Это ещё один уровень ловушек в плюсах. Они там всюду :-) - SciFi(25.12.2019 08:58)
- Делаете sleep_ms на systick, sleep_tick на dwt. Проблема решена, а остальное - хрень и зло. - evgeniy1294(25.12.2019 08:36)
- Ну от вас такого не ожидал... Хотя, может быть вы прошли этот путь, и даете мне сразу ответ. Прошу пояснить. - _Constantin24(25.12.2019 08:41)
- У меня есть только это: evgeniy1294(540 знак., 25.12.2019 08:52)
- Смотрите же обе функции Delay принимают совершенно разные вещи: тики и миллисекунды. Пока уже сделанно подобное _Constantin24(242 знак., 25.12.2019 09:16)
- Пусть принимают, мне не мешает, это специально так сделано. К тому же я не пускаю алгоритмистов к аппаратной части. - evgeniy1294(25.12.2019 09:26)
- Смотрите же обе функции Delay принимают совершенно разные вещи: тики и миллисекунды. Пока уже сделанно подобное _Constantin24(242 знак., 25.12.2019 09:16)
- У меня есть только это: evgeniy1294(540 знак., 25.12.2019 08:52)
- Ну от вас такого не ожидал... Хотя, может быть вы прошли этот путь, и даете мне сразу ответ. Прошу пояснить. - _Constantin24(25.12.2019 08:41)
- На самом деле для счётчика времени достаточно 32-битной величины. И пусть она периодически переполняется. Важно лишь не пытаться оперировать периодами большими чем период переполнения. И не рассчитывать время в будущем (что, очевидно, невозможно). fk0(652 знак., 25.12.2019 11:17)
- Миллисекунды - это "вечность" по сравнению с тиками контроллера. Тут некоторые уже в эту кучу и микросекунды накидали. А ведь разница в 1000 раз. Кстати, если вам действительно нужны миллисекунды с "копейками", то используйте микросекунды. - Costic(25.12.2019 18:31)