ايران ويج

نسخه‌ی کامل: تغذیه تابلو و کارت mmc
شما در حال مشاهده‌ی نسخه‌ی متنی این صفحه می‌باشید. مشاهده‌ی نسخه‌ی کامل با قالب بندی مناسب.
صفحه‌ها: 1 2 3 4
ممنون از راهنماییتون ولی من جست و جو کردم ولی مطلبی پیدا نکردم اگه یه مطلب در باره نوشتن و خواندن از این IC دارید برازید ممنون میشم.

با تشکر.
این کتاب رو بخون : http://forum.iranled.com/showthread.php?tid=10869
توضیحات کامل داده شده !


اینم از اینجا : 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 
پایه SCL پایه اعمال کلاک هستش


با دستور زیر یک پین برای این نوع ارتباط اختصاص داده میشه :
کد php:
CONFIG SDA PORTB.7 
پایه SDA پایه تبادل اطلاعات هستش


با دستورات زیر هم میشه اطلاعاتو ارسال یا دریافتش کرد
کد php:
I2csend &H40 
کد php:
I2creceive &H40 
با این نوع ارتباط سریال حداکثر به فاصله 80 سانتی متر میشه به سخت افزار وصلش کرد.
ممنون دو سوال دیگه باقی میمونه و اینه که 1- تو دستورات ارسال و دریافت A و B چی هستند؟
2- ترتیب خوندن و نوشتن چه طوریه؟ با شماره هست یا با حروف یا ایندکس داره یا ... ؟

با تشکر فراوان.
مهندس همون کتاب رو بخون !

http://forum.iranled.com/showthread.php?tid=10869

جواب سوال هاتو پیدا می کنی !
من این کتاب رو دانلود کردم و خوندم
I2csend &H40 , A فقط نفهمیدم &h40 آدرس کجاست ؟
اما حدس میزنم آدرس ذخیره ی یک بایت در IC حافظه باشه درسته؟ اگه درسته این آدرس از چند تا چنده؟
اگه هم درست نیست این آدرس چیه؟ و همون سوال قبلی که ترتیب خوندن و نوشتن چه طوریه؟ با شماره هست یا با حروف یا ایندکس داره یا ... ؟
در ضمن آی سی با حافظه 512k تو بازار هست یا نه اگه هست شمارش چیه؟

ببخشید اگه سوال ها زیاد شد.

با تشکر فراوان.
سلام این آی سی که معرفی کردید تو دیتا شیتش نوشته 1024k هست نمیدونم شما اشتباه نوشتید یا من اشتباه خوندم.

با تشکر.
1024 کیلو بیت که می شه 128 کیلو بایت !
نه عزیز تو دیتا شیت دقیقا نوشته 1024k حتی 1M هم نوشته.

[تصویر:  1259864509.jpg]
خوب 1024 کیبو بیت که می شه 128 کیلو بایت !

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 میتواند از 1 تا 255 باشد ، رابطه ای بین کلاک و عدد وجود ندارد ، مثلا برای عدد 10 کلاک 100 کیلو وبرای عدد 5 کلاک 200 کیلو و برای عدد 1 کلاک 400 کیلو هرتز است ( کلاک I2C به فرکانس کریستال وابسته است ، در این ارتباط باید کریستال نوشته شده در برنامه با کریستال استفاده شده یکی باشد ، همچنین کلاک هر دو دستگاه باید مساوی باشد)

>تعیین پایه های داده و کلاک I2C :
با دستور زیر پایه SCL (پایه کلاک) تعیین میشود :
کد php:
CONFIG SCL pin 
Pin نام یکی از پایه های دلخواه میکرو میباشد .

با دستور زیر پایه SDA (پایه داده) تعیین میشود :
کد php:
CONFIG SDA pin 

Pin نام یکی از پایه های دلخواه میکرو میباشد .

بعد از انکه I2C پیکر بندی شد با استفاده از دستور زیر میتوان ارتباط را اغاز کرد
کد php:
I2CSTART 

با این دستور ارسال ودریافت داده شروع میشودشما همچنین میتوانید با دستور زیر به ارسال ودریافت داده خاتمه دهید:
کد php:
I2CSTOP 

با استفاده از دستور زیر میتوان داده ای را به باس I2C فرستاد:
کد php:
I2CSEND slave, var 
کد php:
I2CSEND slave, var , bytes 
Slave :ادرس گیرنده اطلاعات است که میتواند به فرم یک عدد ثابت یا متغییر باشد
Var : عدد ثابت یا متغییری است که میخواهیسم ان را ارسال کنیم
: bytesبا این گزینه شما میتوانید تعداد بایت دلخواه را به باس ارسال کنید (این گزینه اختیاری است)

فرم خلاصه شده این دستور به شکل زیر است:
کد php:
I2CWBYTE val 
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 Pinb.1
Config Kbd 
Porta
Config I2cdelay 
5
Config Sda 
Portc.1
Config Scl 
Portc.0
Dim A 
As Byte
I2cstart
W
:
Getkbd()
If 
15 Then
Goto W
End 
If
I2csend &H40 A
Locate 2 
1
Lcd A
Goto W
End 
در مثال با کلاک I2C ، 200کیلو هرتز انتخاب شده است همچنین پایهSCL (پایه کلاک)به پورت c.0 ( پایه22 مگا16)و پایه SDA (پایه داده) به پین c.1 (پایه 23 مگا 16) متصل شده است.با دستور I2cstartپروتکل i2c شروع به کار کرده وعدد گرفته شده از کیپد را بخ باس i2c میفرستد ، برای گیرنده ادرس &h40 در نظر گرفته شده است ، برای درک بیشتر موضوع متغیر ارسالی بر روی یک lcd به نمایش در میاید.

با استفاده از دستور زیر میتوان داده ای را از باس I2C دریافت کرد:

کد php:
I2CRECEIVE slave, var 
کد php:
I2CRECEIVE slave, var , b2Wb2R 
Slave :ادرس فرستنده اطلاعات است که میتواند به فرم یک عدد ثابت یا متغییر باشد.
Var : عدد ثابت یا متغییری است که کد دریافت شده در ان قرار میگیرد
: bytesبا این گزینه شما میتوانید تعداد بایت دلخواه را از باس دریافت کنید (این گزینه اختیاری است).(توجه داشته باشید که تعداد بایت دریافتی و ارسالی باید با هم برابر باشند در غیر اینصورت اطلاعات دریافتی ناقص خواهد بود.)

فرم خلاصه شده این دستور به شکل زیر است:
کد php:
I2CRBYTE var, ack/nack 
Var : عدد ثابت یا متغییری است که کد دریافت شده در ان قرار میگیرد
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 Pina.5
Config I2cdelay 
5
Config Sda 
Portc.1
Config Scl 
Portc.0
Dim A 
As Byte
I2cstart
W
:
I2creceive &H40 A
If 16 Then Locate 1 Lcd A End If
Goto 
W
End 
در مثال بالا کلاک I2C ، 200 کیلو هرتز(Config I2cdelay = 5) انتخاب شده است همچنین پایهSCL (پایه کلاک)به پورت c.0 ( پایه22 مگا16)و پایه SDA (پایه داده) به پین c.1 (پایه 23 مگا 16) متصل شده است.با دستور I2cstartپروتکل i2c شروع به کار کرده وعدد گرفته شده از باس را بر روی lcd نمایش میدهد ، برای فرستنده ادرس &h40 در نظر گرفته شده است


[تصویر:  1259964912.png]




منبع : کتاب بسکام BASCOM
صفحه‌ها: 1 2 3 4