PDA

Просмотр полной версии : допустимо ли часто перезаписывать переменную в энергонезависимой памяти?



anthrwpos
04.05.2017, 09:14
В руководстве ничего не сказано о типе энергонезависимой памяти, а ведь если там стоит флеш-память, то её ресурс порядка нескольких тысяч циклов перезаписи.
Соответственно вопрос - нельзя ли случайно испортить прибор, сделав энергонезависимой какую нибудь динамическую переменную?

capzap
04.05.2017, 09:17
часто выключать/включать прибор не допустимо иначе тех.процесс может нарушиться

Scream
04.05.2017, 09:21
В руководстве ничего не сказано о типе энергонезависимой памяти, а ведь если там стоит флеш-память, то её ресурс порядка нескольких тысяч циклов перезаписи.
Соответственно вопрос - нельзя ли случайно испортить прибор, сделав энергонезависимой какую нибудь динамическую переменную?

Дело в том, что переменная записывается в энергонезависимую память при выключении прибора, поэтому в программе, во время работы, с retain переменной делайте что хотите, хоть каждый цикл меняйте.

anthrwpos
04.05.2017, 10:31
Понятно, спасибо.

По самые по...
12.05.2017, 22:18
Дело в том, что переменная записывается в энергонезависимую память при выключении прибора, поэтому в программе, во время работы, с retain переменной делайте что хотите, хоть каждый цикл меняйте.

Хи-хи! Это где об этом написано? А если переменных тьма-тьмущая, сколько из них успеет выбраться из SRAM, и записаться во флеш при провале-сбросе питания? А если емкости посохнут?
Энергонезависимая переменная, в данном устройстве, сразу пишется во флеш. Перезаписывать их в каждом цикле - на несколько дней работы до появления отказов!
Угомонитесь уже! Это не программируемый контроллер с батарейкой для хранения переменных в SRAM при сбое питания, а программируемое РЕЛЕ.

rovki
12.05.2017, 22:32
Для того и стоит супервизор питания и куча емкостей ,что бы все успело ..

По самые по...
12.05.2017, 22:42
Для того и стоит супервизор питания и куча емкостей ,что бы все успело ..

Вот всё, что может храниться от аккумулятора: OSC32, RTC, Wake-up logic, backup registers. Всё остальное пропадает, если изначально не сидит во флеши.

По самые по...
12.05.2017, 22:55
Вот всё, что может храниться от аккумулятора: OSC32, RTC, Wake-up logic, backup registers. Всё остальное пропадает, если изначально не сидит во флеши.

Добавлю еще, для протрезвления:
Время программирования флеш-пямяти - 52,5мкс (40...70мкс) при 72МГц клока
Время стирания (а стираться могет только по 2кбайта сразу) - от 20 до 40мс (миллисекунд!!!)

rovki
12.05.2017, 22:57
НЕ фантазируйте -все сетевые переменные Энергонезависимые ,а они меняются очень часто сами понимаете...и не пропадают и память не портят

По самые по...
12.05.2017, 23:08
НЕ фантазируйте -все сетевые переменные Энергонезависимые ,а они меняются очень часто сами понимаете...и не пропадают и память не портят

Гарантия - минимально 10 килоциклов! Если вы инженер, до мозга костей, то должны это учитывать!

rovki
12.05.2017, 23:18
Не нужно учитывать ,в том то и фишка - в энергонезависимую память они переписываются при ВЫКЛЮЧЕНИИ. Об этом сами разработчики писали где то.Вот такая матчасть ...
ПС. Я Когда ПР выключаю лампы еще секунд 3-5 светятся ..

По самые по...
12.05.2017, 23:25
Не нужно учитывать ,в том то и фишка - в энергонезависимую память они переписываются при ВЫКЛЮЧЕНИИ. Об этом сами разработчики писали где то.Вот такая матчасть ...
ПС. Я Когда ПР выключаю лампы еще секунд 3-5 светятся ..

Это не пишется где-то! Это ДОЛЖНО быть записано в мануале на ПР200. А этого там НЕТ! Читайте даташит на STM32F103, и обрящете.

rovki
12.05.2017, 23:53
Эта вожможность закладывается на этапе проектирования .И если ПР (любое) работает с сетевыми переменными ,энергонезависимыми ,то на автомате этот механизм закладывается(реализуется) ,это же вам не ардуино .Сетевые переменные сыплются сотнями в секунду и ни кто в здравом уме не будет их писать в энергонезависимую память .Это очевидные вещи, и если об этом не написано ,то попросите разработчиков написать об этом в руководстве ,только не посылайте их читать даташиты ....

AI!
13.05.2017, 02:39
Добавлю еще, для протрезвления:
Время программирования флеш-пямяти - 52,5мкс (40...70мкс) при 72МГц клока
Время стирания (а стираться могет только по 2кбайта сразу) - от 20 до 40мс (миллисекунд!!!)Если немного подумать, то можно стирать область заранее, например, при включении, а записывать в уже чистые ячейки, в момент выключения.

