سلام
همانطور که قبلا بحث شده هدر i2c توی مجله 8 نیومده . منم مجبور شدم رجیستری کار کنم و این کدها را نوشتم (منطبق بر الگوریتم خود Datasheet ) اما توی تبادل داده با at24 موفق نشدم به نظر دوستان ایراد این کد در چه موردی است ؟
define start 0x01
#define stop 0x02
#define ackt 0x04
#define enable 0x04
#define ackr 0x02
void twi_write(void)
{
AT91F_TWI_CfgPIO();
AT91F_TWI_CfgPMC();
PULL_UP_A=PA10;
PULL_UP_A=PA11;
*AT91C_TWI_CWGR=0x01165b;
*AT91C_TWI_CR|=enable;
*AT91C_TWI_IADR=0x00;
*AT91C_TWI_MMR=0x500100;
*AT91C_TWI_THR=data;
*AT91C_TWI_CR|=start;
while(!(*AT91C_TWI_SR&ackt));
*AT91C_TWI_CR|=stop;
while(!(*AT91C_TWI_SR&0x01));
}
//-----------------------------------------
void twi_read(void)
{
unsigned char data1;
AT91F_TWI_CfgPIO();
AT91F_TWI_CfgPMC();
*AT91C_TWI_CWGR=0x01165b;
*AT91C_TWI_CR|=enable;
*AT91C_TWI_IADR=0x00;
*AT91C_TWI_MMR=0x501100;
*AT91C_TWI_CR|=start;
while(!(*AT91C_TWI_SR&ackr));
data1=*AT91C_TWI_THR;
*AT91C_TWI_CR|=stop;
while(!(*AT91C_TWI_SR&0x01));