Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: LPC1768 Battery Backed RAM и RTC регистры
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > ARM
Velund
Случилось тут неприятное. Понял, что не влезаю в 20 байт BBRAM и надо еще с десяток битовых флагов похранить между включениями устройства. Посмотрел в даташит - вроде есть вариант отключить сравнение года аларма в alarm mask register и использовать 12 бит alarm year register в своих целях, для флагов. Алармов, отложенных более чем на год не предвидится по определению.

Но насколько оно безопасно? Может у кого опыт был?
mempfis_
Цитата(Velund @ Jul 24 2012, 20:04) *
Случилось тут неприятное. Понял, что не влезаю в 20 байт BBRAM и надо еще с десяток битовых флагов похранить между включениями устройства. Посмотрел в даташит - вроде есть вариант отключить сравнение года аларма в alarm mask register и использовать 12 бит alarm year register в своих целях, для флагов. Алармов, отложенных более чем на год не предвидится по определению.

Но насколько оно безопасно? Может у кого опыт был?


В документации написано

Detailed descriptions of the
registers follow. In these descriptions, for most of the registers the Reset Value column
shows "NC", meaning that these registers are Not Changed by a Reset.

и

The alarm registers are shown in Table 521. The values in these registers are compared
with the time counters. If all the unmasked (See Section 27.6.2.4 “Alarm Mask Register
(AMR - 0x4002 4010)” on page 563) alarm registers match their corresponding time
counters then an interrupt is generated. The interrupt is cleared when a 1 is written to bit 1
of the Interrupt Location Register (ILR[1]).



Т.е. на них не действует ресет по включению питания и при совпадении просто генерируются соотв прерывания и нигде не написано что содержимое этих регистров меняется. Если нет необходимости в алармах, то теоретически у Вас появляется 8 регистров различной разрядности для хранения данных.
У меня в одном проекте бэкап регистры использовались для контроля инициализированости часов. При подключённом аккумуляторе сбоев вроде не наблюдалось. Я использовал crc8 для контроля целостности.
jcxz
Цитата(Velund @ Jul 24 2012, 23:04) *
Но насколько оно безопасно? Может у кого опыт был?

А интересно - как вы обеспечиваете безопасность модификации этих регистров если они у вас модифицируются в порядке чтение-модификация-запись и отключение питания прервёт эту последовательность?
Или это у вас просто набор незавимисмых друг от друга флагов?
Velund
QUOTE (jcxz @ Jul 25 2012, 07:45) *
А интересно - как вы обеспечиваете безопасность модификации этих регистров если они у вас модифицируются в порядке чтение-модификация-запись и отключение питания прервёт эту последовательность?
Или это у вас просто набор незавимисмых друг от друга флагов?


В памяти есть защищенная контрольной суммой структура, которая отдельной подпрограммой переносится в BBRAM (тоже с КС). Рухнет оно только если питание вырубится во время записи этих 5 слов. Подумывал сделать блокировку по пропаданию внешнего питания, но пока руки не дошли.
adnega
Настраивал прерывание "по пропаданию питания" и успевал записать во внутреннюю флеш-память событие о проподании питания. (правда, на STM32F1x). Так что "вырубание" питания можно корректно обработать...
jcxz
Да - нужен или монитор питания (с прерыванием по пропаданию) или в два раза больше non-volatile памяти для дублирования.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.