Processor Choice For Wireless Sensor Networks

Ciaran Lynch [ciaranlynch@cit.ie], Fergus O’Reilly [foreilly@cit.ie]
Centre for Adaptive Wireless Systems. Cork Institute of Technology. Cork, Ireland

Выбор процессора для беспроводных сенсорных сетей

Перевод с английского: Зуб Михаил Александрович [micheal.zub@gmail.com]
Донецкий национальный технический университет. Донецк, Украина
Источник: http://www.sics.se/realwsn05/papers/lynch05processor.pdf

Краткий обзор

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

1. Введение

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

Энергетическая эффективность является одним из первоочередных требований при разработке беспроводных сетей датчиков, независимо питаются ли они от батарей или восполняют свои запасы энергии. Тенденции в миниатюризации предполагают, что размеры беспроводных датчиков будут продолжать уменьшаться, в отличие от размеров аккумуляторов. К примеру, стандартная литиевая батарея CR2450 имеет плотность энергии 240мАч/см^3 при напряжении в 3В [4]. Беспроводное устройство, которое потребляет 4мА\ч в сутки, для 12-месячного запаса работы требует батарею объемом 6.1см^3. В одном из испытаний, при развертывании узлов сети типа Mica2 для использования в качестве инструмента экологического мониторинга, ежедневное потребление энергии составило 8.14мА\ч [8].

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

В разделе 2 описывается TinyOS. В разделе 3 рассматриваются некоторые из существенных аппаратных факторов, влияющих на производительность микроконтроллера. В разделе 4 обсуждаются существующие микроконтроллеры. В разделе 5 указывается энергопотребление этих устройств. В разделе 6 делаются заключительные выводы.

2. TinyOS

TinyOS, изначально разработанная в университете штата Калифорния, Беркли [6], стала ведущей операционной системой в исследованиях, связанных с контролем беспроводных сенсорных сетей. Модульность и синтаксис, основанный на C, позволяют упростить обучение для опытных программистов.

Все управляющее программное обеспечение выполняется на микроконтроллере, что входит в узел беспроводной сети датчиков. TinyOS изначально предназначалась для AVR микроконтроллеров. Недавно она была портирована для Texas Instruments MSP430 и в предыдущей работе [7] было показано, как простейшая операционная система и набор библиотек могут быть написаны даже для такого ограниченного устройства, как Microchip PIC16.

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

3. Аппаратное обеспечение

Энергосбережение почти всегда является определяющим фактором при разработке приложений для TinyOS. Здесь рассматриваются некоторые из факторов, влияющие на энергосбережение конкретного устройства.

3.1 Время пробуждения

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

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

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

Некоторые архитектуры позволяют тактовому генератору продолжать работать, но отключают его от ядра микроконтроллера, что позволяет запустить ядро в течение нескольких тактов при получении прерывания. Для длительных периодов сна, мощность, потребляемая тактовым генератором, может преобладать над рассеиваемой мощностью системы, но если заранее известно, что сон является коротким (определенный таймером), быстрое время пробуждения разрешает использовать режим сна там, где иначе это было бы невозможно. В последнее время были предложены некоторые архитектуры, которые используют полностью асинхронную логику [3], что устраняет задержку запуска осциллятора. Однако эти архитектуры все еще экспериментальные и нуждаются в доработке, пока функционирующие микросхемы будут получены.

3.2 Масштабирование тактовой частоты

Некоторые микроконтроллеры могут динамически изменять свою тактовую частоту либо с помощью делителя на главном осцилляторе системы, либо используя низкочастотный осциллятор с управляемым умножителем частоты. При использовании первого подхода, осциллятор работает на максимальной частоте, потребляя максимальную мощность, но системная логика работает на более низкой частоте и соответственно потребляет меньшую мощность. Умножитель частоты нуждается в дополнительном питании и ему может потребоваться время на переключение, если множитель изменится. Делитель частоты может переключать частоты мгновенно. Использование умножителя частоты экономит электроэнергию благодаря низкой скорости осциллятора. Как правило, в системе уже существует 32кГц осциллятор для тактирования часов, поэтому умножитель частоты не требует дополнительного резонатора.

Важно учитывать издержки переключения — в зависимости от того, как реализован делитель, ему может потребоваться определенное количество тактов для стабилизации, перед тем как выполнение команд продолжится. Это может привести к появлению времени простоя, когда микроконтроллер включен, но ничего не выполняет, попусту затрачивая энергию.

3.3 Архитектура памяти

