Отправить AVR в сон на определенное время

Вопросы настройки, программирования, прошивки микроконтроллеров и микросхем программируемой логики
Аватара пользователя
BCluster
Собутыльник Кота
Сообщения: 2512
Зарегистрирован: Пн апр 06, 2009 19:33:29
Откуда: Молдова, Кишинев
Контактная информация:

Отправить AVR в сон на определенное время

Сообщение BCluster »

Привет всем. Собственно после измерения надо уложить МК спать на определенный промежуток времени (10-100 сек). Каким образом это можно реализовать?)
Реклама
Аватара пользователя
GP1
Поставщик валерьянки для Кота
Сообщения: 2401
Зарегистрирован: Пт май 23, 2008 19:32:22
Откуда: Россия, Волгоград
Контактная информация:

Re: Отправить AVR в сон на определенное время

Сообщение GP1 »

по таймеру, правда "глубокого сна" не получишь, перефирия должна тикать.
или сделать внешний таймер на NE555 и будиться по INT0, тогда вообще усыпить по полной можно.
Последний раз редактировалось GP1 Ср окт 19, 2011 11:04:09, всего редактировалось 1 раз.
Чем дальше, тем больше становлюсь занудой...
Изображение
Реклама
Мастер Ломастер
Поставщик валерьянки для Кота
Сообщения: 1995
Зарегистрирован: Ср май 11, 2011 21:37:45
Откуда: Цветочный город
Контактная информация:

Re: Отправить AVR в сон на определенное время

Сообщение Мастер Ломастер »

BCluster писал(а):Привет всем. Собственно после измерения надо уложить МК спать на определенный промежуток времени (10-100 сек). Каким образом это можно реализовать?)
WDT может разбудить
битва с дураками проиграна, победители торжествуют. слава победителям!
Аватара пользователя
GP1
Поставщик валерьянки для Кота
Сообщения: 2401
Зарегистрирован: Пт май 23, 2008 19:32:22
Откуда: Россия, Волгоград
Контактная информация:

Re: Отправить AVR в сон на определенное время

Сообщение GP1 »

Мастер Ломастер писал(а): WDT может разбудить
у собаки период маловат, да и не всегда удобно начинать программу сначала, как-то так
Чем дальше, тем больше становлюсь занудой...
Изображение
Реклама
Эиком - электронные компоненты и радиодетали
Мастер Ломастер
Поставщик валерьянки для Кота
Сообщения: 1995
Зарегистрирован: Ср май 11, 2011 21:37:45
Откуда: Цветочный город
Контактная информация:

Re: Отправить AVR в сон на определенное время

Сообщение Мастер Ломастер »

GP1 писал(а):
Мастер Ломастер писал(а): WDT может разбудить
у собаки период маловат, да и не всегда удобно начинать программу сначала, как-то так
до 8 секунд, если не ошибаюсь. ну а там небольшой счетчик на 12 - вот вам и 100 секунд... за то время, что счетчик тикнет, много не потребит...
битва с дураками проиграна, победители торжествуют. слава победителям!
Реклама
Аватара пользователя
BCluster
Собутыльник Кота
Сообщения: 2512
Зарегистрирован: Пн апр 06, 2009 19:33:29
Откуда: Молдова, Кишинев
Контактная информация:

Re: Отправить AVR в сон на определенное время

Сообщение BCluster »

собака сбрасывать программку будет, а мне надо сделать своеобразный дилэй, с уходом в сон. Наверное придется возится с таймером
Реклама
Мастер Ломастер
Поставщик валерьянки для Кота
Сообщения: 1995
Зарегистрирован: Ср май 11, 2011 21:37:45
Откуда: Цветочный город
Контактная информация:

Re: Отправить AVR в сон на определенное время

Сообщение Мастер Ломастер »

BCluster писал(а):собака сбрасывать программку будет, а мне надо сделать своеобразный дилэй, с уходом в сон. Наверное придется возится с таймером
да и пусть себе сбрасывает - чему это может помешать?! работающий таймер отожрет гораздо больше энергии.
битва с дураками проиграна, победители торжествуют. слава победителям!
Аватара пользователя
BCluster
Собутыльник Кота
Сообщения: 2512
Зарегистрирован: Пн апр 06, 2009 19:33:29
Откуда: Молдова, Кишинев
Контактная информация:

Re: Отправить AVR в сон на определенное время

Сообщение BCluster »

дело в том, что мне нужно чтобы программа продолжалась с того места, где она ушла в сон а не с начала.
Мастер Ломастер
Поставщик валерьянки для Кота
Сообщения: 1995
Зарегистрирован: Ср май 11, 2011 21:37:45
Откуда: Цветочный город
Контактная информация:

Re: Отправить AVR в сон на определенное время

Сообщение Мастер Ломастер »

BCluster писал(а):дело в том, что мне нужно чтобы программа продолжалась с того места, где она ушла в сон а не с начала.
вам нужно организовать свою программу так, чтобы место, откуда она начинается и было местом, где она пробуждается. где засыпает - все равно.
и проблемы не будет :)))
битва с дураками проиграна, победители торжествуют. слава победителям!
Аватара пользователя
BCluster
Собутыльник Кота
Сообщения: 2512
Зарегистрирован: Пн апр 06, 2009 19:33:29
Откуда: Молдова, Кишинев
Контактная информация:

Re: Отправить AVR в сон на определенное время

Сообщение BCluster »

это проблема - в процессе выполнения появляется куча промежуточных данных которые терять нельзя
Мастер Ломастер
Поставщик валерьянки для Кота
Сообщения: 1995
Зарегистрирован: Ср май 11, 2011 21:37:45
Откуда: Цветочный город
Контактная информация:

Re: Отправить AVR в сон на определенное время

Сообщение Мастер Ломастер »

BCluster писал(а):это проблема - в процессе выполнения появляется куча промежуточных данных которые терять нельзя
да в чем проблема-то? аппаратный сброс не изменяет содержимое ОЗУ и РОН! просто подгоните свой алгоритм под условия пробуждения, и все!
битва с дураками проиграна, победители торжествуют. слава победителям!
Аватара пользователя
md5sum
Вымогатель припоя
Сообщения: 672
Зарегистрирован: Вт окт 27, 2009 22:39:19
Откуда: Москва

Re: Отправить AVR в сон на определенное время

Сообщение md5sum »

BCluster писал(а):собака сбрасывать программку будет, а мне надо сделать своеобразный дилэй, с уходом в сон. Наверное придется возится с таймером
Собака в режиме interrupt & reset после первого периода вызывает прерывание, и только после второго сбросит контроллер!
Что-б сброса не было надо до окончания второго периода установить WDIE заново.
Я делаю это в прерывании - сразу по пробуждению выставляем WDIE и делаем reti.
Все работает отлично, но если прога подвиснет, то сброс будет через двойной интервал собаки....
Читать ДШ: WDTCSR – Watchdog timer control register, описание WDIE
— Не говорите мне что делать и я не скажу куда Вам идти...
Мастер Ломастер
Поставщик валерьянки для Кота
Сообщения: 1995
Зарегистрирован: Ср май 11, 2011 21:37:45
Откуда: Цветочный город
Контактная информация:

Re: Отправить AVR в сон на определенное время

Сообщение Мастер Ломастер »

md5sum писал(а):Собака в режиме interrupt & reset после первого периода вызывает прерывание, и только после второго сбросит контроллер!
только надо отметить, что данный режим не во всех МК реализуется, а вот тупой сброс от WDT - во всех.
битва с дураками проиграна, победители торжествуют. слава победителям!
Аватара пользователя
МитяРа
Модератор
Сообщения: 11492
Зарегистрирован: Чт дек 11, 2008 14:52:26
Откуда: град Нижний

Re: Отправить AVR в сон на определенное время

Сообщение МитяРа »

Прикошачь туда по шине I2C внешний RTC, например DS1307, а выход его "будильника" посади на ножку прерывания МК..
МК будет "заводить" на RTC время, когда нужно будет просыпаться, а сам будет засыпать... :tea:
[img]http://radiokot.ru/forum/download/file.php?id=93376[/img][i][color=#000080][size=85]Между людьми возникает напряжение, если у них разный потенциал...[/size][/color][/i]
Аватара пользователя
BCluster
Собутыльник Кота
Сообщения: 2512
Зарегистрирован: Пн апр 06, 2009 19:33:29
Откуда: Молдова, Кишинев
Контактная информация:

Re: Отправить AVR в сон на определенное время

Сообщение BCluster »

Мастер Ломастер писал(а):да в чем проблема-то? аппаратный сброс не изменяет содержимое ОЗУ и РОН! просто подгоните свой алгоритм под условия пробуждения, и все!
спасибо за инфу, не знал
однако инициализация переменных пройдет заново при сбросе
Аватара пользователя
md5sum
Вымогатель припоя
Сообщения: 672
Зарегистрирован: Вт окт 27, 2009 22:39:19
Откуда: Москва

Re: Отправить AVR в сон на определенное время

Сообщение md5sum »

Ну так автор не указал какой МК :)
Также при старте можно проверить что было источником сброса (MCUSR – MCU status register) и если сброс от собаки, то jmp <куданадо>.
— Не говорите мне что делать и я не скажу куда Вам идти...
Аватара пользователя
md5sum
Вымогатель припоя
Сообщения: 672
Зарегистрирован: Вт окт 27, 2009 22:39:19
Откуда: Москва

Re: Отправить AVR в сон на определенное время

Сообщение md5sum »

BCluster писал(а):однако инициализация переменных пройдет заново при сбросе
Не всех

Код: Выделить всё

int foo __attribute__ ((section (".noinit")));
этой не произойдет :)
— Не говорите мне что делать и я не скажу куда Вам идти...
Аватара пользователя
BCluster
Собутыльник Кота
Сообщения: 2512
Зарегистрирован: Пн апр 06, 2009 19:33:29
Откуда: Молдова, Кишинев
Контактная информация:

Re: Отправить AVR в сон на определенное время

Сообщение BCluster »

atmega8 али atmega48/88
Аватара пользователя
md5sum
Вымогатель припоя
Сообщения: 672
Зарегистрирован: Вт окт 27, 2009 22:39:19
Откуда: Москва

Re: Отправить AVR в сон на определенное время

Сообщение md5sum »

В 48/88/168 собака умеет interrupt & reset.
— Не говорите мне что делать и я не скажу куда Вам идти...
Мастер Ломастер
Поставщик валерьянки для Кота
Сообщения: 1995
Зарегистрирован: Ср май 11, 2011 21:37:45
Откуда: Цветочный город
Контактная информация:

Re: Отправить AVR в сон на определенное время

Сообщение Мастер Ломастер »

offtop
md5sum писал(а):В 48/88/168 собака умеет interrupt & reset.
неправильно написали :))) надо так: 48/88/168 умеет interrupt & reset, собака. :)))
битва с дураками проиграна, победители торжествуют. слава победителям!
Закрыто

Вернуться в «Микроконтроллеры и ПЛИС»