Форум Микро-Чип
Поиск и заказ электронных компонентов
 

Вернуться   Форум Микро-Чип > Продукция MICROCHIP

Продукция MICROCHIP Технические вопросы по всей продукции Microchip

Ответ
 
Опции темы Опции просмотра
Старый 29.01.2018, 10:53   #1
Руслан
Senior Member
 
Регистрация: 26.05.2015
Возраст: 42
Сообщений: 253
Вес репутации: 62/0
Руслан will become famous soon enough
По умолчанию слетает EEPROM

Всем привет!
Контроллер PIC18F4620
Столкнулся с проблемой - в ячейках EEPROM теряются значения, записанные ранее.
Причины мне не понятны. Есть подозрение, что из-за нестабильного питания. Схема у меня такая - трансформатор 220 В -> 12 В, затем диодный мост, затем стабилизатор на 5 В. Все работает нормально, но у двух заказчиков теряются значения в EEPROM и у тех, где проблемы с сетью 220 В, т.е. промышленная зона - работают краны и т.д.
Но это только предположение, т.к. у меня дома слетела тоже.

Кто-то сталкивался с такой проблемой?
Какие возможные причины потери значений в ячейках EEPROM?

Заранее благодарю!
Руслан вне форума   Ответить с цитированием
Старый 29.01.2018, 11:06   #2
besogon
Senior Member
 
Регистрация: 12.07.2012
Возраст: 32
Сообщений: 2,171
Вес репутации: 4017/88
besogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond repute
По умолчанию Re: слетает EEPROM

Но это только предположение, т.к. у меня дома слетела тоже. - у Вас в коде есть методы для записи в EEPROM? мб. по каким-то причинам исполнение трет EEPROM из-за каких-то алгоритмических проблем.
besogon вне форума   Ответить с цитированием
Старый 29.01.2018, 11:45   #3
Руслан
Senior Member
 
Регистрация: 26.05.2015
Возраст: 42
Сообщений: 253
Вес репутации: 62/0
Руслан will become famous soon enough
По умолчанию Re: слетает EEPROM

Цитата:
Сообщение от besogon Посмотреть сообщение
Но это только предположение, т.к. у меня дома слетела тоже. - у Вас в коде есть методы для записи в EEPROM? мб. по каким-то причинам исполнение трет EEPROM из-за каких-то алгоритмических проблем.
да, программа пишет и читает, алгоритм не затерает, там все прозрачно, могу описать подробнее - в ячейках EEPROM хранятся значения, они устанавливаются через меню по кнопкам - затем только вычитываются при работе, т.е все просто.
И если бы перезатиралось в алгоритме - то значениями, а там после слета бред в ячейках.

Последний раз редактировалось Руслан; 29.01.2018 в 11:58.
Руслан вне форума   Ответить с цитированием
Старый 29.01.2018, 12:00   #4
besogon
Senior Member
 
Регистрация: 12.07.2012
Возраст: 32
Сообщений: 2,171
Вес репутации: 4017/88
besogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond repute
По умолчанию Re: слетает EEPROM

Руслан
стирается это откатывается в 0xff?

а там после слета бред в ячейках. - во всех или только в которые пишет с программы? можете для отладки забить пустющие 0xDEADBEEF, чтобы можно убедиться в том, как трется?
besogon вне форума   Ответить с цитированием
Старый 29.01.2018, 13:27   #5
pasha_zv
Senior Member
 
Аватар для pasha_zv
 
Регистрация: 17.04.2010
Адрес: Ставрополь
Возраст: 48
Сообщений: 413
Вес репутации: 689/45
pasha_zv is a splendid one to beholdpasha_zv is a splendid one to beholdpasha_zv is a splendid one to beholdpasha_zv is a splendid one to beholdpasha_zv is a splendid one to beholdpasha_zv is a splendid one to behold
По умолчанию Re: слетает EEPROM

была у меня такая хрень.
помог - супервизор питания MCP10x-475
__________________
я - кузнец. я не могу ни куя.
pasha_zv вне форума   Ответить с цитированием
Старый 29.01.2018, 15:17   #6
Руслан
Senior Member
 
Регистрация: 26.05.2015
Возраст: 42
Сообщений: 253
Вес репутации: 62/0
Руслан will become famous soon enough
По умолчанию Re: слетает EEPROM