PS ну а про запись каждый раз, при изменении, скажу, что по логике работы ПР, любая ячейка перезаписывается (в ОЗУ) при каждом цикле ПР, даже если это значение не меняется.
т.е. просчёт всей схемы идёт каждый раз, вне зависимости поменялось ли что на входе, или нет.
И если в лоб писать каждый раз в энергонезависимую ячейку, то она сдохнет в течении дня.

rovki
13.05.2017, 09:00
Если немного подумать, то можно стирать область заранее, например, при включении, а записывать в уже чистые ячейки, в момент выключения.
.
Перед стиранием загрузив значения в ОЗУ.

Eugene.A
13.05.2017, 10:14
Совершенно непонятная проблема с этими ретэйн переменными. В древнейших автомагнитолах настройки хранились в копеечной статической КМОП памяти, питаемой или литиевой батарейкой, или ионистором 0,47-0, 56 фарады. Заодно и поддерживающей ход часов.

По самые по...
13.05.2017, 10:37
Совершенно непонятная проблема с этими ретэйн переменными. В древнейших автомагнитолах настройки хранились в копеечной статической КМОП памяти, питаемой или литиевой батарейкой, или ионистором 0,47-0, 56 фарады. Заодно и поддерживающей ход часов.

Совершенно верно! Но это там и тогда. А сейчас используется готовый многофункциональный чип - всё в одном! Но подключено от встроенного аккумулятора только 42 шестнадцатиразрядных бэкап-регистров. И всё! Остальное может храниться во флеши, время доступа к которой - мама негорюй!

Производитель ПР-ов честно пишет:при ошибке чтения переменных RETAIN, обновить пользовательскую программу! Но тихо умалчивается, а почему этот сбой произошел..

Вольд
13.05.2017, 10:49
Добавлю еще, для протрезвления:
Время программирования флеш-пямяти - 52,5мкс (40...70мкс) при 72МГц клока
Время стирания (а стираться могет только по 2кбайта сразу) - от 20 до 40мс (миллисекунд!!!)

Уймись наконец, "умник". Достал ты всех по самые по...;) 40 мс - это очень малое время. Конденсаторы в блоке питания ПР200 после пропадания питания разряжаются много дольше. Там речь может идти о секундах. За это время все гарантированно запишется во Flash.

По самые по...
13.05.2017, 11:24
Уймись наконец, "умник". Достал ты всех по самые по...;) 40 мс - это очень малое время. Конденсаторы в блоке питания ПР200 после пропадания питания разряжаются много дольше. Там речь может идти о секундах. За это время все гарантированно запишется во Flash.

Попробую отдельно для вас, сэр.. . Для того чтобы процессор пОнял, что сеть питания исчезла, должен приходить откуда-то сигнал (с гальванической развязкой, но такой схемы в ПР-х нет!!!), о том, что произошло АВАРИЙНОЕ понижение входной питающей сети. По приходу этого сигнала, в процессоре должно произойти прерывание выполняющейся текущей программы пользователя, и начаться выполнение аварийной подпрограммы сохранения ваших ретейн-переменных во флеш. При этом процессор работает на полную мощь и жрет 66мА тока при 72Мгц клока. Это только процессор столько жрёт! Теперь дальше.. Вскоре вырубается импульсный блок питания и происходит БЫСТРОЕ опорожнение электролитов питания процессора, с 3,3В до 2,8...2,2В. При достижении этого уровня, включается супервизор питания и блок контроля питания, который переключает аккумулятор на запитку часов реального времени и сохронение служебной информации в бекап-регистрах. Флеш в этот период уже не работает, процессор входит в режим стендбай и выключается. Всё.

Пользоваться энергонезависимыми переменными надо аккуратно. Это должны быть уставки пользователя, редко меняемые во времени.

Вольд
13.05.2017, 11:52
Для того чтобы процессор пОнял, что сеть питания исчезла, должен приходить откуда-то сигнал (с гальванической развязкой, но такой схемы в ПР-х нет!!!)

У тебя есть схема ПР200, покажи ее нам, ;) тогда предметно и поговорим ?

capzap
13.05.2017, 15:13
Попробую отдельно для вас, сэр.. . Для того чтобы процессор пОнял, что сеть питания исчезла, должен приходить откуда-то сигнал (с гальванической развязкой, но такой схемы в ПР-х нет!!!), о том, что произошло АВАРИЙНОЕ понижение входной питающей сети. По приходу этого сигнала, в процессоре должно произойти прерывание выполняющейся текущей программы пользователя, и начаться выполнение аварийной подпрограммы сохранения ваших ретейн-переменных во флеш. При этом процессор работает на полную мощь и жрет 66мА тока при 72Мгц клока. Это только процессор столько жрёт! Теперь дальше.. Вскоре вырубается импульсный блок питания и происходит БЫСТРОЕ опорожнение электролитов питания процессора, с 3,3В до 2,8...2,2В. При достижении этого уровня, включается супервизор питания и блок контроля питания, который переключает аккумулятор на запитку часов реального времени и сохронение служебной информации в бекап-регистрах. Флеш в этот период уже не работает, процессор входит в режим стендбай и выключается. Всё.

