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

 
 
3 страниц V  < 1 2 3 >  
Reply to this topicStart new topic
> слетает память у Atmega16, слетает память у Atmega16
Santy
сообщение Sep 28 2013, 10:52
Сообщение #16


Участник
*

Группа: Участник
Сообщений: 49
Регистрация: 30-10-07
Пользователь №: 31 879



Цитата(ArtemKAD @ Sep 28 2013, 13:25) *
Это как? Процедура в программе есть или ее нет? Как определяется "Один раз при выпуске."


Может быть подпрограмма для записи в EEPROM, которую можно вызвать только 1 раз.
Go to the top of the page
 
+Quote Post
ArtemKAD
сообщение Sep 28 2013, 12:06
Сообщение #17


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

Группа: Свой
Сообщений: 1 508
Регистрация: 26-06-06
Из: Киев
Пользователь №: 18 364



Для того, что-бы "можно вызвать только 1 раз" нужен энергонезависимый признак того, что этот 1 раз уже был. Вопрос и состоит в том, что это за признак?
Go to the top of the page
 
+Quote Post
Santy
сообщение Sep 28 2013, 13:15
Сообщение #18


Участник
*

Группа: Участник
Сообщений: 49
Регистрация: 30-10-07
Пользователь №: 31 879



Цитата(ArtemKAD @ Sep 28 2013, 15:06) *
Для того, что-бы "можно вызвать только 1 раз" нужен энергонезависимый признак того, что этот 1 раз уже был. Вопрос и состоит в том, что это за признак?


Например, число читаемое из EEPROM.
Go to the top of the page
 
+Quote Post
kovigor
сообщение Sep 28 2013, 13:16
Сообщение #19


Гуру
******

Группа: Свой
Сообщений: 5 273
Регистрация: 30-03-10
Пользователь №: 56 295



Цитата(Santy @ Sep 28 2013, 13:52) *
Может быть подпрограмма для записи в EEPROM, которую можно вызвать только 1 раз.

Раз такая подпрограмма есть, значит ее можно вызвать. Сценарий: забыли включить (или намеренно не включили) супервизор. Тогда при снижении питания программа вполне может сбиться, и не исключено, что управление получит эта самая разрушительная подпрограмма. Тот же эффект можно получить, если в программе переполняется стек. Раз в год, как говорится, и палка стреляет sm.gif
Go to the top of the page
 
+Quote Post
messenger
сообщение Sep 28 2013, 13:16
Сообщение #20


Местный
***

Группа: Участник
Сообщений: 361
Регистрация: 23-03-07
Пользователь №: 26 457



В программе есть код записи данных в память:
команда на запись с ПК;
устройство получает данные с ПК;
проверяем "кодовое слово"
если оно совпало, перезаписывем полученные данные в память.
Думаете есть вероятность того, что при подаче вполне определенных команд появилоась помеха начинающаяся командой и заканчивающаяся кодовым словом? Наверно есть, но маленькая.


Go to the top of the page
 
+Quote Post
kovigor
сообщение Sep 28 2013, 13:32
Сообщение #21


Гуру
******

Группа: Свой
Сообщений: 5 273
Регистрация: 30-03-10
Пользователь №: 56 295



Цитата(messenger @ Sep 28 2013, 16:16) *
Думаете есть вероятность того, что при подаче вполне определенных команд появилоась помеха начинающаяся командой и заканчивающаяся кодовым словом?

Есть, безусловно. Если в программу заложена подобная "бомба замедленного действия", то она, как правило, взорвется, рано или поздно. CRC всей командной посылки и блока данных, включая кодовое слово, как я понял, не проверяется ?
Go to the top of the page
 
+Quote Post
krux
сообщение Sep 28 2013, 13:41
Сообщение #22


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

Группа: Свой
Сообщений: 1 700
Регистрация: 2-07-12
Из: дефолт-сити
Пользователь №: 72 596



какой-нибудь M103С fuse?


--------------------
провоцируем неудовлетворенных провокаторов с удовольствием.
Go to the top of the page
 
+Quote Post
ArtemKAD
сообщение Sep 28 2013, 15:53
Сообщение #23


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

Группа: Свой
Сообщений: 1 508
Регистрация: 26-06-06
Из: Киев
Пользователь №: 18 364



Цитата
если оно совпало, перезаписывем полученные данные в память.
Думаете есть вероятность того, что при подаче вполне определенных команд появилоась помеха начинающаяся командой и заканчивающаяся кодовым словом? Наверно есть, но маленькая.

Достаточно отключенного BOR-а и вероятность начала программы после "если оно совпало" будет далека от нулевой.
Go to the top of the page
 
