Перейти к содержанию
    

Быстрое деление в AVR - Как?

3 часа назад, dimka76 сказал:

ATMEL уже все за вас написал.
Вам только надо код, написанный ATMEL, подключить к своему проекту.

А какой смысл? Автор же написал, что не дружит с асмом. А си-компилятор сам умеет аналогичные функции для операции деления подставлять. Может даже более оптимальные. Только чтобы оценить степень оптимальности (какая лучше), опять же нужно дружить с асмом.

Так что - тупик.  :unknw:

9 минут назад, MPetrovich сказал:

А разве деление float/float не в одно действие?

Понятия "действие" в CPU нет. Есть такты, циклы, команды.

И любая FPU-операция будет дольше, чем аналогичная целочисленная.

 

PS: Кроме того - си-компилятор может заинлайнить какие-то операции или оптимизировать их, слепив с соседними. Поэтому (в общем случае) - результат его работы будет лучше, чем бездумное использование ассемблерных функций. Без понимания асма и умения их доработать под себя.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1 minute ago, dimka76 said:

Речь же шла о Cortex-M3. В нем нет float

STM32F4xx это не Cortex-M3? Я на нём делал гироскоп для платформы и синусы во float умножал/делил с показаниями акселерометра тоже во float... 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

On 7/23/2024 at 8:49 PM, jcxz said:

А какой смысл? Автор же написал, что не дружит с асмом. А си-компилятор сам умеет аналогичные функции для операции деления подставлять. Может даже более оптимальные. Только чтобы оценить степень оптимальности (какая лучше), опять же нужно дружить с асмом.

В том Apllication Note, на который я ссылался, описано два варианта деления. Оптимальный по объему и оптимальный по скорости.
Какой вариант в Си компиляторе - ХЗ :pardon:

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

4 minutes ago, jcxz said:

А си-компилятор сам умеет аналогичные функции для операции деления подставлять. Может даже более оптимальные.

Ну, выходит, я зря уважаемых юзеров беспокоил. "Всё украдено до нас"(Операция Ы..) 🤷‍♂️

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

5 часов назад, MPetrovich сказал:

 А вот как оптимизировать деление в моём случае?

Никак :acute:

Деление на хрен знает что даёт результат НИЧТО.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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:

Никак :acute:

Деление на хрен знает что даёт результат НИЧТО.

Ну, так, обороты же изначально неизвестны. Вот и получается, что деление не на константу.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

Но таскать с собой несколько процедур деления ради какой-то индикации, по-моему, перебор.

В библиотеке GCC-AVR те же процедуры что и в аппнотах.

Изменено пользователем vov4ick

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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:

Но таскать с собой несколько процедур деления ради какой-то индикации, по-моему, перебор.

Согласен! Индикация побочный процесс. Основной - регулировка и поддержание заданных оборотов двигателя. 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...