PDA

توجه ! این یک نسخه آرشیو شده میباشد و در این حالت شما عکسی را مشاهده نمیکنید برای مشاهده کامل متن و عکسها بر روی لینک مقابل کلیک کنید : شبکه کردن چندمیکرو



ali137171
27-03-2014, 13:34
من میخاستم یک میکرو رو به 3میکرودیگه وصل کنم باusart.
موقعی که ازیک میکرو به3میکرواطلاعات میفرستم درست کار میکنداما موقعی که از3میکروبه یک میکرو اطلاعات میفرستم میکرویک قاطی میکند ودرست کار نمیکنه
چکاربایدکرد

1nafar
27-03-2014, 13:47
من میخاستم یک میکرو رو به 3میکرودیگه وصل کنم باusart.
موقعی که ازیک میکرو به3میکرواطلاعات میفرستم درست کار میکنداما موقعی که از3میکروبه یک میکرو اطلاعات میفرستم میکرویک قاطی میکند ودرست کار نمیکنه
چکاربایدکرد
سلام
برای شبکه کردن میکروکنترلر ها استفاده از usart زیاد مناسب نیست ، بهتره از پروتکل spi یا i2c در صورتی که میکروکنترلر ها بر روی یک برد هستند ، و از پروتکل های can یا rs485 در صورتی که میکروکنترلر ها در برد های مجزا هستند ، استفاده کنید .
اصل شبکه بر مبنای درخواست / پاسخ استوار هست . در تمامی شبکه ها فقط یک مستر ( قطعه اصلی یا فرمان دهنده ) وجود داره و باقی قطعات ، اسلیو ( قطعه جانبی یا کناری یا فرمان گیرنده ) هستند .
میکروکنترلر مستر یک اسلیو رو انتخاب میکنه و بهش دستور میده ، این دستور میتونه درخواست برای خوندن اطلاعات یا ارسال فرمامین و ... باشه ؛ میکروکنترلر اسلیو دستور رو دریافت میکنه و اجراش میکنه در صورت نیاز داده ای رو به میکروکنترلر مستر ارسال میکنه .
به بیان ساده تر در یک شبکه ، در یک زمان واحد فقط دو قطعه با هم در حال تبادل هستند .
دلیل هنگ کردن میکروکنترلر در پروژه شما، عدم رعایت تقدم در ارسال داده هست ، بهتره یه مقدار در مورد پروتکل های i2c یا spi تحقیق کنید .

ali137171
27-03-2014, 16:13
ببخشیددر مورد پروژه من حتما باید باusart باشه.اگه میشه بیشتر توضیح بدین در مورد اتصال اسلیوها به مستر

Ma3ood
27-03-2014, 16:42
با ارتباط سریال میشه یه نوعی ارتباط کن را راه اندازی کرد نه به صورت کامل ، شما در وقفه سریال تمامی اسلیو ها یک یا چند تا کاراکتر تعریف کنید و این کاراکترها مخصوص همون میکروها باشه و مستر هنگامی که باید با اسلیوی که قراره ارتباط برقرار کنه کاراکترهای مربوط به اون را ارسال میکنه هر چند همه اسلیو ها اونو در یافت میکنن ولی فقط یکی از اونها به مستر جواب خواهد داد . در این نوع ارتباط که شما میخواهید داشته باشید نباید بدون هماهنگی و درخواست به میکروی مستر چیزی ارسال کنید .و گرنه مشکل تداخل اطلاعات پیش میاد که الان شما دارید .

sadeghbakhshi
27-03-2014, 16:46
سلام
پروتکل uart برای ارتباط دو دستگاه طراحی شده و بیشتر از اون مشکل ساز میشه
مگر در حالتیکه میکروی مستر بیش ازیک پورت uart داشته باشه
که در این صورت میتونید به تعداد پورتهای uart اسلیو داشته باشید

ali137171
27-03-2014, 16:50
خب چطوری باید این کار رو کرد.اگه میشه بایک برنامه بهم نشون بدین خیلی خیلی لازم دارم
ترجیحاباcodvisionباشه

