Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Время вызова кода
Форум разработчиков электроники ELECTRONIX.ru > Сайт и форум > В помощь начинающему > Программирование
srm
Мне нужно знать момент времени, в который вызывается определённая функция. В IAR есть такая штука - бряк с выводом сообщения. Можно ли вывести в лог текущее время с точностью, хотя бы до десятых долей миллисекунды?
sigmaN
А счётчика тактов там нет? ИМХО такие вещи по тактам считать нужно.
srm
sigmaN, можно и по тактам. Но я не знаю как вывести в лог значение счётчика.
sigmaN
Тут я помочь ничем не могу. IAR никогда в глаза не видел. А нельзя ли по простому: бряк на начало кода, потом бряк на вызов этой функции. Причем первый бряк не обязательно должен быть началом вообще. И можно на первом бряке сбросить счётчик тактов для удобства.

А ещё вы можете без проблем завести таймер, который будет тикать Вам хоть каждую микросекунду, а потом сделать что-то вроде GetTickCout() и в нужный момент запоминать текущее значение. При этом в главном цикле можно без труда выводить значение этой переменной(или может быть даже массива) по UART. Оверхед будет минимальным, т.к. перед вызовом функции или уже в самой функции будет просто добавлено что-то типа foo_call_time = GetTickCout(); если GetTickCout() заинлайнить - то это всего каких-то пять-десять лишних тактов(в зависимости от размера переменных и кода, обеспечивающего атомарность доступа к ним).
Andron_
крутите функцию в цикле и на каждом проходе цикла меняете уровень выходной ноги... осциллографом смотрите время...
sigmaN
Ну так топикстартер ведь хочет узнать именно время запуска функции, а не время её выполнения.
Цитата
Мне нужно знать момент времени, в который вызывается определённая функция
zltigo
Цитата(sigmaN @ May 24 2010, 05:35) *
Ну так топикстартер ведь хочет узнать именно время запуска функции, а не время её выполнения.

Как я сильно в этом сомневаюсь.
Ваша функция запустилась 24 мая в 7 часов 6 минут 49 секунд 15 и 2591 десятитысячных миллисекунды.
И дальше, простите, что?
Вообще-то пусть осваивает profiling читая документацию на отладчик или реально осциллографом.
srm
zltigo
Цитата
И дальше, простите, что?
то, что вторая функция сработает 24 мая в 7 часов 6 минут 49 секунд 15 и 2601, т.е. между вызовами пройдт 0.001с. Это мне и нужно знать.

Цитата
Вообще-то пусть осваивает profiling читая документацию на отладчик или реально осциллографом.
профайлинг здесь не поможет, осциллографом я не владею.

Вопрос именно в том, как замерить время между двумя вызовами. Не время выполнения кода, а именно время между вызовами.
Как-то странно. Вопрос именно по использованию IDE IAR. В соответствующем разделе форума я поместил тему. Её перенесли сюда (к программированию уж точно никакого отношения не имеет).
sigmaN
Цитата
Вопрос именно в том, как замерить время между двумя вызовами.
Ну тогда во-первых таймер и вывод через UART рулят. А во вторых нужно задать вопрос: от чего зависит время между двумя вызовами? От внешнего события? А может быть оно уже заранее известно(т.е. между вызовами проходит ровно 12489023 тактов процессора)?
srm
Цитата
Ну тогда во-первых таймер и вывод через UART рулят. А во вторых нужно задать вопрос: от чего зависит время между двумя вызовами? От внешнего события? А может быть оно уже заранее известно(т.е. между вызовами проходит ровно 12489023 тактов процессора)?
Ну, я уже не знаю как объяснить sad.gif( Вы предлагаете костыли. контроллер генерирует ШИМ. Мне нужно точно знать его характеристики. Я не имею возможности измерить это дело на плате (нет осциллографа). Хочу измерить с помощью отладчика IAR'а.
zltigo
Цитата(srm @ May 24 2010, 07:12) *
Вопрос именно по использованию IDE IAR...
....контроллер генерирует ШИМ. Мне нужно точно знать его характеристики. Я не имею возможности измерить это дело на плате (нет осциллографа). Хочу измерить с помощью отладчика IAR'а.

Вопрос, как в конце концов выяснилось, об использовании осциллографа. Никакой отладчик не в состоянии полностью заменить отвертки, паяльники, осциллографы... В Вашем конкретном случае просто надо написать пяток строк без ошибок и все.
srm
Цитата
В Вашем конкретном случае просто надо написать пяток строк без ошибок и все.
в моём конкретном случае всё несколько сложнее и пятью строками кода не обойдёшься. Как заменить осциллограф отладчиком я написал. Не верится, что IAR не умеет засекать время. Скорее всего данный вопрос нужно задавать на форуме разработчика.
aaarrr
Далеко не любой процессор (кстати, вы не указали, какой у вас) можно просимулировать с приемлемой точностью. Если это не маленький AVR/PIC/что-то подобное, то расхождение симулятора с реальной жизнью может быть огромным.

Отладчиком заменить осциллограф нельзя.
skripach
Цитата
Отладчиком заменить осциллограф нельзя.

Та можно.. biggrin.gif
Увеличить период шим'а скажет до нескольких минут и засекать время секундомером.
sigmaN
Цитата
в моём конкретном случае всё несколько сложнее и пятью строками кода не обойдёшься
Да ладно. А какие там вы характеристики ШИМ хотите замерять? Скважность, да? Так это всё легко вычисляется и действительно будет работать так, как написано. Амплитуда вас интересует? Ну так пин будет дёргаться с известной амплитудой.

Время ещё там засекать.
Выдумываете для себя лишние задачи.
srm
Ответ на исходный вопрос я не услышал.
Тему можно закрывать, всё равно пошёл оффтоп.
zltigo
Цитата(srm @ May 25 2010, 16:57) *
Ответ на исходный вопрос я не услышал.

Если не можете даже вопрос задать sad.gif, то тему лучше и не открывать.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.