Easyelectronics.ru

Электроника для всех
Текущее время: 18 июл 2019, 10:00

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



JLCPCB – Прототипы печатных плат за $2/10pcs (Любой цвет!)
Крупнейший производитель печатных плат и прототипов. Более 600000 клиентов и свыше 10000 заказов в день!
Получите скидку на почтовую отправку при первом заказе в JLCPCB!

Начать новую тему Ответить на тему  [ Сообщений: 10 ] 
Автор Сообщение
 Заголовок сообщения: как узнать загрузку мк
СообщениеДобавлено: 20 май 2010, 01:31 
Заглядывает иногда

Зарегистрирован: 04 фев 2010, 23:52
Сообщения: 75
собственно в этом вопрос
программирую в авр студии
функции такой не нашел
как узнать насколько загружен мк?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: как узнать загрузку мк
СообщениеДобавлено: 20 май 2010, 01:55 
Супермодератор
Аватара пользователя

Зарегистрирован: 26 янв 2010, 22:19
Сообщения: 6390
Откуда: Из тех... Из бывших...
Можно в основном цикле программы организовать какой- нибудь визуальный эффект: либо моргание светодиодом, либо вывод на индикатор. Если МК загружен (постоянно торчит в прерываниях)- светодиод не горит (горит слабо) или очень редко моргает, если отрабатывает пустой цикл- горит непрерывно. Но на глаз это вряд ли отследишь (если только МК не загружен до предела или не завис). Чтобы видеть- надо предусмотреть некий счетчик (и коэффициент), по переполнении которого зажигается светодиод или отображается число на дисплее. При наличии осциллографа проблемы снимаются- просто смотрим изменения состояния назначенной ножки без всяких счетчиков. Частоту изменений состояния ножки "свободного" МК довольно просто подсчитать исходя из тактовой частоты и количества инструкций основного цикла.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: как узнать загрузку мк
СообщениеДобавлено: 20 май 2010, 01:58 
Супермодератор
Аватара пользователя

Зарегистрирован: 28 янв 2010, 05:47
Сообщения: 1031
Откуда: Винница
или на входе всех прерываний выставлять на ноге 1, а при выходе - 0. Длительность низкого уровня будет относительной загрузкойсвободностью мк

_________________
Show


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: как узнать загрузку мк
СообщениеДобавлено: 20 май 2010, 23:10 
Заглядывает иногда

Зарегистрирован: 04 фев 2010, 23:52
Сообщения: 75
не на готовом девайсе уже смотреть
это не метод
хотелось бы при разработке как-то определять


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: как узнать загрузку мк
СообщениеДобавлено: 21 май 2010, 00:05 
Супермодератор
Аватара пользователя

Зарегистрирован: 26 янв 2010, 22:08
Сообщения: 7549
Откуда: Алма-ата
alexandr писал(а):
не на готовом девайсе уже смотреть
это не метод
хотелось бы при разработке как-то определять
Такты считай. Время выполнения команд известно. Берешь ассемблерный или дизассемблерный листинг и считаешь, с учетом циклов и переходов. Я так еще четверть века назад делал.
"Элементарно, Ватсон"...


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: как узнать загрузку мк
СообщениеДобавлено: 21 май 2010, 00:11 
Старожил
Аватара пользователя

Зарегистрирован: 26 янв 2010, 21:48
Сообщения: 3961
Откуда: Звенигород
А если считать лениво. Как например мне, то никто не отменял симуляторов. Типа протеуса.

_________________
От Парижа до Находки с водкой лучше, чем без водки!


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: как узнать загрузку мк
СообщениеДобавлено: 21 май 2010, 10:06 
Старожил
Аватара пользователя

Зарегистрирован: 29 янв 2010, 15:41
Сообщения: 1127
Откуда: Германия
SWG писал(а):
alexandr писал(а):
не на готовом девайсе уже смотреть
это не метод
хотелось бы при разработке как-то определять
Такты считай. Время выполнения команд известно. Берешь ассемблерный или дизассемблерный листинг и считаешь, с учетом циклов и переходов. Я так еще четверть века назад делал.
"Элементарно, Ватсон"...

Слабо посчитать загрузку проца моего плеера для Мазды? ;-)
Там Мега 128 забита примерно на 60-70% кодом.
DI HALT в какой то из своих статей предлагал интересный способ, но для этого надо целый порт 8ми битный выделить.

_________________
Мои поделки
http://www.fun-electronic.net/


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: как узнать загрузку мк
СообщениеДобавлено: 21 май 2010, 13:46 
Супермодератор
Аватара пользователя

Зарегистрирован: 26 янв 2010, 22:08
Сообщения: 7549
Откуда: Алма-ата
MasterAlexei писал(а):
Слабо посчитать загрузку проца моего плеера для Мазды? ;-)
Там Мега 128 забита примерно на 60-70% кодом.
Примерно 40к слов, из которых поди половина занята буферами и таблицами, итого - примерно 20к команд. Не так и много. Даже в простых программках под MSDOS или CP/M бывало и больше... В общем, если мне это было бы нужно (например, сам бы его разрабатывал) - посчитал бы, по крайней мере критические куски.
Цитата:
DI HALT в какой то из своих статей предлагал интересный способ, но для этого надо целый порт 8ми битный выделить.
Это уже в готовой конструкции, вопрос же бы задан: "на готовом девайсе уже смотреть это не метод, хотелось бы при разработке как-то определять".
А в готовом - я просто при отладке в главном цикле на каждом проходе меняю состояние какой-нибудь ноги. Потом осциллографом смотрю, как меняется период времени прогонки главного цикла в разных режимах. Просто и удобно. Например, в ходовом контроллере у меня главный цикл выполняется 250-260мкс. И не нужен целый порт, хватает одной ноги. Если нужно узнать время выполнения какого-то куска програмы (например, функции в прерывании) - аналогично в начале его делаю на ноге 1, в конце - 0. Просто и удобно, и не нужны всякие Протеусы с их глюками.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: как узнать загрузку мк
СообщениеДобавлено: 21 май 2010, 14:36 
Старожил
Аватара пользователя

