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

 
 
> Измерение интервалов времени, Поделитесь опытом
Terminator
сообщение Mar 13 2008, 04:50
Сообщение #1


Местный
***

Группа: Участник
Сообщений: 209
Регистрация: 7-12-04
Из: Томск
Пользователь №: 1 382



Есть необходимость измерять интервалы времени с какой-то точностью. В разных задачах разные интервалы.
Мне видится два способа реализации, ускорить системный таймер либо сгородить "систему" на каком нибудь аппаратном таймере "тикающем" с требуемой точностью.
Первый способ вроде как самый простой, но много процессорного времени уйдёт на этот системный таймер. Второй позволяет сделать системный таймер помедленнее, но не сожрёт ли система на аппаратном таймере больше процессорного времени чем в первом случае?
Городил ли кто-нибудь систему на отдельном аппаратном таймере, стоит ли заморачиваться?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Andy Mozzhevilov
сообщение Mar 13 2008, 05:14
Сообщение #2


Знающий
****

Группа: Свой
Сообщений: 877
Регистрация: 26-01-05
Из: Екатеринбург
Пользователь №: 2 206



Цитата(Terminator @ Mar 13 2008, 09:50) *
Есть необходимость измерять интервалы времени с какой-то точностью. В разных задачах разные интервалы.
Мне видится два способа реализации, ускорить системный таймер либо сгородить "систему" на каком нибудь аппаратном таймере "тикающем" с требуемой точностью.
Первый способ вроде как самый простой, но много процессорного времени уйдёт на этот системный таймер. Второй позволяет сделать системный таймер помедленнее, но не сожрёт ли система на аппаратном таймере больше процессорного времени чем в первом случае?
Городил ли кто-нибудь систему на отдельном аппаратном таймере, стоит ли заморачиваться?


Вполне нормальный расклад. Вы будете экономить на том, что после прерывания от вашего "быстрого" таймера ОС не будет каждый раз проходить по списку задачь и декрементировать таймауты.
Я делаю так, как вы описали.
uCOS-II, ARM7 (NXP на 60 МГц), таймер ОС тикает на 100-200 Гц, дополнительный таймер - на 8 кГц.
Прикрепленный файл  timer_cpp.zip ( 4.76 килобайт ) Кол-во скачиваний: 163


Причем таймер ОС сделан на одном из программных таймеров с тиками 8 кГц, дополнительно аппаратный таймер не забирается:
Код
class TOsTimer : TTimer
{
public:
    TOsTimer() : TTimer(1000000/OS_TICKS_PER_SEC/TIMER_ONE_TICK_MCS, true) { }

private:
    virtual void Tick(void)
    {
        OSTimeTick();
    }
};


--------------------
Пасу котов...
Go to the top of the page
 
+Quote Post
Дон Амброзио
сообщение Mar 14 2008, 22:34
Сообщение #3


Местный
***

Группа: Участник*
Сообщений: 323
Регистрация: 11-02-08
Пользователь №: 34 947



Цитата(Andy Mozzhevilov @ Mar 13 2008, 08:14) *
uCOS-II, ARM7 (NXP на 60 МГц), таймер ОС тикает на 100-200 Гц, дополнительный таймер - на 8 кГц.

У меня на 4 МГц в мной разработанной RTOS, которая в нашей фирме носит внутреннее название "Паранойя-0.0" таймер тикает на частоте 2,5кГц...Если экстраполировать на частоту 60МГц получиться, что мой таймер тикает с частотой 37,5кГц.


--------------------
После устранения бага в программе она стала работать....хуже
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 21st August 2025 - 04:44
Рейтинг@Mail.ru


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