Пользоваться энергонезависимыми переменными надо аккуратно. Это должны быть уставки пользователя, редко меняемые во времени.

а в чем собственно логика Ваших выводов, питание, хоть аварийно хоть выключаемое пользователем, судя по Вашему ходу мысли в любом случае не сохранит ретайны, но они же есть

Scream
13.05.2017, 18:24
Попробую отдельно для вас, сэр.. . Для того чтобы процессор пОнял, что сеть питания исчезла, должен приходить откуда-то сигнал (с гальванической развязкой, но такой схемы в ПР-х нет!!!), о том, что произошло АВАРИЙНОЕ понижение входной питающей сети. По приходу этого сигнала, в процессоре должно произойти прерывание выполняющейся текущей программы пользователя, и начаться выполнение аварийной подпрограммы сохранения ваших ретейн-переменных во флеш. При этом процессор работает на полную мощь и жрет 66мА тока при 72Мгц клока. Это только процессор столько жрёт! Теперь дальше.. Вскоре вырубается импульсный блок питания и происходит БЫСТРОЕ опорожнение электролитов питания процессора, с 3,3В до 2,8...2,2В. При достижении этого уровня, включается супервизор питания и блок контроля питания, который переключает аккумулятор на запитку часов реального времени и сохронение служебной информации в бекап-регистрах. Флеш в этот период уже не работает, процессор входит в режим стендбай и выключается. Всё.

Пользоваться энергонезависимыми переменными надо аккуратно. Это должны быть уставки пользователя, редко меняемые во времени.

интересно, для чего были таки подробные иследования... мы от вас увидим новое поколение ПР скоро??

Илья Зимарёв
15.05.2017, 13:56
Господа, если позволите поясню по поводу Ретейн.

Сначала скажу почему в руководстве нет никакой информации по количеству записей в ретейн, суть в том что эта информация пользователю просто не требуется, у пользователя не должна болеть голова по этому поводу.
В мануале на процессор совершенно четко указано количество перезаписей во флеш память, и насчитывает более 10тыс. циклов. А теперь по принципу работы самого ПР. Все энергонезависимые переменные во время работы прибора хранятся исключительно в RAM памяти и все манипуляции с ними происходят в RAM, при этом во флеш память ничего не пишется и программа с ней никак не взаимодействует. В случае выключения прибора, специальная схема детектирует это состояние и посылает сигнал процессору на сохранение ретейн переменных, одновременно с этим переключается питание на резервные емкости поддерживающие необходимое напряжение питания в течении требуемого времени. Как только процессор получает сигнал "пропадания питания" начинается процесс переписывания переменных из RAM памяти во FLASH. Что касается резервных емкостей то они рассчитаны с большим запасом в котором учитывается потеря емкости при отрицательных температурах и процессы старения. Это позволяет гарантировать надежное сохранение ретейн переменных в любых условиях на всем сроке эксплуатации прибора. По этим причинам ретейн память ограничена, т.к. время разряда резервных емкостей рассчитано исходя из время записи 1кБ информации во ФЛЭШ. Так же во избежании повреждения памяти запись ведется все время в разные ячейки, таких ячеек 8 шт. Таким образом надежность увеличивается до более 80К циклов.
Даже если питание прибора будет сбрасываться каждый час в течении 8 лет, то ретейн сохранит свою функциональность. Этого вполне достаточно для нормальной эксплуатации прибора.

Scream
15.05.2017, 14:12
Господа, если позволите поясню по поводу Ретейн.

Сначала скажу почему в руководстве нет никакой информации по количеству записей в ретейн, суть в том что эта информация пользователю просто не требуется, у пользователя не должна болеть голова по этому поводу.
В мануале на процессор совершенно четко указано количество перезаписей во флеш память, и насчитывает более 10тыс. циклов. А теперь по принципу работы самого ПР. Все энергонезависимые переменные во время работы прибора хранятся исключительно в RAM памяти и все манипуляции с ними происходят в RAM, при этом во флеш память ничего не пишется и программа с ней никак не взаимодействует. В случае выключения прибора, специальная схема детектирует это состояние и посылает сигнал процессору на сохранение ретейн переменных, одновременно с этим переключается питание на резервные емкости поддерживающие необходимое напряжение питания в течении требуемого времени. Как только процессор получает сигнал "пропадания питания" начинается процесс переписывания переменных из RAM памяти во FLASH. Что касается резервных емкостей то они рассчитаны с большим запасом в котором учитывается потеря емкости при отрицательных температурах и процессы старения. Это позволяет гарантировать надежное сохранение ретейн переменных в любых условиях на всем сроке эксплуатации прибора. По этим причинам ретейн память ограничена, т.к. время разряда резервных емкостей рассчитано исходя из время записи 1кБ информации во ФЛЭШ. Так же во избежании повреждения памяти запись ведется все время в разные ячейки, таких ячеек 8 шт. Таким образом надежность увеличивается до более 80К циклов.
Даже если питание прибора будет сбрасываться каждый час в течении 8 лет, то ретейн сохранит свою функциональность. Этого вполне достаточно для нормальной эксплуатации прибора.

Спасибо за пояснение. ч.т.д.