Pyku_He_oTTyda
Jun 6 2006, 05:28
Такая вот ситуация:
Берем МК, например Тини 26, у него предделитель Timer1 может быть 16384 и при частоте 1 МГц мы получаем переполнение за 4 секунды.
Задача такая, останавливаемся на sleep, раз в четыре секунды вываливаемся в прерывание по переполнению, что то делаем, и если условие неверно, опять переходим в sleep.
Вопрос у меня вот в чем: как сбрасывать wdr в момент сидения в sleep? Я сижу в sleep 4 секунды, а максимальное время wdr - 2 секунды.
Отказыватся от wdr не хочется, питание устройства очень редко будет отключатся, sleep - устройство питается от аккумуляторов, хоть достаточно и мощных, но снижение потребления хоть немного не помешает.
Единственное, что пришло в голову, разбивать 4 секудный отрезок таймера по крайней мере на три и сбрасывать wdr. Но вероятно есть и другие решения?
Точно не помню, но, помоему, если установить фьюз WDTON, то собаку можно останавливать/запускать в любом месте программы.
Посмотрите в этом направлении. ДШ нет под рукой, конкретно ответить не могу.
Можно еще находясь в PowerDown просыпаться от WDT. Тогда потребление упадет оч. сильно.
Pyku_He_oTTyda
Jun 6 2006, 05:47
Цитата
Можно еще находясь в PowerDown просыпаться от WDT. Тогда потребление упадет оч. сильно.
Я думал об этом, но кажется что это "некрасивое" решение. Так вообще делают в разработках (имеется ввиду не любительские поделки)?
ivstech
Jun 6 2006, 06:06
>>Такая вот ситуация:
>> Берем МК, например Тини 26, у него предделитель Timer1 может быть 16384 и при частоте 1 МГц мы >>получаем переполнение за 4 секунды.
>> Задача такая, останавливаемся на sleep, раз в четыре секунды вываливаемся в прерывание по >>переполнению, что то делаем, и если условие неверно, опять переходим в sleep.
В режиме power save работает только асинхронный (часовой) таймер
>> Вопрос у меня вот в чем: как сбрасывать wdr в момент сидения в sleep? Я сижу в sleep 4 секунды, а >>максимальное время wdr - 2 секунды.
Никак
>> Отказыватся от wdr не хочется, питание устройства очень редко будет отключатся, sleep - >>устройство питается от аккумуляторов, хоть достаточно и мощных, но снижение потребления хоть >>немного не помешает.
>> Единственное, что пришло в голову, разбивать 4 секудный отрезок таймера по крайней мере на три >>и сбрасывать wdr. Но вероятно есть и другие решения?
Если включить Fuse Wdt On, то Watchdog выключить из программы вообще нельзя
Предложенное Вам решение просыпаться от wdt правильное
Цитата(Pyku_He_oTTyda @ Jun 6 2006, 09:47)

Цитата
Можно еще находясь в PowerDown просыпаться от WDT. Тогда потребление упадет оч. сильно.
Я думал об этом, но кажется что это "некрасивое" решение. Так вообще делают в разработках (имеется ввиду не любительские поделки)?
Это один из основных способов скатиться к микропотреблению.
http://electronix.ru/forum/index.php?showtopic=16657
Pyku_He_oTTyda
Jun 6 2006, 06:23
C резетом по wdr все даже намного проще у меня складывается

Не думал, что простое решение будет оптимальным
Цитата(Pyku_He_oTTyda @ Jun 6 2006, 10:23)

C резетом по wdr все даже намного проще у меня складывается

Не думал, что простое решение будет оптимальным
Небольшая поправка. Можно именно
просыпаться по WDT т.е. есть
прерывание от WDT.
Но если устроило каждый раз ресетиться то тоже вариант

.
Стоп. В Т26 нерасширенный WDT, так что только ресет
Цитата(Rst7 @ Jun 6 2006, 11:27)

