|
Пропадают значения в еепром, при откл. питания |
|
|
2 страниц
1 2 >
|
 |
Ответов
(1 - 20)
|
Oct 4 2008, 08:12
|
Частый гость
 
Группа: Новичок
Сообщений: 139
Регистрация: 26-09-08
Пользователь №: 40 510

|
Цитата(Integral @ Oct 4 2008, 03:15)  да, есть..... с утра уберу, проверю и отпешусь.... Ещё попробуйте между строчками: sbi EECR, EEMWE ; Разрешили запись в EEPROM ; ---------------------------------------------- ; не более чем 4-х тактовая проверка санкционированности записи в EEPROM ; софтом верхнего уровня ; ---------------------------------------------- sbi EECR, EEWE ; Начали аппаратную запись в EEPROMВставлять проверку условия была ли вообще санкционирована запись в EEPROM софтом верхнего уровня Например такую: ;------------------------------------------------------ lds R16 , ( EEPROM_WRITING_ENABLE_TAG ); Считали из ОЗУ тэг разрешения записи cpi R16 , $37 brne found_run_Time_Failure ;------------------------------------------------------ Не забывайте только что проверка условия должна выполняться не более 4 тактов процессора - иначе запись не будет произведена И ещё. Запись в EEPROM (т.е. последовательная установка битов EEMWE и EEWE) должна быть только в одном месте программы. Потому что чем больше будет понатыкано в программе команд записи тем больше вероятность несанкционированной записи в EEPROM
Сообщение отредактировал Николай Иванович Приходько - Oct 4 2008, 08:16
|
|
|
|
|
Oct 4 2008, 08:54
|

nofb
  
Группа: Свой
Сообщений: 430
Регистрация: 18-05-06
Из: Москва, Зеленоград
Пользователь №: 17 218

|
Цитата(Integral @ Oct 4 2008, 02:58)  Подскажите почему иногда при внезапном пропадании питания МК в еепром записываются значения 255???
Во время пропадания питания в еепром ниче не записываю.
Как устранить эту проблему?
А делаю я так.... начинаю разединять/соединять по много раз провода питания МК, после раз ~50 в некоторых ячеяках еепрома появляются значения 255. Неужели это иза помех по питанию при искрении? Кондюки на самом МК, на стабилизаторе перед и после все по 0.1мкФ.
МК мега16. Проблема не программная, а чисто аппаратная. Действительно, у всех микроконтроллеров ATMEGA, особенно у тех, что без технологии picopower наблюдается порча значений в EEPROM при нестабильном напряжении питания. Проблема проявляет себя, когда при выключении питания некоторый промежуток времени значение напряженя питания на соответствующих выводах микроконтроллера лежит в окне 0.2 ... 2.2 В. Для устранения данной проблемы предлагаеся использовать любое решение, которое позволит "мнгновенно" отключать питание на выводах питания.
--------------------
Это не то что вы подумали ...
|
|
|
|
|
Oct 4 2008, 09:05
|
Частый гость
 
Группа: Участник
Сообщений: 149
Регистрация: 9-08-08
Пользователь №: 39 519

|
Цитата(gormih @ Oct 4 2008, 11:54)  ....значение напряженя питания на соответствующих выводах микроконтроллера.... "соответствующих" - это на какие таких выводах? или на любих портах ввода/вывода? Ато у меня на некоторых портах стоят кондюки по 0.1мкФ и должно получаться точно как Вы написали.....
|
|
|
|
|
Oct 4 2008, 09:07
|
Частый гость
 
Группа: Новичок
Сообщений: 139
Регистрация: 26-09-08
Пользователь №: 40 510

|
Цитата(gormih @ Oct 4 2008, 12:54)  Проблема не программная, а чисто аппаратная. Действительно, у всех микроконтроллеров ATMEGA, особенно у тех, что без технологии picopower наблюдается порча значений в EEPROM при нестабильном напряжении питания. Проблема проявляет себя, когда при выключении питания некоторый промежуток времени значение напряженя питания на соответствующих выводах микроконтроллера лежит в окне 0.2 ... 2.2 В. Т.е. порча имеет место быть даже если в программе вообще нет команд записи в EEPROM?
|
|
|
|
|
Oct 4 2008, 09:10
|
Частый гость
 
