Comments 25
Огромное спасибо за комментарий. Надо будет распечатать и вложить прямо в книгу.
Не поленился проверить живьем: включил Mini Pro в источник 5 В (напрямую) и в 12 В (через RAW). Как и следовало ожидать, совершенно одинаковое потребление: около 20 мА.По идее, ток должен был еще и уменьшиться, если бы стоял импульсный стабилизатор, а не линейный который при стабилизации излишки энергии переводит в бесполезное тепло.
Afaik для ардуины традиционный путь — отладка через вывод логов в uart. В принципе, для несложных задач достаточно (да и на будущее полезная привычка — не всегда можно подлезть отладчиком, и тогда грамотные логи спасают)
Для сравнения, на stm32 новичку без отладчика смерть: зальёшь через бутлоадер прогу и пытаешься понять, почему она вообще не запускается… 2-3 доллара на отладчик спасают закипающие мозги.
Могу посоветовать эмулятор Ардуино circuits.io, там реально можно отлаживать с точками останова и просмотром внутренних переменных, но все в эмуляторе, но при этом в схемном окружении — посмотрите, классная вещь.
Вот моя ардуина читает температуру с DS1820 и рисует график с ней на ST7735. А в эмуляторе таких компонент нет. Делать для эмулятора отдельный скетч?
Да и это… Я там блок питания коротнул, и ничего не взорвалось…
Вы попали в самое больное место этого проекта — отсутствие возможности создавать свои компоненты, а вроде бы раньше она была ...
Есть одна возможность, я с ней поигрался — можно поставить более, чем один контроллер и каждому дать свою прошивку, то есть эмулировать недостающие компоненты на дополнительных камнях, но как то кривовато получается.
Да, не взорвалось, а Вы точно этого хотели? )) Но амперметр показал большой ток — уже неплохо, лучше коротнуть в эмуляторе, чем в реале.
А где её брать? Мне даже от мысли самому писать эмулятор DS1820 уже больно. Проще уж действительно отсадить низкоуровневую часть на отдельный контроллер
Но там без гарантий отсутствия проблем на реальной железке…
> Да, не взорвалось, а Вы точно этого хотели? ))
Я бы хотел, что бы взрывался тот (транзистор), через который пошел большой ток. А то лишние 50мА я могу не заметить.
Снижение рабочей частоты» (стр. 108). Заблуждение, что снижение рабочей частоты будто бы уменьшает энергопотребление, широко распространено даже в профессиональной среде
А вот и нет. Это как раз идея о том, что частоту всегда надо вытягивать в максимум и падать в sleep при первой возможности — заблуждение. И причина этому — периферия. Оба механизма сбережения электропитания важны.
1) Частый уход в sleep и подъём может потреблять больше энергии, чем снижение частоты. Пока раскочегарится PLL, пока затактируется периферия также проходит время и тратится ток. У stm32 это 1-2мс, что равносильно 10 мс работы на пониженой частоте. Если ядро вашей rtos будит МК каждые 10 мс, то sleep может не давать выгоды. Увы.
2) Тактирование периферии. Большая частота тактирования ядра приводит к большим значениям предделителей. А работа предделителей это тоже потребление тока.
Поэтому профессионалы используют и снижение частоты, и режим сна для гибкого управления потреблением микроконтроллера. И у современных микроконтроллеров сложная и разветвлённая система управления тактированием.
В этой статье все так называемые замечания о «грубых ляпах» крайне сомнительны.
Скажем якобы ляп в разделе «Потребление электроэнергии платами Arduino».
Даже минимальный поиск в google за 10 сек показывает что Mini Pro с питанием от USB имеет контроллер на 3,3 В и 8 МГц, а с питанием от внешнего источника 5 В и 16 МГц. Соответствено это и вызывает 2-х кратную разницу в потреблении.
Пожелаю автору глубже вникать в тему прежде чем кого-то обвинять в ляпах.
Уйти и вернуться в stop режим — несколько микросекунд.
Это не так.
When exiting Stop mode by issuin
g an interrupt or a wakeup event, the HSI RC oscillator is
selected as system clock.
Это значит, что в stop mode вырубается осциллятор и для того, чтобы оттуда вернуться, нужно врубить HSE, дождаться выхода на режим, врубить PLL, дождаться выхода на режим. Это всё и будут те самые 2 мс.
Выйти из sleep режима — до 10 тактов
Там уже интереснее. Но советую как-либо померить энергопотребление в sleep mode при работающей периферии типа USART + DMA и разной частоте. Разница при снижении частоты всё равно есть, ~15% на каждые 2 раза снижения частоты тактирования.
Рассчитать энергопотребление помогает профилирование питания в STM32CubeMX. Возможно, в разных задачах результат будет разный, но в моих случаях уменьшение частоты приводило только к увеличению энергопотребления (по крайней мере по расчетам).
Про увеличение потребления при уменьшении частоты это интересно. Не могу скачать новый STM32CubeMX, просит регистрацию. Старый считал электропотребление без учёта затрат на раскачку осциллятора. Не уверен, что он считал потребление предделителей. А микроамперметра у меня сейчас нет, померить не могу.
Только стандартная библиотека STL там отсутствует почти полностью (видел vector и ещё несколько компонентов), и вместо некоторых компонентов сделаны свои упрощенные аналоги (типа класса String)
О книге Саймона Монка «Программируем Arduino. Профессиональная работа со скетчами»