Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: как передать данные в lpm3
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > MSP430
1921
Товарищи, скажите навскидку, есть ли регистры в ОЗУ, через которые можно передать данные при входе и выходе в LPM3.
Не хотелось бы использовать flash память. Вот поработал я, получил какое-то число. Где его можно сохранить, чтобы при дальнейшем входе в lpm3 и выходе из него по WDT оно не обнулилось. Поясню свою бестолковость: в PIC есть пара регистров, не обесточиваемых даже в deepsleep, так там можно держать всё, что угодно. В lpm3 память вроде тоже не обесточивается, но при выходе по WDT выполнение программы начинается сначала, соответственно, переменные снова объявляются и обнуляются. Это можно как-то обойти? Я так понимаю, это должны быть регистры, не инициализируемые по POR.
P.S. Попробовал директиву __no_init - работает прикольно. Отключение питания на несколько минут вообще не волнует. Вопрос: и сколько он будет держать значение при обесточивании? Сейчас попробую __persistent. Что-то он её не любит, надо разобраться...
rezident
Или я вопроса не понял или вы невнимательно прочитали какой-то из User's manual (для МК или для компилятора). __no_init это то что вам нужно. В LPM3 SRAM вовсе не "обесточивается", с чего вы это взяли? Во всех "обычных" режимах энергосбережения (LPM0-LPM4) содержимое SRAM сохраняется неизменным потому, что режимы LPM влияют лишь на работу генераторов и следовательно на тактирование ядра и периферийных модулей. SRAM память статическая и поэтому в отдельном тактировании не нуждается. Ей достаточно лишь чтобы питание было в рабочем диапазоне. Исключением является только режим LPM5, который поддерживается в некоторых из кристаллов серии MSP430x5xx. В LPM5 действительно SRAM может обесточиваться "за компанию" с ядром и периферией.
1921
Да я понимаю. Вопрос возник потому, что некоторые переменные должны инициализироваться при первом пуске, после вкл питания. При сбросе по WDT при пробуждении их инициализировать не надо. Поэтому я использовал noinit и анализ причин пробуждения (сброса) в SYSRSTIV. Всё вроде работает. Может, подскажете, сколько держит значение обесточенное ОЗУ? Я выключал питание, потом перезапускал и читал переменную, которая noinit. Она не изменялась с последнего пуска.
rezident
Цитата(1921 @ Jan 19 2011, 19:31) *
Может, подскажете, сколько держит значение обесточенное ОЗУ?
Это недокументированный и вообще слабопрогнозируемый параметр. Если нужно сохранять значения в ОЗУ после "горячего" рестарта, то просто не используйте LPM5.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.