Группа: Новичок
Сообщений: 139
Регистрация: 26-09-08
Пользователь №: 40 510

|
Цитата(Integral @ Oct 4 2008, 13:05)  Ато у меня на некоторых портах стоят кондюки по 0.1мкФ Ну вот. И получили паразитноую запитку через выводы портов
|
|
|
|
|
Oct 4 2008, 11:28
|
Частый гость
 
Группа: Участник
Сообщений: 149
Регистрация: 9-08-08
Пользователь №: 39 519

|
Цитата(gormih @ Oct 4 2008, 12:11)  Именно. Это старый баг. Официально признаный Атмелом. В иксмеге он устранен полностью, а атмегах с пикопауэр влияние бага уменьшено... но не устранено полностью. Этот баг очень при очень маловероятный.... Уйма времени издевался над питанием МК, если в програме эсть запись в еепром то только в тех ячейках иногда появляется значение 255. Создавал большой масив который в самой програме не используется. В результате сколько не клацал ни одного сбоя ячейки. Поэтому проблема чисто програмная и очень с маленькой вероятностью апаратная. Или по крайней мере в моем случае этот баг не проявляется.
Сообщение отредактировал Integral - Oct 4 2008, 11:38
|
|
|
|
|
Oct 4 2008, 11:47
|
Местный
  
Группа: Свой
Сообщений: 408
Регистрация: 21-10-06
Из: Санкт-Петербург
Пользователь №: 21 527

|
Цитата(gormih @ Oct 4 2008, 13:11)  Именно. Это старый баг. Официально признаный Атмелом. Официально признанные описываются в ерратах. У Мег я таких записей не встречал - что независимо от наличия/отсутствия супервизора может портиться еепром при плавном снижении/нарастании питания.
|
|
|
|
|
Oct 4 2008, 17:04
|
Участник

Группа: Участник
Сообщений: 25
Регистрация: 14-12-07
Из: г. Таганрог, Ростовская обл.
Пользователь №: 33 310

|
У меня подобный глюк наблюдался при переходе с WinAVR 2006 на 2007. Вот последнй рабочий код
#include <avr/io.h> #include <avr/interrupt.h> #include <avr/eeprom.h>
... eeprom_busy_wait(); eeprom_write_byte(&write_addrr, tmp); write_counter++; ... ... eeprom_busy_wait(); tmp=eeprom_read_byte(&read_addr); ...
|
|
|
|
|
Oct 4 2008, 17:32
|

nofb
  
Группа: Свой
Сообщений: 430
Регистрация: 18-05-06
Из: Москва, Зеленоград
Пользователь №: 17 218

|
Цитата(Integral @ Oct 4 2008, 15:28)  Этот баг очень при очень маловероятный.... Уйма времени издевался над питанием МК, если в програме эсть запись в еепром то только в тех ячейках иногда появляется значение 255. Создавал большой масив который в самой програме не используется. В результате сколько не клацал ни одного сбоя ячейки.
Поэтому проблема чисто програмная и очень с маленькой вероятностью апаратная. Или по крайней мере в моем случае этот баг не проявляется.  удачи... что я еще могу сказать. Цитата(Qwertty @ Oct 4 2008, 15:47)  Официально признанные описываются в ерратах. У Мег я таких записей не встречал - что независимо от наличия/отсутствия супервизора может портиться еепром при плавном снижении/нарастании питания. Это не является багом в обычном понимании этого слова, так как в Datasheet жестко оговариваются минимальное и максимальное значение напряжения питания, и если Вы выходите за их пределы - Атмел тут не при чем как бы. А вообще официальный ответ тутP.S: По моему опыту - в EEPROM лучше вообще ничего не хранить. Были случаи, когда прибор месяцами работал без сбоев, потом происходил сбой в EEPROM и звали разработчика ПО разбираться - в Сибирь, на объект  . При этом сама возможность записи значений в EEPROM была отключена в программе - ЕЕPROM записывалась один раз, при прошивке микроконтроллера на производстве. Прблему решили тем, что данные перенесли из EEPROM во FLASH.
--------------------
Это не то что вы подумали ...
|
|
|
|
|
Oct 4 2008, 18:50
|
Частый гость
 
