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