При обслуживании прерывания, обработчику часто приходится сохранять содержимое регистров и поля флагов перед передачей управления обработчику прерывания. Поскольку обработчики прерываний обычно очень маленькие, это также может увеличивать время активности ядра микроконтроллера.

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

Составной стек, как это обсуждается в разделе 3.6, полностью разделяет 2 стека, однако это может привести к дополнительным издержкам в других областях. Он эффективно адресуется в любой архитектуре, поскольку всегда имеет постоянный адрес в памяти. Доступ к локальным переменным в динамическом стеке, как правило, делается с использованием косвенной адресации вида базовый регистр + постоянное смещение [12] - это должно быть реализовано одной инструкцией. Защита от переполнения стека в разы повышает надежность работы приложения.

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

3.4 Особенности ввода-вывода

Поскольку микроконтроллеру необходимо контролировать внешние устройства, он должен иметь большое количество цифровых линий ввода-вывода общего назначения. К примеру, Nordic nRF2401 [11], достаточно продвинутый современный трансивер, работающий на частоте 2.4 ГГц, нуждается в 9 линиях ввода / вывода, связанных с микроконтроллером (6 линий, если используется только один канал передачи данных). Цифровые датчики имеют, как правило, последовательный интерфейс, тем не менее, это может потребовать до 4 или 5 линий на датчик, что относится также и к внешней FLASH памяти.

Необходимо также учитывать логику работы периферийных устройств. Последовательный интерфейс позволяет вести передачу цифровых данных в фоновом режиме, или в то время, когда ядро микроконтроллера обесточено. Многие цифровые датчики используют такие стандартные последовательные шины как I2C или SPI, аппаратная поддержка которых позволяет использовать их наиболее эффективно.

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

3.5 Сложность набора инструкций

Реальная мощь сенсорных сетей заключается в возможности самой сети самой обрабатывать данных и совершать соответствующие действия, минимизируя объем данных, передаваемых по радио, экономя энергию. Современные архитектуры микроконтроллеров, как правило, не подходят для использования в задачах, где нужна сложная обработка данных, по причине малого размера слова — 8 бит, а также ограниченного количества регистров общего назначения. Расчеты с плавающей точкой также не являются эффективными.

Реализация сложения с переносом позволяет упростить обработку 16-битных и 32-битных данных на 8-битной архитектуре. Аппаратный умножитель позволяет осуществлять операции с плавающей точкой, хотя это будет всегда неэффективно на 8-битной архитектуре. Самыми продвинутыми инструкциями являются операции над матрицами, которые применяются на некоторых DSP процессорах, что позволяет реализовать цифровую фильтрацию сигнала с датчика.

3.6 Программное обеспечение

Процессор с большим набором регистров общего назначения будет иметь более гибкий компилятор, чем процессор со стековой архитектурой.

Встроенные компиляторы, как правило, используют один из двух методов хранения локальных переменных функции - динамический стек или "компилируемый стек". Динамический стек это традиционная очередь LIFO, доступ к которой можно получить с помощью инструкций PUSH и POP. Компилируемый стек определяет нахождение данных во время компиляции, используя граф вызовов функций для определения того, какие регионы могут безопасно перекрываться.

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

4. Обзор существующего оборудования

Среди существующих платформ, TinyOS полностью реализована на ATMEL AtMega128L, AT90LS8535 и Texas Instruments MSP430. Многие другие платформы находятся в стадии развития или частичной реализации. Эти и другие распространенные микроконтроллеры сравниваются по критериям, определенным в разделе 3.

Рассматриваются микросхемы ATMEL ATMega128L [2], Microchip PIC16F877 [9], TI. MSP430C1351 [13], Analog Devices ADuC845, в котором реализовано ядро 8051, а также Microchip PIC18F4525 [10]. Это достаточно широкий выбор микросхем, доступный на рынке. MSP430 имеет размер слова 16 бит, все остальные контроллеры 8-битные.

4.1 Энергосбережение

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

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

PIC18 имеет два энергосберегающих режима — при одном функционирует только периферия, а ядро выключено. При другом режиме отключается и периферия и ядро, но асинхронный таймер остается включенным. 8051 имеет аналогичные энергосберегающие режимы.

PIC16 еще проще - он имеет только один режим энергосбережения. В нем тактируется либо асинхронный таймер, либо АЦП (позволяя осуществлять более точные преобразования из-за низкого шума системы).

4.2 Масштабирование тактовой частоты

PIC18, ATMega128L и MSP430 реализуют программно-управляемое масштабирование тактовой частоты.

