Easyelectronics.ru • Просмотр темы - Нестабильное время простоя в idle hook

Easyelectronics.ru

Электроника для всех
Текущее время: 17 авг 2018, 14:00

Часовой пояс: UTC + 5 часов



    • JLCPCB - Прототипы 10 PCBs всего за 2$ (100*100mm, 2-layer)
    • Как мы делаем платы, смотрите на YouTube
    • Крупнейшая китайская фабрика прототипов. 300000+ заказчиков и 10000+ заказов в день!
    • LCSC - Крупнейший китайский онлайн магазин комплектующих.

Начать новую тему Ответить на тему  [ Сообщений: 4 ] 
Автор Сообщение
 Заголовок сообщения: Нестабильное время простоя в idle hook
СообщениеДобавлено: 28 окт 2013, 15:10 
Здравствуйте!

Зарегистрирован: 28 окт 2013, 14:23
Сообщения: 3
Добрый день.
Есть необходимость оценивать наличие свободного процессорного времени в относительных величинах, но на первом этапе вполне устраивает простой счетчик в idle hook. Накидал простейшую реализацию и столкнулся с аномалиями, природу которых хотелось бы понять. Итак, код.

Код:
volatile static uint32_t idle = 0;

void vApplicationIdleHook()
{
   idle++;
}

void taskReport(void *pvParameters)
{
   portTickType lastWakeTime = xTaskGetTickCount();

   for( ;; )
   {
      //здесь текущее значение idle отправляется через USB VCP

      idle = 0;
      vTaskDelayUntil(&lastWakeTime, 500 / portTICK_RATE_MS);
   }

   vTaskDelete(NULL);
}

int main()
{
   vFreeRTOSInitAll();

   xTaskCreate(taskReport, "report", 150, NULL, 1, NULL);
   vTaskStartScheduler();

   for( ;; );
}


При частоте 168 MHz принимаемое из порта значение idle незначительно колеблется около ~1 400 000 в большинстве измерений. Однако! Иногда проскакивают единичные значения ~2 800 000 (x2) и даже ~4 200 000 (x3). Настораживает такая кратность отклонений, как будто taskReport иногда отрабатывает только со второго-третьего раза. Есть идеи, в чем может быть дело?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Нестабильное время простоя в idle hook
СообщениеДобавлено: 11 ноя 2013, 10:50 
Старожил
Аватара пользователя

Зарегистрирован: 23 янв 2012, 00:31
Сообщения: 1797
Откуда: Новокузнецк
Нужно решить подобную задачу. Не разобрались в чем причина?

_________________
elisey.su


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Нестабильное время простоя в idle hook
СообщениеДобавлено: 20 янв 2015, 17:00 
Старожил

Зарегистрирован: 28 ноя 2013, 14:12
Сообщения: 233
кто нибудь разобрался с этим ?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Нестабильное время простоя в idle hook
СообщениеДобавлено: 21 янв 2015, 03:04 
Старожил

Зарегистрирован: 30 апр 2010, 22:56
Сообщения: 1558
Откуда: Киев
Нет никаких гарантий, что количество вызовов vApplicationIdleHook() как-то кореллирует с временем, проведенным в Idle.

Show Вот код Idle task


Выкидываем лишнее:
Код:
   for( ;; )
   {
...
         vApplicationIdleHook();
...
   }


С максимальной частотой вызывается vApplicationIdleHook(). Любое изменение времени выполнения проверок, например, в prvCheckTasksWaitingTermination вызовет значительное изменение количества вызовов vApplicationIdleHook.


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 4 ] 

Часовой пояс: UTC + 5 часов


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB