реклама на сайте
подробности

 
 
> RTC в ATmega, Power-save
zombi
сообщение Dec 27 2010, 15:46
Сообщение #1


Гуру
******

Группа: Свой
Сообщений: 2 076
Регистрация: 10-09-08
Пользователь №: 40 106



Никогда ранее не использовал режимы пониженного потребления в AVR, а сейчас возникла необходимость в счетчике реального времени.
Помогите разобраться что к чему:
Как я понял нужно подключить к ногам TOSC1 и TOSC2 кварцевый резонатор на 32.768kHz и запитать проц от батарейки.
Настроить прерывание раз в секунду и просто инкрементировать 32-х битный счетчик в озу процессора.
При этом чтобы реализовать счет времени при отключеном внешнем питании процессор должен
обязательно тактироваться от внешнего или внутреннего резонатора но ни как не от внешнего генератора?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
777777
сообщение Dec 28 2010, 05:00
Сообщение #2


Профессионал
*****

Группа: Участник
Сообщений: 1 091
Регистрация: 25-07-07
Из: Саратов
Пользователь №: 29 357



Цитата(zombi @ Dec 27 2010, 21:46) *
Как я понял нужно подключить к ногам TOSC1 и TOSC2 кварцевый резонатор на 32.768kHz и запитать проц от батарейки.
Настроить прерывание раз в секунду и просто инкрементировать 32-х битный счетчик в озу процессора.

У него есть прескалер на 128. Если его включить, то переполнения будут происходить каждую секунду: 128*256 = 32768
А почему обязательно 32-битный? Это уж как удобно, можно отдельно инкрементировать байт с секундами, при достижении 60 инкрементиоровать минуты и т.д. А в остальное время находиться в power save mode.
Цитата(zombi @ Dec 27 2010, 21:46) *
При этом чтобы реализовать счет времени при отключеном внешнем питании процессор должен
обязательно тактироваться от внешнего или внутреннего резонатора но ни как не от внешнего генератора?

Ну почему никак? Если найдете генератор, работающий от батарейки длительное время, то какие проблемы?
Go to the top of the page
 
+Quote Post
zombi
сообщение Dec 28 2010, 08:42
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 2 076
Регистрация: 10-09-08
Пользователь №: 40 106



Цитата(777777 @ Dec 28 2010, 11:00) *
Ну почему никак? Если найдете генератор, работающий от батарейки длительное время, то какие проблемы?

Боюсь из ширпотреба такой врядли найду, а с экзотикой связываться не хочется.
Обычно у генераторов потребление в пределах 5-20 ma.

32-х разрядный счетчик для уменьшения времени обработки 1сек прерывания.
А распаковкой заниматься при наличии основного питания.
Go to the top of the page
 
+Quote Post
rx3apf
сообщение Dec 28 2010, 10:02
Сообщение #4


Гуру
******

Группа: Участник
Сообщений: 3 834
Регистрация: 14-06-06
Из: Moscow, Russia
Пользователь №: 18 047



Цитата(zombi @ Dec 28 2010, 14:42) *
Боюсь из ширпотреба такой врядли найду, а с экзотикой связываться не хочется.
Обычно у генераторов потребление в пределах 5-20 ma.

Вот и противопоказание к использованию внешнего. А внутренний - RC, конечно, менее точный (если вдруг критично), зато не тратит время на "разгон" (как кварц).
Цитата
32-х разрядный счетчик для уменьшения времени обработки 1сек прерывания.
А распаковкой заниматься при наличии основного питания.

Обратите внимание на особенности работы таймера в асинхронном режиме. Из прерывания нельзя выходить раньше 1/32768 sec. В случае тактирования системного тактового генератора от кварца это некритично (он типично дольше "разгоняется"), а вот в случае RC - рекомендую ОЧЕНЬ внимательно почитать раздел, связанный с этими особенностями. И времени, кстати, на обработку "настоящего" RTC там будет вагон (200+ тактов при тактовой 8 MHz, раньше выйти нельзя). И потребление мизерное, даже если не то что раз в секунду, а хоть бы и 16 раз в секунду, работающий опорник сам по себе больше жрет (в старых, не A/PA, вариантах). И еще надо грамотно реализовать переход на резервное питание.
Go to the top of the page
 
+Quote Post
777777
сообщение Dec 28 2010, 10:29
Сообщение #5


Профессионал
*****

Группа: Участник
Сообщений: 1 091
Регистрация: 25-07-07
Из: Саратов
Пользователь №: 29 357



Цитата(rx3apf @ Dec 28 2010, 16:02) *
Из прерывания нельзя выходить раньше 1/32768 sec.

Это еще что за предрассудки? Нельзя ли цитату из даташита? А то у меня в часах обработка прерывания существенно меньше 30 мкс, а никаких приблем я не заметил.
Go to the top of the page
 
+Quote Post
zombi
сообщение Dec 28 2010, 10:43
Сообщение #6


Гуру
******

Группа: Свой
Сообщений: 2 076
Регистрация: 10-09-08
Пользователь №: 40 106



Цитата(777777 @ Dec 28 2010, 17:29) *
Это еще что за предрассудки? Нельзя ли цитату из даташита? А то у меня в часах обработка прерывания существенно меньше 30 мкс, а никаких приблем я не заметил.