Стоп. В Т26 нерасширенный WDT, так что только ресет
Аааа. Просто было
Цитата
Берем МК, например Тини 26
Вот и необратил внимания

.
Pyku_He_oTTyda
Jun 6 2006, 09:05
Цитата
Удобно использовать мастер начального кода CVAVR - с нем сразу видно параметры переферии.
Всысле? Что я в данном случае увижу? Период собаки - и так ясно... Какие прерывания есть? даташит под рукой...
Меня больше интересовал сам принцип вопроса, без привязки к конкретному МК. Мне казалось что reset по wdr не самое красивое решение

З.Ы. Кстати, прога на asm
Цитата
Берем МК, например Тини 26,
А почему для примера не взять tiny2313? или tiny13? у них до 8 секунд... :-)
Цитата
если установить фьюз WDTON, то собаку можно останавливать/запускать
Установка WDTON включает аппаратный вачдок, причем только на reset.
В Вашем случае(для t26) можно просыпаться раз в две секунды и сбрасывать wdt, на потребление это не слишком скажется, тк время сна намного больше обработки прерывания wdt.
Вопрос "красивости" тут несколько непонятен?! это документированая возможность? - да! Прерывание по переполнению есть? - да! (у Тiny2313 и Тiny13). Использование значит допустимо.
Pyku_He_oTTyda
Jun 6 2006, 10:24
Цитата
А почему для примера не взять tiny2313? или tiny13? у них до 8 секунд... :-)
не было в наличии
defunct
Jun 6 2006, 12:20
Цитата(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
Jun 7 2006, 05:01
Сделал резет по wdr. Сижу в StBy и просыпаюсь по сбросу собаки, опрашиваю АЦП, и если условие выполняется, начинаю работать.
Вопрос в догонку, не смог найти в даташите, за сколько установятся параметры датчика холла при включении? Кто нибудь работал с ними?
Даташит прикладываю
GetSmart
Jun 7 2006, 07:18
Что за поделка?
Pyku_He_oTTyda
Jun 7 2006, 07:27
Герметичный бокс для видеокамеры с выведенными органами управления. По простому, кнопки на датчиках Холла
Минимальное время необходимо все для той же экономии батарей, т.к. один датчик Холла потребляет 7 мА
GetSmart
Jun 7 2006, 08:00
Там вроде ничего инерционного нету. Я бы предположил несколько микросекунд. Может десятков. Лучше это узнавать на спаянной схеме.
ILYCHOFF
Jun 7 2006, 08:56
мы такие применяли, вроде около 6 мкс, если память не изменяет
Цитата(Pyku_He_oTTyda @ Jun 7 2006, 11:27)

Герметичный бокс для видеокамеры с выведенными органами управления. По простому, кнопки на датчиках Холла
Минимальное время необходимо все для той же экономии батарей, т.к. один датчик Холла потребляет 7 мА
А зачем применять ДХ с аналоговым выходом + АЦП для кнопок - есть же с цифровым выходом?
Pyku_He_oTTyda
Jun 7 2006, 09:23
Очень простой ответ
условие задачи:
1.в кнопке магнит (какой есть у заказчика)
2.ход кнопки 4 мм (условие)
3.растояние до датчика холла при нажатой кнопке 4 мм (условие), можно увеличить в разумных пределах
4.в кнопке отсуствует пружина, возврат происходит за счет магнитного поля второго магнита
Датчики с цифровым выходом имеют гистерезис, поэтому при приведенных выше условиях "кнопка" либо нечетко срабатывала, либо
"неотпускала"
В случае датчиков с аналоговым выходом разность значений АЦП составляет около 30, что позволяет четко отслеживать "включено - выключено"
Это было здесь:
http://electronix.ru/forum/index.php?showtopic=15023&st=15
muravei
Sep 4 2008, 17:32
Что-то я не понял, как пределить: проснулись мы штатно во время "спячки" или не штатно во время работы
э-э или не штатно во время "спячки" ?
Для просмотра полной версии этой страницы, пожалуйста,
пройдите по ссылке.