PDA

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



lpln852
13-04-2013, 19:51
من avr رو با پورت کام به نرم افزاری که با C# نوشتم متصل کردم
میخواستم بدونم روش خاصی هست برای ایجاد ارتباط بین این دوتا ؟
منطور من اینه که مثلا کامپیوتر میخواتد اطلاعت سنسور اول رو از میکرو بگیره چطور تو برنامه تعریف کنم
من بیشتر میخوام یه روش کلی بهم بگید

skiboys
13-04-2013, 20:02
من avr رو با پورت کام به نرم افزاری که با C# نوشتم متصل کردم
میخواستم بدونم روش خاصی هست برای ایجاد ارتباط بین این دوتا ؟
منطور من اینه که مثلا کامپیوتر میخواتد اطلاعت سنسور اول رو از میکرو بگیره چطور تو برنامه تعریف کنم
من بیشتر میخوام یه روش کلی بهم بگید
سلام خب یک سری تنظیمات هستش که اول باید رعایت کنید
مثلا تنظیمات باودریت باید در دو طرف شبیه هم باشد
بعد که مطمن شدید که دریافت و ارسال صورت می گیرد باید مشخص کنید که مثلا اگر از سمت میکرو اطلاعات به صورت رشته ارسال می شود در طرف کامپیوتر هم این رشته را در نظر بگیرید و اگر نیاز بود تبدیل کنید به همین راحتی:wink:

Ma3ood
13-04-2013, 20:20
در ادامه پست دوست عزیزمون
شما برای دریافت اطلاعات یه سنسور خاص میتونی مثلا یه کاراکتر بفرستی و یا مثلا عدد یک را بفرستی به میکرو
میکرو دریافت کنه سپس مقدار عددی سنسور را واستون بفرسته به همین راحتی

lpln852
13-04-2013, 20:22
سلام خب یک سری تنظیمات هستش که اول باید رعایت کنید
مثلا تنظیمات باودریت باید در دو طرف شبیه هم باشد
بعد که مطمن شدید که دریافت و ارسال صورت می گیرد باید مشخص کنید که مثلا اگر از سمت میکرو اطلاعات به صورت رشته ارسال می شود در طرف کامپیوتر هم این رشته را در نظر بگیرید و اگر نیاز بود تبدیل کنید به همین راحتی:wink:

ممنون من تو دریافت و ارسال مشکلی ندارم

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


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


میخواستم بپرسم بهترین راه چی هست ؟؟

امیدوارم تونسته باشم منظورم رو برسونم

Ma3ood
13-04-2013, 22:34
دوست من بهترین راه اینه که همه اطلاعاتت را یه بار بگیری همشو تو یه رشته بزار بعدا جدا کن مثلا هر 20 ثانیه یه بار بفرسته بعدم برای دریافت اطلاعات از طرف میکرو بهتره وقفه یوزارت را فعال کنی و با توجه با کاراکتر خروجی تو تغییر وضعیت بدی

skiboys
13-04-2013, 23:40
همان طور که اقا مسعود گفتن حتما از وقفه استفاده کنید تا cpu الکی الاف نشه
در مورد برنامه هم برای هر سنسور کارکتر یا هرچیزی دوست دارید انتخاب کنید در برنامه داخل میکرو هم از if استفاده نکنید و بجاش از switch .....case استفاده کنید:0013:

lpln852
13-04-2013, 23:41
دوست من بهترین راه اینه که همه اطلاعاتت را یه بار بگیری همشو تو یه رشته بزار بعدا جدا کن مثلا هر 20 ثانیه یه بار بفرسته بعدم برای دریافت اطلاعات از طرف میکرو بهتره وقفه یوزارت را فعال کنی و با توجه با کاراکتر خروجی تو تغییر وضعیت بدی

این کار رو کردم قبلا ولی خیلی خطا ایجاد میشه

Ma3ood
13-04-2013, 23:49
من دقیقا همین کار رو کردم مشکلی نداره خطایی ایجاد نمیشه چون روش شما خیلی برنامه طولانی میشه و همش باید میکرو به ارسال مشغول بشه

