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

 
 
> Определение загрузки микроконтроллера., свободные ресурсы
Lagman
сообщение Sep 17 2012, 10:35
Сообщение #1


Знающий
****

Группа: Свой
Сообщений: 875
Регистрация: 28-10-05
Пользователь №: 10 245



Как определить загрузку (или как это правильно обозвать) микроконтроллера, т.е. выполняется пару задач с прерываниями и без и надо определить есть ли у МК еще свободное время (ресурсы по быстродействию) на выполнение чтобы добавить другие задачи, и для наглядности можно представить как в Windows XP или 7 по ctrl-alt-del во вкладке "быстродействие" - "Загрузка ЦП" и "Хронология загрузки ЦП".
Связь с компьютером можно не рассматривать, только внутри МК как можно реализовать или как обычно делают.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
_Pasha
сообщение Sep 17 2012, 11:39
Сообщение #2


;
******

Группа: Участник
Сообщений: 5 646
Регистрация: 1-08-07
Пользователь №: 29 509



По идее, считается отношение числа тиков, за которое выполняется самая низкоприоритетная задача(system idle) к общему числу системных тиков за отчетный период.
Упс. не так выразился: в idle тики суммируются,
при каждом переключении на нее.
Цитата(_Артём_ @ Sep 17 2012, 14:31) *
А если программа - просто round-robin с непустым основным циклом, то как мне кажется, несколько сложнее определить загрузку процессора - Idle-то нету.

biggrin.gif кто мешает его туда добавить?

Сообщение отредактировал _Pasha - Sep 17 2012, 11:41
Go to the top of the page
 
+Quote Post
_Артём_
сообщение Sep 17 2012, 11:48
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 2 128
Регистрация: 21-05-06
Пользователь №: 17 322



Цитата(_Pasha @ Sep 17 2012, 14:39) *
biggrin.gif кто мешает его туда добавить?

Как вы себе это представляете? Пример не приведёте?
Go to the top of the page
 
+Quote Post
_Pasha
сообщение Sep 17 2012, 12:04
Сообщение #4


;
******

Группа: Участник
Сообщений: 5 646
Регистрация: 1-08-07
Пользователь №: 29 509



Цитата(_Артём_ @ Sep 17 2012, 14:48) *
Как вы себе это представляете? Пример не приведёте?

Простейший. Пусть у нас никакие не protothreads, а просто последовательность функций в теле цикла.
Понятное дело, в каждой ф-ции проверяются условия, если они не выполняются, то выходим из пп. А вот если не выходим...тогда у нас и увеличивается потребление сабжевого ресурса, растет загрузка.
Ставим нашу idle() в любое место списка.
При входе читаем таймер.
Код
float resource_usage;
void idle(void)
{
   static tick_t mem_tick, sum_tick;
   tick_t tmr = get_tick(); // читаем текущий систаймер
   tick_t wrk = tmr - mem_tick;
   if(wrk >= INTERVAL_REP)
   {
     mem_tick = get_tick();
     resource_usage = 1 - sum_tick/wrk;//updated
     sum_tick = 0;
}
    sum_tick += tick_diff(tmr); // tick_diff = get_tick()-tmr
    return;
}

Вроде, ничего не ошибся. sm.gif
Не, ошибся. Упдатед.

Сообщение отредактировал _Pasha - Sep 17 2012, 12:15
Go to the top of the page
 
+Quote Post



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

 


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


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