Vadná EEPROM u PIC?

Diskuze a poradna o programátorech a programování různých obvodů

Moderátor: Moderátoři

Zpráva
Autor
Uživatelský avatar
forbidden
Příspěvky: 9442
Registrován: 14 úno 2005, 00:00
Bydliště: Brno (JN89GF)
Kontaktovat uživatele:

Vadná EEPROM u PIC?

#1 Příspěvek 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.
Uživatelský avatar
monterjirka
Příspěvky: 2855
Registrován: 14 čer 2003, 00:00
Bydliště: Blížejov

#2 Příspěvek 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í
masar
Příspěvky: 14453
Registrován: 03 pro 2005, 00:00

#3 Příspěvek od masar »

A bylo důsledkem té "devastace" občasné chybné čtení nebo trvale(stabilně) chybné čtení? :wink:
Uživatelský avatar
Neniu
Příspěvky: 1174
Registrován: 01 kvě 2015, 00:00
Bydliště: Doupě kdesi v severních horách :-)

#4 Příspěvek 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.
Jsem na cestě k šípku.
Uživatelský avatar
forbidden
Příspěvky: 9442
Registrován: 14 úno 2005, 00:00
Bydliště: Brno (JN89GF)
Kontaktovat uživatele:

#5 Příspěvek 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. :D
masar
Příspěvky: 14453
Registrován: 03 pro 2005, 00:00

#6 Příspěvek od masar »

Pořád píšeš jen o chybném čtení buňky. Skutečný stav buňky přece neurčuje její čtení. :wink:
Uživatelský avatar
forbidden
Příspěvky: 9442
Registrován: 14 úno 2005, 00:00
Bydliště: Brno (JN89GF)
Kontaktovat uživatele:

#7 Příspěvek 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í.
masar
Příspěvky: 14453
Registrován: 03 pro 2005, 00:00

#8 Příspěvek 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. :D
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.
:wink:
Uživatelský avatar
forbidden
Příspěvky: 9442
Registrován: 14 úno 2005, 00:00
Bydliště: Brno (JN89GF)
Kontaktovat uživatele:

#9 Příspěvek 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í.
termit256
Příspěvky: 10029
Registrován: 06 pro 2007, 00:00

#10 Příspěvek 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.
Uživatelský avatar
MiloPS3
Příspěvky: 279
Registrován: 07 srp 2010, 00:00

#11 Příspěvek 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.. ?
Uživatelský avatar
RayeR
Příspěvky: 1850
Registrován: 02 srp 2009, 00:00
Bydliště: Praha
Kontaktovat uživatele:

#12 Příspěvek 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...
Uživatelský avatar
forbidden
Příspěvky: 9442
Registrován: 14 úno 2005, 00:00
Bydliště: Brno (JN89GF)
Kontaktovat uživatele:

#13 Příspěvek 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.
Uživatelský avatar
Neniu
Příspěvky: 1174
Registrován: 01 kvě 2015, 00:00
Bydliště: Doupě kdesi v severních horách :-)

#14 Příspěvek od Neniu »

A čím programuješ?
Jsem na cestě k šípku.
Uživatelský avatar
RayeR
Příspěvky: 1850
Registrován: 02 srp 2009, 00:00
Bydliště: Praha
Kontaktovat uživatele:

#15 Příspěvek 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...
Odpovědět

Zpět na „Programování PIC, ATMEL, EEPROM a dalších obvodů“