Цитата:
Сообщение от besogon Посмотреть сообщение
Руслан
стирается это откатывается в 0xff?
например, в ячейку было записано десятичное значение 6, после слета там значение 85
Руслан вне форума   Ответить с цитированием
Старый 29.01.2018, 15:19   #7
Руслан
Senior Member
 
Регистрация: 26.05.2015
Возраст: 42
Сообщений: 253
Вес репутации: 62/0
Руслан will become famous soon enough
По умолчанию Re: слетает EEPROM

Цитата:
Сообщение от pasha_zv Посмотреть сообщение
была у меня такая хрень.
помог - супервизор питания MCP10x-475
супервизора у меня нет в схеме, переразводить плату или "на коленке" запаять...
Руслан вне форума   Ответить с цитированием
Старый 29.01.2018, 16:34   #8
Pasha_Bi
Senior Member
 
Регистрация: 24.07.2009
Адрес: г. Иваново
Возраст: 45
Сообщений: 289
Вес репутации: 640/46
Pasha_Bi is a name known to allPasha_Bi is a name known to allPasha_Bi is a name known to allPasha_Bi is a name known to allPasha_Bi is a name known to allPasha_Bi is a name known to all
По умолчанию Re: слетает EEPROM

Если хотите проверить идею с супервизором, то интегрированный в микроконтроллер BOR ни чем не хуже. В любом случае использовать в проекте BOR неплохо.
Pasha_Bi вне форума   Ответить с цитированием
Старый 29.01.2018, 21:00   #9
masterok999
Senior Member
 
Регистрация: 28.07.2015
Адрес: NA
Возраст: 55
Сообщений: 247
Вес репутации: 1001/28
masterok999 has much to be proud ofmasterok999 has much to be proud ofmasterok999 has much to be proud ofmasterok999 has much to be proud ofmasterok999 has much to be proud ofmasterok999 has much to be proud ofmasterok999 has much to be proud ofmasterok999 has much to be proud of
По умолчанию Re: слетает EEPROM

Цитата:
Сообщение от Pasha_Bi Посмотреть сообщение
использовать в проекте BOR неплохо
Не просто неплохо, а ОБЯЗАТЕЛЬНО!
masterok999 на форуме   Ответить с цитированием
Старый 30.01.2018, 08:13   #10
igor_tgru
Senior Member
 
Аватар для igor_tgru
 
Регистрация: 25.02.2007
Возраст: 46
Сообщений: 696
Вес репутации: 1475/67
igor_tgru has much to be proud ofigor_tgru has much to be proud ofigor_tgru has much to be proud ofigor_tgru has much to be proud ofigor_tgru has much to be proud ofigor_tgru has much to be proud ofigor_tgru has much to be proud ofigor_tgru has much to be proud ofigor_tgru has much to be proud ofigor_tgru has much to be proud of
По умолчанию Re: слетает EEPROM

Цитата:
Сообщение от Руслан Посмотреть сообщение
Столкнулся с проблемой - в ячейках EEPROM теряются значения, записанные ранее.
Причины мне не понятны.
Покажите "обвязку" контроллера , блокировочные емкости , цепь сброса и программирования и желательно кусок трассировки, включающую собственно PIC.
igor_tgru вне форума   Ответить с цитированием
Старый 30.01.2018, 09:54   #11
masterok999
Senior Member
 
Регистрация: 28.07.2015
Адрес: NA
Возраст: 55
Сообщений: 247
Вес репутации: 1001/28
masterok999 has much to be proud ofmasterok999 has much to be proud ofmasterok999 has much to be proud ofmasterok999 has much to be proud ofmasterok999 has much to be proud ofmasterok999 has much to be proud ofmasterok999 has much to be proud ofmasterok999 has much to be proud of
По умолчанию Re: слетает EEPROM

После операций записи в EEPROM за собой "двери закрываем"?

Код:
       BCF EECON1, WREN ; Disable writes on write complete
masterok999 на форуме   Ответить с цитированием
Старый 30.01.2018, 10:53   #12
Руслан
Senior Member
 
Регистрация: 26.05.2015
Возраст: 42
Сообщений: 253
Вес репутации: 62/0
Руслан will become famous soon enough
По умолчанию Re: слетает EEPROM

Цитата:
Сообщение от masterok999 Посмотреть сообщение
После операций записи в EEPROM за собой "двери закрываем"?

Код:
       BCF EECON1, WREN ; Disable writes on write complete
