ATmega - problemek s eeprom
Moderátor: Moderátoři
Pres programator, zpet do pocitace. Zatim neni duvod tomu neverit, protoze
a) programator eeprom naprogramuje a pak ji precte, pricemz verifikace sedi.
b) programovaci smycka eeprom v MCU trva v pripade selhani kratce. Uz pred casem jsem dal pred jeji zacatek rozsviceni led a na jeji konec zhasnuti. Pri selhani programovani eeprom je hned hotovo <<1s, zatimco pokud smycka bezi spravne, trva asi 20 sekund.
Ty hodnoty tam proste (v pripade selhani) nejsou....
a) programator eeprom naprogramuje a pak ji precte, pricemz verifikace sedi.
b) programovaci smycka eeprom v MCU trva v pripade selhani kratce. Uz pred casem jsem dal pred jeji zacatek rozsviceni led a na jeji konec zhasnuti. Pri selhani programovani eeprom je hned hotovo <<1s, zatimco pokud smycka bezi spravne, trva asi 20 sekund.
Ty hodnoty tam proste (v pripade selhani) nejsou....
O tom vim, ale ja ani nedelam zadny power cycle....
Proste jakmile nebehne nejaka intezivnejsi prace s eep, tak to zacne delat obcas nesmysly. Pricmez to neni uplne nahodny jev.
Napr. jem tam tabulka 3000 kalibracnich hodnot typu char a kdyz se vyplnuje ve vetsi delce, tak se na indexech 32, 238, 438, 638, 1538 objevi vzdy spatna hodnota, ktera ma byt jinde.
Plus se samozrejme nevyresil ten problem z uvodu vlakna, jen se workaroundoval cekaci smyckou.
Zkusim vymenit MCU alespon na jedne z desek a uvidim, ale moc tomu nadeji nedavam.
Proste jakmile nebehne nejaka intezivnejsi prace s eep, tak to zacne delat obcas nesmysly. Pricmez to neni uplne nahodny jev.
Napr. jem tam tabulka 3000 kalibracnich hodnot typu char a kdyz se vyplnuje ve vetsi delce, tak se na indexech 32, 238, 438, 638, 1538 objevi vzdy spatna hodnota, ktera ma byt jinde.
Plus se samozrejme nevyresil ten problem z uvodu vlakna, jen se workaroundoval cekaci smyckou.
Zkusim vymenit MCU alespon na jedne z desek a uvidim, ale moc tomu nadeji nedavam.
de omnibus dubitandum est
takhle zápis funguje:
Kód: Vybrat vše
<kdesi v kódu>
CALL waiteerdy
ldi r16,0 ;EE adr 0
out eearh,r16
out eearl,r16
ld r16,X+ ;data pro EE
CALL writeee
...
<funkce>
waiteerdy:
in r16,eecr
sbrc r16,eewe
rjmp waiteerdy
ret
writeee:
out eedr,r16
cbi eecr,eewe
sbi eecr,eemwe
sbi eecr,eewe
ret