Измерение скорости процессора устройств IoT при разных температурах - PullRequest
0 голосов
/ 20 мая 2018

Я хочу измерить скорость вычисления telosB при разных температурах.Для программирования устройства я использую contiki.Моя идея состояла в том, чтобы позволить ему отправлять сообщения через фиксированные интервалы с возвратом

clock_time (void)

в качестве содержимого.Второе устройство читает это сообщение и сохраняет его в файле вместе со своим собственным возвращаемым значением clock_time (void).С этим я мог бы сказать:

При температуре A устройству требовалось 500 тактов для отправки 100 сообщений, а второму устройству требовалось 600 тактов для получения 100 сообщений.

При температуре B aустройству потребовалось 500 тактов для отправки 100 сообщений, а второму устройству - 800 тактов для получения 100 сообщений.

Это будет означать, что устройство действительно медленнее при температуре B, потому что приемник должен был ждать дольше.

Я застрял прямо сейчас, потому что каждый раз, когда я выполняю свое решение, я получаю разные результаты + результаты искажаются в тот момент, когда качество связи не идеальное, а некоторые пакеты теряются.Есть ли решение, может быть, с другой настройкой, которое поможет мне доказать идею?

Ответы [ 3 ]

0 голосов
/ 21 мая 2018

Мое предположение было, что частота часов меняется при разных температурах.И я хочу как-то его измерить.

Если вы хотите измерить отклонения частоты часов, используйте частотомер .Это то, для чего он предназначен, и он может измерять частоты с гораздо большей степенью точности, чем ваш микроконтроллер.

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

0 голосов
/ 23 мая 2018

MSP430 обычно имеет свободно работающий внутренний генератор, который вы программируете, чтобы дать приблизительную рабочую частоту для тактовой частоты процессора.Эта калибровка чередуется между двумя частотами, чтобы приблизить желаемую рабочую частоту.Посмотрев на принципиальную схему для telosB, он имеет кристалл 32 кГц, который можно использовать для обеспечения более точного источника времени.Я не знаком с операционной системой или другим программным обеспечением на плате, которую вы используете, но этот генератор 32 кГц можно использовать в качестве источника калибровки для тактовой частоты основного процессора, где программное обеспечение использует внутренний таймер для расчета фактической тактовой частоты основного процессора инастраивает запрограммированную тактовую частоту, чтобы вернуть ее к желаемой частоте. Эта ссылка ведет на страницу учебного материала TI MSP, которая описывает работу DCO и калибровку.Если ОС включает эту функцию, то дрейф рабочей частоты с температурой будет зависеть от характеристики кристалла 32 кГц и алгоритма отслеживания частоты.Это может быть не монотонным.

Существует также структура программного обеспечения приложения, отправляющего сообщения.Как принимается решение об отправке сообщения.Обычный метод, который я бы использовал, - это иметь таймер, который использует кристалл для генерации события, которое запускает программное обеспечение основного цикла для отправки сообщения с определенной периодичностью.Основное программное обеспечение генерирует сообщение о событии.Если предположить, что процессорных циклов между событиями достаточно, чтобы создать сообщение, то фактическая тактовая частота не имеет значения.

Вы говорите, что связь не идеальна, и некоторые сообщения теряются.В обоих случаях вы отправляете 100 сообщений по 500 тиков.Устройство не может пропустить передачу, поскольку оно является отправителем.Разница во времени принятых данных выглядит так, как будто они могут быть связаны с количеством пропущенных сообщений на принимающей стороне.Вы отправляете одно сообщение каждые 5 тиков ОС, предположительно, интервал приема аналогичен, поэтому вы можете обнаружить пропущенные сообщения, если время между любыми двумя сообщениями превышает 6 тиков.

Другая мысль;как генерируется тик ОС.Если оно получено из тактовой частоты процессора, то длительность такта будет меняться вместе с тактовой частотой процессора.Если он генерируется из генератора XL1 32 кГц, его период будет изменяться в зависимости от частотной характеристики кристалла.

0 голосов
/ 21 мая 2018

Вы можете отправлять сообщения с постоянным интервалом между ними (например, каждые 5 миллисекунд во времени А) и добавлять порядковый номер к каждому сообщению.Таким образом, вы будете знать ожидаемое время каждого полученного сообщения относительно предыдущих сообщений, даже если некоторые сообщения отсутствуют.

Чтобы измерить скорость процессора, вам не нужно измерять время для полученияи обработать каждое сообщение.В любом случае, это не будет объективной мерой, потому что большая часть времени в общении фактически тратится на фактический прием, который синхронизируется с радиочасами, а не с одного управляющего ЦП.

И если скорость процессора действительно соответствует тому, что вы хотите измерить, не используйте clock_time().Вам необходимо настроить аппаратный таймер msp430 для получения из DCO.

Другой вариант, если выполнение вашей идеи кажется слишком сложным, - это сравнить частоту DCO с частотой низкочастотного кварцевого генератора.,Это не даст наиболее точных результатов, поскольку температура кристалла также зависит от температуры, но это достаточно хорошо, если вы хотите измерять скорость процессора с точностью до%, а не ppm.Смотрите пример функции msp430_sync_dco() , как сделать это.

...