MSP430 использует низкочастотный аналоговый осциллятор для генерации своей базовой частоты (32кГц), а затем умножает эту частоту, используя систему автоматической подстройки частоты (АПЧ). Множитель может быть установлен программно, позволяя установить частоту синхронизации от 32кГц до 6MHz (напряжение питания 3В). Система АПЧ также может быть выключена, что приведет к уменьшению точности сгенерированной тактовой частоты и экономии энергии.

В 8051 реализован аналогичный подход с использованием фазовой автоматической подстройки частоты (ФАПЧ) для генерации тактовой частоты 12MHz, а затем ее деления с целью получить системную частоту синхронизации от 6.3MHz до 98kHz (напряжение питания 3В).

В ATMega128L реализован 7-битный цифровой делитель входящего синхросигнала. Это влияет как на периферию, так и на ядро. Тактовая частота ядра должна быть, по крайней мере, в четыре раза выше асинхронной тактовой частоты. Это определяет минимальное значение частоты ядра 128kHz.

PIC18 может использовать либо внешний кварцевый резонатор для прецизионного тактирования либо внутреннюю RC-цепочку с частотой 8МГц. Эта частота может быть разделена и приведена к любому из восьми наборов частот в пределах от 32кГц до 4 МГц. Она также может быть умножена на четыре с помощью системы ФАПЧ, для генерации частоты до 32MHz (хотя для напряжения питания 3V максимумом является 20 МГц). Ядро может использовать тот же источник синхросигнала, что и асинхронный таймер, работающий на частоте 32кГц. Переключение синхросигнала приводит к задержке длительностью два периода старой частоты плюс три периода новой. PIC18 имеет двухскоростной режим запуска, где синхросигнал поступает от внутренней RC-цепочки сразу после пробуждения микроконтроллера, и переводится к выбранной частоте осциллятора, после ее стабилизации.

PIC16 не поддерживает масштабирование тактовой частоты. Частота синхронизации должна оставаться постоянной, от 0 до 10 МГц (на 3В).

4.3 Архитектура памяти

MSP430 имеет одно адресное пространство (архитектура фон Неймана), в котором ОЗУ и память программ адресуются одним 16-битным указателем. Он поддерживает множество режимов адресации и имеет выделенный стек инструкций и регистр указателя стека.

ATMega128L построен по гарвардской архитектуре. Он имеет выделенный регистр указателя стека и три выделенные (16 бит) регистра косвенного доступа к памяти, доступ к которым осуществляется непосредственно или с использованием постоянного смещения.

PIC18 также использует архитектуру гарвардского типа. В нем содержится выделенный 32-уровневый стек вызовов функций, а также область "быстрого сохранения", в которой логика прерывания сохраняет 3 самых используемых регистра. Память данных разделена на банки по 256 байт. Текущий байт доступен для всех выполняемых команд, в ином случае банк должен быть переключен. Первая половина банка 0 и вторая половина банка 15, содержащие специальные регистры доступа к периферии, отображены в специальный банк доступа, который всегда доступен без переключения банков. Также используются три регистра косвенного доступа. Доступ к памяти с использованием базы и смещения должен быть указан явно.

В PIC16 используется упрощенная версия архитектуры PIC18. Она имеет 512 байт оперативной памяти, разделенной на четыре 128-байтных банка, из которых память общего назначения составляет 386 байт. 16 байт этой памяти отображаются в каждом из банков. Наряду с регистром косвенного доступа, память устройства доступна в пределах текущего банка. Стек вызова функции реализован на аппаратном уровне и содержит только 8 уровней. Имеется один аккумулятор, который используется большинством арифметических операций.

8051 поддерживает до 2048 байт расширенной и 256 байт обычной RAM. Только первые 128 байт обычной памяти имеют прямой доступ, это перекрывает пространство регистров. Регистровое пространство состоит из 4 банков по 8 регистров в каждом. Следующие 16 байт памяти адресуются побитно. Это оставляет 80 байт памяти общего назначения. Остальные 128 байт состоят из специальных функциональных регистров и доступны только косвенно. 8051 имеет регистры указателей стека и стек инструкций.

Как 8051, так и PIC16 не были разработаны для программирования на C, поэтому код на языке C, скомпилированный для этих архитектур ведет к созданию бинарных файлов большого объема, хотя предыдущие работы [7] предполагают, что скомпилированный стек данных PIC16 справляется с подобными простыми приложениями.

4.4 Набор инструкций

