نمایش/عدم نمایش سایدبار
رفتن به بالای صفحه
Avatar

آموزش ارتباط سریال AVR با کامپیوتر-1

آموزش ارتباط سریال AVR با کامپیوتر-1

سلام به همه دوستان

این اولین پست من تو این سایت هست. راستش پروژه های زیادی تو ذهنم هست، اما وقتی اومدم این سایت دیدم دوستان قبل از من بعضی از اونا رو گذاشتند.
گفتم واسه پست اول چی بزارم، دیدم ارتباط سریال رو شروع کنم بهتره. تو سایت که نگاه کردم، ارتباط سریال میکرو با میکرو راه اندازی شده. برای همین من میخوام ارتباط سریال میکرو با کامپیوتر رو شروع کنم.
خوب اولین قدم راه اندازی میکرو هستش. راه اندازی قسمت سریال میکرو رو دوستان قبلا انجام دادن و من فقط یک توضیح کوتاه در موردش بهتون میدم.

آشنایی اولیه با ارتباط سریال :

ارتباط سریال، جزو ساده ترین ارتباطا از نظر فهمیدن هستش. یعنی اساس ساده ای داره و می تونید راحت باهاش کنار بیایید. تو این ارتباط فقط نیاز به 2 تا پایه هستش که داخل میکروکنترلر اون دو تا پایه معمولا (تقریبا همیشه) Rx و Tx هستن. همونطور که از اسمشون پیداست Rx یعنی گیرنده (Receiver) و Tx یعنی فرستنده (Transmitter). برای ارتباط سریال بین دو تا دستگاه (میکروکنترلر AVR یا ARM یا کتمپیوتر با هرچیزه دیگه) کافیه گیرنده هر کدوم رو به فرستنده اون وصل کنید.
این از توضیح اولیه سخت افزاری.

تنظیمات کدویزارد برای میکروکنترلر AVR در کدویژن :

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

فرستنده و گیرنده :

وقتی شما میخواهید که میکرو فقط فرستنده باشه، تیک دوم (Transmitter) رو بزنید و وقتی میخواهید میکرو فقط گیرنده باشه تیک اول (Receiver) رو بزنید. اگر هم فرستنده و گیرنده با همه که جفتشو بزنید. بعد از انتخاب اونا، می تونید وقفه های دریافت و ارسال رو فعال کنید. چون فعلا آموزش ابتداییه، فقط وقفه دریافت رو فعال کنید. با فعال کردن اون(زدن تیک Rx Interrupt) یک گزینه دیگه میاد که اون قسمت بهتون میگه حجم بافر گیرنده رو مشخص کنید. نترسید !! کدویژن از این اصطلاحات زیاد داره. این بافر یک متغیره که قراره اطلاعات دریافتی رو تو خودش نگه داره. بزارید همون که هست باشه تا بعدا به حسابش برسیم!!

قسمت Mode:

قسمت Mode هم برای زمانیه که بخوهید ارتباط شبکه داشته باشید. یعنی یک میکرو مرکزی و چند تا میکروی جانبی. به این هم در آینده نزدیک خواهم پرداخت. فعلا این رو هم بزارید روی همون تنظیمات پیش فرض باشه.

انتخاب قالب رشته ارسالی:

قسمت Communication Parameters چند تا گزینه داره :آموزش ارتباط سریال AVR با کامپیوتر-1