Зарегистрирован: 29 янв 2010, 15:41
Сообщения: 1127
Откуда: Германия
SWG писал(а):
MasterAlexei писал(а):
Слабо посчитать загрузку проца моего плеера для Мазды? ;-)
Там Мега 128 забита примерно на 60-70% кодом.
Примерно 40к слов, из которых поди половина занята буферами и таблицами, итого - примерно 20к команд. Не так и много.

И вы сможете учесть так же все прерывания, которые происходят от внешней переферии?
Например, в зависимости от битрейта проигрываемого файла приходит либо часто либо редко прерывание от декодера "дай еще музыки". И как тогда этот момент считать? И не только один проход задачи, а вместе с работой всех остальных задач, как то: обновление экрана, обработка кнопок/запросов пользователя, считывание диска и т.д.
SWG писал(а):
Цитата:
DI HALT в какой то из своих статей предлагал интересный способ, но для этого надо целый порт 8ми битный выделить.
Это уже в готовой конструкции, вопрос же бы задан: "на готовом девайсе уже смотреть это не метод, хотелось бы при разработке как-то определять".

Скорее всего - готовое устройство, которое не на столе лежит и все еще находится в разработке, а уже встроено куда нить, и к нему доступа уже никакого.
SWG писал(а):
А в готовом - я просто при отладке в главном цикле на каждом проходе меняю состояние какой-нибудь ноги.

Это еще не готовое устройство ;-). А отлаживаемое, которое все еще в разработке. Готовое, это когда оно уже закрыто в корпус и заброшено на полку.
SWG писал(а):
Потом осциллографом смотрю, как меняется период времени прогонки главного цикла в разных режимах. Просто и удобно. Например, в ходовом контроллере у меня главный цикл выполняется 250-260мкс. И не нужен целый порт, хватает одной ноги. Если нужно узнать время выполнения какого-то куска програмы (например, функции в прерывании) - аналогично в начале его делаю на ноге 1, в конце - 0. Просто и удобно, и не нужны всякие Протеусы с их глюками.

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

_________________
Мои поделки
http://www.fun-electronic.net/


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: как узнать загрузку мк
СообщениеДобавлено: 21 май 2010, 15:14 
Супермодератор
Аватара пользователя

Зарегистрирован: 26 янв 2010, 22:08
Сообщения: 7549
Откуда: Алма-ата
MasterAlexei писал(а):
И вы сможете учесть так же все прерывания, которые происходят от внешней переферии?
Например, в зависимости от битрейта проигрываемого файла приходит либо часто либо редко прерывание от декодера "дай еще музыки". И как тогда этот момент считать? И не только один проход задачи, а вместе с работой всех остальных задач, как то: обновление экрана, обработка кнопок/запросов пользователя, считывание диска и т.д.
Целиком всю программу считать нет смысла. Я обычно определяю критичные по времени куски, в том числе и влияние на них прерываний, вот их и просчитываю, чтобы всегда был определенный запас. Некоторые прерывания при исполнении более критичных кусков можно и нужно на время запрещать. Ну и много еще элементарных вещей, которые приходят с практикой и сидят в подсознании. Вырабатывается определенное "чутье" на узкие места, которым и уделяешь особое внимание. Вы и сами это прекрасно понимаете. Хоть и не всегда это можно обьяснить новичкам, только начинающим осваивать микроконтроллеры и надеющимся найти какой-то "волшебный" прием, который сразу решит все их проблемы...
Цитата:
Это еще не готовое устройство ;-). А отлаживаемое, которое все еще в разработке. Готовое, это когда оно уже закрыто в корпус и заброшено на полку.
Когда что-то делается в одном экземпляре, отладка программы делается именно на готовом устройстве, которое в дальнейшем аппаратно не меняется. Перешивка же программы при отладке или смена версии через полгода - влияют не на само устройство, а лишь на его функционирование. Делать чисто отладочный экземпляр - дорогое удовольствие, используемое лишь при подготовке к выпуску крупными сериями. Или когда недостаточно опыта и знаний для изготовления рабочего образца, и делается поэтапное приближение к желаемому. Дорого это. Поэтому я сразу проектирую готовое изделие, на котором и делаю отладку, и которое и будет эксплуатироваться в дальнейшем. Естественно, его сразу надо делать хорошо, без "соплей", и скидок на последующую переделку.
Цитата:
Единственно, в версии с портом можно узнать, какая именно задача сколько именно занимает, и за один раз прошивания, а не подсчет задач по очереди (сначала в одной задаче пин подергали, потом в другой), при том, что одинаковых сценариев тестирования очень сложно добиться, чтобы точно посчитать время работы всех задач и время простоя/основного цикла.
Так и не надо считать абсолютно все. Считаются и проверяются именно критические задачи, а их не так и много. К примеру, при ручном вводе с клавиатуры программа работает намного быстрее, чем нажимаются клавиши, и всегда готова к следующему нажатию. Тут и считать особо нечего, достаточно проверить правильность распознавания кнопок.


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

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


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

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


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

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

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