реклама на сайте
подробности

 
 
2 страниц V   1 2 >  
Closed TopicStart new topic
> Время вызова кода
srm
сообщение May 23 2010, 16:58
Сообщение #1


Частый гость
**

Группа: Участник
Сообщений: 144
Регистрация: 27-12-09
Из: Пермь
Пользователь №: 54 501



Мне нужно знать момент времени, в который вызывается определённая функция. В IAR есть такая штука - бряк с выводом сообщения. Можно ли вывести в лог текущее время с точностью, хотя бы до десятых долей миллисекунды?
Go to the top of the page
 
+Quote Post
sigmaN
сообщение May 23 2010, 17:43
Сообщение #2


I WANT TO BELIEVE
******

Группа: Свой
Сообщений: 2 617
Регистрация: 9-03-08
Пользователь №: 35 751



А счётчика тактов там нет? ИМХО такие вещи по тактам считать нужно.


--------------------
The truth is out there...
Go to the top of the page
 
+Quote Post
srm
сообщение May 23 2010, 18:03
Сообщение #3


Частый гость
**

Группа: Участник
Сообщений: 144
Регистрация: 27-12-09
Из: Пермь
Пользователь №: 54 501



sigmaN, можно и по тактам. Но я не знаю как вывести в лог значение счётчика.
Go to the top of the page
 
+Quote Post
sigmaN
сообщение May 23 2010, 22:45
Сообщение #4


I WANT TO BELIEVE
******

Группа: Свой
Сообщений: 2 617
Регистрация: 9-03-08
Пользователь №: 35 751



Тут я помочь ничем не могу. IAR никогда в глаза не видел. А нельзя ли по простому: бряк на начало кода, потом бряк на вызов этой функции. Причем первый бряк не обязательно должен быть началом вообще. И можно на первом бряке сбросить счётчик тактов для удобства.

А ещё вы можете без проблем завести таймер, который будет тикать Вам хоть каждую микросекунду, а потом сделать что-то вроде GetTickCout() и в нужный момент запоминать текущее значение. При этом в главном цикле можно без труда выводить значение этой переменной(или может быть даже массива) по UART. Оверхед будет минимальным, т.к. перед вызовом функции или уже в самой функции будет просто добавлено что-то типа foo_call_time = GetTickCout(); если GetTickCout() заинлайнить - то это всего каких-то пять-десять лишних тактов(в зависимости от размера переменных и кода, обеспечивающего атомарность доступа к ним).


--------------------
The truth is out there...
Go to the top of the page
 
+Quote Post
Andron_
сообщение May 24 2010, 01:32
Сообщение #5


.NET developer
***

Группа: Свой
Сообщений: 218
Регистрация: 20-10-07
Из: Новосибирск
Пользователь №: 31 532



крутите функцию в цикле и на каждом проходе цикла меняете уровень выходной ноги... осциллографом смотрите время...
Go to the top of the page
 
+Quote Post
sigmaN
сообщение May 24 2010, 03:35
Сообщение #6


I WANT TO BELIEVE
******

Группа: Свой
Сообщений: 2 617
Регистрация: 9-03-08
Пользователь №: 35 751



Ну так топикстартер ведь хочет узнать именно время запуска функции, а не время её выполнения.
Цитата
Мне нужно знать момент времени, в который вызывается определённая функция


--------------------
The truth is out there...
Go to the top of the page
 
+Quote Post
zltigo
сообщение May 24 2010, 04:12
Сообщение #7


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



Цитата(sigmaN @ May 24 2010, 05:35) *
Ну так топикстартер ведь хочет узнать именно время запуска функции, а не время её выполнения.

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


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
srm
сообщение May 24 2010, 05:12
Сообщение #8


Частый гость
**

Группа: Участник
Сообщений: 144
Регистрация: 27-12-09
Из: Пермь
Пользователь №: 54 501



zltigo
Цитата
И дальше, простите, что?
то, что вторая функция сработает 24 мая в 7 часов 6 минут 49 секунд 15 и 2601, т.е. между вызовами пройдт 0.001с. Это мне и нужно знать.

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

Вопрос именно в том, как замерить время между двумя вызовами. Не время выполнения кода, а именно время между вызовами.
Как-то странно. Вопрос именно по использованию IDE IAR. В соответствующем разделе форума я поместил тему. Её перенесли сюда (к программированию уж точно никакого отношения не имеет).

