Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Время выполнения операции?
Форум разработчиков электроники ELECTRONIX.ru > Сайт и форум > В помощь начинающему > Программирование
qulik
Доброго времени суток! rolleyes.gif

Подскажите, плиз, как можно оценить время выполнения той или иной операции. В частности операции if (без входа внуть скобок). cranky.gif

Код
while(1)
{
    if (PINB & 0x01);
    else
    {
        ...
     }

    if(...);
    else
    {
        ...
    }


}
V_N
Посмотреть результат компиляции ассемблерный листинг или посмотреть в симуляторе
ARV
В отладчике-симуляторе AVR Studio "прошагать"
Rst7
А что, заглянуть в ассемблеровский листинг компилятора и посчитать такты религия не позволяет?
ARV
Цитата(Rst7 @ Jul 26 2009, 18:31) *
А что, заглянуть в ассемблеровский листинг компилятора и посчитать такты религия не позволяет?
но ведь в отладчике удобнее! там и такты считаются автоматически, знай жми F10 или F11...
Rst7
Цитата
но ведь в отладчике удобнее! там и такты считаются автоматически, знай жми F10 или F11...


В отладчике мозг не будет задет. "Знай жми...". А так надо немного им (мозгом) поработать. Полезно.

PS Я может несколько грубовато выражаюсь, но топикстартер запостил этот вопрос не в раздел для новичков, а в раздел, где вроде-бы принят более профессиональный уровень вопросов. Так что извините, если что не так.
qulik
Эм. Ссори за повтор вопроса! smile.gif Ненашел свой топик, решил повторно создать темку и получил бан! smile3009.gif

Тем не менее всем спасибо за подсказки!! biggrin.gif
Насколько я понял в AVRStudio это можно сделать кликнув по View/Disassembler... и посчитав строчки.
SasaVitebsk
Для IAR
Если порт лежит в прямом адресном пространстве, то if будет выполнятся за 1/2 такта (будет сгенерирован sbis/sbic). Если в расширенном адресном пространстве (например mega640 некоторые порты), то будет 2 LDI (загрузка адреса) LDS (чтение порта) + sbrc/sbrs (само условие). Итого 5/6 тактов

1/2, 5/6 для if/else соответственно
Сергей Борщ
Цитата(qulik @ Jul 31 2009, 15:47) *
Насколько я понял в AVRStudio это можно сделать кликнув по View/Disassembler... и посчитав строчки.
Нет. Потому что разные строчки (на самом деле это называется "инструкции процессора" или "ассемблерные команды") исполняются разное количество тактов. Какая сколько - описано в документе AVR Instruction Set. Проще всего, как советовал ARV, пройти интересующий кусок в отладчике, наблюдая за счетчиком циклов.
Dog Pawlowa
Я всегда советую осциллограф, поставив команды ногодрыганья в начале и конце участка.
Что толку считать команды, циклы и проч, если в системе могут прерывания, ПДП, а время доступа к внешней шине непредсказуемое, поскольку инициализация контроллера внешней памяти "чистодраная" из интернета.
Не упущу и этот случай smile.gif
qulik
Цитата(Сергей Борщ @ Aug 1 2009, 12:58) *
Нет. Потому что разные строчки (на самом деле это называется "инструкции процессора" или "ассемблерные команды") исполняются разное количество тактов. Какая сколько - описано в документе AVR Instruction Set. Проще всего, как советовал ARV, пройти интересующий кусок в отладчике, наблюдая за счетчиком циклов.


Да, Спасибо! Нашел где это отображается. Действительно самый простой вариант smile.gif
qulik
Цитата(Dog Pawlowa @ Aug 1 2009, 22:43) *
Я всегда советую осциллограф, поставив команды ногодрыганья в начале и конце участка.
Что толку считать команды, циклы и проч, если в системе могут прерывания, ПДП, а время доступа к внешней шине непредсказуемое, поскольку инициализация контроллера внешней памяти "чистодраная" из интернета.
Не упущу и этот случай smile.gif


Осцилограф - эт хорошо! smile.gif Но не всегда он под рукой. А вот метод "ногодрыганья" и светодиоды в домашних условиях помогают, да бы поймать тот или иной момент! smile.gif
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.