uc_obor_SetUser = 6; //установил значение
unAdrs_EE_Vent = 0x09;//эта переменная для адреса объявлена локально в разных функциях, но значения адреса одинаковое ей присваивается - проверил
EEPROM_WRITE(unAdrs_EE_Vent, uc_obor_SetUser); //запись оборотов

а где тут "двери закрывать"?

Затем читаю так:
//прочитать обороты вентилятора
uc_obor_SetUser = EEPROM_READ(unAdrs_EE_Vent);
Руслан вне форума   Ответить с цитированием
Старый 30.01.2018, 11:15   #13
besogon
Senior Member
 
Регистрация: 12.07.2012
Возраст: 32
Сообщений: 2,171
Вес репутации: 4017/88
besogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond repute
По умолчанию Re: слетает EEPROM

Руслан
забейте во весь остальной свободный EEPROM 0xDEADBEEF.
чтобы более аргументированно предполагать аппаратная или софтовая проблема.
besogon вне форума   Ответить с цитированием
Старый 30.01.2018, 11:27   #14
Руслан
Senior Member
 
Регистрация: 26.05.2015
Возраст: 42
Сообщений: 253
Вес репутации: 62/0
Руслан will become famous soon enough
По умолчанию Re: слетает EEPROM

Цитата:
Сообщение от igor_tgru Посмотреть сообщение
Покажите "обвязку" контроллера , блокировочные емкости , цепь сброса и программирования и желательно кусок трассировки, включающую собственно PIC.
приложил файл схемы, "схема.jpg"
могу приложить сборочный чертеж, но без трассировки, трассировка только в PCAD-файле
Миниатюры
схема.jpg  

Последний раз редактировалось Руслан; 30.01.2018 в 11:35.
Руслан вне форума   Ответить с цитированием
Старый 30.01.2018, 12:12   #15
Руслан
Senior Member
 
Регистрация: 26.05.2015
Возраст: 42
Сообщений: 253
Вес репутации: 62/0
Руслан will become famous soon enough
По умолчанию Re: слетает EEPROM

Цитата:
Сообщение от besogon Посмотреть сообщение
Руслан
забейте во весь остальной свободный EEPROM 0xDEADBEEF.
чтобы более аргументированно предполагать аппаратная или софтовая проблема.
я не понял направление мысли...
Руслан вне форума   Ответить с цитированием
Старый 30.01.2018, 13:24   #16
besogon
Senior Member
 
Регистрация: 12.07.2012
Возраст: 32
Сообщений: 2,171
Вес репутации: 4017/88
besogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond repute
По умолчанию Re: слетает EEPROM

Руслан
Вы в коде используете часть EEPROM.
Вы можете забить при прошивке свободный EEPROM с помощью гарантированно узнаваемых последовательностей, отличных от 0 и 0xff.
Затем, после сбоя, посмотреть был ли поврежден весь EEPROM или только та часть, которая может быть модифицирована явным образом у Вас из кода.
besogon вне форума   Ответить с цитированием
Старый 30.01.2018, 14:15   #17
Руслан
Senior Member
 
Регистрация: 26.05.2015
Возраст: 42
Сообщений: 253
Вес репутации: 62/0
Руслан will become famous soon enough
По умолчанию Re: слетает EEPROM

Цитата:
Сообщение от besogon Посмотреть сообщение
Руслан
Вы в коде используете часть EEPROM.
Вы можете забить при прошивке свободный EEPROM с помощью гарантированно узнаваемых последовательностей, отличных от 0 и 0xff.
Затем, после сбоя, посмотреть был ли поврежден весь EEPROM или только та часть, которая может быть модифицирована явным образом у Вас из кода.
спасибо, теперь понял, у меня в том , что программа не портит нет сомнений, хотя все бывает.
В ячейке после сбоя десятичное значение 85, такое значение в программе нигде не записывается.
Руслан вне форума   Ответить с цитированием
Старый 30.01.2018, 14:46   #18
_WIL_
Senior Member
 
Регистрация: 26.11.2009
Адрес: Беларусь
Сообщений: 712
Вес репутации: 1226/56
_WIL_ has much to be proud of_WIL_ has much to be proud of_WIL_ has much to be proud of_WIL_ has much to be proud of_WIL_ has much to be proud of_WIL_ has much to be proud of_WIL_ has much to be proud of_WIL_ has much to be proud of_WIL_ has much to be proud of
По умолчанию Re: слетает EEPROM