Группа: Участник
Сообщений: 149
Регистрация: 9-08-08
Пользователь №: 39 519

|
У меня в еепром сохраняются пользовательские настройки системи(+статистика всякая). Будет очень не хорошо эсли они будут лагать.... Но как можно без еепрома сохранять эти настройки?  внешнюю микруху памяти подклячать тупо както.... Может Вы знаете как во время работы программы перезаписать значения во флеш памяти?
Сообщение отредактировал Integral - Oct 4 2008, 18:53
|
|
|
|
|
Oct 4 2008, 19:06
|

Гуру
     
Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095

|
Цитата(Integral @ Oct 4 2008, 21:50)  Но как можно без еепрома сохранять эти настройки?  внешнюю микруху памяти подклячать тупо както.... Включите супервизор (BOD) соответствующим фузом и не морочьте себе голову. Если и это не поможет - показывайте разводку. При правильной разводке и с включенным супервизором EEPROM не слетает. Цитата(Integral @ Oct 4 2008, 21:50)  Может Вы знаете как во время работы программы перезаписать значения во флеш памяти? Это описано в разделе Boot Loader Support даташита. На сайте Атмела есть несколько Application Notes посвященных этому вопросу.
--------------------
На любой вопрос даю любой ответ"Write code that is guaranteed to work, not code that doesn’t seem to break" ( C++ FAQ)
|
|
|
|
|
Oct 4 2008, 19:48
|
Частый гость
 
Группа: Участник
Сообщений: 149
Регистрация: 9-08-08
Пользователь №: 39 519

|
В разводке нету что показывать..... кнопки+LCD. Удивительно..... но вроде помогло Сергей Борщ благодарю.... теперь я спокойно могу идти спать
Сообщение отредактировал Integral - Oct 4 2008, 20:05
|
|
|
|
|
Oct 4 2008, 20:04
|
дятел
    
Группа: Свой
Сообщений: 1 681
Регистрация: 13-05-06
Из: Питер
Пользователь №: 17 065

|
Цитата(Integral @ Oct 4 2008, 23:48)  В разводке нету что показывать..... кнопки+LCD. Вы так и не сказали, BOD у Вас включен ? Если нет, то ошибки в EEPROM практически неизбежны. Если у Вас не батарейное питание, BOD при работе с EEPROM дб включен обязательно. А если батарейное, там конечно все немного сложнее...
|
|
|
|
|
Oct 20 2008, 15:51
|
Группа: Новичок
Сообщений: 1
Регистрация: 20-10-08
Пользователь №: 41 075

|
У меня подобная "разруха" в EEPROM была при разработках на ATtiny2313. Вылечилось добавлением в схему супервизора питания. С тех пор всегда, когда использую EEPROM, ставлю на RESET КР1171сп4.7. Больше подобного я не видел.
|
|
|
|
|
Oct 20 2008, 16:07
|

кекс
     
Группа: Свой
Сообщений: 3 825
Регистрация: 17-12-05
Из: Киев
Пользователь №: 12 326

|
Цитата(gormih @ Oct 4 2008, 20:32)  А вообще официальный ответ тутну и что вам непонятно из этого: An EEPROM data corruption can be caused by two situations when the voltage is too low. First, a regular write sequence to the EEPROM requires a minimum voltage to operate correctly. Second, the CPU itself can execute instructions incorrectly, if the supply voltage is too low. Проблема связана с одним из двух - либо напряжение падает ниже критической отметки во время записи, либо CPU в момент снижения напряжения питания ниже критической отметки непреднамерено прыгает и выполняет инструкцую записи, это именно то о чем написал Integral. Проблем с самим eeprom'ом нет. Цитата(singlskv @ Oct 4 2008, 23:04)  Вы так и не сказали, BOD у Вас включен ? Он же сказал - помогло. ;>
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|