sadeghbakhshi
27-03-2014, 17:06
اقا مسعود یکجای کار میلنگه
شما تمامی پایه های tx اسلیو رو به rx مستر متصل کردید
در حالت عادی این پایه ها رو سطح بالا قرار دارند
موقع ارسال بیت شروع فرستاده میشه و اطلاعات به مستر ارسال میشه
حالا موقع ارسال داده میکروی مستر فقط کد 1111 1111 رو دریافت میکنه
چون سیگنالها روی هم منطبق میشوند
ولی توی پروتکل ههایی مثل i2c چون فقط یک خط دیتا داریم
مشکلی پیش نمیاد و با ارسال یک ادرس اسلیو مورد نظر فعال میشه
فکر میکنم شما بتونید با استفاده از مبدل های rs485 بتونید کار خودتون رو پیش ببرید

Ma3ood
27-03-2014, 17:15
صادق جان دقیق یادم نیست چند سال پیش چینن کاری کردم البته از سرناچاری ، تقریبا جواب داد ولی روش ناقصی هست چون این ارتباط برای ارتباطات نظیر به نظیر ساخته شده

amin69
27-03-2014, 23:04
دوست عزیز اگه رو یه برد هستن همه ای سی ها برای هر کدوم یه سریال)in( نرم افزاری بنویسد
ارسال هم همه rx هارو به هم
و در نهایت به tx مستر وسال کنید
اینطوری داده های مستر به همه اسلیو ها میرسه
و هر اسلیو بدون تداخل میتونه جواب بفرسته

من زیاد کار کردم رو این پروتوکول برای شبکه
ولی جواب نمیده
در حالتی هم جواب میده اولا ریزش دادش خیلی زیاد میشه
در ثانی امکان هنگ کردن میکرو هم خیلی بالا میره!

Ma3ood
28-03-2014, 20:55
سلام
یه مثال ساده برای شما دوست عزیز
شما برای توسعه کار یادتون باشه که این طرح و کلا شبکه به این صورت هست اسلیو ها خودسر عمل نمی کنند و تا زمانی که مستر درخواست نداده اطلاعاتی ارسال نخواهند کرد ،

usart (You can see links before reply)

ali137171
29-03-2014, 14:06
ic 74ALS11 چه ic است وچکارمیکند؟

Ma3ood
29-03-2014, 15:17
در اینجا نقش بافر را ایفا میکنه تا خروجی های tx اسلیو ها روی هم منطبق نشه

ali137171
29-03-2014, 20:29
اقا مسعود درست شد انشالله توعروسیت جبران کنیم

mohamad_musav
28-04-2014, 23:14
سلام
یه مثال ساده برای شما دوست عزیز
شما برای توسعه کار یادتون باشه که این طرح و کلا شبکه به این صورت هست اسلیو ها خودسر عمل نمی کنند و تا زمانی که مستر درخواست نداده اطلاعاتی ارسال نخواهند کرد ،

usart (You can see links before reply)

سلام
لطفا در صورت امکان فایل را اصلاح کنید نتونستم دانلود کنم. ممنون

1nafar
29-04-2014, 00:35
ظاهرا سایت picofile.com مشکل پیدا کرده و دون هست . من فایل رو پیوست کردم :

esisafa
29-04-2014, 02:24
یک سوال برای شبکه کردن پیش اومده.
میشه بدون مستر با rs485 چند میکرو شبکه کرد؟ اگر نمیشه حالا اگر یه سیم چیپ سلکت یا cs هم به دو سیم خود rs485 اضافه کنیم چی؟ هر میکرو درخواست ارسال داده داره اگر cs صفر باشه یعنی خط آزاده بعد cs رو یک میکنه. حالا هر میکرو که این کارو میکنه یک زمان مشخصی باید یک نگه داره مثلا میکرو 1 برای 1 میلی ثانیه 2 هم 2 میلی ثانیه و ... با این کار حتی میکرو میفهمه که میکرو دیگه ای همزمان این کارو نکرده ( یک زمان سپری بشه و cs صفر بشه ولی خط هنوز یک باشه یعنی یکی دیگه این کارو همزمان کرده) بعد از سپری شدن زمان خط 1 میلی ثانیه صفر میشه و بعد یک میشه تا زمانی که درخواست فرستاده میشه و در نهایت صفر میشه که بگه خط آزاده.
به نظر شما کار میکنه؟؟؟؟

esisafa
29-04-2014, 11:55
یک روش دیگه هم اینه که یک مستر باشه که فقط به عنوان هاب یا سوئیچ عمل کنه و کار دیگه ای نداشته باشه.
آیا باید مستر دونه به دونه به اسلیوها بگه کاری داری اگه نه به بعدی بگه و این کار دائم تکرار بشه یا اینکه هر وقت یک اسلیو کارداشت اعلام کنه کار دارم بعد مستر بگه که کارت چیه و در این صورت مسئله اینه که یک دوایس چطور باید بگه من کار دارم و دوتا دوایس همزمان نگن.

در کل اگر بدون مستر برای rs485 راهی هست چیه و هماهنگی چطوره و اگه باید مستر باشه هماهنگی چطور انجام میشه؟

esisafa
29-04-2014, 12:21
روش بدون مستر تقریبا شبیه can میشه که به سیگنال سوم هم نیاز نداره ولی با rs485 میشه پیاده کرد؟
برای rs485 کدوم روش مطمئن تر و سریعتر هست.

J_Esmaili
29-04-2014, 13:47
سلام مهندسین
ببخشید بحثتون رو بهم میزنم
ولی باید یک نکته رو بگم و اون اینه که پرت سریال هم قابلیت شبکه شدن رو داره بدون اینکه سخت افزاری رو لازم باشه اضافه کنید و این کار با استفاده از بیتی به نام mpcm انجام میشه و مشکل سخت افزاری که بیان شده بود رو از بین می بره .
برای توضیحات کاملتر هم میتونید به فیلم های آموزشی استاد کی نژاد بخش سریال avr مراجعه کنید.
موفق باشید.

esisafa
30-04-2014, 01:28
بالاخره پروتکل can خودمونی بر روی rs485 رو اینطوری در نظر گرفتم. دوستان ببینن جایی مشکل داره؟
ابتدا توضیح بدم که خط دو حالت درگیر و آزاد داره و با صفر و یک کاری نداریم. درگیر یعنی یکی یا چند تا از وسایل در حالت خروجی قرار گرفته و یک سیگنال قوی بر روی خط قرار داده و آزاد یعنی همه ی وسایل در حالت ورودی قرار دارن و یک سیگنال ضعیف (پول آپ یا داون) روی خط هست. منطق سیگنال قوی و ضعیف مخالف هم هست تا در موقع خوندن خط تشخیص داده بشن.
خوب حالا بریم سر اصل مطلب. ( ما اومدیم ... غلامی بپذیرید.:0013::018::mrgreen: ببخشییییید اشتباه شد)
در ابتدا هر وسیله ای بخاد داده ای بفرسته باید چک کنه خط آزاده. اگر درگیر بود منتظر بمونه اگر آزاد بود باید چک کنه به مدت 10 پالس که زمان ارسال یک بایت هست هم خط آزاد باشه. اگر درگیر بود یا درگیر شد یعنی یکی دیگه زودتر تصمیم به استفاده گرفته یا داده ارسال میشه اگر آزاد موند که حالا خط رو درگیر میکنه.
بیاد و چند وسیله همزمان تصمیم گرفتن چی؟ به هر وسیله یک id (آیدی) میدیم که باید فرق کنه این آیدی زمان درگیر موندن خط توسط این وسیله رو تعیین میکنه. بعد این زمان درگیر بودن خط، وسیله خط رو آزاد میکنه و چک میکنه که خط آزاده یا توسط وسیله ی با اولویت بالاتر هنوز درگیره. اگر درگیر بود که انصراف میده اگر آزاد بود حالا همین وسیله شروع به ارسال داده میکه که شامل کد شناسایی و داده و crc و غیره هست. هر وقت ارسال داده تموم شد خط رو آزاد میکنه تا بقیه استفاده کنن و روز از نو.
امیدوارم طوری گفته باشم که متوجه بشید. لطفا بررسی کنید که اگر به نتیجه ی مطلوبی رسیدیم نتایج رو قرار میدم.
یک سوال. به نظر شما این آزاد و درگیر کردن خط بر روی فرستنده و گیرنده تاثیر نداره؟ مثلا گیرنده usart فکر کنه اینا داده هستن و دریافت کنه. یا اینکه اصلا مشکلی ایجاد نمیشه و با اومدن بیت شروع داده همه چیز حل میشه؟