ايران ويج

نسخه‌ی کامل: ارتباط سریال بین چندین میکرو
شما در حال مشاهده‌ی نسخه‌ی متنی این صفحه می‌باشید. مشاهده‌ی نسخه‌ی کامل با قالب بندی مناسب.
صفحه‌ها: 1 2
با سلام خدمت همه دوستان

من احتیاج دارم که 6 عدد میکرو AVR (ATMEGA16 را به وسیله ارتباط سریال با میکرو MASTER ارتباط بدهم (مطابق این لینک
http://upload7.ir/imgs/2014-10/54662278515791717255.jpg

برنامه هر 6 عدد میکرو SLAVE دقیقا مثل هم هستند، چند تا سوال برام پیش اومده لطفا دوستان من را راهنمایی کنند
1- آیا باید تمام میکرو ها هم پتانسیل باشند و به یک منبع تغذیه وصل شده باشند ؟؟
2- آیا این ارتباط به شکلی که در لینک بود صحیح است اگر صحیح نیست به چه صورتی می تونم خط ها را از همدیگر جدا کنم (هم RX و هم TX)؟؟
با تشکر
سلام.
1- خیر ، کافی زمین هاشون به هم متصل باشه.
2- نمی دونم این کار اصولی هست یا نه ، اما باید جواب بدهه. کافیه برای هر اسلیو یه کد مجزا اختصاص بدید.
اینطوری مستر هر چی که بخواد بفرسته ، اطلاعاتش رو باید کد شده بفرسته که به میکروی مورد نظر اسلیو برسه.
مسلما 2تا اسلیو همزمان نباید اطلاعاتشون رو روی یه خط بفرستند که این موارد رو باید در برنامه لحاظ کنید.

موفق باشید.
سلام...
1-علاوه بر tx , rxفقط باید gnd اون ها به هم وصل باشه و می تونند هر کدوم از میکرو ها تغذیه جدا داشته باشن
2-احتمال نویز در مدار هست به نظرم از spi یا i2c برای ارتباط بین چند میکرو استفاده کن.
ممنون از پاسخ های خوبتون
ارتباط من از نوع سریال است و قصد دارم به علت مسافت بیش از 100 متر به وسیله CONVERTOR RS232 TO RS422 انتقال دیتا را انجام دهم و با توجه به نکاتی که دوستان اشاره کردند همه را لحاظ کردم

من بردم را به صورت مدار بالا بستم ولی اشکال بزرگی پیش اومد لازم می دونم قبلش یه توضیحی در مورد برنامه بدم

کلید اول از هر برد SLAVE که فشار داده می شه یک کدی به MASTER می ده، MASTER در جواب پاسخ می ده من اطلاعات را درست دریافت کردم و سپس مثلا یک لامپ را روشن می کنه پس هم در MASTER و هم در SLAVE دریافت و ارسال دارم. و تقریبا تو این شکلی که ارسال کردم خط ها اتصال کوتاه هستند؟؟

مشکلی که الان پیش اومده اینه که وقتی که هر 6 تا SLAVE به MASTER وصل هستند گاها فقط از یکی از آن ها فرمان می گیرد و پاسخ می دهد گاها هم از هیچ کدام فرمان نمی گیرد حال وقتی فقط یک SLAVE با MASTER در ارتباط است این ارتباط کاملا درست است و بدون هیچ خطایی کار می کند
خواهشمندم دوستان من را راهنمایی کنند
با تشکر
SPI و I2C پروتکل هایی هستن که در فاصله های طولانی نمی تونن استفاده بشن.
اگر کاربردتون در فاصله های بیش از چند سانتی متر هست ، 2 پروتکل بالا انتخاب خوبی نیستن. اما اگر در فاصله نزدیک هست گزینه ی مناسبی هستن.

موفق باشید.
نقل قول: کلید اول از هر برد SLAVE که فشار داده می شه یک کدی به MASTER می ده، MASTER در جواب پاسخ می ده من اطلاعات را درست دریافت کردم و سپس مثلا یک لامپ را روشن می کنه پس هم در MASTER و هم در SLAVE دریافت و ارسال دارم. و تقریبا تو این شکلی که ارسال کردم خط ها اتصال کوتاه هستند؟؟

مشکلی که الان پیش اومده اینه که وقتی که هر 6 تا SLAVE به MASTER وصل هستند گاها فقط از یکی از آن ها فرمان می گیرد و پاسخ می دهد گاها هم از هیچ کدام فرمان نمی گیرد حال وقتی فقط یک SLAVE با MASTER در ارتباط است این ارتباط کاملا درست است و بدون هیچ خطایی کار می کند

در این مورد بالا توضیح دادم ، کار اشتباهی هست. هر 2 اسلیو مجاز نیستن همزمان روی یه خط بنویسن ، ممکنه اتصال کوتاه پیش بیاد و بافر مربوطه میکرو آسیب ببینه.

میتونید پایه ای از هر اسلیو بیرون بیارید و با هم OR کنید ، هر کدام که در حال ارسال بودن ، پایه رو 1 کنه ، اینطوری نتیجه ی خروجی OR برابر 1 می شه که باید مجدد به یکی دیگه از پایه های هر کدوم از اسلیوها بخورهه ، به این ترتیب این پایه می شه پایه ی وضعیت ارسال.

یک شرط دیگه باید اضافه بشه که قبل از ارسال اطلاعات توسط هر اسلیو ، وضعیت این پایه ی وضعیت چک بشه ، اگر 0 بود یعنی هیچ میکرویی باس رو اشغال نکرده و اسلیو می تونه باس رو اشغال کنه ، در غیر اینصورت یعنی باس مشغوله و اسلیو باید منتظر بمونه.

باید تمام شرایط رو در نظر بگیرید!
موفق باشید.
ممنون از پاسخ خوبتون
من این شرط را در نظر گرفتم و برای تست اولیه در ابتدای کار من هیچ موقع دو SLAVE را همزمان فرمان نمی دهم و باز هم این اشکال پیش اومد آیا با توجه به این مسئله طبیعی است که این اشکال به وجود آید
با تشکر
سلام
باوجود اینکه مسافت بالاست چرا بیسیمش نمیکنید ؟
(۰۹-آبان-۱۳۹۳, ۰۱:۱۶:۲۰)a.mehran نوشته است: [ -> ]سلام
باوجود اینکه مسافت بالاست چرا بیسیمش نمیکنید ؟

با توجه به مسافت زیاد و موقعیت فیزیکی امکان استفاده از ماژول های بی سیم را ندارم
اول تو فاصله 1متری چک کنید ببینید باز این مشکل وجود دارهه ( شاید به دلیل طول زیاد سیم ها و جنس سیم ها یا شیلد نامناسب اطلاعات از بین می رهه )
نرخ بیت های ارسالی هم کمتر در نظر بگیرید. baud rate
از کریستال مناسب ارتباط سریال که 11 و خورده ای مگاهرتز هست استفاده کنید که درصد خطا 0 بشه.
در حالت عادی فکر نمی کنم طبیعی باشه.
(۰۹-آبان-۱۳۹۳, ۰۱:۳۳:۵۰)sharin نوشته است: [ -> ]اول تو فاصله 1متری چک کنید ببینید باز این مشکل وجود دارهه ( شاید به دلیل طول زیاد سیم ها و جنس سیم ها یا شیلد نامناسب اطلاعات از بین می رهه )
نرخ بیت های ارسالی هم کمتر در نظر بگیرید. baud rate
از کریستال مناسب ارتباط سریال که 11 و خورده ای مگاهرتز هست استفاده کنید که درصد خطا 0 بشه.
در حالت عادی فکر نمی کنم طبیعی باشه.


من برای تست اولیه در فاصله 10سانتی متری و بدون استفاده از مبدل RS232 به RS422 تست ها را انجام می دهم
Baud Rate=9600
کریستال=11.0592
ولی همچنان با این مشکل مواجه هستم
صفحه‌ها: 1 2