Stránka 1 z 2
Vadná EEPROM u PIC?
Napsal: 04 čer 2019, 18:31
od forbidden
Setkal se někdo s vadnou EEPROM u PICu? Dělám teď jednu kostrukci a občas mi čtení z EEPROMky vrátí hodnotu 0xFF místo té, co tam má být. Procedura čtení z EEPROM vypadá takto, úplně standardně:
Kód: Vybrat vše
unsigned char eeprom_r (unsigned char ee_adr)
{
EEADR=ee_adr; // adresa
EECON1bits.EEPGD=0; // pristup do datove pameti -> EEPROM
EECON1bits.RD=1; // cteni
return EEDATA;
}
Přerušení je v tu dobu zakázaný. Zatím jsem nezkoušel, jestli se to projeví dvakrát za sebou, zatím jsem vždy vadnou hodnotou přepsal, ale vyzkouším ji nepřepisovat. PIC je starej, vyndanej z něčeho, co jsem kuchal, naprosto netuším, co má naběháno.
Napsal: 04 čer 2019, 19:34
od monterjirka
Ještě se mi nedostal do ruky PIC s vadnou EEPROM, ale už se mi ji podařilo "zdevastovat" chybou v programu, kdy tam zapisoval a zapisoval... I když měl jen občas zapsat pokud se změnilo nastavení
Napsal: 04 čer 2019, 20:42
od masar
A bylo důsledkem té "devastace" občasné chybné čtení nebo trvale(stabilně) chybné čtení?

Napsal: 04 čer 2019, 22:28
od Neniu
Pokud se dobře pamatuji, tak u některých PICek výrobce v DS psal, že se nemá používat nultá buňka EEPROM, protože zapomíná, nebo se přepisuje. Už si to nepamatuji, je to už fakt moc dlouho. V té době kralovala 16F84
Takže se když tak zkus podívat do katalogu, jestli tam není podobná poznámka.
Napsal: 05 čer 2019, 09:35
od forbidden
Nic takovýho jsem tam nenašel. Adresu 0x00 sice používám, ale zaznamenaný chyby čtení zatím nastaly na jiných (0x01 a 0x03). Všechno samozřejmě ze začátku, kde se dá čekat, že to používá každej. Stane se to tak v jednom čtení asi z padesáti, takže nijak často. Poprvé se to stalo, když byl PIC asi týden bez napájení, podruhé ale nebyl. Čtení EEPROM probíhá na začátku programu, nic jinýho v tu dobu ani neběží, nic to přerušit nemůže. Ani zatím nereaguje na vstupy. Každopádně zatím jsem přidal do programu kontrolu a při zjištění hodnoty 0xFF hodí hned chybu a zastaví běh.
V nejhorším napíšu nějakej Memtest a pustím ho na něm.

Napsal: 05 čer 2019, 09:41
od masar
Pořád píšeš jen o chybném čtení buňky. Skutečný stav buňky přece neurčuje její čtení.

Napsal: 05 čer 2019, 09:59
od forbidden
To ne, ale zapisuju do ní jen zřídka. A shodou náhod obě chyby se projevily zrovna u hodnot, který jsem nezapisoval mezi jednotlivýma startama PICu vůbec. Vím, že zápis je celkem choulostivej, detekci chyby zápisu jsem zatím nezařadil, protože to mám snad ošetřeno správně. Opět je samozřejmě vyplý přerušení a program při zápisu na nic nereaguje.
Hodně mi pomůže, až se to zase stane, že to jen vypnu a zapnu. Jestli se to opět načte špatně, nebo správně. Na to momentálně čekám, jenže zatím marně.
Jo a adresy EEPROM mám v programu nacvakaný růčo fůčo, ani při zápisu, ani při čtení, se nedosazují pomocí nějakých proměnných, že by mohla být chyba v algoritmu jejich generování.
Napsal: 05 čer 2019, 10:37
od masar
forbidden píše:...Každopádně zatím jsem přidal do programu kontrolu a při zjištění hodnoty 0xFF hodí hned chybu a zastaví běh.
V nejhorším napíšu nějakej Memtest a pustím ho na něm.

