ارتباط بین دو میکروکنترلر

saalek110

Well-Known Member
Two microcontrollers will exchange data victimisation either wired or wireless protocols.
Wired include:
  • Parallel port
  • I²C (Inter-Integrated Circuit)
  • SPI (Serial Peripheral Interface)
  • UART (Universal Asynchronous Receiver-Transmitter)
  • USB (Universal Serial Bus)
  • CAN (Controller Area Network), often used in automobiles
  • LIN (Local Interconnect Network), a replacement for CAN
  • Ethernet
 

saalek110

Well-Known Member
ارتباط بین دو میکرو با یک سیم
یکی از پروتکل ها در avr پروتکل uart (سریال ) می باشد.در این روش بین دو میکرو توسط 2 سیم به هم اتصال پیدا می کنند که در این حالت دو میکرو می توانند به یکدیگر اطلاعات رد و بدل کنندو اگر می خواهید ارتباط یک طرفه باشد به یک سیم بیشتر نیاز نیست.

منظور از یک طرفه این است که یک میکرو فقط اطلاعات به میکرو دوم بفرستد و میکرو دوم ان را دریافت کند و دیگر میکرو دوم اطلاعاتی به میکرو اول نفرستد.

و اما خود uart بر دو نوع 1:سخت افزاری 2: نرم افزاری تقسیم می شود.

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

در میکرو های avr 2 پایه وجود دارد که علاوه بر پورت ورودی و خروجی به عنوان پورت سریال استفاده می شود که دردیتا شیت میکرودر کنار این پورت ها RXD و TXD نوشته شده است.

مثلا در میکرو ATMEGA8 به صورت زیر مشخص شده است.
سالک: عکس در سایت نبود.

پایه ای که با نام RXD مشخص شده است وظیفه دریافت اطلاعات را بر عهده دارد و پایه ای که با نام TXD مشخص شده است وظیفه ارسال اطلاعات را بر عهده دارد.

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

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

وشماتیک مدار در زیر اورده شده است.
سالک: عکس در سایت نبود.


برنامه ای سی فرستنده:
PHP:
'Tx

$regfile = "m8def.dat"

$crystal = 1000000

$baud = 5000

Dim A As Byte

Config Portb = Input

Portb = 255

A = 0

Main:

Do

A = Pinb

Printbin A

Loop

برنامه بالا برنامه ای سی فرستنده اطلاعات (tx)می باشد.که ابتدا نوع میکرو مشخص شده سپس در خط دوم فرکانس میکرو تعیین شده است.

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

برای ارسال اطلاعات از دستور Printbin استفاده می شود مثلا برای ارسال یک متغییر به صورت زیر دستور را می نویسیم
PHP:
Printbin A
برنامه ای سی گیرنده(Rx ):


PHP:
'Rx

$regfile = "m8def.dat"

$crystal = 1000000

$baud = 5000

Config Lcd = 16 * 2

Config Lcdpin = Pin , Db4 = Portb.3 , Db5 = Portb.2 , Db6 = Portb.1 , _

Db7 = Portb.0 , E = Portb.4 , Rs = Portb.5

Dim A As Byte

A = 0

Cls

Cursor Off

Lcd "Hello"

Locate 2 , 1

Lcd "WWW.YAZDKIT.COM "

Wait 2

Cls

Ali:

Home

Lcd "Data:" ; A ; " "

Locate 2 , 1

Lcd "www.yazdkit.com"

Inputbin A

Goto Ali
در برنامه گیرنده همانطور که گفتم مقدار فرکانس و باودریت مانند فرستنده می باشد.

اما برای دریافت اطلاعات از دستور Inputbin می کنیم و برای اینکه اصلاعات در متغییری ذخیره شود از دستور زیر استفاده می کنیم.
PHP:
Inputbin A


 
آخرین ویرایش:

saalek110

Well-Known Member
چون I2C میکروی AVR به عنوان master استفاده میشه و به طور "سخت افزاری" قابلیت slave شدن رو نداره، بهتره که برای ارتباط 2 مبکرو از uart به جای I2C استفاده کنید.


در تاپیک بالا بحث بین روش های مختلف ارتباط بین دو میکروکنترلر هست که خودتان می توانید بخوانید.
 

saalek110

Well-Known Member

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

saalek110

Well-Known Member

ارتباط رادیویی دو میکروکنترلر AVR (اتصال بی سیم RF با کدویژن)​



سایت زیر هم فکر کنم مشابه همین پروژه است:

 
آخرین ویرایش:

saalek110

Well-Known Member
آخرین ویرایش:

جدیدترین ارسال ها

بالا