Attiny13-выход из сна
- Войдите на сайт для отправки комментариев
Втр, 26/05/2020 - 11:07
Здравствуйте. Кучу всего перечитал, но не разобрался.Как можно реализовать выход Attiny13 из сна? Суть такая, три положения на передатчике. Ставлю тумблер в положение 1-приемник принимает сигнал PWM(длительность 1500мс). Attiny13 принимает этот сигнал в обычном режиме. А можно сделать так, чтобы она спала, а как только пришел этот сигнал она просыпалась, выполняла какое то действие и снова засыпала. Аналогично и далее, тумблер в положение 2( длительность сигнала 2000мс)-опять проснулась и сделала что то и снова в спячку.
Нет. Она может проснуться по сигналу, но спя не может определить, что это за сигнал.
Нет. Она может проснуться по сигналу, но спя не может определить, что это за сигнал.
т.е это должно быть нажатие физическое кнопки?
Необязательно. Запрограммировать можно почти любое прерывание - тот же фронт от сигнала PWM.
Необязательно. Запрограммировать можно почти любое прерывание - тот же фронт от сигнала PWM.
Вот я написал код, но он не работает.
В режиме сна PWR_DOWN только intpc0 и вачдог работают. Читайте мануал стр 30 табд. 7-1. Почему это кто то должен делать за Вас?
В режиме сна PWR_DOWN только intpc0 и вачдог работают. Читайте мануал стр 30 табд. 7-1. Почему это кто то должен делать за Вас?
Вот подправил, но все равно не так работает. Надо чтобы был режим POWER DOWN и контроллер выходил из этого режима по сигналу на PB0(PCINT0). А работает либо спящий режим если закомментировать строку GIMSK |= (1<<PCIE); или PCCMSK |= (1<<0); или если раскомментировать эти строки , то работает прерывание на PB0 но не работает режим POWER DOWN. Подсобите светом что не так, люди добрые)
Хотя меряю тестером,ток без sleep enable 4.4мА, добавляю эти строки ток составляет 0.27мА, т.е как я понимаю спящий режим работает? Но вот в скетче BLINK ток в спящем режиме составляет 7мкА, сам измерял. Почему же в моем скетче ток потребления выше?
если импульс слишком короткий - просыпаться не будет. Для того чтоб МК просыпался по изменению уровня - измененый уровень должен сохранятся на все время выхода из спячки
Цитата:
Note that if a level triggered interrupt is used for wake-up from Power-down mode, the changed
level must be held for some time to wake up the MCU.
Хотя меряю тестером,ток без sleep enable 4.4мА
это - вообще без сна
много, это явно не POWER_DOWN - должны быть единицы мкА, а у вас сотни
вот это похоже на правду
Почему же в моем скетче ток потребления выше?
проверьте потребление своего МК без периферии, очень важно что подцеплено и в каком режиме находятся не используемые пины МК во время сна. Т е перед уходом в сон настраиваете входы/выходы и после выхода из сна.
Почему же в моем скетче ток потребления выше?
проверьте потребление своего МК без периферии, очень важно что подцеплено и в каком режиме находятся не используемые пины МК во время сна. Т е перед уходом в сон настраиваете входы/выходы и после выхода из сна.
Я проверял, без переферии ток 7мкА. Что то я в скетче не так видимо сделал.
И? Мозг/логику включите, значит МК спит правильно, смотрите периферию и режим работы пинов в спящем режиме. Вариантов не много, или в ноль посадить в режиме выхода или в режим входа пины загнать при сне. После выхода из сна переводить в нужный рабочий режим.
Мозг включил, сделал вывод что микроконтроллер спит правильно но не в моем скетче) Первый раз с режимом сна работаю, поэтому и обратился к спецам за помощью.) Вся периферия отключена. Пины как вы говорите загнать в режим входа в секции LOOP, а выводить в рабочий режим в секции ISR (WDT_vect) ?
Проверьте сначала сколько вы действительно спите. Выключайте светодиод перед сном и включайте в прерываниях. По моему ваш алгоритм может работать не так как вы ожидаете.
Проверьте сначала сколько вы действительно спите. Выключайте светодиод перед сном и включайте в прерываниях. По моему ваш алгоритм может работать не так как вы ожидаете.
Проверил, сон работает как положено как только я отключаю прерывание на PB1(в регистр PCSMK записываю бит 0 в PCINT1). Как включаю сон не работает. Я так понимаю мне надо как то переконфигурировать порт PB1 чтобы он во сне работал как вход.Мне надо сделать прерывание из сна по изменению уровню сигнала.
Проверьте сначала сколько вы действительно спите ...
Проверил, сон работает как положено ...
Не знаю, как положено работать вашему сну, но если PB1 сигнал меняться не будет, то и сна не будет после первого срабатывания WDT, т.к. зависните в цикле PPM_read(). У вас вообще запутанный алгоритм. Непонятно зачем вам WDT, что вы делаете по прерыванию - обычно по прерыванию начинают измерения, а вы выводите результат. По моему, начните с простого сна и пробуждения и постепенно усложняйте.
как то странно....Вам WDT нужен или просыпание по сигналу с пина?
и конечно, пин по которому необходимо просыпаться должен быть сконфигурирован как вход.
вот в этой теме много всего, возьмите оттуда примеры
http://arduino.ru/forum/programmirovanie/attiny13a-101-primenenie?page=3...
как то странно....Вам WDT нужен или просыпание по сигналу с пина?
и конечно, пин по которому необходимо просыпаться должен быть сконфигурирован как вход.
вот в этой теме много всего, возьмите оттуда примеры
http://arduino.ru/forum/programmirovanie/attiny13a-101-primenenie?page=3...
Мне нужен WTT и просыпание по сигналу на PB1. Что то мне кажется что на пине PB1 у меня всегда лог.1, только разная длительность импульса, поэтому у меня и не работает прерывание. На PB1 поступает сигнал PWM с приемника радиоуправления самолетом.
Не знаю, как положено работать вашему сну, но если PB1 сигнал меняться не будет, то и сна не будет после первого срабатывания WDT, т.к. зависните в цикле PPM_read(). У вас вообще запутанный алгоритм. Непонятно зачем вам WDT, что вы делаете по прерыванию - обычно по прерыванию начинают измерения, а вы выводите результат. По моему, начните с простого сна и пробуждения и постепенно усложняйте.
[/quote]
Смысл такой, ATTINY13 подключена к поисковому радиомаяку. Чтобы она не жрала ток аккумулятора я хочу чтобы она спала. Если я включаю тумблер на аппаратуре радиоуправления, то тинька должна принять этот сигнал, и выполнить какое то действие, например включить пищалку.
теперь расскажите, что за сигнал PWM вы используете для пробуждения? - PWM - это периодический сигнал, он. говоря по простому, постоянно меняется то вверх то вниз :) - так вот, вы понимаете, что МК будет просыпаться по каждому фронту? то есть еслу у вас реально на пине PWM - тинька не будет спать вообще
присоединяюсь к предыдущим ораторам - мне кажется, вы пока толком сами не представляете, что пытаетесь сделать. Вам надо остановится и для начала сформулировать четкое ТЗ. Предлагаю написать его тут, в форуме - будете обьяснять нам и сами, наконец, поймете :)
теперь расскажите, что за сигнал PWM вы используете для пробуждения? - PWM - это периодический сигнал, он. говоря по простому, постоянно меняется то вверх то вниз :) - так вот, вы понимаете, что МК будет просыпаться по каждому фронту? то есть еслу у вас реально на пине PWM - тинька не будет спать вообще
присоединяюсь к предыдущим ораторам - мне кажется, вы пока толком сами не представляете, что пытаетесь сделать. Вам надо остановится и для начала сформулировать четкое ТЗ. Предлагаю написать его тут, в форуме - будете обьяснять нам и сами, наконец, поймете :)
Так и получается.Это я уже выяснил. Т.е рещения нет?
Так и получается.Это я уже выяснил. Т.е рещения нет?
что "получается" ? Что сигнал PWM не подходит для выхода из сна? - так вам это написали В САМОМ ПЕРВОМ ОТВЕТЕ.
Чего ради тогда мы три дня воду в ступе гоняем?
Так и получается.Это я уже выяснил. Т.е рещения нет?
что "получается" ? Что сигнал PWM не подходит для выхода из сна? - так вам это написали В САМОМ ПЕРВОМ ОТВЕТЕ.
Чего ради тогда мы три дня воду в ступе гоняем?
Ну извините если что не так)
Ну извините если что не так)
но тема зачем WDT не раскрыта :)
Update: выложите сюда картинку с осциллографа входного сигнала, будет проще понять что вы хотите.