24C128 problem
Zdenek Dvorak
zdvorak
Středa Březen 17 11:43:48 CET 2004
hi, pouzivam atmelovsky 24c256 v uplne stejnym modu jako ty a chodi to
normalne. Tady je zdrojak:
/* cte byte z urcite adresy 16-ti bitoveho I2C zarizeni */
unsigned char i2c_dev16_read(unsigned char device_adr,unsigned int data_adr)
{
unsigned char temp;
i2c_start(device_adr|Wr); /* start zapisu do zarizeni */
i2c_write(data_adr>>8); /* zapsat adresu dat */
i2c_write(data_adr%256);
i2c_rep_start(device_adr|Rd); /* bude se cist byte ze zvolene adresy */
temp=i2c_read(NoAck); /* vratit nactenej byte, nepotvrzovat-bude
stop */
i2c_stop(); /* I2C podminka stop */
return(temp);
}
/* zapisuje byte na urcitou adresu 16-ti bitoveho I2C zarizeni */
void i2c_dev16_write(unsigned char device_adr,unsigned int data_adr,unsigned
char data)
{
unsigned char del_count;
i2c_start(device_adr|Wr); /* start zapisu do zarizeni */
i2c_write(data_adr>>8); /* adresa na kterou se zapisuje */
i2c_write(data_adr%256);
i2c_write(data); /* zapisovanej byte */
i2c_stop(); /* I2C podminka stop */
for(del_count=0;del_count<11;del_count++) delay1ms(); !!!!!!! tady je dulezita ta prodleva, podle datasheetu ji trva tusim 10ms, nez se po zapisu vzpamatuje
}
>Diky za pomoc, ale ja jsem pri dalsim experimentovani zjistil, ze
>kdyz tu pamet dam do programatoru a zacnnu ji cist, tak cela
>komunikace probehne v poradku, potvrdi se vse, co se potvrdit ma,
>ale cteni adrej je docela zmatene. Pokud ctu nekolik adres po
>jedne od zacatku a to zpusobem, ze poslu cislo I2C, vyssi, nizsi
>adresu, I2C cislo a prectu data a to cele opakuju nekolikrat, tak
>se cte adresa 0, 4, 8, 12, atd...
>Pokud by to bylo mozne, chtel bych vas pozadat o zaslani
>zdrojoveho kodu komunikace s pameti.
Další informace o konferenci Hw-list