لینک باکس وبلاگ پر بازدید ترین لینک باکس ایران و لینک باکس منتخب

لینک باکس وبلاگ پر بازدید ترین لینک باکس ایران و لینک باکس منتخب

استفاده از I2C در AVR - سرگرمی-موزیک-فناوری-تفریح-بازی-موبایل

سفارش تبلیغ
سرگرمی-موزیک-فناوری-تفریح-بازی-موبایل
  • سجاد ( سه شنبه 87/2/31 :: ساعت 4:47 عصر)

    I2C مخفف کلمه Inter Integrated Circuit است و یک پروتکل ارتباطی سریال بین مدارات مجتمع می باشد. همچنین نام دیگر آن TWI(Two Wire Interface) می باشد. از این پروتکل برای ارتباط  میکروکنترلر و وسایل جانبی نظیر حافظه ها ، سنسورهای دما و ... استفاده می شود.

    I2C مخفف کلمه Inter Integrated Circuit است و یک پروتکل ارتباطی سریال بین مدارات مجتمع می باشد. همچنین نام دیگر آن TWI(Two Wire Interface) می باشد. از این پروتکل برای ارتباط  میکروکنترلر و وسایل جانبی نظیر حافظه ها ، سنسورهای دما و ... استفاده می شود.

     

    این ارتباط تنها از طریق دو سیم برقرار می شود: SDA (Serial Data) و  SCL (Serial Clock) .

    هر دستگاهی که از طریق این پروتکل کار می کند یک آدرس 7بیتی منحصر به فرد دارد. 4 بیت بالا ثابت بوده و نشان دهنده نوع وسیله هستند به عنوان مثال کد 1010 نشان دهنده EEPROM می باشد. سه بیت کم ارزش، آدرس دستگاه جانبی می باشد.با این نوع آدرس دهی می توان تا 8 وسیله یکسان و 128 وسیله جانبی را از طریق یک پورت I2C به میکروکنترلر وصل کرد.

    آدرس I2C در بایت اول فرستاده می شود که بیت کم ارزش بایت اول تقاضای خواندن و یا نوشتن master را نشان می دهد. 0 برای نوشتن و 1 برای خواندن.


     

    در اینجا دستگاهی که اطلاعات را میفرستد Master و دستگاهی که اطلاعات را میگیرد Slave نامیده میشود. Master با فرستادن یک سیگنال بر روی خط SDA انتقال اطلاعات را آغاز و با فرستادن سیگنالی دیگر بر روی همین خط انتقال اطلاعات را متوقف می کند. در هنگام ارسال سیگنالهای Start و Stop سیگنال SCL یک میباشد. هنگامی که Master انتقال اطلاعات را آغاز کرد بایت Device address  را در Slave مینویسد. Slave یک بیت Acknowledge بعد از دریافت اطلاعات خواهد فرستاد.

    سخت افزار:

    EEPROM مدل AT24C32 و میکروکنترلر مدل AT2313 وصل شده است. همچنین از یک LCD برای نشان دادن اطلاعات استفاده شده است. AT2313 دارای 4096 بایت حافظه است. SCL و SDA به پین های D.0 و D.1 وصل شده اند.

    نرم افزار:

    از کامپایلر BASCOM-AVR برای برنامه نویسی استفاده شده است. در زیر فرمانهای این کامپایلر آورده شده است:

    Command

    Deion

    Config SDA

    Configure the SDA line e.g. PORTB.0

    Congif SCL

    Configure the SCL line e.g. PORTB.1

    I2cstart

    generates a start condition

    I2cstop

    generates a stop condition

    I2cwbyte

    writes a byte to the target device

    I2crbyte

    reads a byte from the target device

    BASCOM I2C commands

    در این نرم افزار شما ابتدا باید پورتهای استفاده شده برای SDA و SCL را Configure کرد. سپس برای انتخاب EEPROMی که متصل شده آدرس مورد نظر را ارسال کرد. سپس با فرستادن دو بایت به EEPROM آدرس مورد نظر برای نوشتن را انتخاب کرده و در نهایت دیتای مورد نظر را نوشت.

    در زیر کد این برنامه را خواهید دید. در این برنامه مقدار متغیر D_wr در آدرس صفر EEPROM نوشته شده و سپس بایت صفر از EEPROM خوانده شده و در متغییر D_rd نوشته می شود و در LCD نمایش داده میشود.


    *******************************************************************
    " * Title : EEPROM 24C32.bas
    " * Last Updated : 05.03.2006
    " * Target device: At90s2313, 24C32
    " * Author : www.avrprojects.net
    " * Program code : BASCOM-AVR
    " * Hardware req. :
    " * Deion :
    " * This application reads and write a byte to an 24c32 EEPROM connected to an
    " * AT2313 microcontroller.
    " *******************************************************************
    Dim D_w As Byte , D_r As Byte

    Config Lcdpin = Pin , Db4 = Portb.3 , Db5 = Portb.2 , Db6 = Portb.1 , Db7 = Portb.0 , E = Portb.6 , Rs = Portb.7

    Config Lcd = 16 * 2
    Cls
    Cursor Off

    Config Scl = Portd.0 "assign the SCl line to PORTD.0
    Config Sda = Portd.1 "assign the SDA line to PORTD.1

    D_w = 100

    "********** write byte to EEPROM*********************
    I2cstart "generate start
    I2cwbyte &B1010_0000 "send device address
    I2cwbyte 0 "H adress of EEPROM
    I2cwbyte 0 "L adress of EEPROM
    I2cwbyte D_w "data to EEPROM
    I2cstop "stop condition
    Waitms 10

    "********** read byte from EEPROM********************
    I2cstart "generate start
    I2cwbyte &B1010_0000 "send device adsress
    I2cwbyte 0 "H address of EEPROM
    I2cwbyte 0 "L address of EEPROM
    I2cstart "repeated start
    I2cwbyte &B1010_0001 "slave address (read)
    I2crbyte D_r , Nack "read byte from EEPROM
    I2cstop "generate stop

    Lcd "D_w= "
    Lcd D_w "show byte on LCD
    Lowerline
    Lcd "D_r= "
    Lcd D_r
    End

    دانلود کد Bascom
    دانلود کد Hex





    لیست کل یادداشت های این وبلاگ
    آهنگ جدید و زیبای کورش بیژنی به نام بغض
    آهنگ جدید و بسیار زیبای مجید ابراهیم زاده و مهدی بهمنی
    بازی های جاوا
    Samsung D800
    آهنگ جدید و زیبای همراه با صدای مهدی مقدم با دو کیفیت
    تم سونی اریکسون ...
    دانلود موزیک ویدئوی Matin 2 Hanjare
    دانلود موزیک ویدئوی DJ Aligator Ft.Mohammad Esfahani - I"m Comin
    کلیپ
    بازی بوکس برای موبایل
    تم برای نوکیا
    ویدیوی جدید و بسیار زیبای گوگوش به نام همصدا با دو کیفیت
    بازی جدید موبایل Mortadelo Y Filemon
    موزیک ویدیو جدید و بسیار زیبای سیاوش قمیشی به نام دنبال خودت نگر
    محمدرضا گلزار
    [همه عناوین(1317)]