آیا می توان یک port یک avr را به صورت ورودی و یک port از یک avr دیگر را به صورت خروجی معرفی کرد و اطلاعات را بین آن ها رد و بدل کرد یا روش خاصی دارد :redface:
اطلاعیه
Collapse
No announcement yet.
اتصال دو avr
Collapse
X
-
پاسخ : اتصال دو avr
سلام نوکرم داداش.
یکی از پروتکل ها در avr پروتکل uart (سریال ) می باشد.در این روش بین دو میکرو توسط 2 سیم به هم اتصال پیدا می کنند که در این حالت دو میکرو می توانند به یکدیگر اطلاعات رد و بدل کنندو اگر می خواهید ارتباط یک طرفه باشد به یک سیم بیشتر نیاز نیست.
منظور از یک طرفه این است که یک میکرو فقط اطلاعات به میکرو دوم بفرستد و میکرو دوم ان را دریافت کند و دیگر میکرو دوم اطلاعاتی به میکرو اول نفرستد.
و اما خود uart بر دو نوع 1:سخت افزاری 2: نرم افزاری تقسیم می شود.
در نوع سخت افزاری پایه ای که اول از طرف کارخانه مشخص شده است می تواند اطلاعات را ارسال کند و در نوع نرم افزاری خودمان پایه ارسال دیتا به صورت سریال را مشخص می کنیم.
در میکرو های avr 2 پایه وجود دارد که علاوه بر پورت ورودی و خروجی به عنوان پورت سریال استفاده می شود که دردیتا شیت میکرودر کنار این پورت ها RXD و TXD نوشته شده است.
مثلا در میکرو ATMEGA8 به صورت زیر مشخص شده است.
پایه ای که با نام RXD مشخص شده است وظیفه دریافت اطلاعات را بر عهده دارد و پایه ای که با نام TXD مشخص شده است وظیفه ارسال اطلاعات را بر عهده دارد.
برنامه ای سی فرستنده:
'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 استفاده می شود مثلا برای ارسال یک متغییر به صورت زیر دستور را می نویسیم
Printbin A
برنامه ای سی گیرنده(Rx ):
'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.eca.ir "
Wait 2
Cls
hamed:
Home
Lcd "Data:" ; A ; " "
Locate 2 , 1
Lcd "www.eca.ir"
Inputbin A
Goto hamed
در برنامه گیرنده همانطور که گفتم مقدار فرکانس و باودریت مانند فرستنده می باشد.
اما برای دریافت اطلاعات از دستور Inputbin می کنیم و برای اینکه اصلاعات در متغییری ذخیره شود از دستور زیر استفاده می کنیم.
Inputbin A
من تا حالا تشکر ازم نشده حد اقل شما یه تشکری از من بکنیییییییییییییییییییییییییییییید با لینک تشکر :bye :bye :cry: :cry: :cry: :cry: :cry2: :cry2: :cry2:
منبع : www.yazdkit.comبه نام خدا
دیدم آن چشمه ی هستی که جهانش خوانند
_-_-_-_-_-_-_-_-
آنقدر آب کزان دست توان شست نداشت به به به به
دیدگاه
-
پاسخ : اتصال دو avr
دوست خوبمون جواب این مسئله رو خوب دادن.
فقط من خواستم این نکته رو بگم که اگه بخوای دو تا پورت میکرو ها رو به صورت موازی به هم وصل کنی، باید فاصله میکروهات کم باشه. چون اگه فاصله ها زیاد باشه ممکنه اطلاعاتت تا به مقصد برسن، وسط راه گم بشنعمر گران میگذرد خواهی نخواهی سعی بر آن کن نرود رو به تباهی
مطلب دل را طلب از سوی خدا کن زآنکه بود رحمت او لا یتناهی
دیدگاه
-
پاسخ : اتصال دو avr
سلام
دوست من ؛ ارتباط با یک پین به این صورت که شما می خواهید بسیار سخت است چون شما بایستی حتما فرستنده و گیرنده را هماهنگ کنید مثلا به گیرنده بگید که کی اطلاعات رو بگیره و کی اطلاعات بعدی رو
به نظر من خودبون رو اذیت نکنبد بهترین روشها همان spi و ارتباط سریال است
که من از بین ایندو ارتباط سریال رو خیلی بیشتر توصیه می کنم چون خیلی قابلیت های بیشتری دارد شما خیلی می تونید کنترل داشته باشید و با مبدلهایی می تونید در مسافتهای زباد هم کار کنید
من هم بعضی وقتها که از هیچکدام از اینها نتونسته ام استفاه کنم ( در برخی پروژها به علت شرایط خیلی خاص ) خودم با 3 پین یک همچنین کاری کرده ام ولی اصلا به خوبی ارتباط سریال میکرو نیست
دیدگاه
-
پاسخ : اتصال دو avr
از راهنمایی هایتان ممنونم اما می شود طرز فعال کردن و کار کردن با حالت سریال را در cod vision بنویسید و بگویید اطلاعات ارسال شده باید یک مقدار یک بیتی باشد یا می تواند بیشتر باشد :applause:یکی میگفت خدا چرا به حرفای ما گوش نمیده گفتم
هان ای صنما،دل یک دله کن
گر سر ندهم ،وانگه گله کن
دیدگاه
-
پاسخ : اتصال دو avr
سلام .................
شما تا به حال از میکرو به کامپوتر پل زدی؟ منظورم اینه که از میکرو به کامپیوتر دیتا فرستادی ؟
دقیقا کاری که میخوای انجام بدی مشابه همونه منتهی به جای اینکه اون طرف کام باشه ، یه میکروی دگه هست .
توی تنظیمات فرستنده (Transmitter) مقدار Baud رو تعیین میکنی و برای میکروی گیرنده هم حالتReciever روانتخاب می کنی و با همون مقدار Baud . باقی کار هم که بر می گرده به دستورات نرم افزاری.
در مورد ارتباط سریال یا مقوله ی Baud هم اگه سوالی داشتید به این تاپیک یه سری بزنید .
http://www.eca.ir/forum2/index.php?topic=15936.msg73765
"راستی یه سری به این تاپیک بزنید (خارج از موضوعه)"
http://www.eca.ir/forum2/index.php?topic=1721.msg85144
موفق باشید .
دوستان! مدتی کمتر به سایت میام ..
دیدگاه
-
پاسخ : اتصال دو avr
یه چیز فقط نگفته موند که من میگم. :wow:
شما وقتی با استفاده از قابلیت ارتباط سریال یه چیزی بین دو تا میکرو رد و بدل می کنی، شما داده رو به صورت بایت می فرستی و این خود میکرو هستش که اون و بیت به بیت می فرسته. پس شما بایت به بایت می فرستی اما خود میکرو اون رو بیت به بیت می فرسته. :NO:عمر گران میگذرد خواهی نخواهی سعی بر آن کن نرود رو به تباهی
مطلب دل را طلب از سوی خدا کن زآنکه بود رحمت او لا یتناهی
دیدگاه
-
پاسخ : اتصال دو avr
بهترین ارتباط TWI (two wire interface هستشمهم نیست که چه اندیشه ای در سر و چه ترسی در دل دارید؛ مهم آن است که بیکار ننشینید و دست به کاری بزنید و وارد میدان عمل بشوید.
نمی توانید به کودکی بیاموزید که از خود مواظبت کند، مگر آنکه او را آزاد بگذارید تا برای مواظبت از خود بکوشد؛ ممکن است اشتباه کند، ولی دانایی او از میان همین اشتباهات سرچشمه می گیرد.
دیدگاه
دیدگاه