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

 
 
 
Reply to this topicStart new topic
> LPC1768 Battery Backed RAM и RTC регистры, Можно ли при рабочем RTC похранить что то сверх 20 байт?
Velund
сообщение Jul 24 2012, 17:04
Сообщение #1


Знающий
****

Группа: Свой
Сообщений: 693
Регистрация: 19-11-04
Пользователь №: 1 177



Случилось тут неприятное. Понял, что не влезаю в 20 байт BBRAM и надо еще с десяток битовых флагов похранить между включениями устройства. Посмотрел в даташит - вроде есть вариант отключить сравнение года аларма в alarm mask register и использовать 12 бит alarm year register в своих целях, для флагов. Алармов, отложенных более чем на год не предвидится по определению.

Но насколько оно безопасно? Может у кого опыт был?
Go to the top of the page
 
+Quote Post
mempfis_
сообщение Jul 24 2012, 18:09
Сообщение #2


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

Группа: Свой
Сообщений: 1 001
Регистрация: 27-06-06
Пользователь №: 18 409



Цитата(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 для контроля целостности.
Go to the top of the page
 
+Quote Post
jcxz
сообщение Jul 25 2012, 03:45
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713



Цитата(Velund @ Jul 24 2012, 23:04) *
Но насколько оно безопасно? Может у кого опыт был?

А интересно - как вы обеспечиваете безопасность модификации этих регистров если они у вас модифицируются в порядке чтение-модификация-запись и отключение питания прервёт эту последовательность?
Или это у вас просто набор незавимисмых друг от друга флагов?
Go to the top of the page
 
+Quote Post
Velund
сообщение Jul 25 2012, 04:05
Сообщение #4


Знающий
****

Группа: Свой
Сообщений: 693
Регистрация: 19-11-04
Пользователь №: 1 177



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


В памяти есть защищенная контрольной суммой структура, которая отдельной подпрограммой переносится в BBRAM (тоже с КС). Рухнет оно только если питание вырубится во время записи этих 5 слов. Подумывал сделать блокировку по пропаданию внешнего питания, но пока руки не дошли.
Go to the top of the page
 
+Quote Post
adnega
сообщение Jul 25 2012, 04:40
Сообщение #5


Гуру
******

Группа: Свой
Сообщений: 2 724
Регистрация: 14-05-07
Из: Ярославль, Россия
Пользователь №: 27 702



Настраивал прерывание "по пропаданию питания" и успевал записать во внутреннюю флеш-память событие о проподании питания. (правда, на STM32F1x). Так что "вырубание" питания можно корректно обработать...
Go to the top of the page
 
+Quote Post
jcxz
сообщение Jul 25 2012, 05:15
Сообщение #6


Гуру
******

Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713



Да - нужен или монитор питания (с прерыванием по пропаданию) или в два раза больше non-volatile памяти для дублирования.
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 24th July 2025 - 23:54
Рейтинг@Mail.ru


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