+Quote Post
messenger
сообщение Sep 28 2013, 20:42
Сообщение #24


Местный
***

Группа: Участник
Сообщений: 361
Регистрация: 23-03-07
Пользователь №: 26 457



Какая бомба? Обычная программа. Без фанатизма.

to ArtemKAD - подскажите, что такое BOR-а? если сброс по снижению питания, то он установлен на 4V.

Сообщение отредактировал messenger - Sep 28 2013, 20:45
Go to the top of the page
 
+Quote Post
kovigor
сообщение Sep 28 2013, 21:00
Сообщение #25


Гуру
******

Группа: Свой
Сообщений: 5 273
Регистрация: 30-03-10
Пользователь №: 56 295



Цитата(messenger @ Sep 28 2013, 23:42) *
Какая бомба? Обычная программа. Без фанатизма.

Вы про защиту команд и данных с помощью CRC так и не ответили. Есть она ? Если нет, то банальный "мусор", принимаемый при переключении разъемов или плохом контакте в них может дать самые неожиданные и загадочные эффекты ...
Go to the top of the page
 
+Quote Post
ArtemKAD
сообщение Sep 28 2013, 21:38
Сообщение #26


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

Группа: Свой
Сообщений: 1 508
Регистрация: 26-06-06
Из: Киев
Пользователь №: 18 364



Brown-Out Reset
Go to the top of the page
 
+Quote Post
messenger
сообщение Sep 29 2013, 09:51
Сообщение #27


Местный
***

Группа: Участник
Сообщений: 361
Регистрация: 23-03-07
Пользователь №: 26 457



Цитата(kovigor @ Sep 29 2013, 01:00) *
Вы про защиту команд и данных с помощью CRC так и не ответили. Есть она ? Если нет, то банальный "мусор", принимаемый при переключении разъемов или плохом контакте в них может дать самые неожиданные и загадочные эффекты ...

такое кодирование не делаю
Go to the top of the page
 
+Quote Post
kovigor
сообщение Sep 29 2013, 12:04
Сообщение #28


Гуру
******

Группа: Свой
Сообщений: 5 273
Регистрация: 30-03-10
Пользователь №: 56 295



Цитата(messenger @ Sep 29 2013, 12:51) *
такое кодирование не делаю

Тогда все ясно ...
Go to the top of the page
 
+Quote Post
ARV
сообщение Sep 30 2013, 04:38
Сообщение #29


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

Группа: Свой
Сообщений: 1 143
Регистрация: 30-09-08
Из: Новочеркасск
Пользователь №: 40 581



Цитата(kovigor @ Sep 29 2013, 16:04) *
Тогда все ясно ...

да ничего на самом деле не ясно. в практике с AT89S53 у меня был пренеприятный случай, когда в процессе эксплуатации с периодичностью примерно раз в 4-6 месяцев в EEPROM слетала 1 ячейка - строго определенная, и слетала всегда в строго определенное значение. Процедур записи в эту ячейку в коде не было вообще - EEPROM писалась 1 раз программатором, в коде только чтение.

никакие аппаратные меры не помогали. после долгих мытарств пришлось уйти на AVR и для страховки писать все настроечные константы во FLASH - помогло.

в случае топикстартера могу порекомендовать 2 варианта борьбы с бедой:


1. хранить в EEPROM 3 копии калибровочных констант, при старте программы считывать по мажоритарному принципу.

2. поступить так, как сделал я: калибровочные константы писать только программатором во FLASH, исключив из кода принципиальную возможность записи.



--------------------
Я бы взял частями... но мне надо сразу.
Go to the top of the page
 
+Quote Post
Harbinger
сообщение Sep 30 2013, 05:39
Сообщение #30


старший лаборант
******

Группа: Свой
Сообщений: 2 702
Регистрация: 30-09-05
Из: ЮЗЖД
Пользователь №: 9 097



Писать калибровки во Flash без возможности изменения не всегда получится - они могут настраиваться в процессе регулировки изделия.
Поступал следующим образом. В EEPROM хранится несколько копий массива калибровочных параметров, защищённых CRC. При старте проверяются все копии. Если CRC в порядке, калибровки считываются в ОЗУ и переходим в штатный режим работы. В случае повреждения какой-либо копии массива она восстанавливается из неповреждённой. Если же совсем "всё пропало" - EEPROM переписывается из FLASH "среднепотолочными" значениями и выставляется признак, что устройство не настроено. Автоматически получается инициализация EEPROM при первом запуске.


--------------------
Китайская комплектация - европейское качество! ;)
Go to the top of the page
 
+Quote Post

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

 


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


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