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

 
 
 
Reply to this topicStart new topic
> как передать данные в lpm3, как передать данные в lpm3
1921
сообщение Jan 18 2011, 11:35
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 56
Регистрация: 29-09-10
Пользователь №: 59 820



Товарищи, скажите навскидку, есть ли регистры в ОЗУ, через которые можно передать данные при входе и выходе в LPM3.
Не хотелось бы использовать flash память. Вот поработал я, получил какое-то число. Где его можно сохранить, чтобы при дальнейшем входе в lpm3 и выходе из него по WDT оно не обнулилось. Поясню свою бестолковость: в PIC есть пара регистров, не обесточиваемых даже в deepsleep, так там можно держать всё, что угодно. В lpm3 память вроде тоже не обесточивается, но при выходе по WDT выполнение программы начинается сначала, соответственно, переменные снова объявляются и обнуляются. Это можно как-то обойти? Я так понимаю, это должны быть регистры, не инициализируемые по POR.
P.S. Попробовал директиву __no_init - работает прикольно. Отключение питания на несколько минут вообще не волнует. Вопрос: и сколько он будет держать значение при обесточивании? Сейчас попробую __persistent. Что-то он её не любит, надо разобраться...

Сообщение отредактировал 1921 - Jan 18 2011, 12:32
Go to the top of the page
 
+Quote Post
rezident
сообщение Jan 18 2011, 17:41
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 10 920
Регистрация: 5-04-05
Пользователь №: 3 882



Или я вопроса не понял или вы невнимательно прочитали какой-то из User's manual (для МК или для компилятора). __no_init это то что вам нужно. В LPM3 SRAM вовсе не "обесточивается", с чего вы это взяли? Во всех "обычных" режимах энергосбережения (LPM0-LPM4) содержимое SRAM сохраняется неизменным потому, что режимы LPM влияют лишь на работу генераторов и следовательно на тактирование ядра и периферийных модулей. SRAM память статическая и поэтому в отдельном тактировании не нуждается. Ей достаточно лишь чтобы питание было в рабочем диапазоне. Исключением является только режим LPM5, который поддерживается в некоторых из кристаллов серии MSP430x5xx. В LPM5 действительно SRAM может обесточиваться "за компанию" с ядром и периферией.
Go to the top of the page
 
+Quote Post
1921
сообщение Jan 19 2011, 14:31
Сообщение #3


Участник
*

Группа: Участник
Сообщений: 56
Регистрация: 29-09-10
Пользователь №: 59 820



Да я понимаю. Вопрос возник потому, что некоторые переменные должны инициализироваться при первом пуске, после вкл питания. При сбросе по WDT при пробуждении их инициализировать не надо. Поэтому я использовал noinit и анализ причин пробуждения (сброса) в SYSRSTIV. Всё вроде работает. Может, подскажете, сколько держит значение обесточенное ОЗУ? Я выключал питание, потом перезапускал и читал переменную, которая noinit. Она не изменялась с последнего пуска.
Go to the top of the page
 
+Quote Post
rezident
сообщение Jan 19 2011, 15:20
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 10 920
Регистрация: 5-04-05
Пользователь №: 3 882



Цитата(1921 @ Jan 19 2011, 19:31) *
Может, подскажете, сколько держит значение обесточенное ОЗУ?
Это недокументированный и вообще слабопрогнозируемый параметр. Если нужно сохранять значения в ОЗУ после "горячего" рестарта, то просто не используйте LPM5.
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 18th June 2025 - 00:15
Рейтинг@Mail.ru


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