Код
• If Timer/Counter2 is used to wake the device up from Power-save or Extended
Standby mode, precautions must be taken if the user wants to re-enter one of these
modes: The interrupt logic needs one TOSC1 cycle to be reset. If the time between
wake-up and re-entering sleep mode is less than one TOSC1 cycle, the interrupt will
not occur, and the device will fail to wake up. If the user is in doubt whether the time
before re-entering Power-save or Extended Standby mode is sufficient, the following
algorithm can be used to ensure that one TOSC1 cycle has elapsed:
1. Write a value to TCCR2, TCNT2, or OCR2.
2. Wait until the corresponding Update Busy Flag in ASSR returns to zero.
3. Enter Power-save or Extended Standby mode.

Курил DS. Вот тут вроде об этом речь? Но я в англицком не силен. Это оно или нет?
Go to the top of the page
 
+Quote Post
xelax
сообщение Dec 30 2010, 04:49
Сообщение #7


Местный
***

Группа: Свой
Сообщений: 370
Регистрация: 7-11-06
Пользователь №: 22 035



Цитата(zombi @ Dec 28 2010, 16:43) *
Код
• If Timer/Counter2 is used to wake the device up from Power-save or Extended
Standby mode, precautions must be taken if the user wants to re-enter one of these
modes: The interrupt logic needs one TOSC1 cycle to be reset. If the time between
wake-up and re-entering sleep mode is less than one TOSC1 cycle, the interrupt will
not occur, and the device will fail to wake up. If the user is in doubt whether the time
before re-entering Power-save or Extended Standby mode is sufficient, the following
algorithm can be used to ensure that one TOSC1 cycle has elapsed:
1. Write a value to TCCR2, TCNT2, or OCR2.
2. Wait until the corresponding Update Busy Flag in ASSR returns to zero.
3. Enter Power-save or Extended Standby mode.

Курил DS. Вот тут вроде об этом речь? Но я в англицком не силен. Это оно или нет?


Здесь же речь идёт о том, что нельзя сразу же повторно входить в режим сна, после просыпания. Необходимо дать время асинхронной логике обработки прерывания сброситься и для этого рекоммендуют записать данные в асинхронный регистр и подождать пока они там окажуться. И нет не слова о том чтобы сидеть всё это время в прерывании. Можно вообще ничего не ждать дополнительно, если сразу же засыпать не собираетесь.

Менять источник тактирования mcu в атмеге на лету нельзя, смиритесь. Единственное что можно сделать это понизить делителями тактовую, снять тактовую с неиспользуемых переферийных узлов и в рабочем режиме постоянно, находиться в IDLE, вместо суперпетли или планировщика (в случае ОС). Закончив обработку основных алгоритмов, сваливаться в power-save.
Если на вашем девайсе есть что-нибудь, что может дать пинка mcu для просыпания, то можно даже в power-down уходить.

У меня получилось добиться в power-save 6 мкА, в power-down <1 мкА.

А вообще тумана в этой теме нагнали..... Если бы я не знал очём идёт речь, то решил бы что всё жутко сложно.
Go to the top of the page
 
+Quote Post
zombi
сообщение Jan 2 2011, 11:11
Сообщение #8


Гуру
******

Группа: Свой
Сообщений: 2 076
Регистрация: 10-09-08
Пользователь №: 40 106



Цитата(xelax @ Dec 30 2010, 11:49) *
Можно вообще ничего не ждать дополнительно, если сразу же засыпать не собираетесь.

В том то и дело что именно сразу засыпать и собираемся!
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- zombi   RTC в ATmega   Dec 27 2010, 15:46
- - Diusha   Цитата(zombi @ Dec 27 2010, 21:46) При эт...   Dec 27 2010, 23:19
|- - zombi   Цитата(rx3apf @ Dec 28 2010, 17:02) 200+ ...   Dec 28 2010, 10:28
|- - rx3apf   Цитата(zombi @ Dec 28 2010, 16:43) Курил ...   Dec 28 2010, 14:18
|- - rx3apf   Цитата(xelax @ Dec 30 2010, 10:49) Здесь ...   Dec 30 2010, 06:12
|- - 777777   Цитата(xelax @ Dec 30 2010, 10:49) И нет ...   Dec 30 2010, 07:04
||- - rx3apf   Цитата(777777 @ Dec 30 2010, 13:04) Да эт...   Dec 30 2010, 07:24
||- - xelax   Цитата(777777 @ Dec 30 2010, 13:04) Да эт...   Dec 30 2010, 07:52
||- - 777777   Цитата(xelax @ Dec 30 2010, 13:52) Если р...   Jan 2 2011, 16:06
||- - xelax   Цитата(777777 @ Jan 2 2011, 22:06) Если б...   Jan 11 2011, 05:54
||- - zombi   Цитата(xelax @ Jan 11 2011, 12:54) Просто...   Jan 11 2011, 11:59
||- - rx3apf   Цитата(zombi @ Jan 11 2011, 17:59) 777777...   Jan 11 2011, 13:28
- - algidim   Цитата(Diusha @ Dec 28 2010, 05:19) Что В...   Dec 29 2010, 09:21
|- - rx3apf   Цитата(algidim @ Dec 29 2010, 15:21) Поче...   Dec 29 2010, 09:37
- - algidim   Цитата(rx3apf @ Dec 29 2010, 15:37) _Гене...   Dec 29 2010, 10:12
- - algidim   Цитата(xelax @ Dec 30 2010, 10:49) Здесь ...   Dec 30 2010, 06:26


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 1st August 2025 - 20:45
Рейтинг@Mail.ru


Страница сгенерированна за 0.01461 секунд с 7
ELECTRONIX ©2004-2016