skiboys
13-04-2013, 23:49
این کار رو کردم قبلا ولی خیلی خطا ایجاد میشه
چه خطایی بیشتر توضیح می دهید من با این روش مقادیر مورد نیاز برای pwm را به میکرو با سرعت بالا می فرستادم مشکلی نداشتم

lpln852
14-04-2013, 00:16
چه خطایی بیشتر توضیح می دهید من با این روش مقادیر مورد نیاز برای pwm را به میکرو با سرعت بالا می فرستادم مشکلی نداشتم

تو این پروژه که من دارم حدود 100 تا دیتای متفاوت هست که باید بین میکرو و کامپیوتر رد و بدل بشه
من اومدم از حروف الفبا و 1 عدد بعدش برای هر دیتا استفاده کردم مثلا s1,s2 , .... تو این روش مثلا بعضی وقتا عدد بعد از این با دیتا اشتباه میشه

تو اون روش هم که هر از یه مدت میکرو کل اطلاعات رو بفرسته هم میکرو بعضی وقتا قفل مبکنه

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

skiboys
14-04-2013, 01:58
تو این پروژه که من دارم حدود 100 تا دیتای متفاوت هست که باید بین میکرو و کامپیوتر رد و بدل بشه
من اومدم از حروف الفبا و 1 عدد بعدش برای هر دیتا استفاده کردم مثلا s1,s2 , .... تو این روش مثلا بعضی وقتا عدد بعد از این با دیتا اشتباه میشه

تو اون روش هم که هر از یه مدت میکرو کل اطلاعات رو بفرسته هم میکرو بعضی وقتا قفل مبکنه

بعضی وقت ها هم بعضی از اطلاعات دریافت نمیشه و سرعت کار خیلی میاد پایین چون میکرو زمان زیادی رو صرف ارسال و دریافت میکنه
از وقفه پورت سریال استفاده می کنید؟
خب باید زمان بعدی خوب رعایت بشه cpu هم بخواهد سنسور بخونه هم کارهای دیگه را انجام بدهد هنگ می کند شما این کار را انجام دهید ابتدا از تعداد داده های خود کم کنید و به این صورت عمل کنید که طی زمان مشخصی میکرو عملیات مربوط به سنسورها را انجام دهد و سپس اعداد اندازه گیری شده را به پورت سریال بفرستد و دوباره سرش به کارهای خودش گرم بشه احتمالا زمانی که می خواهد داده هارا بفرستد وسط کار سنسورها صداش می کنند هنگ می کنه:0013:

Ma3ood
14-04-2013, 12:01
مثلا یه تایمر راه اندازی کنید و ارسالتون را طوری بنویسید که مثلا همه اطلاعات سنسور ها دریافت شده باشه
و در اخر اگه میزان زمان تایمر درست بوود ارسال کنه و یا اگه خیلی زیاده در دو رشته و در دو مرحله ارسال کنید با فاصله زمانی خیلی کم
چون کامیپوتر محدودیتی نداره باود ریت 9600 و یا بالاتر انتخاب کنید با کریستال خارجی مناسب که خطای سریال را صفرکنه مثلا 11.059 و..

lpln852
14-04-2013, 17:04
ممنون

پس شما راهی به جز این چیزی ه من هم قبلا استفاده کردم نمیدونید ؟؟

dimo2106
23-04-2013, 18:20
دوست عزیز، این روشی که شما استفاده کردید اصلاً استاندارد نیست.
باید اطلاعات در قالب فریم ها منتقل بشن.
فریم ها دارای Start Byte ، Check Sum ، Frame Number و ... هست، که اگر حتی یک بیت دچار اشکال بشه می شه متوجه شد.
تو این روش، PC یک فریم Request خاص به میکرو می فرسته و تو اون به میکرو میگه چی می خواد و میکرو هم جوابش رو بصورت یک فریم به PC ارسال می کنه، تو این روش نه میکرو و نه App خیلی درگیر نمی شن.
حتی می تونی طبق یک زمان بندی خاص، به میکرو بگی که اون فریم رو به PC ارسال کنه.
فریم ها هم می تونن Command باشن و هم Data.