تو ارتباط سریال میشه توی هر بار ارسال چندین گزینه رو مد نظر داشت. اجازه بدید یک توضیحی هم در این مورد داشته باشم. خط متصل به گیرنده تو ارتباط سریال همیشه تو سطح منطقی 1 هستش. همین که ارتباط شروع میشه این خط میره به سطح منطقی صفر و به همین خاطر (تغییر سطح منطقی از 1 به 0) شما یک وقفه توی میکروکنترلر خواهید داشت. این تغییر سطح به دستگاه میگه که ارسال داده ها شروع شده. بعد از این تغییر که معمولا بهش میگن بیت شروع، داده ارسال میشه که میتونه در قالب 7، 8 یا 9 بیت ارسال بشه.
ارسال 7 بیت معمولا کاربرد چندانی نداره مگه تو حالت های خاص که تعداد کل اطلاعات کم باشه. ارسال 9 بیت هم برای زمانی هستش که شما بخواهید از ارتابط بین یک میکرو با چند تا میکرو استفاده کنید. معمولا تو این ارتباط به هر میکرو یک کد بهه عنوان آدرس اختصاص میدن مثلا 0x56 یا 0x35 یا … . بعد میان و بیت نهم رو 1 میکنند. این 1 بودن بیت نهم یعنی داده ارسالی آدرس هستش. در آینده ای که گفتم مثالی در این مورد بهتون توضیح داده میشه.
بعد از اینکه داده (Data) ارسال شده، باید دو طرف بفهمن که داده ارسال شده و کار تموم شده. به همین خاطر معمولا یک بیت به عنوان بیت پایان ارسال میشه که بهش میگن بیت توقف یا Stop. هم میشه 1 بیت توقف و هم میشه 2 بیت توقف برای ارتباط در نظر گرفت. شما همون 1 بیت رو در نظر بگیرید. 2 بیت برای محکم کاری یا مقاصد خاص دیگه هست که به کارمون نمیاد. اما اگه تو زمان ارسال یکی از بیت ها بر اثر نویز محیط یا هرچیزه دیگه عوض بشه، یعنی 1 بشه 0 یا 0 بشه 1، چی ؟ از کجا میشه فهمید که اشتباه صورت گرفته ! برای این کار میان و از Parity استفاده می کنن. این پریتی خودش دنیای جالبی داره که می تونید برید به ویکی پدیا یا به کتاب های منطقی تون مراجعه کنید و در موردش بخونید. تو کار ما نیازی نیست فعال باشه.

تنظیمات نرخ ارسال اطلاعات:

خوب میریم سراغ قسمت شیرین باود ریت BaudRate که خیلیا استفاده میکنن اما نمیدونن منظور از اون چیه !!!
ببینید تو ارتباط سریال نیازی نیست فرکانس قسمت ارتباط تو همه دستگاها یکسان باشه. یعنی شما یک طرف فرکانستون 1 مگ هستش  و طرف دیگه 8 مگ. یا هر اعداد دیگه ای که منطقی باشن !!! اگر فرکانس در دو طرف با هم متفاوت باشه و بخوان با همون فرکانس ارسال رو انجام بدن اطلاعات اشتباده ارسال میشه و به درد نمی خوره. راهش چیه که تو دو طرف فرکانس های کاری متفاوت باشن اما ارتباط درست انجان بشه ؟؟؟ آفرین استفاده از باودریت.
این مسابقه های قایقرانی رو دیدین که چندید نفر با هم پارو میزنن و یک نفر هم بوق دستشه و بوق میزنه. باودریت هم مثل همونه. چون سرعت این پاروزنا با هم فرق داره. اگه هر کی با سرعت خودش پارو بزنه ، احتمالا یکی مونده به آخر میشن. چاره چیه ؟ اینه که یکی بیاد و اینارو با هم هماهنگ کنه. این کار و تو ارتباط سریال تنظیم باودریت انجام میده. یعنی میاد و میگه که با هر فرکانسی که میکرو کار میکنه مهم نیست، فقط باید با سرعتی که باودریت میگه ارسال باید انجام بشه. وقتی این کار انجام بشه هر دو طرف فرستنده و گیرنده با هم هماهنگ میشن و کارشون رو انجام میدن و اشتباهی صورت نمی گیره. واحد باودریت هم BPS هست که مخفف Bit Per Second هستش. یعنی بیت بر ثانیه. معمولا هم میزارنش روی 9600. این انتخاب اعداد هم عالمی داره واسه خودش. این عدد جوری انتخاب میشه که بشه با فرکانس کاری میکرو اونو ساخت. یعنی فرکانس کاری تقسیم بر اون عدد باودریت باید یک عدد صحیح بشه نه کسری. چون قراره که توی میکرو ذخیره بشه. و توی یک متغیر دیجیتال نمیشه عدد کسری ذخیره کرد. اون خطایی که میبینید کتار باودریت توی کدویزارد می نویسه واسه همینه. اگر این خطا تا %0.2 باشه، مشکلی نداره اما بیشتر از اون اذیت خواهد کرد.

