Ардуинщики всех стран - объединяйтесь! В этом форуме, конечно.
Ответить

Как войти в режим Sleep для атмега128

Вт ноя 16, 2021 09:41:23

Добрый день.
В Ардуино IDE подключением менеджера плат МеgаCore, организована поддержка микроконтроллера Атмега128.
В моем скетче есть участок входа микроконтроллера в сон. При попытки компиляции возникает ошибка указывающая на проблему с библиотекой <LowPower.h> . Смена версий среды Ардуино, а также подключаемых других библиотек энергосбережения не приводит к положительному результату. Это как мне кажется означает отсутствие поддержки библиотеками контроллера Атмега128.
Просьба, помогите как решить данную проблему.
Если отключить энергосберегающую библиотеку то Ардуино компилирует скетч и прошивает контроллер который выполняет проектируемую задачу.

Re: Как войти в режим Sleep для атмега128

Вт ноя 16, 2021 11:55:04

...означает отсутствие поддержки библиотеками контроллера Атмега128...

Совершенно верно.
Решается задача написанием своей утилиты лапками.

Re: Как войти в режим Sleep для атмега128

Вт ноя 16, 2021 12:27:14

pyzhman лапками для меня не понятно пока как.
Я так же из Ижевска

Re: Как войти в режим Sleep для атмега128

Вт ноя 16, 2021 13:44:41

Раздел Power Management and Sleep Modes в даташите.

Re: Как войти в режим Sleep для атмега128

Вт ноя 16, 2021 22:35:18

Все оказалось просто и разжевано на сайте разработчика MegaCore.
в сон Атмега128 и несколько других контроллеров которые не поддерживает библиотека <LowPower.h>
входит так (проверил работает)

void setup()
{
SleepMode(SLEEP_IDLE); // задаете один из 6 режимов сна, синтаксис обезателен
//режим
//SLEEP_IDLE
//SLEEP_ADC
//SLEEP_POWER_DOWN
//SLEEP_POWER_SAVE
//SLEEP_STANDBY
//SLEEP_EXTENDED_STANDBY
}
void loop()
{
IF( переменная==истина)
{sleep ();}
else
{noSleep ();}
{

Выход из сна происходит разными методами, в основном по прерыванию(смотреть датшит) поэтому перед сном надо разрешить прерывания а после выхода запретить.

Заметил что при установки MegaCore в среду Ардуино IDE, необходимость в платах Ардуино отпадает, Достаточно к практическому любому микроконтроллеру подпаять кварц, и разъем для программатора или UART и из среды Ардуино IDE редактировать свой скетч, компилировать и прошивать микроконтроллер не задумываясь об фьюзах. Если применять для этих целей UART, то предварительно прошить программатором загрузчик в микроконтроллер из среды IDE

Re: Как войти в режим Sleep для атмега128

Ср ноя 17, 2021 09:23:06

...
Заметил что при установки MegaCore в среду Ардуино IDE, необходимость в платах Ардуино отпадает, Достаточно к практическому любому микроконтроллеру подпаять кварц, и разъем для программатора или UART и из среды Ардуино IDE редактировать свой скетч, компилировать и прошивать микроконтроллер не задумываясь об фьюзах. Если применять для этих целей UART, то предварительно прошить программатором загрузчик в микроконтроллер из среды IDE

Ошибочное мнение.
1. В случае, когда из группы mcudude установлена только платформа MegaCore будут обслуживаться только МК из перечня данной платформы. (и те, что установлены "по умолчанию" или ранее дополнительно установлены).
2. Фузы в любом случае придется записывать для конкретной комбинации в списке настроек выбранного МК.
Только делается это через ардуиноISP программатор командой "записать бутлоадер" (даже если такового в платформе не предусмотрено). А уже после того можно и сам скотч загружать.

Самодельные платки ардуино на основе АВР в любом случае можно делать самостоятельно - это базовая особенность данной системы.
Однако для расширения номенклатуры МК потребуется добавлять соответствующие платформы, которые данные МК поддерживают.
8)

Re: Как войти в режим Sleep для атмега128

Ср ноя 17, 2021 14:02:27

Да я указывал только микроконтроллеры относящиеся к платформе MegaCore , но аналогично подключается платформа MiniCore, MightyCore и еще все Attiny и практически со средой IDE работает любая Атмега. В инструментах для выбранного MK устанавливаете фьюзы и заливайте загрузчик.

Re: Как войти в режим Sleep для атмега128

Вс дек 19, 2021 21:42:07

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