Какая у Вас тактовая частота?
Я с системой тактирования у LPC не очень знаком. Но скажу по аналогии с MSP430. Там тоже несколько генераторв. Когда проц отправляете в спячку, нужно выключать "быстрый" тактовый генератор (в процах он обычно где-то на 1 МГц) и перходить на тактирование от медленного генератора. В MSP430 это внутренний RC генератор на 12 кГц. От этого геренратора тактируется таймер, по которому должен проснуться проц, или какая-нибудь другая периферия. Как только возникает событие, которое пробуждает проц, нужно в обработчике этого события включить быстрый тактовый генератор, дождаться установки режима колебаний (а Кортексах это установка флага, в MSP -- можно сразу) и переключить тактирование ядра на этот генератор.
Наверняка Вам это уже известно, но я все же скажу -- КМОП-структуры потребляют тогда, когда происходит у них переключение из "0" в "1" или обратно. И вот тут не все так просто, как кажется на первый взгляд!
Потребление происходит в момент перехода. Ожидается, что чем выше тактовая частота, тем должны быть круче фронты у сигналов внутри МК. Незначительно, но круче. Иначе говоря, время перехода из "0" в "1" на более высокой частоте чуть-чуть должно быть меньше, чем на низкой тактовой частоте. Теоретически, на очень маленькой частоте, когда, допустим, что фронт мы формируем в ручную с помощью переменного резистора, при напряжении около половины питания, через комплиментарные структуры потечет ток. Об этом я уже писал выше. Таким образом, время перехода определяет сколько времени будет протекать этот ток. Это значит, что при одном и том же количестве переходов (допустим 10000), общее (интегральное) для одного и того же участка программы, время протекания тока будет больше если этот участок программы будет выполняться на более низкой частоте.
Вообще-то тут лучше рисовать, но я не очень расположен сейчас к рисункам. Поэтому предлагаю вот такой ход. Допустим, прога должна совершить те же самые 10000 переходов и снова уснуть до слудующей побудки. Пусть побудки будут происходить один раз в секунду.
Так вот, допустим на тактовой частоте 12 кГц, время протекания сквозного тока составляет 25 нс, а на тактовой частоте 1 МГц -- 10 нс. Точных значений я не знаю, да и скорее всего вряд ли кто их знает. Но для примера сгодится.
Допустим так же, что суммарный сквозной ток этих коротких импульсов составляет 1 мкА.
Допустим, мы работаем на 12 кГц. Таким образом перемножаим 1 мкА х 25 нс х 10000 переходв и получаем 250 мкА. Это интегральное значение нужно рстянуть на одну секунду.
Теперь допустим, что мы заставили ядро работать на 1 МГц. Снова перемножаем 1 х 10 х 10000 = 100 мкА. И это значение мы снова должны растянуть на односекундный период.
С одной стороны, на частоте в 1 МГц будет большой и короткий бросок тока, когда процессор работает, а на 12 кГц -- небольшой ппо амплитуде, но растянутый по времени. В остальное время, когда ядро вообще спит и, считается, что тока не потребляет. Практика подтверждает, что если проц, который все время спит, но раз в секунду просыпается чтобы выполнить какую-то работу, и если проц для этой работы запускать на максимальной частоте, то общее потребление будет ниже, чем если бы проц запускался на более низкой частоте.
Бли-ин! Кто это всё читать!? Наверно действительно надо было рисовать. С картинками все процессы намного понятнее.
ЗЫ. Для ориентации и как пределный случай. Я недавно делал один девайс на MSP430 с батарейным питанием. Вопросы экономии стояли очень жестко. Проц просыпался каждую секнудны, проверял сигналы и снова засыпал. Прога написана на Си. Итоговое потребление схемы составило 12-14 мкА. Причем проц жрал примерно половину. В момент пробуждения я его его тактировани на частоте в 20 МГц. В режиме спячки -- 12 кГц. Не расценивайте это как хваствовство, просто оценивайте каких результатов можно вообще добиться. В принципе, можно было участок проги вообще написать на ассемблере, тогда примерно еще можно было бы на половину уменьшить потребление проца. Но зачем? Сама схема устройства потребляет, да и саморазряд источника тоже имеется. Так что дальнейшее снижение энергопотребления проца не имел особого смысла.
--------------------
Хочешь рассмешить Бога -- расскажи ему о своих планах!
|