jcxz 217 9 часов назад Опубликовано 9 часов назад · Жалоба 3 часа назад, dimka76 сказал: ATMEL уже все за вас написал. Вам только надо код, написанный ATMEL, подключить к своему проекту. А какой смысл? Автор же написал, что не дружит с асмом. А си-компилятор сам умеет аналогичные функции для операции деления подставлять. Может даже более оптимальные. Только чтобы оценить степень оптимальности (какая лучше), опять же нужно дружить с асмом. Так что - тупик. 9 минут назад, MPetrovich сказал: А разве деление float/float не в одно действие? Понятия "действие" в CPU нет. Есть такты, циклы, команды. И любая FPU-операция будет дольше, чем аналогичная целочисленная. PS: Кроме того - си-компилятор может заинлайнить какие-то операции или оптимизировать их, слепив с соседними. Поэтому (в общем случае) - результат его работы будет лучше, чем бездумное использование ассемблерных функций. Без понимания асма и умения их доработать под себя. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
MPetrovich 6 9 часов назад Опубликовано 9 часов назад · Жалоба 1 minute ago, dimka76 said: Речь же шла о Cortex-M3. В нем нет float STM32F4xx это не Cortex-M3? Я на нём делал гироскоп для платформы и синусы во float умножал/делил с показаниями акселерометра тоже во float... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
dimka76 52 9 часов назад Опубликовано 9 часов назад · Жалоба On 7/23/2024 at 8:49 PM, jcxz said: А какой смысл? Автор же написал, что не дружит с асмом. А си-компилятор сам умеет аналогичные функции для операции деления подставлять. Может даже более оптимальные. Только чтобы оценить степень оптимальности (какая лучше), опять же нужно дружить с асмом. В том Apllication Note, на который я ссылался, описано два варианта деления. Оптимальный по объему и оптимальный по скорости. Какой вариант в Си компиляторе - ХЗ Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
MPetrovich 6 9 часов назад Опубликовано 9 часов назад · Жалоба 4 minutes ago, jcxz said: А си-компилятор сам умеет аналогичные функции для операции деления подставлять. Может даже более оптимальные. Ну, выходит, я зря уважаемых юзеров беспокоил. "Всё украдено до нас"(Операция Ы..) 🤷♂️ Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
dimka76 52 9 часов назад Опубликовано 9 часов назад · Жалоба On 7/23/2024 at 8:51 PM, MPetrovich said: STM32F4xx это не Cortex-M3? Нет. Это Cortex-M4F Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
A.V.Avtomat 19 9 часов назад Опубликовано 9 часов назад · Жалоба 5 часов назад, MPetrovich сказал: А вот как оптимизировать деление в моём случае? Никак Деление на хрен знает что даёт результат НИЧТО. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
dimka76 52 9 часов назад Опубликовано 9 часов назад · Жалоба On 7/23/2024 at 8:51 PM, MPetrovich said: STM32F4xx это не Cortex-M3? Я на нём делал гироскоп для платформы и синусы во float умножал/делил с показаниями акселерометра тоже во float... В Cortex-M4 деление с помощью FPU (float) занимает 14 тактов. Но во-первых, надо указать компилятору использовать аппаратный блок плавающей точки, а во-вторых - этот блок еще надо включить определенными битами в определенном регистре. Вы это делали ? On 7/23/2024 at 8:57 PM, A.V.Avtomat said: Никак Деление на хрен знает что даёт результат НИЧТО. Ну, так, обороты же изначально неизвестны. Вот и получается, что деление не на константу. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
vov4ick 38 7 часов назад Опубликовано 7 часов назад (изменено) · Жалоба Ускорить деление можно в случае если не все биты делимого используются, тогда можно сократить количество циклов деления. Но таскать с собой несколько процедур деления ради какой-то индикации, по-моему, перебор. В библиотеке GCC-AVR те же процедуры что и в аппнотах. Изменено 6 часов назад пользователем vov4ick Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
MPetrovich 6 6 часов назад Опубликовано 6 часов назад · Жалоба 2 hours ago, dimka76 said: Вы это делали Вероятно да. Лет 6-7 назад это было...))) 23 minutes ago, vov4ick said: В библиотеке GCC-AVR те же процедуры что и в аппнотах. Я ж уже написал: Ну, выходит, я зря уважаемых юзеров беспокоил. "Всё украдено до нас" 2 hours ago, MPetrovich said: 2 hours ago, jcxz said: В принципе, я из дискуссии сделал вывод, что оптимизировать лучше, чем си-компилятор у меня вряд ли получится. Поскольку на данном этапе контроллер справляется, мне не стоит выпендриваться с оптимизацией))) 31 minutes ago, vov4ick said: Но таскать с собой несколько процедур деления ради какой-то индикации, по-моему, перебор. Согласен! Индикация побочный процесс. Основной - регулировка и поддержание заданных оборотов двигателя. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
MPetrovich 6 6 часов назад Опубликовано 6 часов назад · Жалоба В любом случае, спасибо всём принявшим участие в обсуждении! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться