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

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

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

پروتکل ارتباطی 1WIRE یکی از جدید ترین پروتکل های استفاده شده در میکرو کنترلرهای AVR که توسط شرکت Dallas طراحی شده است. بر عکس بقیه پروتکل ها, محدودیت کابل استفاده شده آن تا 30 متر است. این پروتکل شبیه به پروتکل های شبکه طراحی شده است و قابلیت شناسایی سیستم های متصل به میکرو را دارد. سرعت شناسایی 50 سیستم در ثانیه است. سیستم هایی که به این روش مجهز هستند دارای یک ID به طول 8 بایت بوده که شناسه سیستم مورد نظر است و همین ID توسط میکرو باید در اول برنامه برای پیدا کردن سیستم مورد نظر جستجو شود.

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

:: پیکر بندی پروتکل ارتباط 1wire

Config 1wire = port.x

این دستور یک پایه دلخواه را برای استفاده از پروتکل تک سیمه پیکر بندی می کند.

نکته : پایه مورد نظر باید توسط یک مقاومت 4.7k اهم به ولتاژ 5 ولت, Pull Up شود.

:: جستجوی سیستم در پروتکل ارتباط 1wire

Var (8) = 1wserachfirst  (port , pin)

Var (8) = 1wsearchfirst ()

همانطوری که گفته شد باید قبل از هر کاری سیستم را ازطریق id آن جستجو کرد. این کار با این دستور انجام می شود و در متغیر آرایه var قرار می گیرد. آرایه var باید از نوع byte و دارای 8 آرایه باشد. در صورتی که از پیکر بندی پروتکل استفاده کرده اید دیگر نیازی به نوشتن port و pin ندارید چون قبلا معرفی شده اند.

:: جستجوی سیستم دیگر در پروتکل ارتباط 1wire

Var (8) = 1wsearchnext (port , pin)

Var (8) = 1wsearchnext ()

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

Dim reg_no (8) as byte

Do

Reg_no (1) = 1wsearchnext ( portb,0 )

For l = 1 to 8

Print hex (reg_no(i));

Next

Loop Until Err = 1

نکته: در صورتی که از پیکر بندی پروتکل استفاده کرده اید دیگر نیازی به نوشتن port و pin ندارید چون قبلا معرفی شده اند.

:: قطع کردن پروتکل ارتباط 1wire

1wireset

1wreset , port , pin

این دستور برای قطع ارتباط با سیستم متصل به میکرو است.

نکته: در صورتی که از پیکر بندی پروتکل استفاده کرده اید دیگر نیازی به نوشتن port و pin ندارید چون قبلا معرفی شده اند.

:: خواندن داده از پروتکل ارتباط 1wire

Var = 1wread ([n])

Var = 1 waread (n , port , pin)

به تعداد n بایت از پایه پروتکل تک سیمه داده خوانده می شود و در متغیر var قرار می گیرد.

:: نوشتن داده در پروتکل ارتباط 1wire

1wwrite var , [n]

1wwrite var , n , port , pin

به تعداد n بایت در پایه پروتکل تک سیمه داده محتوی متغیر var ارسال می شود.

نکته : برای استفاده از این پروتکل نیاز به کتابخانه با نام mcsbyte.lib دارید.

$regfile = “m48def.dat”

$lib “mcsbyte.lib”

Config 1wire = portb.0                ‘ use this pin

Dim reg_no (8) as byte

Dim l as byte , w as word

Dim ar (8) as byte , a as byte , l as byte

Do

Reg_no (1) = 1wsearchnext()       ‘now search for other devices

For l = 1 to 8

Print hex (reg_no(i));

Next

Loop until err = 1

Reg_no(1) = 1wsearchfrist()

For l = 0 to 3                                 ‘for pin 0-3

1wreset pinb , l

1wwrite pinb , l

1wwrite & h33 ,1,pin,l

Ar(1) = 1wread (8 , pinb , l)

For a = 1 to 8

Print hex (ar(a));

Next

For l = 0 to 3                                ‘for pin 0-3

1wreset pinb , l

1wwrite & h33 , 1,pinb , l

Ar (1) = 1wread (8 , pinb , 1)

For a = 1 to 8

Print hex (ar(a));

Next

Next

end

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

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

 نویسنده : electronics98

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

پاسخ دهید

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

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

TABLE-ISP

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

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