И ATMega128L и MSP430 имеют богатый набор инструкций — широкий спектр арифметических команд, выделенное аппаратное умножение и множество режимов адресации. PIC18 и 8051 более ограничены. Одним из важных факторов для PIC16 является отсутствие специализированной инструкции сложения с переносом, что делает неэффективным даже простейшие арифметические операции над данными с разрядностью более 8 бит.

4.5 Ввод\вывод

Все микросхемы имеют ряд цифровых портов ввода\вывода. Эти порты мультиплексируются с периферийными устройствами, такими как UART и внешние таймеры, так и в некоторых случаях недоступны.

MSP430 имеет 40 цифровых выводов, ATMega128L 53 цифровых вывода, PIC18 36 выводов, PIC16 33 вывода и 8051 37 выводов.

Все устройства содержат аппаратный UART. ATMega128L имеет аппаратную поддержку I2C и SPI, четыре таймера и 10-битный 8-канальный АЦП. Семейство MSP семьи имеет обширный набор входов/выходов, начиная от маломощных устройств с несколькими выводами, до устройств с несколькими АЦП, последовательными шинами и даже контроллерами DMA, хотя конкретное устройство, рассмотренное здесь, не имеет данных возможностей. PIC18 имеет аппаратный I2C или SPI, четыре таймера и 13-канальный 10-битный АЦП. PIC16 во многом подобен, только он имеет три таймера и 8-канальный АЦП. 8051 имеет три таймера, аппаратную поддержку SPI, 2 независимых 24-разрядных АЦП.

4.6 Компиляторы

MSP430 и ATMega128L поддерживаются свободным портом GCC. PIC16 и PIC18 имеют свои коммерческие компиляторы, несмотря на ограничения архитектуры, которые делают их не такими гибкими. 8051 поддерживается рядом компиляторов C, включая свободный компилятор SDCC. Существующие компиляторы для PIC используют скомпилированный стек, все остальные используют динамический стек.

Также доступны коммерческие компиляторы для многих архитектур, однако на момент написания TinyOS была ориентирована на GCC-компилятор.

5. Результаты

Текущие показатели энергопотребления различных режимов для каждого из микроконтроллеров приведены в таблице 1, взятые из соответствующей технической документации. Для сравнения, все цифры даются при рабочих частотах в 8МГц и 1MHz, периферия в активном режиме выключена, и при тех же частотах в ждущем режиме, но только с включенным асинхронным таймером. Если микросхема способна динамически переключаться на частоту 32кГц в активном режиме это указывается. ATMega128L должна тактироваться, по меньшей мере, на частоте 128кГц, но частота 32кГц по-прежнему дается для сравнения. Таким же образом, 8051 может работать только на частотах от 98kHz до 6.3MHz, но значения экстраполируются вне этого диапазона. Все значения указаны для рабочего напряжение 3В. Это не определяет используемую энергию, так как для различных архитектур одинаковые операции имеют разное время выполнения.

Время пробуждения – это время от фактического поступления сигнала прерывания до начала обработки прерывания. Это не включает временные расходы на сохранение регистров. Время для пробуждения PIC18 предполагает, что включен двухступенчатый запуск.

Таблица 1. Информации о потреблении тока
AVR PIC16 PIC18 MSP 8051
Word Size 8 bit 8 bit 8 bit 16 bit 8 bit
Max F at 3V 8Mhz 10MHz 20MHz 6MHz 6.3MHz
Power Down 8μA 20μA 2.6μA 1.8μA 21μA
Idle (1MHz) 0.5mA 220μA 120μA 55μA n/a
Idle (8MHz) 4mA 1.5mA 843μA 440μA n/a
Active (32k) 88μA n/a 35μA 19.2μA 2.78mA
Active (1M) 2mA 220μA 480μA 240μA 4.05mA
Active (8M) 8mA 1.5mA 2.4mA 1.9mA 13.3mA
Wakeup 2ms 102μs 10μS 6μs 20μs

Средние токи потребления для приложений TDMA приведены в таблице 2. Приложение "Rx" ожидает сигнала синхронизации раз в секунду. Приложение «Rx+Tx» также передает ответ один раз в секунду в правильном временном интервале. Эти значения были измерены для архитектур PIC16 и AVR и оценены приближенно для других архитектур. Предполагается, что все устройства рассчитаны на питание от источника напряжения 3В.

Таблица 2. Потребление тока приемопередатчиком
AVR PIC16 PIC18 MSP 8051
Rx 76.5μA 22.0μA 3.81μA 2.40μA 30.9μA
Rx + Tx 138.0μA 23.3μA 4.66μA 2.83μA 34.9μA

