خانه / آموزش میکروکنترلرهای AVR / آموزش برنامه نویسی پیشرفته BASIC – ارتباط سریال I2C

آموزش برنامه نویسی پیشرفته BASIC – ارتباط سریال I2C

آموزش برنامه نویسی پیشرفته BASIC – ارتباط سریال I2C

پایه های مورد استفاده پروتکل I2C در AVR به نام پایه SCL و SDA است. در مطالب ابتدایی این آموزش با این ارتباط و پایه های آن آشنا شدید. البته برای ارتباط باید ازیک مدار مقاومتی مانند مدار زیر استفاده کنید. (مدار زیر نحوه ارتباط یک تراشه با میکروکنترلر AVR از طریق ارتباط I2C را نشان می دهد).

نحوه ارتباط یک تراشه با میکروکنترلر AVR از طریق ارتباط I2C

نکته : حداکثر فرکانس کار این ارتباط 400khz می باشد.

در ارتباط I2C هم مانند ارتباط سریال spi یک سیستم باید master و دیگر سیستم ها به صورت slave طرح ریزی شوند.

نحوه ارتباط سریال spi یک سیستم Master با دیگر سیستم ها به صورت Slave

نکته : برد این ارتباط با مقدار مقاومتی حدود چند سانتی متر می باشد و بر ای فواصل دور نمی توان از آن استفاده کرد. در فواصل دور باید سیگنال تقویت شود.مدار زیر برای فواصل دور و تا فاصله 80cm طراحی شده است.

مدار تقویت کننده جهت افزایش فاصله ارتباط سریال I2C تا 80 سانتی متر

:: پیکر بندی پایه data در ارتباط سریال i2c

Config sda = pin.x

این دستور پایه sda را به عنوان پایه data برای میکرو معرفی می کند.

:: پیکر بندی پایه clock در ارتباط سریال i2c

Config scl = pin.x

این دستور پایه scl را به عنوان پایه clock برای میکرو معرفی می کند.

:: تعیین فرکانس کلاک در ارتباط سریال i2c

Config i2cdelay = x

این دستور مقدار x را در 10k ضرب کرده و به عنوان فرکانس کلاک i2c استفاده می کند.

نکته : x می تواند بین 1 تا 40 تغییر کند و در صورت قرار دادن مقدار بیشتر همان مقدار 40 را در نظر می گیرد.

:: پیکر بندی پایه clock در ارتباط سریال i2c

Config scl = pin.x

این دستور پایه scl را به عنوان پایه clock برای میکرو معرفی می کند.

:: دریافت داده از خط ارتباط سریال i2c

I2creceive  address , var , nt , nr

این دستور از پورت ارتباط سریال i2c داده دریافت و در متغیر var می ریزد.

Address : در زمانی که سیستم slave یک حافظه سریال متصل به پورت i2c باشد می توانید آدرس حافظه را تعیین و از آن آدرس داده دریافت کنید.

Nt : مشخص کننده تعداد بایت ارسالی

Nr : مشخص کننده تعداد بایت دریافتی

:: ارسال داده از خط ارتباط سریال i2c

I2cxend address , var , nt

این دستور به پورت ارتباط سریال i2c داده درون متغیر var را ارسال می کند.

Address : در زمانی که سیستم slave یک حافظه سریال متصل به پورت i2c باشد می توانید آدرس حافظه را تعیین و به آن آدرس داده ارسال کنید.

Nt : مشخص کننده تعداد بایت ارسالی

:: شروع پروتکل ارتباط سریال i2c

I2cstart

این دستور پورت i2c را آماده ارسال داده می کند.

:: پایان پروتکل ارتباط سریال i2c

I2cstop

این دستور پورت i2c را قطع می کند.

:: دریافت داده از پروتکل ارتباط سریال i2c

I2crbyte var , ack|nack

این دستور از پورت i2c داده دریافت کرده و در متغیر var می ریزد. برای ادامه کار در صورتی که بخواهید بایتی دیگر را بخوانید باید از گزینه ack و اگر آخرین بایت داده دریافتی شما باشد از گزینه nack استفاده می شود.

:: ارسال داده به پروتکل ارتباط سریال i2c

I2cwbyte var

این دستور به پورت i2c داده درون متغیر var را ارسال می کند.

پروژه :

در پروژه زیر ارتباط بین سنسور دمای DS1624 و میکروکنترلر AVR توسط پروتکل ارتباط سریال i2c می باشد. میکروکنترلر AVR توسط ارتباط سریال UART به کامپیوتر متصل بوده و مقدار دما در محیط Rerminal Emulator مشاهده می شود. این سنسور دما مقادیر دمای خود را توسط ارتباط سریال ارسال می کند.

$regfile = “m88def.dat”

$crystal = 8000000

$baud = 19200

Config scl = portd.1

Config scl = portd.1

Config sda = portd.3

Dim l2ctemp as byte

Const ds 1624wr = & b10010000

Const ds 1624rd = & b10010001

L2cstart

L2cwbyte ds 1624wr

L2cwbyte &hac

L2cwbyte &h00

L2cstop

Waitms 25

L2cstart

L2cwbyte ds 1624 wr

L2cwbyte & hee

L2cstop

Waitms 25

Do

L2cstart

L2cwbyte ds 1624 wr

L2cwbyte &haa

L2cstart

L2cwbyte ds 1624rd

L2crbyte l2ctemp

L2 crbyte l2ctemp , nack

L2cstop

Print “temperature:” ; str (i2ctemp) ; “degrees” ; chr (13) ;

Waitms 25

Loop

End

 موسسه خیریه حمایت از کودکان مبتلا به سرطان

 دسته اصلی : زبان برنامه نویسی BASIC

 نویسنده : electronics98

 تاریخ انتشار :

پاسخ دهید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *




مطلب پیشنهادی

TABLE-ISP

آموزش برنامه نویسی پیشرفته BASIC – ارتباط سریال SPI

آموزش برنامه نویسی پیشرفته BASIC – ارتباط سریال SPI ارتباط SPI ارتباطی که مانند Uart …