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

 
 
> LPC1768 SLEEP & LPC_PINCON->PINMODE
truebest
сообщение Jul 12 2013, 06:48
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 71
Регистрация: 12-05-10
Пользователь №: 57 214



Пытаюсь добиться от LPC1768 минимального энергопотребления. В аппноте AN10915 говорят что по умолчанию все ноги контроллера являются входами + подключен внутренний pull-up резистор. Рекомендуют сперва на всех GPIO выключить pull-up резисторы. Ок лезем в юзермануал а там...
Там сказано что в карте регистров существует с PINMODE0 - PINMODE7 и PINMODE9. Ок Лезем ниже где расписаны эти регистры, там существует описание только для PINMODE0 - PINMODE4 PINMODE7 PINMODE9.
Лезем в хеадер lpc17xx.h там вообще с PINMODE0 по PINMODE9 все есть ренистры. Что точно нужно менять непонятно..

Минимального энергопотребления удалось добиться когда я на всех GPIO включаю только pull-down резисторы в режиме котроллера power down моя плата потребляет 330микроампер(реально из них контроллер потребляет около 150мка что много для этого режима сна). Если я все gpio настраиваю как non-pull-up non-pull-down и отправляю котроллер в power down то моя плата потребляет 1.1ма.
Перед сном отключаю все то можно деинициализирую UARTты ADC и прочее.


Собственно вопросы, сколько существует реально PINMODE регистров?
Что нужно сделать чтобы добиться минимального энергопотребления?

Сообщение отредактировал truebest - Jul 12 2013, 06:48
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Golikov A.
сообщение Jul 13 2013, 09:30
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 4 256
Регистрация: 17-02-06
Пользователь №: 14 454



А если без пар и транзисторов.


У вас же потребление не только шевеление ключами, есть еще всякие утечки на сопротивления и перезарядку емкостей. И когда вы делаете 1000 циклов на маленькой частоте - это требует больше времени, чем на большой частоте, и все прочее что не связано с частотой, просто тупо дольше потребляет, и в среднем потребление возрастает.

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

Или я совсем про другое?sm.gif
Go to the top of the page
 
+Quote Post
zhevak
сообщение Jul 13 2013, 18:54
Сообщение #3


Знающий
****

Группа: Свой
Сообщений: 723
Регистрация: 29-08-05
Из: Березовский
Пользователь №: 8 065



А Вы знаете, уважаемый коллега Golikov, Вы натолкнули меня вот еще на какую мысль. Начну немного издалека.

Допустим, у нас имеется некая емкость, которая заряжается от какого-то источника напряжения через сопротивление. Теоретически, заряд емкости будет длится во времени бесконечно долго. Но мы с Вами не математики и физики, а инженеры. Наши пределы погрешностей составляют 1, 2, 5 и иногда даже 10%. Грубо говоря, те измерения, с которыми мы обычно имеем дело имеют вот эти названные погрешности. Теперь, если считать, что с нашей (инженерной) точки зрения процессы останавливаются тогда, когда они попадают в диапазон "наших" погрешностей, то мы сможем продвинуться дальше в наших рассуждениях.

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

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

Идем дальше. Допустим мы должны выполнить 1000 циклов заряд-разряд емкости. Пусть один цикл составляет 1 мкс, а циклы следуют пачками через каждые 10 мс. (Я специально так подобрал времена, чтобы было понятно, что пачка будет длиться 1 мс, а инерционность стрелочных приборов не позволит увидеть период этих пачек.)

Вопрос -- что покажет амперметр в первом и во втором случае, когда мы увеличили сопротивление в два раза? Ответ состоит в том, что в обоих случаях потребление энергии (а значит и показания амперметра) будет одинаковым.

Хорошо. Идем дальше. Как вы думаете, по какой причине у микроконтроллеров (да и вообще -- у любого процессора) существует некая граничная частота, начиная с которой он уже не в состоянии выполнять программу детерминировано?

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

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

Уменьшение времени заряда-разряда конденсатора говорит о том, что он не заряжается до конца. А это значит, что количество забранной у источника питания энергии будет меньше на единицу события (фронта импульса).

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

Мне наверно следует предупредить холливар -- я не говорю о режимах работы, когда проц "молотит" постоянно. Я говорю о режимах, когда проц 90 и более процентов спит и потребляет доли микроампер, а только в 10 (и менее) процентов времени проц работает, потребляя десяток-другой миллиампер. Но поскольку в моменты бодрствования проц выполняет одно и тоже количество команд, условно совершая 1000 переходов состояния внутри ядра, то можно утверждать, что он в этот момент потребляет одно и тоже количество энергии.

Но ситуация начинает немного меняться, когда проц, пробуждаясь, работает на предельных частотах. Когда его паразитные емкости не полностью заряжаются.


Кто-нибудь понял, что я тут сказал?


--------------------
Хочешь рассмешить Бога -- расскажи ему о своих планах!
Go to the top of the page
 
+Quote Post
jcxz
сообщение Jul 14 2013, 04:14
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713



Что-то вы развели тут... лес целый... транзисторы, фронты... cool.gif
А достаточно посмотреть на график характеристики потребления CPU от частоты - по оси X отложим МГц, по оси Y - мА. Так вот - если его наклон к оси X менее 45градусов, то явно что на большей частоте при пропорционально большем времени сна, потребление будет меньше. Это если предположить, что у вас некий идеальный код, время выполнения которого не зависит от реального времени и обратно пропорционально только частоте CPU (что в реальности обычно не совсем так).
Go to the top of the page
 
+Quote Post



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

 


RSS Текстовая версия Сейчас: 29th July 2025 - 15:30
Рейтинг@Mail.ru


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