No možná by stačilo tu kontrolu rozšířit o opakované čtení právě zjištěné chyby v dostatečně dlouhé časové smyčce a výsledky uložit. Mohlo by to napovědět.

Napsal: 05 čer 2019, 10:53
od forbidden
To jo, zatím ale spíš ladím program samotnej, tak nějaký větší složitosti zbytečně nevytvářím. Tu detekci čtení 0xFF jsem tam dal i proto, abych právě neladil program s vadnýma datama.
Pokud se mi opravdu prokáže, že přečtu 0xFF z jedné adresy opakovaně i po restartu PICu, tak napíšu něco speciálně na testování.
Napsal: 05 čer 2019, 16:55
od termit256
Ja s tou spolehlivosti eeprom integrovanych v MCU mam taky nevalne zkusenosti a pouzivam to dost nerad. Nejen ze se to obcas blbe nacte, ale i sem tam neco prepise. Deje se to nahodne, nepodarilo se mi vysledovat nejaky mechanismus, snad mam jen pocit ze to muze mit neco spolecneho s prechodovymi deji pri kratkych vypadcich napajeni, silnym EMC rusenim apod. Kdyz uz tohle pouzivam, radeji tam zapisuju vsechno 3x a data se daji v naproste vetsine pripadu jednoduse automaticky obnovit. Pokud jsem eeprom v MCU nahradil externimi pametmi, problemy vzdy ustaly. V posledni dobe jsem si oblibil FRAM, jsou rychle a maji velky pocet zapisu takze je mozne nekdy je pouzivat i jako nahradu za RAM.
Napsal: 10 čer 2019, 20:20
od MiloPS3
Cau, zablokovany napajeni mas ?
zapis funguje ? on totiz trva docela dlouho ...
kdyz ty data zapises tak je hned precti pro kontrolu ...
nevim vhodnost programu a zapojeni ale po precteni spatne hodnoty skusit precist programatorem ...jestly data opravdu souhlasi s tim co si precet programove
Čtení EEPROM probíhá na začátku programu
mas zaply v pojistkach POR,BOR.. ?
Napsal: 07 črc 2019, 00:45
od RayeR
Pokud by to bylo ojetou EEPROM, tak by problem byl spis opacny - jednickove bity by se cetly jako nuly. Teoreticky pokud by se utnul zapis predcasne, tak by se mohla 0 zapsat nespolehlive a pak nekdy precist jako 1. Nevim jak na PICech, ale na AVR je nejaka signalizace, jestli byl zapis dokoncen nebo ta zapisovaci funkce blokuje dokud zapis neni hotov, protoze to trva nekolik ms... Zkusil bych to opakovane vycitani EEPROM programatorem jak radil kolega nade mnou, zavolat v nake davce treba 1000x precist do souboru s inkrementalnim nazvem a pak na to pustit compare a uvidis...
Napsal: 07 črc 2019, 13:23
od forbidden
Tak jsem to dlouho nezaznamenal, až včera. Nahrál jsem do PICu novou verzi a při programování cíleně zaškrtnul "preserve EEPROM data", abych je nepřepsal. A ihned po nahrátí a resetu se to stalo opakovaně třikrát za sebou. Program skončí chybou hned na začátku, když detekuje vadnou hodnotu při čtení. Nic se nezapisuje. Takže to poškodilo programování, ne nedokončenej zápis, nebo samo od sebe. V těch minulých případech to možná bylo taky tak, to už si nevybavím, jestli to bylo po nahrávání. Každopádně, když jsem EEPROM přepsal spolu s programovou pamětí, tak je to v pořádku.
Ještě jsem včera zjistil, že se mi tvořila asi zemní smyčka přes programátor, tak to možná bylo tím, ale hlavní program se nikdy špatně nenahrál a verifikace vždy prošla.
Napsal: 07 črc 2019, 13:49
od Neniu
A čím programuješ?
Napsal: 07 črc 2019, 14:22
od RayeR
Hm, a na kolika MCU se ti to takle sere? Mas vyrobeno vice ks? Jesi na 1, tak proste zkus koupit novej PIC...