Power-saving mode of AVR microcontrollers. Sleep modes on the example of ATtiny13

Поділитися
Вставка
  • Опубліковано 20 гру 2024

КОМЕНТАРІ • 47

  • @rosaviakosmos
    @rosaviakosmos 2 роки тому +4

    Спасибо! Бомбическое видео, все очень понятно, готов поставить пиво

    • @neoalternator
      @neoalternator  2 роки тому +2

      А вот и первый доход с Ютуба))))

  • @ИнжирНер-з1з
    @ИнжирНер-з1з 2 роки тому +3

    Это лучщее видео на данную тему, что я видел. А искал я долго :)

  • @quasar3885
    @quasar3885 2 роки тому +2

    Спасибо вам.. Долго ждал этого видел.. Спасибо что вы еще показываете это в IDE...

    • @neoalternator
      @neoalternator  2 роки тому +1

      Язык функций мне самому ближе, но язык регистров ближе микроконтроллеру. Вот и стараюсь "и нашим и вашим" ))

  • @vtech8716
    @vtech8716 2 роки тому +3

    Спасибо хороший человек за внятное объяснение. Удачи

  • @АндрейЧемезов-ы6э
    @АндрейЧемезов-ы6э 2 роки тому +1

    Очень полезная тема, спасибо! Это как раз то, что мне нужно для разработки устройства с миниатюрным источником питания. А если ставить устройство на ☀️, то знание этой темы позволяет сильно сэкономить на размерах солнечной панели и заряжаемого ею аккумулятора.

    • @neoalternator
      @neoalternator  2 роки тому +1

      Или, например, от элемента Пельтье. Достаточно будет небольшого градиента температур для работы мк и дозарядки аккумулятора.

    • @АндрейЧемезов-ы6э
      @АндрейЧемезов-ы6э 2 роки тому +1

      @@neoalternator Микроконтроллеры AVR - потрясная вещь! Оказывается, их придумали, разработали всю линейку (каких только нет! вот и с радиопередатчиком, я смотрю, есть) в США в конце 90-х - начале 2000-х. Всё продумано, всё прекрасно, возможности широки и безграничны. Нет ничего умнее на свете! Думаю, за Attiny американцам можно всё простить и дружить с ними.

    • @neoalternator
      @neoalternator  2 роки тому +1

      @@АндрейЧемезов-ы6э Согласен! Считаю, что их большой плюс - очень понятная и доступная для освоения документация. Возможно благодаря этому много пользовательских библиотек к этим мк и проектов на их основе.

    • @worldmanagerpeacemaker
      @worldmanagerpeacemaker 2 роки тому

      @@neoalternator Получается что на 1 секунду на каждую 1 минуту может просыпаться , чтобы сделать замер показателей и отправить данные на базу (центр управления) так чтобы таблетку хватило на 1 год !??? Правильно ли я подсчитал ?

    • @worldmanagerpeacemaker
      @worldmanagerpeacemaker 2 роки тому

      @@АндрейЧемезов-ы6э А за смартфон можно и памятник амеиканцам поставить в центре красной площади !

  • @Ruth_Asada
    @Ruth_Asada 2 роки тому +1

    Спасибо за работу. Как раз хотел сделать аварийную мигалку с большим сроком службы.

    • @neoalternator
      @neoalternator  2 роки тому +1

      Спасибо за отзыв и успехов в проекте!

  • @stasstas268
    @stasstas268 2 роки тому

    супер. спасибо большое

  • @ddd_bbb_aaa
    @ddd_bbb_aaa 2 роки тому +1

    Как всегда отличное познавательное видео!. Ещё, может я прослушал, но не услышал, что использовать ватчдог не по прямому назначению (а именно - reset зависшей программы) можно только в Attiny13. (хотя может и в других малютках можно, поправьте если что...)

    • @neoalternator
      @neoalternator  2 роки тому

      Спасибо за отзыв! У большинства работает и на прерывание. У Т10, Т13, Т25/45/85 точно работает и на прерывание и на ресет. Всегда можно уточнить в даташите в таблице Watchdog Timer Configuration

  • @liosha2007
    @liosha2007 2 роки тому +1

    Спасибо, очень интересно. Возник такой вопрос, при каком времени простоя есть смысл усыплять мк? В плане расхода энергии. Если простой 10? А если секунда? Пол секунды? Есть ли дополнительные расходы энергии на усыпление/пробуждение? Спасибо

    • @neoalternator
      @neoalternator  2 роки тому +1

      Даже на полсекунды имеет смысл усыплять, при автономном питании. Энергия на засыпание и пробуждение не тратится.

  • @Олександр-щ7т
    @Олександр-щ7т 2 роки тому +1

    Спасибо!
    Ждал этого видео.
    Но увидел не все, что хотел. В комментариях к видео о WDT, я спрашивал о пробуждении от внешних прерываний PCINT. Именно о них, так как пинов с такой возможностью у МК больше, чем с INT (например когда нужно пробуждаться от нескольких источников команд).
    Значит спрошу здесь ))).
    При работе с пинами внешних прерываний PCINT команда "attachInterrupt" тоже работает? Ею можно назначить любой из пинов PCINT для выполнения функции по внешнему прерыванию?
    Читал, что вроде эта команда работает только с пинами прерываний INT.
    Буду благодарен за ответ.
    Если неправ - поправьте.

    • @neoalternator
      @neoalternator  2 роки тому +1

      Это тема тянет на отдельное видео. Постараюсь его опубликовать на ближайших выходных. Ардуиновская attachInterrupt может работать только с INT0, INT1 и т.д. Активировать и работать с PCINT нужно через регистры и отслеживание вектора прерывания. В общем тема хорошая, интересная, так что скоро будет по ней видео!

    • @Олександр-щ7т
      @Олександр-щ7т 2 роки тому +1

      @@neoalternator Спасибо, значит я не ошибся с "attachInterrupt". Опять придется ждать с нетерпением))).
      Насколько я смог разобраться с регистрами по даташиту (в моем случае Attiny 44), то для моих задач нужно:
      MCUCR |= (1

    • @Олександр-щ7т
      @Олександр-щ7т 2 роки тому

      @@neoalternator Сегодня пробовал поиграться.
      Загнать в сон получилось. Выйти из сна тоже, но обратно в сон не уходит.
      По сути, образно, нужно чтобы после нажатия на кнопку МК проснулся, светодиод светился некоторое время, потом погас и МК уснул. Аналогично и с другими парами кнопка- светодиод.
      Код с задержкой на millis пробовал в обычном режиме - всё работает. После нажатия на кнопку светодиод светится заданное время. После того как задержка по millis проходит - светодиод гаснет.
      А вот с прерываниями он засвечивается и не гаснет. Видимо где-то нарушен порядок команд.
      Придется видимо ждать вашего видео ))).

    • @ddd_bbb_aaa
      @ddd_bbb_aaa 2 роки тому

      Конкретно в Attiny13 есть два вида прерывания от пин. Сложное только на 6-й ноге INT0addrs (есть выбор какой "полярности" импульс запустит). Простое PCI0addrs на любой ноге (включая и 6ногу) - по любому изменению на ноге (с "0" на "1" и обратно). Пишу на ASM, проверяю в Proteus. К примеру, для проверки работы прерывания от любой ноги, вставляю в обработчик команду "inc R31" и вижу число "2" в регистре. Это потому что тактовая кнопка в одну сторону +1 и в обратную +1. Т.е. два раза срабатывает прерывание за одно нажатие (дребезг "протез" не учитывает). Ардуино плохо подходит для изучения таких маленьких (но удаленьких!) микроконтроллеров. Лучше найти хорошую старую книжку...

    • @neoalternator
      @neoalternator  2 роки тому

      Millis криво работает, если используется прерывания. По сути, на время работы прерывания основной таймер останавливается. И видимо (мое предположение) функция millis зависает. Лучше использовать прерывание по переполнению таймера TIM0_OVF. Оно как раз позволяет установить периодичность включения/измерения чего-либо, пока микроконтроллер бодрствует.

  • @Вячеслав-э7ж8г
    @Вячеслав-э7ж8г Рік тому

    Подскажите пожалуйста как можно сделать режим сна atmega328p в программе Flprog.

  • @IgorShuvalov_Ronin
    @IgorShuvalov_Ronin Рік тому

    Подскажите, а сам "переход" в режим энергосбережения накладный? Если у меня, скажем задача каждые 100мс изменять параметры свечения RGB светодиода. Будет ли смысл погружаться в режим энергосбережения между этими действиями? При какой частоте необходимости просыпаться смысл в "засыпании" отпадёт?

  • @Roma_Ro-e3d
    @Roma_Ro-e3d 2 роки тому

    Здравствуйте. Сделайте пожалуйста скетч для ТИНИ13 со спящим энергосберегающим режимом. Тактовая кнопка чтобы разбудить жмем 2 сек, чтобы выключать также. 5 режимов ШИМ 5%, 25%,50%,75%,100% частота 500 гц. переключение режимов тойже кнопкой , нажимать на 1 сек. Частота тини13 думаю 2-4Mhz.

    • @neoalternator
      @neoalternator  2 роки тому

      Здравствуйте! Я не пишу скетчи на заказ. И шим, и работа с кнопкой, и про энергосбережение есть в моих видео. Всё сложить придется самостоятельно.

  • @worldmanagerpeacemaker
    @worldmanagerpeacemaker 2 роки тому +2

    Эх надо бы поставить памятник на красной площади, тюркскому учёному Аль-Хорезми который разработал АЛГОРИТМ , сидели бы сейчас в каменном веке ! 😂

  • @worldmanagerpeacemaker
    @worldmanagerpeacemaker 2 роки тому

    Получается что на 1 секунду на каждую 1 минуту может просыпаться , чтобы сделать замер показателей и отправить данные на базу (центр управления) так чтобы таблетку хватило на 1 год !??? Правильно ли я подсчитал ?

    • @neoalternator
      @neoalternator  2 роки тому

      Просыпаться он будет максимум каждые 8 секунд. Если нужно действие выполнять раз в минуту, то 7 раз будет просыпаться вхолостую, а на 8 раз, выполнять какое-то действие. На год таблетки должно хватить. В теории, даже дольше.

  • @vtech8716
    @vtech8716 2 роки тому

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

    • @neoalternator
      @neoalternator  2 роки тому +1

      Либо будить по внешнему таймеру. Т.е. что-то снаружи считает время и когда нужно создает внешнее прерывание. Либо просыпаться по watchdog раз в 8 секунд, добавлять некой переменной единицу и снова засыпать. Это мизер с т.з. энергозатрат. И когда эта переменная станет например 5, выполнять какое-то действие и сбрасывать ее. Таким образом, выполняться задача будет раз в 40 секунд (8*5).

  • @vtech8716
    @vtech8716 2 роки тому

    У меня очень странно ведёт себя tiny13, Ваши примеры программ работают только при использовании языка С так сказать, а вот примеры с применением ардуиновских функций не работают от слова вообще, версия среды 1.8.13

    • @neoalternator
      @neoalternator  2 роки тому

      У меня тоже 1.8.13. Возможно библиотека Тини13 устарела?

  • @VasyaPupkinus
    @VasyaPupkinus 2 роки тому

    Привет. Видать у тебя мультиметр не могЁт измерять малые токи ну или просто врёт. В режиме ПоверДаун тинька должна кушать меньше 1 микроампера а с включённым ВачДогом примерно 5 микроампер. А для наших мигалочек это очень важно знать )))