MrYuran 29 20 декабря, 2023 Опубликовано 20 декабря, 2023 · Жалоба Интересно, только у меня возник первый вопрос - "6 мкс многовато" - для чего? Что за космический реалтайм? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
sidy 1 20 декабря, 2023 Опубликовано 20 декабря, 2023 · Жалоба 15 hours ago, jcxz said: float a = ...; int result = (int)(a * (1 << 8)) * 10 >> 8; Применение такого выражение позволило снизить время выполнения с 6 мкс до 5,2 мкс. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
pyroman 2 20 декабря, 2023 Опубликовано 20 декабря, 2023 · Жалоба 12 minutes ago, sidy said: Применение такого выражение позволило снизить время выполнения с 6 мкс до 5,2 мкс. Интересно - сколько времени занимает просто преобразование? int result = a; Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
sidy 1 20 декабря, 2023 Опубликовано 20 декабря, 2023 · Жалоба 5 minutes ago, pyroman said: Интересно - сколько времени занимает просто преобразование? int result = a; Не могу сказать точно. Время выполнение данного участка кода я измеряю с помощь установки 1 и сброса в 0 ножки МК. В данном случае там всегда ноль, т.е. в 1 установиться не успевает. Можно сделать вывод что преобразование происходит очень быстро) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 243 20 декабря, 2023 Опубликовано 20 декабря, 2023 · Жалоба 55 минут назад, sidy сказал: Не могу сказать точно. Время выполнение данного участка кода я измеряю с помощь установки 1 и сброса в 0 ножки МК. Меряете микроны с помощью миллиметровой линейки? имхо - это очень грубое измерение. Лучше для измерения таких задержек пользоваться таймером. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
dimka76 63 20 декабря, 2023 Опубликовано 20 декабря, 2023 · Жалоба 1 hour ago, sidy said: Не могу сказать точно. Время выполнение данного участка кода я измеряю с помощь установки 1 и сброса в 0 ножки МК. В данном случае там всегда ноль, т.е. в 1 установиться не успевает. Можно сделать вывод что преобразование происходит очень быстро) 6 minutes ago, jcxz said: Меряете микроны с помощью миллиметровой линейки? имхо - это очень грубое измерение. Лучше для измерения таких задержек пользоваться таймером. Скорее всего оптимизатор что-то соптимизировал. Не может такое преобразование мгновенно выполняться. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 243 20 декабря, 2023 Опубликовано 20 декабря, 2023 · Жалоба 15 минут назад, dimka76 сказал: Скорее всего оптимизатор что-то соптимизировал. Не может такое преобразование мгновенно выполняться. Если обращение к таймеру правильно прописано (со всеми volatile), то не важно - соптимизирорвал или нет -> будет показывать правильно реальное время выполнения. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
sidy 1 21 декабря, 2023 Опубликовано 21 декабря, 2023 · Жалоба 23 hours ago, pyroman said: Интересно - сколько времени занимает просто преобразование? int result = a; 22 hours ago, dimka76 said: Скорее всего оптимизатор что-то соптимизировал. Не может такое преобразование мгновенно выполняться. Да действительно, соптимизировал: 3,4 мкс занимает такое преобразование. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
dimka76 63 21 декабря, 2023 Опубликовано 21 декабря, 2023 · Жалоба On 12/21/2023 at 9:45 AM, sidy said: Да действительно, соптимизировал: 3,4 мкс занимает такое преобразование. Может вам на Cortex-M4F перейти ? Они и дешевле гораздо и доступнее (по крайней мере в России). Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
sidy 1 21 декабря, 2023 Опубликовано 21 декабря, 2023 · Жалоба 35 minutes ago, dimka76 said: Может вам на Cortex-M4F перейти ? Они и дешевле гораздо и доступнее (по крайней мере в России). Это все понятно и даже используется. Просто есть один старый проект в который потребовалось добавить функционал. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
pyroman 2 21 декабря, 2023 Опубликовано 21 декабря, 2023 (изменено) · Жалоба unsigned long data; signed long result; data = 0xC1480000; //-12.5 if (data != 0) { result = (data & 0x007FFFFF | 0x00800000) * 10 >> (150 - (data >> 23 & 0xFF)); if (data & 0x80000000) //знак числа result = -result; } else result = 0; Изменено 21 декабря, 2023 пользователем pyroman Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Ruslan1 17 24 декабря, 2023 Опубликовано 24 декабря, 2023 · Жалоба В 21.12.2023 в 07:45, sidy сказал: Да действительно, соптимизировал: 3,4 мкс занимает такое преобразование. Так а нужно-то сколько? просто больше или просто меньше- это не на инженерном языке. Если больше чего то не годится? если меньше чего то подходит? Ну и проверять доли микросекунд пином- так себе тест. Нужно или такты в симуляторе/эмуляторе считать, или таймер аппаратный под эту проверку использовать. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
sidy 1 24 декабря, 2023 Опубликовано 24 декабря, 2023 · Жалоба On 12/21/2023 at 8:30 PM, pyroman said: unsigned long data; signed long result; data = 0xC1480000; //-12.5 if (data != 0) { result = (data & 0x007FFFFF | 0x00800000) * 10 >> (150 - (data >> 23 & 0xFF)); if (data & 0x80000000) //знак числа result = -result; } else result = 0; Спасибо! Думаю это просто отличное решение. Только не совсем понятно: что означает (откуда берется) число 150? 1 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
andrew_b 17 25 декабря, 2023 Опубликовано 25 декабря, 2023 · Жалоба 10 hours ago, sidy said: Только не совсем понятно: что означает (откуда берется) число 150? А также 23. Да здравствуют магические константы и отсутствие комментариев! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
dimka76 63 25 декабря, 2023 Опубликовано 25 декабря, 2023 · Жалоба On 12/25/2023 at 9:13 AM, andrew_b said: А также 23. Это местоположение экспоненты в битовом пространстве числа в формате с плавающей точкой. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться