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

 
 
> Еще раз про powerdown, нужен совет
smk
сообщение Apr 16 2008, 07:32
Сообщение #1


Гуру
******

Группа: Свой
Сообщений: 2 246
Регистрация: 17-03-05
Из: Украина, Киев
Пользователь №: 3 446



С чего возник вопрос. Есть прибор, который с периодичностью 1 с просыпается и контролирует два параметра с помощью АЦП. Приборчик должен быть автономный и долгоиграющий. Чтобы знать, что приборчик работает и батарейки не сдохли предусмотрена индикация каждые 10 с, т.е. каждый десятый раз просыпания. Теперь сам вопрос.

На http://www.gaw.ru/html.cgi/txt/doc/micros/avr/arh128/4.htm прочитал:
Выход из режима сна происходит при возникновении разрешенного прерывания. В этом случае, помимо времени старта микроконтроллер приостанавливается на 4 машинных цикла, выполняет процедуру обработки прерывания и продолжает выполнять команды следующие за SLEEP. Содержимое файла регистров и статического ОЗУ остается неизменным после выхода из режима сна. Если во время действия режима сна возникает условие сброса, то микроконтроллер пробуждается и исполняет код программы по вектору сброса.

Можно ли использовать регистр ОЗУ под счетчик к-ва "пробуждений" и как это сделать программно? Желательно уходить в power-down, а просыпаться по WDT. Использую С, WinAVR. Спасибо!


--------------------
Живи днем так, чтобы ночью ты спал спокойно.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
smk
сообщение Apr 18 2008, 06:39
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 2 246
Регистрация: 17-03-05
Из: Украина, Киев
Пользователь №: 3 446



Цитата
Вот, что написано в мануале:

The .noinit Section
This sections is a part of the .bss section. What makes the .noinit section special is that variables which are defined as such:
int foo __attribute__ ((section (".noinit")));
will not be initialized to zero during startup as would normal .bss data.

Only uninitialized variables can be placed in the .noinit section. Thus, the following code will cause avr-gcc to issue an error:
int bar __attribute__ ((section (".noinit"))) = 0xaa;

It is possible to tell the linker explicitly where to place the .noinit section by adding -Wl,--section-start=.noinit=0x802000 to the avr-gcc command line at the linking stage. For example, suppose you wish to place the .noinit section at SRAM address 0x2000:

$ avr-gcc ... -Wl,--section-start=.noinit=0x802000 ...

Note:
Because of the Harvard architecture of the AVR devices, you must manually add 0x800000 to the address you pass to the linker as the start of the section. Otherwise, the linker thinks you want to put the .noinit section into the .text section instead of .data/.bss and will complain.


А как Вы сами это пользуете? Спасибо!

Вот это место не совсем понял:
Note: Because of the Harvard architecture of the AVR devices, you must manually add 0x800000 to the address you pass to the linker as the start of the section. Otherwise, the linker thinks you want to put the .noinit section into the .text section instead of .data/.bss and will complain.

Перевод: Примечание: Из-за Гарвардской архитектуры устройств AVR, вы должны вручную добавить 0x800000 по адресу, который вы передаете редактору связей как запуск секции. Иначе, редактор связей думает, что вы хотите поместить .noinit секцию в .text секцию вместо .data/.bss и будете жаловаться.

Сообщение отредактировал smk - Apr 18 2008, 07:10


--------------------
Живи днем так, чтобы ночью ты спал спокойно.
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- smk   Еще раз про powerdown   Apr 16 2008, 07:32
- - oran-be   Цитата(smk @ Apr 16 2008, 10:32) Можно ли...   Apr 17 2008, 14:55
- - smk   Цитатапосле установки новых батарей В этой ситуаци...   Apr 17 2008, 16:35
|- - Aleksandr Baranov   Цитата(smk @ Apr 17 2008, 12:35) В этой с...   Apr 17 2008, 18:21
|- - Baser   Цитата(smk @ Apr 17 2008, 19:35) Uninitia...   Apr 17 2008, 21:49
- - smk   Если я правильно понял, то так будет работать: in...   Apr 17 2008, 19:54
|- - Aleksandr Baranov   Цитата(smk @ Apr 17 2008, 15:54) Если я п...   Apr 17 2008, 21:25
|- - xelax   Цитата(smk @ Apr 17 2008, 23:54) Если я п...   Apr 18 2008, 07:15
- - smk   ЦитатаДа правильно. Спасибо! В студии работает...   Apr 18 2008, 07:36
- - xelax   Вы какую мегу юзаете? В меге 1281, которую я испо...   Apr 18 2008, 08:41
- - smk   ЦитатаВы какую мегу юзаете? tiny13 ЦитатаА MCUCR ...   Apr 18 2008, 08:47
|- - xelax   Цитата(smk @ Apr 18 2008, 12:47) Там есть...   Apr 18 2008, 08:58
- - smk   Всем спасибо, все заработало в железе. Может кому ...   Apr 18 2008, 19:32
- - smk   Появился вот такой вопрос. При включении питания п...   May 18 2008, 15:37
|- - _Pasha   Цитата(smk @ May 18 2008, 18:37) Цель воп...   May 18 2008, 17:37
|- - Сергей Борщ   Цитата(smk @ May 18 2008, 18:37) При вклю...   May 18 2008, 18:06
- - smk   ЦитатаКак указал _Pasha, надо определить факт вклю...   May 18 2008, 19:54


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

 


RSS Текстовая версия Сейчас: 6th August 2025 - 21:02
Рейтинг@Mail.ru


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