Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Загон сторожевой собаки в будку и долгое сидение в SLEEP
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > AVR
Pyku_He_oTTyda
Такая вот ситуация:
Берем МК, например Тини 26, у него предделитель Timer1 может быть 16384 и при частоте 1 МГц мы получаем переполнение за 4 секунды.
Задача такая, останавливаемся на sleep, раз в четыре секунды вываливаемся в прерывание по переполнению, что то делаем, и если условие неверно, опять переходим в sleep.
Вопрос у меня вот в чем: как сбрасывать wdr в момент сидения в sleep? Я сижу в sleep 4 секунды, а максимальное время wdr - 2 секунды.
Отказыватся от wdr не хочется, питание устройства очень редко будет отключатся, sleep - устройство питается от аккумуляторов, хоть достаточно и мощных, но снижение потребления хоть немного не помешает.
Единственное, что пришло в голову, разбивать 4 секудный отрезок таймера по крайней мере на три и сбрасывать wdr. Но вероятно есть и другие решения?
Igor26
Точно не помню, но, помоему, если установить фьюз WDTON, то собаку можно останавливать/запускать в любом месте программы.
Посмотрите в этом направлении. ДШ нет под рукой, конкретно ответить не могу.
otrog
Можно еще находясь в PowerDown просыпаться от WDT. Тогда потребление упадет оч. сильно.
Pyku_He_oTTyda
Цитата
Можно еще находясь в PowerDown просыпаться от WDT. Тогда потребление упадет оч. сильно.


Я думал об этом, но кажется что это "некрасивое" решение. Так вообще делают в разработках (имеется ввиду не любительские поделки)?
ivstech
>>Такая вот ситуация:
>> Берем МК, например Тини 26, у него предделитель Timer1 может быть 16384 и при частоте 1 МГц мы >>получаем переполнение за 4 секунды.
>> Задача такая, останавливаемся на sleep, раз в четыре секунды вываливаемся в прерывание по >>переполнению, что то делаем, и если условие неверно, опять переходим в sleep.
В режиме power save работает только асинхронный (часовой) таймер
>> Вопрос у меня вот в чем: как сбрасывать wdr в момент сидения в sleep? Я сижу в sleep 4 секунды, а >>максимальное время wdr - 2 секунды.
Никак
>> Отказыватся от wdr не хочется, питание устройства очень редко будет отключатся, sleep - >>устройство питается от аккумуляторов, хоть достаточно и мощных, но снижение потребления хоть >>немного не помешает.

>> Единственное, что пришло в голову, разбивать 4 секудный отрезок таймера по крайней мере на три >>и сбрасывать wdr. Но вероятно есть и другие решения?

Если включить Fuse Wdt On, то Watchdog выключить из программы вообще нельзя

Предложенное Вам решение просыпаться от wdt правильное
otrog
Цитата(Pyku_He_oTTyda @ Jun 6 2006, 09:47) *
Цитата
Можно еще находясь в PowerDown просыпаться от WDT. Тогда потребление упадет оч. сильно.


Я думал об этом, но кажется что это "некрасивое" решение. Так вообще делают в разработках (имеется ввиду не любительские поделки)?

Это один из основных способов скатиться к микропотреблению.
http://electronix.ru/forum/index.php?showtopic=16657
Pyku_He_oTTyda
C резетом по wdr все даже намного проще у меня складываетсяsmile.gif
Не думал, что простое решение будет оптимальным
otrog
Цитата(Pyku_He_oTTyda @ Jun 6 2006, 10:23) *
C резетом по wdr все даже намного проще у меня складываетсяsmile.gif
Не думал, что простое решение будет оптимальным

Небольшая поправка. Можно именно просыпаться по WDT т.е. есть прерывание от WDT.
Но если устроило каждый раз ресетиться то тоже вариант wink.gif .
Rst7
Стоп. В Т26 нерасширенный WDT, так что только ресет
otrog
Цитата(Rst7 @ Jun 6 2006, 11:27) *
Стоп. В Т26 нерасширенный WDT, так что только ресет

Аааа. Просто было
Цитата
Берем МК, например Тини 26
Вот и необратил внимания blush.gif .
Pyku_He_oTTyda
Цитата
Удобно использовать мастер начального кода CVAVR - с нем сразу видно параметры переферии.


Всысле? Что я в данном случае увижу? Период собаки - и так ясно... Какие прерывания есть? даташит под рукой...

Меня больше интересовал сам принцип вопроса, без привязки к конкретному МК. Мне казалось что reset по wdr не самое красивое решениеsmile.gif

З.Ы. Кстати, прога на asm
add
Цитата
Берем МК, например Тини 26,

А почему для примера не взять tiny2313? или tiny13? у них до 8 секунд... :-)

Цитата
если установить фьюз WDTON, то собаку можно останавливать/запускать

Установка WDTON включает аппаратный вачдок, причем только на reset.
В Вашем случае(для t26) можно просыпаться раз в две секунды и сбрасывать wdt, на потребление это не слишком скажется, тк время сна намного больше обработки прерывания wdt.
Вопрос "красивости" тут несколько непонятен?! это документированая возможность? - да! Прерывание по переполнению есть? - да! (у Тiny2313 и Тiny13). Использование значит допустимо.
Pyku_He_oTTyda
Цитата
А почему для примера не взять tiny2313? или tiny13? у них до 8 секунд... :-)


не было в наличииsmile.gif
defunct
Цитата(Pyku_He_oTTyda @ Jun 6 2006, 08:28) *
Вопрос у меня вот в чем: как сбрасывать wdr в момент сидения в sleep? Я сижу в sleep 4 секунды, а максимальное время wdr - 2 секунды.
Отказыватся от wdr не хочется, питание устройства очень редко будет отключатся, sleep - устройство питается от аккумуляторов, хоть достаточно и мощных, но снижение потребления хоть немного не помешает.

WDT нельзя сбросить находясь в режиме сна.

Поэтому для заданного условия, решение может быть только таким:
Настроить WDT на максимально возможный период сброса. Установить длительность между пробуждениями устройства так, чтобы оно было хотя бы в 2 раза меньше максимальной длительности периода WDT. Сразу после команды sleep, вставить команду WDR (либо если у вас весь алгоритм программы выполняется в обработчике прерывания таймера, тогда вставить WDR в обработчик прерывания).

Компенсировать возросшее суммарное энергопотребление увеличением тактовой частоты ядра (в 8 раз).
Pyku_He_oTTyda
Сделал резет по wdr. Сижу в StBy и просыпаюсь по сбросу собаки, опрашиваю АЦП, и если условие выполняется, начинаю работать.

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

Даташит прикладываю
GetSmart
Что за поделка?
Pyku_He_oTTyda
Герметичный бокс для видеокамеры с выведенными органами управления. По простому, кнопки на датчиках Холла

Минимальное время необходимо все для той же экономии батарей, т.к. один датчик Холла потребляет 7 мА
GetSmart
Там вроде ничего инерционного нету. Я бы предположил несколько микросекунд. Может десятков. Лучше это узнавать на спаянной схеме.
ILYCHOFF
мы такие применяли, вроде около 6 мкс, если память не изменяет
otrog
Цитата(Pyku_He_oTTyda @ Jun 7 2006, 11:27) *
Герметичный бокс для видеокамеры с выведенными органами управления. По простому, кнопки на датчиках Холла

Минимальное время необходимо все для той же экономии батарей, т.к. один датчик Холла потребляет 7 мА

А зачем применять ДХ с аналоговым выходом + АЦП для кнопок - есть же с цифровым выходом?
Pyku_He_oTTyda
Очень простой ответsmile.gif
условие задачи:
1.в кнопке магнит (какой есть у заказчика)
2.ход кнопки 4 мм (условие)
3.растояние до датчика холла при нажатой кнопке 4 мм (условие), можно увеличить в разумных пределах
4.в кнопке отсуствует пружина, возврат происходит за счет магнитного поля второго магнита

Датчики с цифровым выходом имеют гистерезис, поэтому при приведенных выше условиях "кнопка" либо нечетко срабатывала, либо
"неотпускала"
В случае датчиков с аналоговым выходом разность значений АЦП составляет около 30, что позволяет четко отслеживать "включено - выключено"

Это было здесь: http://electronix.ru/forum/index.php?showtopic=15023&st=15
muravei
Что-то я не понял, как пределить: проснулись мы штатно во время "спячки" или не штатно во время работы
э-э или не штатно во время "спячки" ? smile.gif
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.