Velund 0 24 июля, 2012 Опубликовано 24 июля, 2012 · Жалоба Случилось тут неприятное. Понял, что не влезаю в 20 байт BBRAM и надо еще с десяток битовых флагов похранить между включениями устройства. Посмотрел в даташит - вроде есть вариант отключить сравнение года аларма в alarm mask register и использовать 12 бит alarm year register в своих целях, для флагов. Алармов, отложенных более чем на год не предвидится по определению. Но насколько оно безопасно? Может у кого опыт был? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
mempfis_ 0 24 июля, 2012 Опубликовано 24 июля, 2012 · Жалоба Случилось тут неприятное. Понял, что не влезаю в 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 242 25 июля, 2012 Опубликовано 25 июля, 2012 · Жалоба Но насколько оно безопасно? Может у кого опыт был? А интересно - как вы обеспечиваете безопасность модификации этих регистров если они у вас модифицируются в порядке чтение-модификация-запись и отключение питания прервёт эту последовательность? Или это у вас просто набор незавимисмых друг от друга флагов? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Velund 0 25 июля, 2012 Опубликовано 25 июля, 2012 · Жалоба А интересно - как вы обеспечиваете безопасность модификации этих регистров если они у вас модифицируются в порядке чтение-модификация-запись и отключение питания прервёт эту последовательность? Или это у вас просто набор незавимисмых друг от друга флагов? В памяти есть защищенная контрольной суммой структура, которая отдельной подпрограммой переносится в BBRAM (тоже с КС). Рухнет оно только если питание вырубится во время записи этих 5 слов. Подумывал сделать блокировку по пропаданию внешнего питания, но пока руки не дошли. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
adnega 11 25 июля, 2012 Опубликовано 25 июля, 2012 · Жалоба Настраивал прерывание "по пропаданию питания" и успевал записать во внутреннюю флеш-память событие о проподании питания. (правда, на STM32F1x). Так что "вырубание" питания можно корректно обработать... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 242 25 июля, 2012 Опубликовано 25 июля, 2012 · Жалоба Да - нужен или монитор питания (с прерыванием по пропаданию) или в два раза больше non-volatile памяти для дублирования. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться