|
Время выполнения кода |
|
|
|
Feb 28 2018, 08:16
|
Участник

Группа: Участник
Сообщений: 44
Регистрация: 26-05-17
Пользователь №: 97 309

|
У меня есть АЦП, которые начинает работать одновременно по таймеру и я хочу замерить время конвертации всех выбранных каналов с помощью таймера dwt (поднимается флаг, к примеру, TC и я меряю полученный DWT->CYCCNT) но вот какое дело, если я засовываю проверку флага в бесконечный цикл (__HAL_ADC_GET_FLAG) то получается одно значение CYCCNT, а если засовываю DWT->CYCCNT в прерывание по TC то получается совсем другое значение счётчика, гораздо большее, у меня вопрос, можно ли в принципе в отладчике засовывать счётчик dwt в обработчик прерывания? Если да, то почему получаются на столько разные значения, на порядки. Спасибо
|
|
|
|
|
 |
Ответов
|
Feb 28 2018, 09:11
|
Участник

Группа: Участник
Сообщений: 44
Регистрация: 26-05-17
Пользователь №: 97 309

|
Цитата(scifi @ Feb 28 2018, 03:34)  Какие порядки? Этот счётчик считает такты. Их можно пересчитать в наносекунды. Приведите уже конкретные цифры. Кто знает, может быть, разница объясняется задержкой на входе в обработчик прерывания? Как знать, может быть оно у вас сделано очень-очень медленно? конкретные цифры в цикле while CCYNCT = 530, в десятичной, в обработчике CCYNCT = 27157, вот на такие порядки и отличается))в десятки раз Цитата(jcxz @ Feb 28 2018, 03:42)  Лучше вообще ничего не куда не засовывать не зная куда суёшь. И что значит "в отладчике засовывать"? Вы DWT->CYCCNT где читаете - в своём коде или в окне "Watch" отладчика? И да - как уже сказали - конкретные цифры в студию. А то 1 и 10 - тоже имеют разный порядок.... считаю в коде и засовывал в watch отладчика) ацп у меня обрабатывает максимально 8 каналов, включаются они одновременно в режиме multimode, ацп тактируется 72МГц, такая же частота и у SYSCLK, поэтому вариант в CCYNCT=530 тактов лично мне видится более логичным, при 12 разрядном разрешении + 19 тактов ацп клока, выбранных в качестве времени сэмлирования, получаем кол-во тактов необходимое для конвертации всех каналов в ацп (12+19)*8 = 248, конечно чисто теоретически, но это ближе к 530 чем к 27157
Сообщение отредактировал Connor - Feb 28 2018, 09:12
|
|
|
|
|
Feb 28 2018, 10:43
|
Гуру
     
Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713

|
Цитата(iosifk @ Feb 28 2018, 12:25)  На каждый вызов подпрограммы, возврат, переход и прерывание, процессор вынужден аппаратно очистить конвейер команд. Это может быть 5 циклов про 5-ти ступенчатом конвейере. Плюс к этому в стек пишется адрес возврата. А еще там должна быть смена состояяний регистров, которые должны записываться в стек... Контроллеру прерываний тоже может потребоваться несколько клоков на выработку запроса прерывания... Даже если-б у автора был CM4 и писались/читались в стек все регистры FPU, то всё равно указанное им время слишком велико, чтобы это были затраты по указанным причинам. Цитата(Connor @ Feb 28 2018, 12:41)  понимаете к чему я веду, мне надо укладываться в 20 мкс, это 1440 тактов для 72мгц клока, и тут получается что в одном случае я укладываюсь, а в другом нет, так чему мне верить и на что опираться? Найти в своём коде все места, где есть длинные запреты прерывания. Или длинные ISR с приоритетом выше чем у ISR АЦП.
|
|
|
|
|
Feb 28 2018, 10:51
|
Участник

Группа: Участник
Сообщений: 44
Регистрация: 26-05-17
Пользователь №: 97 309

|
Цитата(jcxz @ Feb 28 2018, 05:43)  Даже если-б у автора был CM4 и писались/читались в стек все регистры FPU, то всё равно указанное им время слишком велико, чтобы это были затраты по указанным причинам. stm32f303 использует сortex m4  Цитата(jcxz @ Feb 28 2018, 05:43)  Найти в своём коде все места, где есть длинные запреты прерывания. Или длинные ISR с приоритетом выше чем у ISR АЦП. Спасибо, посмотрю, я тоже считаю что слишком много тактов в сумме получается для таких затрат
Сообщение отредактировал Connor - Feb 28 2018, 10:52
|
|
|
|
Сообщений в этой теме
Connor Время выполнения кода Feb 28 2018, 08:16  jcxz Цитата(Connor @ Feb 28 2018, 11:11) счита... Feb 28 2018, 10:06   Connor Цитата(jcxz @ Feb 28 2018, 05:06) В отлад... Feb 28 2018, 10:22  scifi Цитата(Connor @ Feb 28 2018, 12:11) ацп у... Feb 28 2018, 10:12 jcxz Цитата(Connor @ Feb 28 2018, 10:16) можно... Feb 28 2018, 08:42 Connor понимаете к чему я веду, мне надо укладываться в 2... Feb 28 2018, 10:41 scifi Цитата(Connor @ Feb 28 2018, 13:41) поним... Feb 28 2018, 10:53  jcxz Чтобы потешить внутреннего перфекциониста и заведо... Feb 28 2018, 13:48   Connor Цитата(jcxz @ Feb 28 2018, 08:48) Чтобы п... Mar 1 2018, 07:09 ViKo Чего уж муд(р)ить, на тестовую ножку выдать импуль... Mar 1 2018, 07:21 klen Цитата(ViKo @ Mar 1 2018, 10:21) Чего уж ... Mar 3 2018, 05:09
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|