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

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

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

Ответ
 
Опции темы Опции просмотра
Старый 29.01.2018, 10:53   #1
Руслан
Senior Member
 
Регистрация: 26.05.2015
Возраст: 41
Сообщений: 157
Вес репутации: 100/13
Руслан will become famous soon enoughРуслан 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
Возраст: 31
Сообщений: 1,575
Вес репутации: 3061/66
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
Возраст: 41
Сообщений: 157
Вес репутации: 100/13
Руслан will become famous soon enoughРуслан 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
Возраст: 31
Сообщений: 1,575
Вес репутации: 3061/66
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
Адрес: Ставрополь
Возраст: 46
Сообщений: 392
Вес репутации: 612/38
pasha_zv is a name known to allpasha_zv is a name known to allpasha_zv is a name known to allpasha_zv is a name known to allpasha_zv is a name known to allpasha_zv is a name known to all
По умолчанию Re: слетает EEPROM

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

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

Цитата:
Сообщение от pasha_zv Посмотреть сообщение
была у меня такая хрень.
помог - супервизор питания MCP10x-475
супервизора у меня нет в схеме, переразводить плату или "на коленке" запаять...
Руслан вне форума   Ответить с цитированием
Старый 29.01.2018, 16:34   #8
Pasha_Bi
Senior Member
 
Регистрация: 24.07.2009
Адрес: г. Иваново
Возраст: 43
Сообщений: 273
Вес репутации: 640/40
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
Возраст: 54
Сообщений: 152
Вес репутации: 515/16
masterok999 is a glorious beacon of lightmasterok999 is a glorious beacon of lightmasterok999 is a glorious beacon of lightmasterok999 is a glorious beacon of lightmasterok999 is a glorious beacon of lightmasterok999 is a glorious beacon of light
По умолчанию Re: слетает EEPROM

Цитата:
Сообщение от Pasha_Bi Посмотреть сообщение
использовать в проекте BOR неплохо
Не просто неплохо, а ОБЯЗАТЕЛЬНО!
masterok999 вне форума   Ответить с цитированием
Старый 30.01.2018, 08:13   #10
igor_tgru
Senior Member
 
Аватар для igor_tgru
 
Регистрация: 25.02.2007
Возраст: 44
Сообщений: 674
Вес репутации: 1380/60
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
Возраст: 54
Сообщений: 152
Вес репутации: 515/16
masterok999 is a glorious beacon of lightmasterok999 is a glorious beacon of lightmasterok999 is a glorious beacon of lightmasterok999 is a glorious beacon of lightmasterok999 is a glorious beacon of lightmasterok999 is a glorious beacon of light
По умолчанию Re: слетает EEPROM

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

Код:
       BCF EECON1, WREN ; Disable writes on write complete
masterok999 вне форума   Ответить с цитированием
Старый 30.01.2018, 10:53   #12
Руслан
Senior Member
 
Регистрация: 26.05.2015
Возраст: 41
Сообщений: 157
Вес репутации: 100/13
Руслан will become famous soon enoughРуслан 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
Возраст: 31
Сообщений: 1,575
Вес репутации: 3061/66
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
Возраст: 41
Сообщений: 157
Вес репутации: 100/13
Руслан will become famous soon enoughРуслан 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
Возраст: 41
Сообщений: 157
Вес репутации: 100/13
Руслан will become famous soon enoughРуслан will become famous soon enough
По умолчанию Re: слетает EEPROM

Цитата:
Сообщение от besogon Посмотреть сообщение
Руслан
забейте во весь остальной свободный EEPROM 0xDEADBEEF.
чтобы более аргументированно предполагать аппаратная или софтовая проблема.
я не понял направление мысли...
Руслан вне форума   Ответить с цитированием
Старый 30.01.2018, 13:24   #16
besogon
Senior Member
 
Регистрация: 12.07.2012
Возраст: 31
Сообщений: 1,575
Вес репутации: 3061/66
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
Возраст: 41
Сообщений: 157
Вес репутации: 100/13
Руслан will become famous soon enoughРуслан 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
Адрес: Беларусь
Сообщений: 679
Вес репутации: 1181/48
_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
Адрес: M.O.
Возраст: 58
Сообщений: 2,151
Вес репутации: 2724/87
Марк 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
Возраст: 41
Сообщений: 157
Вес репутации: 100/13
Руслан will become famous soon enoughРуслан 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
Возраст: 60
Сообщений: 369
Вес репутации: 892/44
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
Возраст: 41
Сообщений: 157
Вес репутации: 100/13
Руслан will become famous soon enoughРуслан 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
Возраст: 23
Сообщений: 38
Вес репутации: 131/15
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
Адрес: г. Иваново
Возраст: 43
Сообщений: 273
Вес репутации: 640/40
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
Возраст: 41
Сообщений: 157
Вес репутации: 100/13
Руслан will become famous soon enoughРуслан 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, время: 13:54.


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