۱۱-آذر-۱۳۸۸, ۱۱:۱۳:۰۷
۱۱-آذر-۱۳۸۸, ۱۱:۲۴:۳۵
این کتاب رو بخون : http://forum.iranled.com/showthread.php?tid=10869
توضیحات کامل داده شده !
اینم از اینجا : http://forum.iranled.com/showthread.php?tid=13706
با ارتباط سریال I2C حداکثر با کلاک 400کیلو هرتز میشه تبادل اطلاعات کرد .با این نوع ارتباط سریال حداکثر به فاصله 80 سانتی متر میشه به سخت افزار وصلش کرد.
با دستور
که valueue میتونه از 1 تا 255 باشه و مقدار کلاک رو تعیین میکنه . این مقدار بطور پیش فرض 5 هستش. یعنی با توجه به اسیلاتور 1 مگا میشه کلاک 200 کیلو هرتز برای ارتباط .
این مقدار هر چی بیشتر بشه کلاک بلند تر و فرکانس کمتر میشه.
با دستور زیر یک پین برای این نوع ارتباط اختصاص داده میشه :
پایه SCL پایه اعمال کلاک هستش
با دستور زیر یک پین برای این نوع ارتباط اختصاص داده میشه :
پایه SDA پایه تبادل اطلاعات هستش
با دستورات زیر هم میشه اطلاعاتو ارسال یا دریافتش کرد
با این نوع ارتباط سریال حداکثر به فاصله 80 سانتی متر میشه به سخت افزار وصلش کرد.
توضیحات کامل داده شده !
اینم از اینجا : http://forum.iranled.com/showthread.php?tid=13706
با ارتباط سریال I2C حداکثر با کلاک 400کیلو هرتز میشه تبادل اطلاعات کرد .با این نوع ارتباط سریال حداکثر به فاصله 80 سانتی متر میشه به سخت افزار وصلش کرد.
با دستور
کد php:
CONFIG I2CDELAY = valueue
که valueue میتونه از 1 تا 255 باشه و مقدار کلاک رو تعیین میکنه . این مقدار بطور پیش فرض 5 هستش. یعنی با توجه به اسیلاتور 1 مگا میشه کلاک 200 کیلو هرتز برای ارتباط .
این مقدار هر چی بیشتر بشه کلاک بلند تر و فرکانس کمتر میشه.
با دستور زیر یک پین برای این نوع ارتباط اختصاص داده میشه :
کد php:
CONFIG SCL = PORTB.5
با دستور زیر یک پین برای این نوع ارتباط اختصاص داده میشه :
کد php:
CONFIG SDA = PORTB.7
با دستورات زیر هم میشه اطلاعاتو ارسال یا دریافتش کرد
کد php:
I2csend &H40 , A
کد php:
I2creceive &H40 , B
۱۱-آذر-۱۳۸۸, ۱۳:۴۴:۱۲
ممنون دو سوال دیگه باقی میمونه و اینه که 1- تو دستورات ارسال و دریافت A و B چی هستند؟
2- ترتیب خوندن و نوشتن چه طوریه؟ با شماره هست یا با حروف یا ایندکس داره یا ... ؟
با تشکر فراوان.
2- ترتیب خوندن و نوشتن چه طوریه؟ با شماره هست یا با حروف یا ایندکس داره یا ... ؟
با تشکر فراوان.
۱۱-آذر-۱۳۸۸, ۱۷:۰۰:۱۷
مهندس همون کتاب رو بخون !
http://forum.iranled.com/showthread.php?tid=10869
جواب سوال هاتو پیدا می کنی !
http://forum.iranled.com/showthread.php?tid=10869
جواب سوال هاتو پیدا می کنی !
۱۱-آذر-۱۳۸۸, ۲۱:۴۹:۴۴
من این کتاب رو دانلود کردم و خوندم
I2csend &H40 , A فقط نفهمیدم &h40 آدرس کجاست ؟
اما حدس میزنم آدرس ذخیره ی یک بایت در IC حافظه باشه درسته؟ اگه درسته این آدرس از چند تا چنده؟
اگه هم درست نیست این آدرس چیه؟ و همون سوال قبلی که ترتیب خوندن و نوشتن چه طوریه؟ با شماره هست یا با حروف یا ایندکس داره یا ... ؟
در ضمن آی سی با حافظه 512k تو بازار هست یا نه اگه هست شمارش چیه؟
ببخشید اگه سوال ها زیاد شد.
با تشکر فراوان.
I2csend &H40 , A فقط نفهمیدم &h40 آدرس کجاست ؟
اما حدس میزنم آدرس ذخیره ی یک بایت در IC حافظه باشه درسته؟ اگه درسته این آدرس از چند تا چنده؟
اگه هم درست نیست این آدرس چیه؟ و همون سوال قبلی که ترتیب خوندن و نوشتن چه طوریه؟ با شماره هست یا با حروف یا ایندکس داره یا ... ؟
در ضمن آی سی با حافظه 512k تو بازار هست یا نه اگه هست شمارش چیه؟
ببخشید اگه سوال ها زیاد شد.
با تشکر فراوان.
۱۲-آذر-۱۳۸۸, ۱۴:۰۰:۴۵
سلام این آی سی که معرفی کردید تو دیتا شیتش نوشته 1024k هست نمیدونم شما اشتباه نوشتید یا من اشتباه خوندم.
با تشکر.
با تشکر.
۱۲-آذر-۱۳۸۸, ۱۴:۰۹:۳۷
1024 کیلو بیت که می شه 128 کیلو بایت !
۱۲-آذر-۱۳۸۸, ۲۲:۲۸:۵۲
نه عزیز تو دیتا شیت دقیقا نوشته 1024k حتی 1M هم نوشته.
![[تصویر: 1259864509.jpg]](http://up.iranblog.com/4/1259864509.jpg)
![[تصویر: 1259864509.jpg]](http://up.iranblog.com/4/1259864509.jpg)
۱۳-آذر-۱۳۸۸, ۰۰:۱۰:۲۱
خوب 1024 کیبو بیت که می شه 128 کیلو بایت !
1بایت = 8 بیت !
1بایت = 8 بیت !
۱۳-آذر-۱۳۸۸, ۰۸:۳۵:۲۷
میدونم 1 بایت = 8 بیت اما چون دو دیتا شیتش نوشته بود 1024k و حتی 1M رو هم آورده بود فکر کردم منظورش 1024KB هست.
بازم ممنون از راهنمایی هاتون ولی به این سوال من پاسخ ندادید:
بازم ممنون از راهنمایی هاتون ولی به این سوال من پاسخ ندادید:
نقل قول: من این کتاب رو دانلود کردم و خوندم
I2csend &H40 , A فقط نفهمیدم &h40 آدرس کجاست ؟
اما حدس میزنم آدرس ذخیره ی یک بایت در IC حافظه باشه درسته؟ اگه درسته این آدرس از چند تا چنده؟
اگه هم درست نیست این آدرس چیه؟ و همون سوال قبلی که ترتیب خوندن و نوشتن چه طوریه؟ با شماره هست یا با حروف یا ایندکس داره یا ... ؟
در ضمن آی سی با حافظه 512k تو بازار هست یا نه اگه هست شمارش چیه؟
ببخشید اگه سوال ها زیاد شد.
با تشکر فراوان.
۱۳-آذر-۱۳۸۸, ۱۲:۲۴:۳۲
>>>3-ارتباط سریال i2c یا 2-wire
ویژگی های این ارتباط به شرح زیر است:
1-
در این ارتباط از دوسیم همرا با گراند و VCC ، که درمجموع چهار سیم میشود ، برای انتقال دیتا استفاده میشود
2-
بالا ترین فرکانس کلاک 400 کیلو هرتز است
3-
در این ارتباط میتوان تعداد نامحدود وسیله جانبی با ادرس سخت افزاری مختلف را به هم متصل کرد
4-
حداکثر طول کابل ارتباطی باسیم شیلد 80 سانتی متر است
5-
کلاک ارتباط I2C به شدت به کلاک سیستم (فرکانس کریستال ) وابسته است
برای ارتباط I2C از دو پایه SCL و SDA (PORTC.0 و PORTC.1 میگرو مگا 16) استفاده میشود که پایه SDA پایه داده و پایه SCL پایه کلاک میباشد.( دو پایه مزکور پایه های پیش فرض میباشند ، شما میتوانید با دستوراتی که گفته میشود انها را به پایهای دلخواه خود تغییر دهید)
دستورات مربوط به راه اندازی I2C در محیط بسکام:
>تعیین کلاک I2C :
کد php:
Config I2cdelay = X
>تعیین پایه های داده و کلاک I2C :
با دستور زیر پایه SCL (پایه کلاک) تعیین میشود :
کد php:
CONFIG SCL = pin
با دستور زیر پایه SDA (پایه داده) تعیین میشود :
کد php:
CONFIG SDA = pin
Pin نام یکی از پایه های دلخواه میکرو میباشد .
بعد از انکه I2C پیکر بندی شد با استفاده از دستور زیر میتوان ارتباط را اغاز کرد
کد php:
I2CSTART
با این دستور ارسال ودریافت داده شروع میشودشما همچنین میتوانید با دستور زیر به ارسال ودریافت داده خاتمه دهید:
کد php:
I2CSTOP
با استفاده از دستور زیر میتوان داده ای را به باس I2C فرستاد:
کد php:
I2CSEND slave, var
کد php:
I2CSEND slave, var , bytes
Var : عدد ثابت یا متغییری است که میخواهیسم ان را ارسال کنیم
: bytesبا این گزینه شما میتوانید تعداد بایت دلخواه را به باس ارسال کنید (این گزینه اختیاری است)
فرم خلاصه شده این دستور به شکل زیر است:
کد php:
I2CWBYTE val
برنامه فرستنده:
کد php:
$regfile = "m32def.dat"
$crystal = 1000000
Config Lcd = 16 * 2
Config Lcdpin = Pin , Db4 = Pinb.2 , Db5 = Pinb.3 , Db6 = Pinb.4 , Db7 = Pinb.5 , Rs = Pinb.0 , E = Pinb.1
Config Kbd = Porta
Config I2cdelay = 5
Config Sda = Portc.1
Config Scl = Portc.0
Dim A As Byte
I2cstart
W:
A = Getkbd()
If A > 15 Then
Goto W
End If
I2csend &H40 , A
Locate 2 , 1
Lcd A
Goto W
End
با استفاده از دستور زیر میتوان داده ای را از باس I2C دریافت کرد:
کد php:
I2CRECEIVE slave, var
کد php:
I2CRECEIVE slave, var , b2W, b2R
Var : عدد ثابت یا متغییری است که کد دریافت شده در ان قرار میگیرد
: bytesبا این گزینه شما میتوانید تعداد بایت دلخواه را از باس دریافت کنید (این گزینه اختیاری است).(توجه داشته باشید که تعداد بایت دریافتی و ارسالی باید با هم برابر باشند در غیر اینصورت اطلاعات دریافتی ناقص خواهد بود.)
فرم خلاصه شده این دستور به شکل زیر است:
کد php:
I2CRBYTE var, ack/nack
ack/nack :زمانی که بخواهیم بیشتر از یک بایت را از باس بخوانیم باید از ack استفاده کنیم و زمانی که میخواهیم اخرین بایت را از باس بخوانیم از nack استفاده میکنیم.مثال:
این برنامه مربوط به گیرنده مداری است که برنامه ان را در بالا مشاهده فرمودید:
کد php:
$regfile = "m32def.dat" : $crystal = 1000000
Config Lcd = 16 * 2
Config Lcdpin = Pin , Db4 = Pina.0 , Db5 = Pina.1 , Db6 = Pina.2 , Db7 = Pina.3 , Rs = Pina.4 , E = Pina.5
Config I2cdelay = 5
Config Sda = Portc.1
Config Scl = Portc.0
Dim A As Byte
I2cstart
W:
I2creceive &H40 , A
If A < 16 Then : Locate 1 , 1 : Lcd A : End If
Goto W
End
![[تصویر: 1259964912.png]](http://up.iranblog.ir/4/1259964912.png)
منبع : کتاب بسکام BASCOM