Цитата:
Сообщение от Руслан Посмотреть сообщение
EEPROM_WRITE(unAdrs_EE_Vent, uc_obor_SetUser); //запись оборотов

а где тут "двери закрывать"?
По идее в самой функции EEPROM_WRITE или после нее если в ней нет.

Цитата:
Сообщение от Руслан Посмотреть сообщение
у меня в том , что программа не портит нет сомнений.
Очень зря , глючная EEPROM мне попадалась, но редко. чаще проблема совтовая.
_WIL_ вне форума   Ответить с цитированием
Старый 30.01.2018, 15:14   #19
Марк
Senior Member
 
Аватар для Марк
 
Регистрация: 18.08.2007
Адрес: Московская область
Возраст: 60
Сообщений: 2,624
Вес репутации: 3612/107
Марк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond repute
По умолчанию Re: слетает EEPROM

Цитата:
Сообщение от Руслан Посмотреть сообщение
В ячейке после сбоя десятичное значение 85
В хекс представлении - это 0x55.
Ничего не напоминает?
Марк вне форума   Ответить с цитированием
Старый 30.01.2018, 15:24   #20
Руслан
Senior Member
 
Регистрация: 26.05.2015
Возраст: 42
Сообщений: 253
Вес репутации: 62/0
Руслан will become famous soon enough
По умолчанию Re: слетает EEPROM

Цитата:
Сообщение от _WIL_ Посмотреть сообщение
По идее в самой функции EEPROM_WRITE или после нее если в ней нет.
После функции я не вызываю ничего для "закрытия дверей"

Поискал в исходниках компилятора тело самой функции
C:\HTSOFT\PIC18\include\pic18.h

#if EEPROM_SIZE > 256
#define EEPROM_WRITE(addr, value) \
wait_on_wr(); \
EEADRH=(((addr)>>8)&0xFF);EEADR=((addr)&0xFF); \
EEDATA=(value); \
EECON1&=0x3F; \
CARRY=0;if(GIE)CARRY=1;GIE=0; \
WREN=1;EECON2=0x55;EECON2=0xAA;WR=1; \
EEIF=0;WREN=0; \
if(CARRY)GIE=1
#else
#define EEPROM_WRITE(addr, value) \
wait_on_wr(); \
EEADR=((addr)&0xFF); \
EEDATA=(value); \
EECON1&=0x3F; \
CARRY=0;if(GIE)CARRY=1;GIE=0; \
WREN=1;EECON2=0x55;EECON2=0xAA;WR=1; \
EEIF=0;WREN=0; \
if(CARRY)GIE=1
#endif
Руслан вне форума   Ответить с цитированием
Старый 30.01.2018, 16:48   #21
Sergey57
Senior Member
 
Регистрация: 26.03.2009
Возраст: 62
Сообщений: 374
Вес репутации: 892/50
Sergey57 is a splendid one to beholdSergey57 is a splendid one to beholdSergey57 is a splendid one to beholdSergey57 is a splendid one to beholdSergey57 is a splendid one to beholdSergey57 is a splendid one to beholdSergey57 is a splendid one to behold
По умолчанию Re: слетает EEPROM

Была аналогичная проблема. При падении напряжения питания
на кнопках в какой-то момент появлялся логический ноль.
И на последнем издыхании программа шла перезаписывать EEPROM.
И умудрялась писать всякую ерунду.
Стал использовать в проекте BOR и добавил компаратор с делителем от входного (до стабилизатора) напряжения.
Сигнал - запрет перезаписи EEPROM.
Sergey57 вне форума   Ответить с цитированием
Старый 30.01.2018, 18:17   #22
Руслан
Senior Member
 
Регистрация: 26.05.2015
Возраст: 42
Сообщений: 253
Вес репутации: 62/0
Руслан will become famous soon enough
По умолчанию Re: слетает EEPROM

Цитата:
Сообщение от Pasha_Bi Посмотреть сообщение
Если хотите проверить идею с супервизором, то интегрированный в микроконтроллер BOR ни чем не хуже. В любом случае использовать в проекте BOR неплохо.
а в тот что я использую PIC18F4620 BOR интегрирован?
Руслан вне форума   Ответить с цитированием
Старый 30.01.2018, 20:00   #23
alexandr_p
Member
 