Предполагается использование пакетного интерфейса, поэтому микроконтроллер проводит очень мало времени, в активном состоянии. Наиболее распространенные операции – выход из режима сна, установка нужного уровня на выводе, перезапуск таймера, возвращение в режим сна и использование SPI для отправки пакета микросхеме трансивера. Из этих всех операций микроконтроллер активен только в момент перезапуска таймера. Потребляемая мощность определяется временем пробуждения. Эти значения рассчитываются с рабочей частотой 8МГц. Приложение "Rx + Tx" имеет в два раза больше операций засыпания и пробуждения, чем приложение "Rx".

Таблица 3 показывает приложение "Rx+Tx" с применением шифрования, используя значения измеренные P. Ganesan [5]. Процесс шифрования состоит из повторяющихся простых математических операций и дает хорошее представление относительно потребляемой мощности активных режимов для различных платформ. Предполагается, что 16-байтные пакеты переданных и полученных данных должны быть зашифрованы и соответственно расшифрованы. Используются два различных алгоритма - RC5 и IDEA. Основная разница в том, что побитовые сдвиги в основном используются в RC5, а операция умножения больше используется в IDEA.

Таблица 3. Потребление тока при шифровании
AVR PIC16 PIC18 MSP 8051
RC5 151μA 26.4μA 8.99μA 4.55μA 62.8μA
IDEA 148μA 27.8μA 8.26μA 7.56μA 75.1μA

6. Выводы

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

Тип памяти и инструкции доступа к памяти определяют эффективность выполнения кода. Накладные расходы нескольких команд на доступ к памяти существенно влияют на время рабочего цикла и потребляемую мощность. Более сложные наборы инструкций могут увеличить скорость обработки, позволяя системе тратить больше времени на сон. Полезной особенностью является способность к самопрограммированию. В целях получения эффективного кода целесообразно использовать хорошо оптимизированную версию GCC или подобный гибкий оптимизирующий компилятор для целевой архитектуры. Однако, из-за особенностей работы GCC не подходит для архитектур с аккумулятором, таких как PIC.

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

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

В типичном приложении заметно, что простой во время пробуждения может определять потребление энергии. Когда число пробуждений увеличивается в два раза, энергопотребление AVR увеличивается дважды, в то время как для MSP, с использованием быстрого пробуждения, энергопотребление увеличивается на 18%.

Семейство микроконтроллеров MSP от Texas Instruments недавно получило широкое применение для построения беспроводных сетей датчиков и ожидается, что MSP вытеснит старые архитектуры, используемые до сих пор.

7. Ссылки

[1] Analog Devices. ADuC845/ADuC847/ADuC848 Datasheet, Rev. B, 2005.
[2] Atmel Corporation. ATMega128 Datasheet, Rev. 2467I-09/03, 2003.
[3] A. J. M. et al. The Lutonium: A sub-nanojoule asynchronous 8051 microcontroller. In proc. 9th IEEE Symposium on Asynchronous Circuits and Systems, May 2003.
[4] Eveready Battery Co. Energizer No. 2450 Engineering Datasheet.
[5] P. Ganesan et al. Analyzing and modeling encryption overhead for sensor network nodes. In WSNA ’03: Proc. of the 2nd ACM int. conference on Wireless sensor networks and applications, pages 151–159. ACM Press, 2003.
[6] J. Hill. A software architecture supporting networked sensors. Master’s thesis, University of California,Berkeley, 2000.
[7] C. Lynch and F. O. Reilly. Pic-based TinyOS implementation. In proc. 2nd European Workshop on Wireless Sensor Networks, EWSN 2005, Istanbul, pages 378–385, Feb. 2005.
[8] A. Mainwaring et al. Wireless sensor networks for habitat monitoring. In Proc. ACM Int. Workshop on Wireless Sensor Networks and Applications, pages 88–97, Sept. 2002.
[9] Microchip Technology Inc. PIC16F877 Datasheet, Revision C, 2000.
[10] Microchip Technology Inc. PIC18F2525/2620/4525/4620 Datasheet, Revision B, 2004.
[11] Nordic VLSI ASA. Nordic nRF2401 Datasheet, Revision 1.1, June 2004.
[12] D. A. Patterson and J. L. Hennessy. Computer Organization & Design, The Hardware / Software Interface. Morgan Kauffman, 2nd edition, 1998.
[13] Texas Instruments. MSP430C13x1 Datasheet, revised Sept. 2004, 2004.