این سری آی سی ها یک نوع ایپرام سریال با اینترفیس I2C هستن. برای ارتباط روتین های آماده ای وجود داره با کد ویژن یا avrlib. دو خط sda و scl بایستی با استفاده از دو مقاومت مثلا 2.2 کیلو به مثبت وصل بشن. اگه بخوایین چند تا آی سی رو همزمان استفاده کنین میتونین از خطوط A0 تا A2 اونها برای آدرس دهی استفاده کنین. مثلا اگر این سه تا (که در همه انواع سه تا هم ممکنه نباشن) به زمین وصل بشه میشه آی سی شماره صفر و اگر تنها A0 به vcc وصل بشه میشه شماره 1 و الی آخر. در زمان خوندن یا نوشتن شماره آی سی در بایت فرمان به همه آی سی ها بطور مشترک ارسال میشه. فقط اونی که این شماره باهاش بخونه جواب میده.
سلام,
ممنون از جوابتون. یک مدار همینطور که گفتید پیدا کردم و بستم ولی مشکلم در برنامه است. این برنامه را از کتاب اقای کاهه برداشتم. اگر میشه با توجه به برنامه به این سوالات پاسخ بدید (واقعا ممنون میشم).
برنامه:
$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
اولا مرده شور این زبون رو ببرن که من هیچی راجع بهش نمیدونم!!!!
ثانیا با توجه به اطلاعات موجود در راهنمای Bascom این I2cdelay میزان تاخیر یا بهتر بگیم سرعت ارتباط از طریق خط i2c رو تعیین میکنه. البته تا جایی که من میدونم تجهیزاتی که از طریق خط i2c میتونن ارتباط برقرار کنن از سه سرعت پشتیبانی میکنن. همگی از 100 کیلو هرتز. خیلی ها از 400 کیلوهرتز و بعضی ها تا 1 مگا هرتز. این عدد پس از I2cdelay طول یک پالس و در نتیجه سرعت ارتباط رو تعیین میکنه. بهتره که این مقدار رو برای سرعت استاندارد 100 کیلو هرتزی یعنی 10 میکرو ثانیه تعیین کنین:
Config I2cdelay = 10
راجع به بقیه اش چیز زیادی نمیدونم اما اینو میدونم که بایستی برای خوندن یا نوشتن یک درخواست شامل هدر - آدرس آی سی مورد نظر - نحوه انجام عمل (خوندن یا نوشتن) - آدرس اطلاعات درون آی سی و اگه عمل نوشتن هست اطلاعات مورد نظر به آی سی ارسال بشه و در انتها آی سی اگر عمل خوندن انجام شده اطلاعات رو براتون ارسال میکنه. این دستورات اضافی برای انجام پروتکل تبادل اطلاعات با این آی سی ها هست.
ضمنن اینا همکاری نیست! بدهکاریه. بقیه هم به من یاد دادن. اگه کم و کسری داره ببخشید. فکر میکنم اطلاعات خیلی تخصصی تر رو بتونین از آقای طراح بپرسین. یا از دیتا شیت در بیارین. که خوب البته هیچ کدوم به پای تجربیات آقای طراح نمیرسن.
دیدگاه