تنظیمات نهایی ارتباط سریال:

با توجه به توضیحات من، شما بیایید و مثل من تنظیمات رو انجام بدید.

آموزش ارتباط سریال AVR با کامپیوتر-1
بعدش هم کدتون رو درست کنید.
فکر کنم زیاد نوشتم !!!! (خودم که خسته شدم)، تو قسمت بعدی میام و ادامه میدم. میرم سراغ ارتباط با کامپیوتر.

ادامه خواهد داشت …

پسورد فایل های سایت :
www.dmf313.ir
Avatar من دريافته ام كه ايده هاي بزرگ هنگامي به ذهن راه مي يابند كه اراده كنيم چنين ايده هايي را داشته باشيم. چارلي چاپلين
ارسال دیدگاه
24

1) تعداد حروف غیر فارسی از حروف فارسی بیشتر باشه دیدگاه به صورت خودکار حذف میشه.

2) به موارد درخواست پروژه/کد آماده و سوالاتی که بلد نباشم پاسخ داده نمیشه.

3) برای گزاشتن کدهاتون از این سایت استفاده کنید : debian

  1. Avatar

    مهمان

    علیرضا

    سلام خسته نباشید
    میخواستم ببینم برای دریافت اطالاعاتی که از پایه rx میگریم چه دستوری مینویسم مثلا میخوایم چیزی را که به این پایه ارسال میشه رو lcd نشون بده یا تو فلان متغییر ذخیره کنه mail

    1398/02/11
    10:12
  2. Avatar

    مهمان

    حسین

    ممنون از اموزش
    لطفا ادامه اموزش رو زودتر ارائه بدید
    باشد که در دنیا و آخرت ثمرش رو ببینید.

    1397/12/17
    08:08
  3. Avatar

    مهمان

    مهدی

    سلام
    ای کاش ادامه آموزش رو هم مینوشتید خیلی خوب بود موضوعش و کلا توی وب به این عملی نداریم هیچ منبعی
    همشون با رجیستر کار میکنن که در عمل خیلی استفاده اش کمتره
    ممنون good

    1397/07/09
    03:13
  4. Avatar

    مهمان

    مهدی

    سلام.خسته نباشید.میخواستم ببینم چگونه میشه دو ماژول که با uartکار میکنن رو به میکرو متصل کرد .باتشکر

    1397/05/03
    01:50
    • مهدی دمیرچیلو

      مدیر سایت

      مهدی دمیرچیلو

      سلام-از میکرویی استفاده کن که بیشتر از 2 تا uart داشته باشه.

      1397/05/05
      07:22
  5. Avatar

    مهمان

    Hiva

    با سلام میخواستم در مورد ارتباط میکرو با متلب بدونم اگه امکانش هست ی پروژه بذارین تو سایت یا اگه دارین برام بفرستین.
    میخوام از میکرو دوتا پارامتر را بخونم و از اونها به عنوان ورودی یک برنامه که در متلب در حال اجراست استفاده کنم و ممکنه در هر لحظه این پارامترها تغییر کنن
    خلاصه میخوام این پارامترها به عنوان یک متغییر در متلب عمل کنند
    ممنون

    1396/05/25
    08:58
    • مهدی دمرچیلو

      مدیر سایت

      مهدی دمرچیلو

      سلام-مطلب بلد نیستم.

      1396/05/25
      09:55
    • Avatar

      مهمان

      سینا

      برای این کار میتونید از یه ماژول مبدل سریال استفاده کنید … قیمت خیلی کمی هم داره زیر ۱۰ تومن … بعد اون اعدادتون رو با USART میکرو بفرستید و از سمت کامپیوتر با کتاب خونه های خود متلب از COM کامپیوتر بخونید مقادیرتون رو … اگه هم براتون مشکلی نداشته باشه میتونید از آردواینو هم استفاده کنید چون خیلی از سختی های درست کردن یه ارتباط سریال با COM رو با کتاب خونه هایی که برای متلب ساختن براش حل کرده … البته باید پکیج هاشو دانلود کنید که یکم سخته … چون تحریم هستیم از طرف شرکت اونا … در کل این دوتا راه به ذهن من رسید … شاید دوستان راهای بهتر داشته باشن.

      1396/05/25
      10:42
  6. Avatar

    مهمان

    علیرضا آهنی

    سلام.
    چرا بقیه جلسه ها رو ادامه نمیدین؟

    1396/04/11
    07:15
  7. Avatar

    مهمان

    reza

    سلام من برنامه نوشتم که با فشار دادن یک دکمه یک کاراکتر خواص ارسال کنه به کامپیوتر ولی وقتی با ماژول usb وصلش میکنم به کامپیوتر هیچ کاراکتری ارسال نمیکنه
    باید چه کارش کنم تا درست بشه؟؟

    1395/09/29
    09:49
    • مهدی دمرچیلو

      مدیر سایت

      مهدی دمرچیلو

      سلام
      مطالب ارتباط سریال و پروژه هاش رو که تو سایت گزاشتم خوندید؟
      چون میتونه مشکل از چند جای مختلف باشه
      1-اشتباه بستن پایه های ارتباط سریال – tx به rx باید وصل بشه
      2-فعال نکردن پایه های فرستنده و گیرنده در ارتباط سریال
      3-ارسال کاراکتر غیر قابل مشاهده و دریافت و نمایش به صورت رشته و نه به صورت کد هگز
      4-برابر نبودن b.r فرستنده و گیرنده
      5-مقدار دهی اشتباه رجیسترهای مربوط به b.r
      6-در هنگام محاسبه b.r یه فراکنس در نظر بگیری برا میکرو در حالی که فرکانس میکرو اون مقدار نبوده و…

      1395/09/29
      10:02
  8. Avatar

    مهمان

    کشاورزی

    سلام خسته نباشید
    من برنامه های متنوعی برای سریال نوشتم و از همشون هم جواب گرفتم
    ولی یه موردی که جدیدا روش دارم کار میکنم فقط برام علامت سوال نشون میده
    چه کنم؟
    البته این رو هم بگم که محیط کاری من مقداری نویز داره و من از یک کابل سه رشته ای 40 سانتی برای ارسال دیتا استفاده میکنم
    کریستال: 8 مگاهرتز خارجی (فیوز بیت هاش هم تنظیمه)
    آی سی:اتمگا 16
    ابتدا دیتا با MAX232 به RS232 تبدیل میشه بعد با یه مبدل به USB تبدیل میکنمش
    و در نهایت اینکه در طی امتحان های بیشماری که انجام دادم یک دفعه خروجی درست دریافت کردم ولی دیگه نتونستم دیتا بگیرم و علامت سوال نشون میده

    1395/06/04
    02:08
    • مهدی دمرچیلو

      مدیر سایت

      مهدی دمرچیلو

      سلام
      خب اون طوری که میگید بعید هم میدونم b.r ها رو هم تنظیم و برابر نکرده باشید در دو طرف – لذا دیگه چیزی به ذهنم نمیرسه و باید مدار پیشم باشه و خودم باهاش ور برم تا مشکل رو پیدا کنم.

      1395/06/04
      02:30
    • Avatar

      مهمان

      نرگس حسنوند

      سلام خسته نباشین من به اطلاعاتتون نیاز دارم اگه امکانش هست که کمکم کنید ممنونم

      1396/10/18
      05:54
  9. Avatar

    مهمان

    mahan

    سلام من پروژه دارم که با وقفه بیت ذوتا میکرو از طریق یوزارت ارتباط برقرار کنم ولی نمیشه امکانش هست که کمکم کنید ؟

    1395/05/09
    09:23
  10. Avatar

    مهمان

    گازیچی

    سلام..وقتتون بخیر..من میخوام ی برنامه بنویسم که یک قسمتش اینه که:یک عدد رو ما روی کی پد(ازین کی پد کوچیکا)که ب میکرو متصل هست فشار میدیم،و این عدد روی lcd که به میکرو متصل هست نمایش داده میشه و همچنین از طریق پورت سریال میاد و روی هایپر ترمینال کدویژن نمایش داده میشه…
    قسمت بعدی این هست که:ما روی کیبورد کامپیوتر مثلا میزنیم a،بعد این a باید از طریق پورت سریال بیاد و روی lcd بره نمایش داده بشه…
    خیلییییییی وقته درگیر همین برنامه ای هستم که به دید همه خیلی ساده است..اما نمیدونم چرا نمیتونم انجامش بدم!!!
    میشه کمکمم کنین..اینکه عدد و رو کی پد بزنیمو روی lcd نمایش بده حله..بعد با putchar هم گفتم بره رو پورت سریال،اما تو پروتئوس همش مثلا میزنه 08 هیچ تغییری ام نمیکنه..!در عملم ک اصلا راه اندازی نشد میکرو!:))))))
    لطفا کمکمممممممممممممممممممم کنیییین..!خداخیرتون بده!!

    1395/04/20
    08:09
    • مهدی دمرچیلو

      مدیر سایت

      مهدی دمرچیلو

      سلام
      مطلب آموزش اتصال کیپد به میکرو در سایت هستش.
      مطلب ارتباط با کامپیوتر و پروژه های نمونه در سایت هستش.
      دو مطلب فوق رو بخونید و پروژتون رو انجام بدید.
      خب فعلا تو همون پروتئوس انجام بده پروژه رو – و بعد در عمل ببند – الان شما به پروژه های کیپد که اطلاعاتش تو LCD نمایش داده میشه – همچین پروژه ای تو سایت باید باشه – بگردی پیداش میکنی

      1395/04/20
      08:23
  11. Avatar

    مهمان

    محمد

    با احترام به نظر شما گور باباش که بی انصافیه کلی کارها رو راه میندازه بی چاره

    1395/02/30
    10:26
    • مهدی دمرچیلو

      مدیر سایت

      مهدی دمرچیلو

      حرف شما درسته ولی بعدا پشیمون میشی که چرا تو عمل کار نکردی – مخصوصا برای تازه کار ها
      تو بعضی موارد حتی پروئوس برعکس جواب میده laugh (مدار تو عمل کار میکنه ولی تو پروتئوس نه)

      1395/02/30
      10:53
  12. Avatar

    مهمان

    محمد

    سلام دمرچیلو عزیز. یه برنامه را در پرتئوس شبیه سازی کردم با تنظیم بارد ریت پورت سریال و ترمینال مجازی روی 1200 هر چی روی فرستنده میفرستم در گیرنده نرمال است اما وقتی تنظیمات پورت سریال و تنظیمات پروتئوس را روی 9600 میگذارم روی ترمینال خروجی پروتئوس خروجی ندارم ؟؟؟؟؟؟؟؟

    1395/02/28
    09:40
    • مهدی دمرچیلو

      مدیر سایت

      مهدی دمرچیلو

      سلام
      یه کلمه فقط بگم >> گور بابای پروتئوس – برو در عمل تست کن

      1395/02/28
      10:39
  13. Avatar

    مهمان

    mohamad

    سلام

    1394/03/15
    11:55
  14. مهدی دمرچیلو

    مدیر سایت

    مهدی دمرچیلو

    سلام
    مطلب خوبی هستش
    جز برنامم( crazy ) بود که یادش بگیرم و عملی کار کنم و آموزشاش رو بزارم تو سایت >>> ولی چون شروعش با شما بود لذا تا آخرش برید>>>>فقط آسون یاد بده که خودم هم میخوام مطالب مربوط به میکرو_pc رو بخونم.(فعلا دارم رو پروژه sms با کیپد کار میکنم….>>>تو قسمت تایمرش گیر کردم>>میتونی کمکی کنی؟ blush )
    فقط دادا من به پویا تو اولین مطلبش که دیشب گزاشت یه سری نکات رو گفتم >>تو قسمت نظرات>>بخون و اجراشون کن
    http://dmf313.ir/%D8%B1%D8%A7%D9%87-%D8%A7%D9%86%D8%AF%D8%A7%D8%B2%DB%8C-%D8%B3%D9%86%D8%B3%D9%88%D8%B1-ds18b20-%D8%A8%D8%A7-lcd-2-16/
    در کل خسته نباشی good

    1393/06/12
    11:44