اطلاعیه

Collapse
No announcement yet.

I2C چیه.

Collapse
X
 
  • فیلتر
  • زمان
  • Show
Clear All
new posts

    I2C چیه.

    سلام.کسی هستش درمورد برنامه زیر که وظیفه اش نوشتن و خوندن از حافظه EEPROM است توضیح بده
    اخه درمورد I2C خوندم ولی باز متوجه نشدم
    Example
    -------- Writing and reading a byte to an EEPROM 2404 -----------------
    DIM a As Byte
    Const adresW = 174 'write of 2404
    Const adresR = 175 'read address of 2404
    I2CSTART
    I2CWBYTE adresW
    I2CWBYTE 1
    I2CWBYTE 3
    I2CSTOP
    WaitMS 10

    ----------------now read the value back into the var a -------------------
    I2CSTART
    I2CWBYTE adresW
    I2CWBYTE 1
    I2CSTART
    I2CWBYTE adresR
    I2CRBYTE a,nack
    I2CSTOP
    PRINT a
    END

    #2
    پاسخ : I2C چیه.

    i2c یک پرو.تکل ارتباطی هست مثل ارتباط سریال و ارتباط spi در هر صورت مثال خیلی رونیه اگر دیتاشیت محصول رو بخونید همه چی دستگیرتون میشه
    توی این برنامه میاد ابتدا آدرس خوندن و نوشتن و مقدار دهی میکنه
    بعد میاد یه دستور باسه rom میفرسته
    حالا میاد اطلاعات و میخونه

    دیدگاه


      #3
      پاسخ : I2C چیه.

      1- برای قهم ]2C سعی نکن اول وارد لایه فیزیکی بشی (یعنی سیگنالها چه جوری ارسال میشن) روال کلی کار آسون
      در آخر میتونی از لایه فیزیکی قضیه هم سر دربیاری
      2- آقای سپاسیار یه جزوه داره در مورد AVR و توش خوب I2C رو توضیح داده
      3- روال کلی کار هم اینه : اول تراشه مستر استارت میکنه ارتباط رو.(اگه مشکلی نباشه یعنی خط مشغول نباشه) بعد آدرس تراشه اسلیو + هدف عملیات (خواندن یا نوشتن) ارسال میشه؛ حالا اگه قرار باشه داده ای نوشته بشه معمولا آدرس ثبات و بعد داده ها ارسال میشن (در این موقع تراشه اسلیو مورد نظر گوش بزنگه) اگر هم قرار باشه چیزی از اسلیو بخونیم آدرس ثبات مورد نظر ارسال میشه و بعد اسلیو دادشو ارسال میکنه. در نهایت هم تراشه مستر استپ میکنه
      در قطعه برنامه زیر نشون داده شده که چطور میشه از یه سنسور مگنت داده ای رو خوند

      //////// Read HMC5843 register on address add
      unsigned char read5843reg(unsigned char add)
      {
      unsigned char regvalue=0;
      while(!i2c_start()) //wait here to free bus
      {#asm("wdr&quot}
      i2c_write(0x3C); //slave adress+write
      i2c_write(add); //set register address
      i2c_stop(); //restart (stop followed by start)
      i2c_start();
      i2c_write(0x3D); //slave adress+Read
      regvalue=i2c_read(0x00);
      i2c_stop();
      return(regvalue);
      }

      دیدگاه

      لطفا صبر کنید...
      X