Очень полезная тема, спасибо! Это как раз то, что мне нужно для разработки устройства с миниатюрным источником питания. А если ставить устройство на ☀️, то знание этой темы позволяет сильно сэкономить на размерах солнечной панели и заряжаемого ею аккумулятора.
@@neoalternator Микроконтроллеры AVR - потрясная вещь! Оказывается, их придумали, разработали всю линейку (каких только нет! вот и с радиопередатчиком, я смотрю, есть) в США в конце 90-х - начале 2000-х. Всё продумано, всё прекрасно, возможности широки и безграничны. Нет ничего умнее на свете! Думаю, за Attiny американцам можно всё простить и дружить с ними.
@@АндрейЧемезов-ы6э Согласен! Считаю, что их большой плюс - очень понятная и доступная для освоения документация. Возможно благодаря этому много пользовательских библиотек к этим мк и проектов на их основе.
@@neoalternator Получается что на 1 секунду на каждую 1 минуту может просыпаться , чтобы сделать замер показателей и отправить данные на базу (центр управления) так чтобы таблетку хватило на 1 год !??? Правильно ли я подсчитал ?
Как всегда отличное познавательное видео!. Ещё, может я прослушал, но не услышал, что использовать ватчдог не по прямому назначению (а именно - reset зависшей программы) можно только в Attiny13. (хотя может и в других малютках можно, поправьте если что...)
Спасибо за отзыв! У большинства работает и на прерывание. У Т10, Т13, Т25/45/85 точно работает и на прерывание и на ресет. Всегда можно уточнить в даташите в таблице Watchdog Timer Configuration
Спасибо, очень интересно. Возник такой вопрос, при каком времени простоя есть смысл усыплять мк? В плане расхода энергии. Если простой 10? А если секунда? Пол секунды? Есть ли дополнительные расходы энергии на усыпление/пробуждение? Спасибо
Спасибо! Ждал этого видео. Но увидел не все, что хотел. В комментариях к видео о WDT, я спрашивал о пробуждении от внешних прерываний PCINT. Именно о них, так как пинов с такой возможностью у МК больше, чем с INT (например когда нужно пробуждаться от нескольких источников команд). Значит спрошу здесь ))). При работе с пинами внешних прерываний PCINT команда "attachInterrupt" тоже работает? Ею можно назначить любой из пинов PCINT для выполнения функции по внешнему прерыванию? Читал, что вроде эта команда работает только с пинами прерываний INT. Буду благодарен за ответ. Если неправ - поправьте.
Это тема тянет на отдельное видео. Постараюсь его опубликовать на ближайших выходных. Ардуиновская attachInterrupt может работать только с INT0, INT1 и т.д. Активировать и работать с PCINT нужно через регистры и отслеживание вектора прерывания. В общем тема хорошая, интересная, так что скоро будет по ней видео!
@@neoalternator Спасибо, значит я не ошибся с "attachInterrupt". Опять придется ждать с нетерпением))). Насколько я смог разобраться с регистрами по даташиту (в моем случае Attiny 44), то для моих задач нужно: MCUCR |= (1
@@neoalternator Сегодня пробовал поиграться. Загнать в сон получилось. Выйти из сна тоже, но обратно в сон не уходит. По сути, образно, нужно чтобы после нажатия на кнопку МК проснулся, светодиод светился некоторое время, потом погас и МК уснул. Аналогично и с другими парами кнопка- светодиод. Код с задержкой на millis пробовал в обычном режиме - всё работает. После нажатия на кнопку светодиод светится заданное время. После того как задержка по millis проходит - светодиод гаснет. А вот с прерываниями он засвечивается и не гаснет. Видимо где-то нарушен порядок команд. Придется видимо ждать вашего видео ))).
Конкретно в Attiny13 есть два вида прерывания от пин. Сложное только на 6-й ноге INT0addrs (есть выбор какой "полярности" импульс запустит). Простое PCI0addrs на любой ноге (включая и 6ногу) - по любому изменению на ноге (с "0" на "1" и обратно). Пишу на ASM, проверяю в Proteus. К примеру, для проверки работы прерывания от любой ноги, вставляю в обработчик команду "inc R31" и вижу число "2" в регистре. Это потому что тактовая кнопка в одну сторону +1 и в обратную +1. Т.е. два раза срабатывает прерывание за одно нажатие (дребезг "протез" не учитывает). Ардуино плохо подходит для изучения таких маленьких (но удаленьких!) микроконтроллеров. Лучше найти хорошую старую книжку...
Millis криво работает, если используется прерывания. По сути, на время работы прерывания основной таймер останавливается. И видимо (мое предположение) функция millis зависает. Лучше использовать прерывание по переполнению таймера TIM0_OVF. Оно как раз позволяет установить периодичность включения/измерения чего-либо, пока микроконтроллер бодрствует.
Подскажите, а сам "переход" в режим энергосбережения накладный? Если у меня, скажем задача каждые 100мс изменять параметры свечения RGB светодиода. Будет ли смысл погружаться в режим энергосбережения между этими действиями? При какой частоте необходимости просыпаться смысл в "засыпании" отпадёт?
Получается что на 1 секунду на каждую 1 минуту может просыпаться , чтобы сделать замер показателей и отправить данные на базу (центр управления) так чтобы таблетку хватило на 1 год !??? Правильно ли я подсчитал ?
Просыпаться он будет максимум каждые 8 секунд. Если нужно действие выполнять раз в минуту, то 7 раз будет просыпаться вхолостую, а на 8 раз, выполнять какое-то действие. На год таблетки должно хватить. В теории, даже дольше.
Либо будить по внешнему таймеру. Т.е. что-то снаружи считает время и когда нужно создает внешнее прерывание. Либо просыпаться по watchdog раз в 8 секунд, добавлять некой переменной единицу и снова засыпать. Это мизер с т.з. энергозатрат. И когда эта переменная станет например 5, выполнять какое-то действие и сбрасывать ее. Таким образом, выполняться задача будет раз в 40 секунд (8*5).
У меня очень странно ведёт себя tiny13, Ваши примеры программ работают только при использовании языка С так сказать, а вот примеры с применением ардуиновских функций не работают от слова вообще, версия среды 1.8.13
Привет. Видать у тебя мультиметр не могЁт измерять малые токи ну или просто врёт. В режиме ПоверДаун тинька должна кушать меньше 1 микроампера а с включённым ВачДогом примерно 5 микроампер. А для наших мигалочек это очень важно знать )))
Спасибо! Бомбическое видео, все очень понятно, готов поставить пиво
А вот и первый доход с Ютуба))))
Это лучщее видео на данную тему, что я видел. А искал я долго :)
Спасибо вам.. Долго ждал этого видел.. Спасибо что вы еще показываете это в IDE...
Язык функций мне самому ближе, но язык регистров ближе микроконтроллеру. Вот и стараюсь "и нашим и вашим" ))
Спасибо хороший человек за внятное объяснение. Удачи
Спасибо за отзыв!
Очень полезная тема, спасибо! Это как раз то, что мне нужно для разработки устройства с миниатюрным источником питания. А если ставить устройство на ☀️, то знание этой темы позволяет сильно сэкономить на размерах солнечной панели и заряжаемого ею аккумулятора.
Или, например, от элемента Пельтье. Достаточно будет небольшого градиента температур для работы мк и дозарядки аккумулятора.
@@neoalternator Микроконтроллеры AVR - потрясная вещь! Оказывается, их придумали, разработали всю линейку (каких только нет! вот и с радиопередатчиком, я смотрю, есть) в США в конце 90-х - начале 2000-х. Всё продумано, всё прекрасно, возможности широки и безграничны. Нет ничего умнее на свете! Думаю, за Attiny американцам можно всё простить и дружить с ними.
@@АндрейЧемезов-ы6э Согласен! Считаю, что их большой плюс - очень понятная и доступная для освоения документация. Возможно благодаря этому много пользовательских библиотек к этим мк и проектов на их основе.
@@neoalternator Получается что на 1 секунду на каждую 1 минуту может просыпаться , чтобы сделать замер показателей и отправить данные на базу (центр управления) так чтобы таблетку хватило на 1 год !??? Правильно ли я подсчитал ?
@@АндрейЧемезов-ы6э А за смартфон можно и памятник амеиканцам поставить в центре красной площади !
Спасибо за работу. Как раз хотел сделать аварийную мигалку с большим сроком службы.
Спасибо за отзыв и успехов в проекте!
супер. спасибо большое
Как всегда отличное познавательное видео!. Ещё, может я прослушал, но не услышал, что использовать ватчдог не по прямому назначению (а именно - reset зависшей программы) можно только в Attiny13. (хотя может и в других малютках можно, поправьте если что...)
Спасибо за отзыв! У большинства работает и на прерывание. У Т10, Т13, Т25/45/85 точно работает и на прерывание и на ресет. Всегда можно уточнить в даташите в таблице Watchdog Timer Configuration
Спасибо, очень интересно. Возник такой вопрос, при каком времени простоя есть смысл усыплять мк? В плане расхода энергии. Если простой 10? А если секунда? Пол секунды? Есть ли дополнительные расходы энергии на усыпление/пробуждение? Спасибо
Даже на полсекунды имеет смысл усыплять, при автономном питании. Энергия на засыпание и пробуждение не тратится.
Спасибо!
Ждал этого видео.
Но увидел не все, что хотел. В комментариях к видео о WDT, я спрашивал о пробуждении от внешних прерываний PCINT. Именно о них, так как пинов с такой возможностью у МК больше, чем с INT (например когда нужно пробуждаться от нескольких источников команд).
Значит спрошу здесь ))).
При работе с пинами внешних прерываний PCINT команда "attachInterrupt" тоже работает? Ею можно назначить любой из пинов PCINT для выполнения функции по внешнему прерыванию?
Читал, что вроде эта команда работает только с пинами прерываний INT.
Буду благодарен за ответ.
Если неправ - поправьте.
Это тема тянет на отдельное видео. Постараюсь его опубликовать на ближайших выходных. Ардуиновская attachInterrupt может работать только с INT0, INT1 и т.д. Активировать и работать с PCINT нужно через регистры и отслеживание вектора прерывания. В общем тема хорошая, интересная, так что скоро будет по ней видео!
@@neoalternator Спасибо, значит я не ошибся с "attachInterrupt". Опять придется ждать с нетерпением))).
Насколько я смог разобраться с регистрами по даташиту (в моем случае Attiny 44), то для моих задач нужно:
MCUCR |= (1
@@neoalternator Сегодня пробовал поиграться.
Загнать в сон получилось. Выйти из сна тоже, но обратно в сон не уходит.
По сути, образно, нужно чтобы после нажатия на кнопку МК проснулся, светодиод светился некоторое время, потом погас и МК уснул. Аналогично и с другими парами кнопка- светодиод.
Код с задержкой на millis пробовал в обычном режиме - всё работает. После нажатия на кнопку светодиод светится заданное время. После того как задержка по millis проходит - светодиод гаснет.
А вот с прерываниями он засвечивается и не гаснет. Видимо где-то нарушен порядок команд.
Придется видимо ждать вашего видео ))).
Конкретно в Attiny13 есть два вида прерывания от пин. Сложное только на 6-й ноге INT0addrs (есть выбор какой "полярности" импульс запустит). Простое PCI0addrs на любой ноге (включая и 6ногу) - по любому изменению на ноге (с "0" на "1" и обратно). Пишу на ASM, проверяю в Proteus. К примеру, для проверки работы прерывания от любой ноги, вставляю в обработчик команду "inc R31" и вижу число "2" в регистре. Это потому что тактовая кнопка в одну сторону +1 и в обратную +1. Т.е. два раза срабатывает прерывание за одно нажатие (дребезг "протез" не учитывает). Ардуино плохо подходит для изучения таких маленьких (но удаленьких!) микроконтроллеров. Лучше найти хорошую старую книжку...
Millis криво работает, если используется прерывания. По сути, на время работы прерывания основной таймер останавливается. И видимо (мое предположение) функция millis зависает. Лучше использовать прерывание по переполнению таймера TIM0_OVF. Оно как раз позволяет установить периодичность включения/измерения чего-либо, пока микроконтроллер бодрствует.
Подскажите пожалуйста как можно сделать режим сна atmega328p в программе Flprog.
Подскажите, а сам "переход" в режим энергосбережения накладный? Если у меня, скажем задача каждые 100мс изменять параметры свечения RGB светодиода. Будет ли смысл погружаться в режим энергосбережения между этими действиями? При какой частоте необходимости просыпаться смысл в "засыпании" отпадёт?
Здравствуйте. Сделайте пожалуйста скетч для ТИНИ13 со спящим энергосберегающим режимом. Тактовая кнопка чтобы разбудить жмем 2 сек, чтобы выключать также. 5 режимов ШИМ 5%, 25%,50%,75%,100% частота 500 гц. переключение режимов тойже кнопкой , нажимать на 1 сек. Частота тини13 думаю 2-4Mhz.
Здравствуйте! Я не пишу скетчи на заказ. И шим, и работа с кнопкой, и про энергосбережение есть в моих видео. Всё сложить придется самостоятельно.
Эх надо бы поставить памятник на красной площади, тюркскому учёному Аль-Хорезми который разработал АЛГОРИТМ , сидели бы сейчас в каменном веке ! 😂
Получается что на 1 секунду на каждую 1 минуту может просыпаться , чтобы сделать замер показателей и отправить данные на базу (центр управления) так чтобы таблетку хватило на 1 год !??? Правильно ли я подсчитал ?
Просыпаться он будет максимум каждые 8 секунд. Если нужно действие выполнять раз в минуту, то 7 раз будет просыпаться вхолостую, а на 8 раз, выполнять какое-то действие. На год таблетки должно хватить. В теории, даже дольше.
Возможно я невнимательно слушал, скажите пожалуйста что делать если продолжительность сна должна быть более 8 секунд?
Либо будить по внешнему таймеру. Т.е. что-то снаружи считает время и когда нужно создает внешнее прерывание. Либо просыпаться по watchdog раз в 8 секунд, добавлять некой переменной единицу и снова засыпать. Это мизер с т.з. энергозатрат. И когда эта переменная станет например 5, выполнять какое-то действие и сбрасывать ее. Таким образом, выполняться задача будет раз в 40 секунд (8*5).
У меня очень странно ведёт себя tiny13, Ваши примеры программ работают только при использовании языка С так сказать, а вот примеры с применением ардуиновских функций не работают от слова вообще, версия среды 1.8.13
У меня тоже 1.8.13. Возможно библиотека Тини13 устарела?
Привет. Видать у тебя мультиметр не могЁт измерять малые токи ну или просто врёт. В режиме ПоверДаун тинька должна кушать меньше 1 микроампера а с включённым ВачДогом примерно 5 микроампер. А для наших мигалочек это очень важно знать )))