اطلاعیه

Collapse
No announcement yet.

کمک در مورد استفاده از AT24C02A

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

    کمک در مورد استفاده از AT24C02A

    سلام,
    چند وقت پیش این حافظه بدستم رسید ولی به هیچ عنوان نمیدونم چه جوری باهاش کار کنم. اگر میشه یکم توضیح بدید.

    #2
    پاسخ : کمک در مورد استفاده از AT24C02A

    این سری آی سی ها یک نوع ایپرام سریال با اینترفیس I2C هستن. برای ارتباط روتین های آماده ای وجود داره با کد ویژن یا avrlib. دو خط sda و scl بایستی با استفاده از دو مقاومت مثلا 2.2 کیلو به مثبت وصل بشن. اگه بخوایین چند تا آی سی رو همزمان استفاده کنین میتونین از خطوط A0 تا A2 اونها برای آدرس دهی استفاده کنین. مثلا اگر این سه تا (که در همه انواع سه تا هم ممکنه نباشن) به زمین وصل بشه میشه آی سی شماره صفر و اگر تنها A0 به vcc وصل بشه میشه شماره 1 و الی آخر. در زمان خوندن یا نوشتن شماره آی سی در بایت فرمان به همه آی سی ها بطور مشترک ارسال میشه. فقط اونی که این شماره باهاش بخونه جواب میده.

    دیدگاه


      #3
      پاسخ : کمک در مورد استفاده از AT24C02A

      سلام,
      ممنون از جوابتون. یک مدار همینطور که گفتید پیدا کردم و بستم ولی مشکلم در برنامه است. این برنامه را از کتاب اقای کاهه برداشتم. اگر میشه با توجه به برنامه به این سوالات پاسخ بدید (واقعا ممنون میشم).

      برنامه:

      $regfile = "M32def.dat"
      $crystal = 8000000
      $baud = 9600
      Config Serialout = Buffered , Size = 255
      Config Lcdpin = Pin , Db4 = Portc.4 , Db5 = Portc.5 , Db6 = Portc.6 , Db7 = _ Portc.7 , E = Portc.3 , Rs = Portc.2
      Config Sda = Portc.0
      Config Scl = Portc.1
      Config I2cdelay = 1
      Config Kbd = Porta
      Declare Sub Readeepromserial
      Const Eewrite = 160
      Const Eeread = 161
      Dim A As Byte
      Dim B As Byte
      Dim Address As Word
      Lcd "Start Reading…"
      Address = &H0000
      While Address < &H7FFF
      A = High(address)
      Print "a:" ; Hex(a)
      B = Low(address)
      Print "b:" ; Hex(b)
      Call Readeepromserial
      Print Address
      Wend
      End 'end program

      Sub Readeepromserial
      I2cstart
      I2cwbyte Eewrite
      I2cwbyte A
      I2cwbyte B
      I2cstart
      I2cwbyte Eeread
      I2crbyte A , Nack
      I2cstop
      Print A
      Incr Address
      End Sub Readeepromserial

      سوالات:

      1- I2Cdelay برای چیست و چه کاری انجام می دهد؟
      2- متغییر های Address, A و B چه کاری انجام می دهند؟
      3- دستورات زیر چه کاری را انجام میدهد؟

      Address = &H0000
      While Address < &H7FFF
      A = High(address)
      Print "a:" ; Hex(a)
      B = Low(address)
      Print "b:" ; Hex(b)
      Call Readeepromserial
      Print Address
      Wend

      خیلی ممنون از همکاریتون.

      دیدگاه


        #4
        پاسخ : کمک در مورد استفاده از AT24C02A

        اولا مرده شور این زبون رو ببرن که من هیچی راجع بهش نمیدونم!!!!
        ثانیا با توجه به اطلاعات موجود در راهنمای Bascom این I2cdelay میزان تاخیر یا بهتر بگیم سرعت ارتباط از طریق خط i2c رو تعیین میکنه. البته تا جایی که من میدونم تجهیزاتی که از طریق خط i2c میتونن ارتباط برقرار کنن از سه سرعت پشتیبانی میکنن. همگی از 100 کیلو هرتز. خیلی ها از 400 کیلوهرتز و بعضی ها تا 1 مگا هرتز. این عدد پس از I2cdelay طول یک پالس و در نتیجه سرعت ارتباط رو تعیین میکنه. بهتره که این مقدار رو برای سرعت استاندارد 100 کیلو هرتزی یعنی 10 میکرو ثانیه تعیین کنین:

        Config I2cdelay = 10

        راجع به بقیه اش چیز زیادی نمیدونم اما اینو میدونم که بایستی برای خوندن یا نوشتن یک درخواست شامل هدر - آدرس آی سی مورد نظر - نحوه انجام عمل (خوندن یا نوشتن) - آدرس اطلاعات درون آی سی و اگه عمل نوشتن هست اطلاعات مورد نظر به آی سی ارسال بشه و در انتها آی سی اگر عمل خوندن انجام شده اطلاعات رو براتون ارسال میکنه. این دستورات اضافی برای انجام پروتکل تبادل اطلاعات با این آی سی ها هست.

        ضمنن اینا همکاری نیست! بدهکاریه. بقیه هم به من یاد دادن. اگه کم و کسری داره ببخشید. فکر میکنم اطلاعات خیلی تخصصی تر رو بتونین از آقای طراح بپرسین. یا از دیتا شیت در بیارین. که خوب البته هیچ کدوم به پای تجربیات آقای طراح نمیرسن.

        دیدگاه

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