lpln852
24-04-2013, 00:49
دوست عزیز، این روشی که شما استفاده کردید اصلاً استاندارد نیست.
باید اطلاعات در قالب فریم ها منتقل بشن.
فریم ها دارای start byte ، check sum ، frame number و ... هست، که اگر حتی یک بیت دچار اشکال بشه می شه متوجه شد.
تو این روش، pc یک فریم request خاص به میکرو می فرسته و تو اون به میکرو میگه چی می خواد و میکرو هم جوابش رو بصورت یک فریم به pc ارسال می کنه، تو این روش نه میکرو و نه app خیلی درگیر نمی شن.
حتی می تونی طبق یک زمان بندی خاص، به میکرو بگی که اون فریم رو به pc ارسال کنه.
فریم ها هم می تونن command باشن و هم data.
میشه یکم بیشتر توضیح بدید

dimo2106
24-04-2013, 15:09
توضیحات بیشتر .

abbas1371sa
24-04-2013, 22:16
سلام
من خودم وقتی چنین پروژه ای داشته باشم از چند تا تکنیک ارسال در یافت استفاده میکنم

مثلا اگه یک کامپیوتر باشه و تعداد زیادی میکرو ارتباط بین این ها را بصورت Request - Answer ایجاد میکنم
یعنی برای هر میکرو یک شناسه (مثل IP شبکه) قرار میدم و دیتا را بین میکرو و کامپیوتر ارسال میکنم
در این صورت اگه یکی از میکرو ها به مشکل بخوره، دیگه شبکه من مختل نمیشه.

یک سری کار های دیگه ای مثل ChekSum گذاشتن و ... میتونه به بهتر شدن ارتباط و کاهش خطا کمک بسیاری بکنه.

موفق باشید:wink:

ali_h
25-04-2013, 10:38
سلام
روش دادن ID به هر میکرو و استفاده از Req - Ans که بالا گفتن بسیار روش عالی هست من خودم استفاده کردم.

بهترین روش تشخیص خطا ، CRC است. که البته در جاهایی که اندازه پکت بسیار بزرگ باشه کاربرد بیشتری داره.
ولی روش های تصحیح خطا هم وجود داره. برای اطلاعات بیشتر می تونید راجع به روش های FEC (Forward Error Correction) تحقیق کنید.

lpln852
25-04-2013, 11:19
سلام
روش دادن id به هر میکرو و استفاده از req - ans که بالا گفتن بسیار روش عالی هست من خودم استفاده کردم.

بهترین روش تشخیص خطا ، crc است. که البته در جاهایی که اندازه پکت بسیار بزرگ باشه کاربرد بیشتری داره.
ولی روش های تصحیح خطا هم وجود داره. برای اطلاعات بیشتر می تونید راجع به روش های fec (forward error correction) تحقیق کنید.

این روش هایی که شما میگید رو با rs232 استفاده کردید ؟

ali_h
27-04-2013, 14:07
این روش هایی که شما میگید رو با rs232 استفاده کردید ؟

من روش Req - Ans رو هم با RS232 ، هم با TCP/IP روی بستر اترنت و GPRS و هم با یک ارتباط بیسیم ساده پیاده سازی کردم.

این روش ها به بستر ارتباطی وابسته نیستند. مثلاً CRC در پروتکل TCP / IP روی بستر اترنت ، وای فای ، وای مکس و درگاه های ماهواره ای اینترنت استفاده می شود.
روش های FEC در ارتباطات ماهواره های تصویری دیجیتال استفاده می شود و در عین حال در ارتباطات ماجول های Zigbee هم مورد استفاده قرار می گیرند.
البته دقت کنید که هرکدام از این روش ها سرباری به داده اصلی اضافه می کنند که باعث کاهش پهنای باند موثر (Throughput) می شود.