Регистрация: 16.05.2014
Возраст: 25
Сообщений: 38
Вес репутации: 131/22
alexandr_p will become famous soon enoughalexandr_p will become famous soon enough
По умолчанию Re: слетает EEPROM

В моём случае такая проблема была из-за не предвиденного отключения питания. Время записи байта в EEPROM 4мс и когда в это время отключали питание результат записи был 0xFF. Внести изменения в схему возможности не было, проблему решили продублировав счетчики и добавив к каждому CRC.
alexandr_p вне форума   Ответить с цитированием
Старый 30.01.2018, 21:32   #24
Pasha_Bi
Senior Member
 
Регистрация: 24.07.2009
Адрес: г. Иваново
Возраст: 45
Сообщений: 289
Вес репутации: 640/46
Pasha_Bi is a name known to allPasha_Bi is a name known to allPasha_Bi is a name known to allPasha_Bi is a name known to allPasha_Bi is a name known to allPasha_Bi is a name known to all
По умолчанию Re: слетает EEPROM

Цитата:
PIC18F4620 BOR интегрирован?
Конечно. Вот пример слова конфигурации для PICC-18 (HITECH):
Код:
__CONFIG(2,
		BORV43&				//Порог включения схемы BOR (BORV21 - по умолчанию)
							//BORV46 - 4.6V 
							//BORV43 - 4.3V 
							//BORV28 - 2.8V 
							//BORV21 - 2.6V 
		BOREN&				//Включение схемы BOR (BOREN - по умолчанию)
							//BOREN - схема BOR включена и не управляется программно
							//BOREN_XSLP - схема BOR включена, не управляется программно, 
							//выключена в режиме SLEEP
							//SWBOREN - схема BOR включена и управляется программно
							//BORDIS - схема BOR выключена
		PWRTEN&				//PWRTEN,PWRTDIS (PWRTDIS - по умолчанию)
		WDTEN&				//WDTEN,WDTDIS (WDTEN - по умолчанию)
		WDTPS256);			//Преlделитель WDT (опорный сигнал 4 мс)
							//WDTPS1 - 1:1
							//WDTPS2 - 1:2
							//WDTPS4 - 1:4
							//WDTPS8 - 1:8
							//...
 							//WDTPS512 - 1:512
 							//WDTPS1K - 1:1024
							//WDTPS2K - 1:2048
							//...
 							//WDTPS32K - 1:32768
Pasha_Bi вне форума   Ответить с цитированием
Старый 30.01.2018, 21:38   #25
Руслан
Senior Member
 
Регистрация: 26.05.2015
Возраст: 42
Сообщений: 253
Вес репутации: 62/0
Руслан will become famous soon enough
По умолчанию Re: слетает EEPROM

Цитата:
Сообщение от alexandr_p Посмотреть сообщение
В моём случае такая проблема была из-за не предвиденного отключения питания.
т.е. отключение питания в момент записи в EEPROM ?
Программа все время ж "крутится", что значит "непредвиденного"?

Цитата:
Сообщение от alexandr_p Посмотреть сообщение
проблему решили продублировав счетчики и добавив к каждому CRC.
если там хранятся установки пользователя, то в случае несовпадения CRC я могу установить настройки по-умолчанию - будет работать не так как думает пользователь - не критично, но работать будет. Но у меня еще ячейка используется как раз для анализа в программе в функции 1 (так назовем условно) значения ячейки, которое записалось функцией 2 и если тут несовпадение CRC то я не знаю что делать - умолчательные значения не годятся - алгоритм будет работать не верно.
Руслан вне форума   Ответить с цитированием
Ответ


Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 
Опции темы
Опции просмотра

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

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Время записи в EEPROM PIC12F683 kaligraf Вопросы начинающих 2 12.04.2016 02:00
PIC16F877 EEPROM стирается после выключения питания alx71 Продукция MICROCHIP 15 16.12.2010 10:00
Слетает EEPROM MC56F8013 GANY Микроконтроллеры других производителей 3 10.11.2009 20:12
PIC18F452 не пишет в EEPROM tzirulnicov Продукция MICROCHIP 2 03.01.2008 16:10
Как в mplab при компиляции в hex, заполнить и EEPROM Синклер Продукция MICROCHIP 8 26.11.2007 19:36


Часовой пояс GMT +3, время: 21:27.


Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd. Перевод: zCarot