Сообщение отредактировал srm - May 24 2010, 05:15
Go to the top of the page
 
+Quote Post
sigmaN
сообщение May 24 2010, 15:25
Сообщение #9


I WANT TO BELIEVE
******

Группа: Свой
Сообщений: 2 617
Регистрация: 9-03-08
Пользователь №: 35 751



Цитата
Вопрос именно в том, как замерить время между двумя вызовами.
Ну тогда во-первых таймер и вывод через UART рулят. А во вторых нужно задать вопрос: от чего зависит время между двумя вызовами? От внешнего события? А может быть оно уже заранее известно(т.е. между вызовами проходит ровно 12489023 тактов процессора)?


--------------------
The truth is out there...
Go to the top of the page
 
+Quote Post
srm
сообщение May 25 2010, 03:15
Сообщение #10


Частый гость
**

Группа: Участник
Сообщений: 144
Регистрация: 27-12-09
Из: Пермь
Пользователь №: 54 501



Цитата
Ну тогда во-первых таймер и вывод через UART рулят. А во вторых нужно задать вопрос: от чего зависит время между двумя вызовами? От внешнего события? А может быть оно уже заранее известно(т.е. между вызовами проходит ровно 12489023 тактов процессора)?
Ну, я уже не знаю как объяснить sad.gif( Вы предлагаете костыли. контроллер генерирует ШИМ. Мне нужно точно знать его характеристики. Я не имею возможности измерить это дело на плате (нет осциллографа). Хочу измерить с помощью отладчика IAR'а.

Сообщение отредактировал srm - May 25 2010, 03:16
Go to the top of the page
 
+Quote Post
zltigo
сообщение May 25 2010, 05:43
Сообщение #11


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



Цитата(srm @ May 24 2010, 07:12) *
Вопрос именно по использованию IDE IAR...
....контроллер генерирует ШИМ. Мне нужно точно знать его характеристики. Я не имею возможности измерить это дело на плате (нет осциллографа). Хочу измерить с помощью отладчика IAR'а.

Вопрос, как в конце концов выяснилось, об использовании осциллографа. Никакой отладчик не в состоянии полностью заменить отвертки, паяльники, осциллографы... В Вашем конкретном случае просто надо написать пяток строк без ошибок и все.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
srm
сообщение May 25 2010, 13:16
Сообщение #12


Частый гость
**

Группа: Участник
Сообщений: 144
Регистрация: 27-12-09
Из: Пермь
Пользователь №: 54 501



Цитата
В Вашем конкретном случае просто надо написать пяток строк без ошибок и все.
в моём конкретном случае всё несколько сложнее и пятью строками кода не обойдёшься. Как заменить осциллограф отладчиком я написал. Не верится, что IAR не умеет засекать время. Скорее всего данный вопрос нужно задавать на форуме разработчика.
Go to the top of the page
 
+Quote Post
aaarrr
сообщение May 25 2010, 13:33
Сообщение #13


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Далеко не любой процессор (кстати, вы не указали, какой у вас) можно просимулировать с приемлемой точностью. Если это не маленький AVR/PIC/что-то подобное, то расхождение симулятора с реальной жизнью может быть огромным.

Отладчиком заменить осциллограф нельзя.
Go to the top of the page
 
+Quote Post
skripach
сообщение May 25 2010, 13:51
Сообщение #14


■ ■ ■ ■
*****

Группа: Свой
Сообщений: 1 100
Регистрация: 9-08-06
Пользователь №: 19 443



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

Та можно.. biggrin.gif
Увеличить период шим'а скажет до нескольких минут и засекать время секундомером.


--------------------
Делай что должен и будь что будет.
Go to the top of the page
 
+Quote Post
sigmaN
сообщение May 25 2010, 14:11
Сообщение #15


I WANT TO BELIEVE
******

Группа: Свой
Сообщений: 2 617
Регистрация: 9-03-08
Пользователь №: 35 751



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

Время ещё там засекать.
Выдумываете для себя лишние задачи.


--------------------
The truth is out there...
Go to the top of the page
 
+Quote Post

2 страниц V   1 2 >
Closed TopicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 14th July 2025 - 16:46
Рейтинг@Mail.ru


Страница сгенерированна за 0.01459 секунд с 7
ELECTRONIX ©2004-2016