khlenar 10 January 5, 2025 Posted January 5, 2025 · Report post Здравствуйте все. В начале некий код выполнялся за 600нсек. Проверялось с помощью выхода. Т.е. на входе кода на вывод устанавливалась 1 на выходе кода 0. Осциллографом проверялось. Через некоторое время этот же код выполнялся уже за 60 мксек. Путем оптимизации в свойствах, скорость выполнения снизилось до 2мксек. На сл. день код выполнения опять стал 60 мксек. Что то совсем не пойму. В чем дело. Интересно из питания CPU в 1,87В. в место 1,9 может быть такое? Quote Share this post Link to post Share on other sites More sharing options...
_4afc_ 50 January 8, 2025 Posted January 8, 2025 · Report post On 1/5/2025 at 6:56 PM, khlenar said: В начале некий код выполнялся за 600нсек. Проверялось с помощью выхода. Т.е. на входе кода на вывод устанавливалась 1 на выходе кода 0. Вы уверены, что монстры типа TMS320F28335 могут качественно переключать выход 1/0 с детерминированной точностью? Вроде у таких уже скорость меряют в РТОС чарез отладчик. Ну или запустите код раз 100 между переключением ног. Quote Share this post Link to post Share on other sites More sharing options...
ELEKTROS 0 January 9, 2025 Posted January 9, 2025 · Report post On 1/5/2025 at 6:56 PM, khlenar said: Здравствуйте все. В начале некий код выполнялся за 600нсек. Проверялось с помощью выхода. Т.е. на входе кода на вывод устанавливалась 1 на выходе кода 0. Осциллографом проверялось. Через некоторое время этот же код выполнялся уже за 60 мксек. Путем оптимизации в свойствах, скорость выполнения снизилось до 2мксек. На сл. день код выполнения опять стал 60 мксек. Что то совсем не пойму. В чем дело. Интересно из питания CPU в 1,87В. в место 1,9 может быть такое? Измерить можно в отладке через "тики", можно завести для этого таймер и по порту слать массив из времён выполнения (так получите хоть какую то статистику на за несколько периодов). Ну осцилом тоже можно., муторно только. Где код выполняется: в фоне, в прерывании, используются ли вообще прерывания, используются ли "вложеные" прерывания (механизм настройки не такой прям как в том же stm32, но можно)? Quote Share this post Link to post Share on other sites More sharing options...
khlenar 10 January 9, 2025 Posted January 9, 2025 · Report post В 08.01.2025 в 15:21, _4afc_ сказал: Вы уверены, что монстры типа TMS320F28335 могут качественно переключать выход 1/0 с детерминированной точностью? Вроде у таких уже скорость меряют в РТОС чарез отладчик. Ну или запустите код раз 100 между переключением ног. Переключение выхода 200нсек. 8 часов назад, ELEKTROS сказал: Измерить можно в отладке через "тики", можно завести для этого таймер и по порту слать массив из времён выполнения (так получите хоть какую то статистику на за несколько периодов). Ну осцилом тоже можно., муторно только. Где код выполняется: в фоне, в прерывании, используются ли вообще прерывания, используются ли "вложеные" прерывания (механизм настройки не такой прям как в том же stm32, но можно)? Да. Прерывания есть. Я при начале вычисления отключаю все прерывания потом включаю. Сейчас стабильно вычисление блока если программа загружена в ОЗУ 7мкс. и если загружена в флэш 40мкс. Разница очень большая. Quote Share this post Link to post Share on other sites More sharing options...
somebody111 2 January 10, 2025 Posted January 10, 2025 · Report post Вы при работе с осциллографом сами развертку выставляли ... ну 60нc/дел или автоустановкой?) Очень похоже на то, что вы имеете дело с теоремой Котельникова-) Quote Share this post Link to post Share on other sites More sharing options...
ELEKTROS 0 January 10, 2025 Posted January 10, 2025 (edited) · Report post 16 hours ago, khlenar said: Переключение выхода 200нсек. Да. Прерывания есть. Я при начале вычисления отключаю все прерывания потом включаю. Сейчас стабильно вычисление блока если программа загружена в ОЗУ 7мкс. и если загружена в флэш 40мкс. Разница очень большая. В общем говорить, о чем то не видя того сложно. Для flash там включить контейнер ускоряющий надо (или как то так он называется, судя по разницы в 5-6 раз для 150 МГц наверное он включён всё же), хотя это не сравнить с переносом в ОЗУ. А вообще "заявленые" 600нс можно и ручками посчитать (для 150МГц не много тактов, по 6.67нс, меньше 100 должно быть) так ли оно вообще , глядя в дизасемблер. Edited January 10, 2025 by ELEKTROS Quote Share this post Link to post Share on other sites More sharing options...
khlenar 10 January 10, 2025 Posted January 10, 2025 · Report post Как то странно. При одинаковых частотах в 150МГц TMS320F28335 из под ОЗУ натуральный логарифм ln(x) float выполняет за 2,5 мкс., а STM32G474 за 1,7 мкс. из под флэш., а использовав CORDIC 400нс. со всеми преобразованиями во float. Quote Share this post Link to post Share on other sites More sharing options...
Stepanov 54 February 2, 2025 Posted February 2, 2025 · Report post Код в студию. Quote Share this post Link to post Share on other sites More sharing options...