پروتکل ارتباطی USART

saalek110

Well-Known Member

پروتکل ارتباطی USART​


تاپیک های مرتبط:


 
آخرین ویرایش:

saalek110

Well-Known Member

پروتکل ارتباط سریال چیست؟​

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

  1. سری
  2. موازی
تقصیم بندی کرد.در مقایسه بین این 2 روش میتوان گفت که روش انتقال موازی به علت انتقال n بیت اطلاعات در یک لحظه ، سرعت آن نسبت به سریال که فقط در یک لحظه فقط یک بیت را انتقال می دهد بیشتر است.

همچنین برای فواصل طولانی استفاده از روش موازی به علت تعدد سیم های ارتباطی ، دارای هزینه ی بالاتری است.بنابراین در فواصل طولانی انتقال اطلاعات به روش سریال مناسب تر است.

ارتباط بین فرستنده و گیرنده در روش ارتباط سریال :​

بطور کلی سه روش ارتباط بین فرستنده و گیرنده در ارتباط سریال قابل بررسی می باشد:

1. روش یک طرفه ساده یا simplex :

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

2. روش نیم دو طرفه یا half duplex :

در این روش ، اطلاعات می توانند، در دو جهت انتقال یابند . اما در هر لحظه فقط یک جهت امکان پذیر است.

ازاین روش از ارسال اطلاعات در ارتباط سریال ، در برخی از میکروکنترلر ها مانند خانواده 8051 استفاده شده است.

روش های ارسال اطلاعات در ارتباط سریال

3. روش دو طرفه یا full duplex :

در این روش اطلاعات در یک لحظه در هر دو جهت انتقال می یابد.از این روش انتقال در ارتباط سریال میکروکنترلرهای AVR استفاده شده است.

روش های مختلف ارسال سریال:​

برای روش های انتقال سریال 2 روش کلی وجود دارد.

1. انتقال سریال به روش سنکرون یا همزمان:

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

میکروکنترلرهای AVR ، دارای 2 حالت ارتباط سریال همزمان می باشند.
الف) ارتباط سریال سنکرون یا همزمان Master :

در این حالت پالس های همزمانی توسط خود میکروکنترلر (روی پایه ی XCK ) تولید و به عنوان پالس ساعت از میکرو (فرستنده) به گیرنده ، همراه و همزمان با اطلاعات فرستنده می شود تا گیرنده به وسیله آن خودش را تنظیم کند.
ب) ارتباط سریال سنکرون یا همزمان Slave :

در این حالت میکروکنترلر نقش گیرنده را بر عهده دارد و پالس های همزمانی که از فرستنده ارسال شده است ، ازطریق پایه ی XCK دریافت میشود.

2. انتقال سریال به روش آسنکرون یا غیر همزمان:

در این روش ، یک کاراکتر همراه با بیت توازن ، یک بیت پایانی و یک بیت شروع جمعا به تعداد 10 بیت فرستاده میشود. لازم به ذکر است که تمام بیت های حاوی اطلاعات مفید نیستند!

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

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

uart.png


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

اگر بیت پایانی موجود باشد، اطلاعات قابل قبول است و در غیر این صورت یک خطای قالب بندی نشان داده خواهد شد. خطای قالب بندی معمولا در صورتی اتفاق می افتد که اطلاعات با نرخ انتقال (Baud Rate) اشتباه دریافت گردد.(که در شرایط عادی نباید اتفاق بیوفتد)

ارتباط سریال یا پروتکل USART چیست؟ - لوینیک
 

saalek110

Well-Known Member

تفاوت usart و uart

در دنیای دیجیتال ارتباط بین ماژول‌ها از اهمیت زیادی برخوردار است و به همین دلیل پروتکل‌های مختلفی برای این کار به وجود آمده است. این پروتکل‌ها می‌توانند اتصال بین دو ماژول سخت‌افزاری یا کاربر و وسیله دیجیتال را فراهم کنند و قطعا بسیار کارآمد خواهند بود. از گذشته زمانی که کسی USB را نمی‌شناخت uart و usart از پرکاربردترین پروتکل‌ها بودند و امروز نیز برای ارتباط بین میکروکنترلرها یا بردهایی مانند آردوینو و رزبری پای با ماژول‌هایی مانند RFID، بلوتوث و... به کار می‌روند. یکی از سوا لاتی که متخصصین سخت‌افزار همواره با آن مواجه هستند این است که کدام‌یک از این دو پروتکل برای آن‌ها بهتر است و چه زمانی باید از آن استفاده کنند؟ در ادامه این مطلب با بیان تفاوت usart و uart به این سوال پاسخ خواهیم داد.

Usart چیست؟​

قبل از اینکه به سراغ بررسی تفاوت بین این دو پروتکل برویم بهتر است نگاهی جزئی به ساختار هریک از آن‌ها بیندازیم. Usart یا همان Universal Synchronous/Asynchronous Receiver/Transmitter یک روش ارتباطی برای انتقال سریال اطلاعات است که برای اتصال ابزارهای تخصصی به یکدیگر طراحی شده است.
با استفاده از این پروتکل می‌توان یک بیت داده را در زمان‌های مشخصی به گیرنده ارسال کرد؛ نکته اینجا است که با توجه به وجود کلاک در ساختار آن زمان‌بندی ارسال و دریافت دقیق است و هماهنگی خوبی بین گیرنده و فرستنده به وجود می‌آید.

Uart چیست؟​

Uart یا Universal Asynchronous Receiver/Transmitter نسخه قدیمی‌تر این پروتکل ارتباطی است که داده‌های سریال را به‌صورت موازی یا برعکس در زمان مناسبی ارسال می‌کند. در این روش ارتباطی کلاکی وجود ندارد؛ به همین دلیل لازم است که از طریق ارسال بیت‌های اضافه گیرنده و فرستنده از زمان برقراری ارتباط و ارسال داده‌ها به‌صورت موازی اطلاع پیدا کنند. بیت‌های stop و start در ساختار این پروتکل به همین منظور تعریف شده‌اند؛ وجود آن‌ها باعث ایجاد سربار اطلاعاتی می‌شود و کمی از سرعت ارتباط می‌کاهد.

تفاوت usart و uart در چیست؟​

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

تفاوت در نحوه ارتباط​

به‌طورکلی ارتباط بین یک گیرنده و فرستنده به سه صورت یک‌طرفه (SimpleX)، نیمه دوطرفه (Half-Duplex) و تمام دوطرفه (full-Duplex) انجام می‌شود.
در حالت یک‌طرفه یکی از طرفین همیشه فرستنده و دیگری همیشه گیرنده است و نمی‌توان بدون ایجاد یک خط ارتباطی دیگر از گیرنده به فرستنده مسیری ایجاد کرد. در ارتباط نیمه دوطرفه هریک از طرفین در یک زمان خاص یا گیرنده است یا فرستنده و دو طرف نمی‌توانند به‌صورت هم‌زمان داده‌ای برای یکدیگر ارسال کنند. در ارتباط تمام دوطرفه این محدودیت برداشته شده و طرفین می‌توانند هم‌زمان با یکدیگر داده‌هایی را دریافت یا ارسال کنند.
تفاوت usart و uart در این مورد این است که usart به‌صورت نیمه دوطرفه عمل می‌کند و uart از حالت دوطرفه کامل بهره می‌برد. این موضوع به این دلیل است که در پروتکل uart ساختاری برای هماهنگی فرستنده و گیرنده و اعلام زمان شروع ارسال داده وجود ندارد و باید هریک از طرفین دیگری را از این زمان مطلع کند.

سرعت​

با توجه به اینکه در پروتکل usart نیازی به مکانیزم هماهنگ‌سازی نیست و داده‌ها بدون سربار ارسال می‌شوند، سرعت آن بسیار بیشتر است و داده‌هایی با حجم مشابه در زمان کوتاه‌تری ارسال خواهند شد.

سیگنال‌های ارتباطی​

یک نکته مهم در تفاوت usart و uart در سیگنال‌های ارتباطی آن‌ها است. با توجه به تصویر زیر در پروتکل uart تنها دو سیگنال اصلی Tx و Rx وجود دارند که وظیفه ارسال و دریافت اطلاعات بر عهده آن‌ها است. در usart علاوه بر این دو یک سیگنال کلاک یا همان ساعت نیز حضور دارد که می‌تواند ارتباط بین دو طرف را مدیریت کند تا هردو در زمان رسیدن لبه پالس ساعت اطلاعات را برداشت کنند.

نحوه ارسال داده​

در پروتکل usart می‌توان داده‌ها را به‌صورت بلوک‌های 8، 16، 32 و... بیتی انتقال داد؛ این موضوع به دلیل وجود سیگنال کلاک در آن است که احتمال خراب شدن داده‌ها یا وقوع اشتباه را به‌شدت کاهش می‌دهد. این در حالی است که در هر مرحله از ارسال با پروتکل uart بیشتر از 1 بایت داده را نمی‌توان ارسال کرد.
در این نوع ارتباط افزایش تعداد بیت‌ها باعث افزایش خطا می‌شود؛ درواقع تاخیری که در زمان ارسال ایجاد می‌شود خواندن اطلاعات توسط گیرنده را سخت می‌کند و ممکن است در این مسیر داده‌ها به‌طور کامل عوض شوند.

امکان تبدیل به یکدیگر​

این موضوع را شاید نتوان به‌طور مستقیم تفاوت usart و uart دانست؛ اما نکته جالبی است که به کار افرادی که به هر دو نوع پروتکل نیاز دارند خواهد آمد. شما می‌توانید با حذف کلاک و ایجاد تغییری کوچک در برنامه‌نویسی usart آن را به uart تبدیل کنید؛ اما امکان انجام این کار به‌صورت برعکس وجود ندارد.

پیچیدگی و سادگی​

با توجه به نبود ساختار زمان‌بندی و پالس ساعت در پروتکل uart ساختار آن بسیار ساده‌تر از usart بوده و طبیعتا فهم آن نیز راحت‌تر خواهد بود.

اطلاعاتی که گیرنده و فرستنده از یکدیگر می‌دانند​

یکی از مهم‌ترین نکاتی که دانستن تفاوت usart و uart را مهم می‌کند، توافقاتی است که بین گیرنده و فرستنده باید انجام گیرد. در پروتکل usart تقریبا هیچ توافقی به‌جز فرکانس پالس ساعت نیاز نیست؛ زیرا با آمدن لبه این پالس گیرنده می‌داند که داده‌های جدید از راه رسیده‌اند. این در حالی است که در uart باید هماهنگی‌هایی بین گیرنده و فرستنده انجام گیرد. گیرنده باید سرعت انتقال (baud rate) فرستنده را بداند و در خصوص تعداد بیت‌های start و stop و مقدار آن‌ها نیز باید توافقاتی صورت گیرد.

امکان تغییر سرعت​

در USART نمی‌توان فرکانس پالس ساعت را تغییر داد و در طول هر ارتباطی داده‌ها با سرعت معینی ارسال می‌شوند؛ این در حالی است که در uart امکان انتقال داده‌ها با سرعت متغیر وجود خواهد داشت.

مدار سخت‌افزاری​

با توجه به بیشتر بودن پایه‌های IC پروتکل usart تعداد اتصالات موردنیاز بیشتر است و این موضوع طراحی و پیاده‌سازی مدارهای سخت‌افزاری را کمی مشکل می‌کند. به همین دلیل برخی از متخصصان ترجیح می‌دهند که از پروتکل ارتباطی غیرهمزمان که بسیار ساده‌تر است استفاده کنند.

سخن پایانی​

در اینجا تفاوت usart و uart را بررسی کردیم و اکنون زمان آن رسیده است که به سوال ابتدای متن پاسخ دهیم. به‌طورکلی کسانی که قصد دارند حجم بسیار زیادی داده را در زمان مناسبی ارسال کنند و ازنظر فضا برای سیم‌کشی مشکلی ندارند بهتر است به سراغ usart بروند. در مقابل افرادی که سادگی برای آن‌ها مهم‌تر است و دوست ندارند خود را درگیر ساختارهای پیچیده زمان‌بندی و برنامه‌نویسی سیگنال کلاک کنند بهتر است از پروتکل uart استفاده کنند.

تفاوت UART و USART (ویدیوی آموزشی) | مکتب‌خونه
 

saalek110

Well-Known Member

ارتباط سریال USART در میکروکنترلر AVR​



برای وصل کردن کامپیوتر و میکروکنترلر بهم و یا وصل کردن چن تا میکروکنترلر به هم دیگه از ارتباط سریال USART استفاده میکنیم که این ارتباط در میکروکنترلر AVR تعبیه شده و در ادامه،با این واحد بیشتر آشنا میشیم.
روش های انتقال داده:
  1. انتقال داده ها بصورت موازی
در این روش همونطوری که از اسم این روش مشخصه،داده ها بصورت موازی و به تعداد بیتی که موجوده، به خطوط(سیم) نیاز داریم تا ارتباط ایجاد کنیم.مثلن برای انتقال داده ی یک بایتی (که 8بیت هستش) به 8خطوط نیاز داریم که به این ترتیب داده ها نسبت به روش سریال، سریع تر منتقل میشن ولی عیب هایی هم دارن که در اثر طولانی بودن مسیر و به تعداد زیاد خطوط،نویز سیم ها بیشتر میشه و همچنین سیم هایی که در مجاور هم هستن،ظرفیت خازنی شان هم بیشتر میشه که این کار باعث تغییر شکل پالس ها میشه.
  1. انتقال داده ها بصورت متوالی(سریالی)
در این روش،انتقال داده معمولا توسط یه خط(سیم) انجام میشه که این تک سیمه بودن با این که سرعت انتقال داده رو پایین میاره ولی باعث کاهش نویز و کاهش هزینه سیم های اضافی میشه که اینکار هم برای فواصل دور این سبک انتقال رو بهینه میکنه.
این روش به این صورته که تمام 8 بیتِ یک بایت توسط رجیستر جابجایی با ورودی موازی و خروجی سریال به بیت های سریال در قالب مشخص بر تک سیم وارد میشه و تو قسمت دریافت کننده یه رجیستر جابجایی با ورودی سریال و خروجی موازی هستش که داده های انتقال یافته رو بصورت یک بایت در میاره.
اصول ارتباط سریال و انواع آن در میکروکنترلرAVR:
با هر قالب بندی دلخواهی میتوان ارتباط سریال بین دو میکروکنترلر ایجاد کرد و این قالب بندی،به نوعی توافقی بین فرستنده و گیرنده هستش که نمونه ایی ازین توافقات معروف و استاندارد پروتکل های ارتباط سریالUSART و SPIهستن.
میکروکنترلر Atmega32/16 از سه سیستم ارتباط سریال پشتیبانی میکنه:
  1. ارتباط سریال USART
  2. پروتکل گذرگاه SPI
  3. پروتکل دوسیمه TWI
2-2-281x300.png

[ads1]

ارتباط سریال USART در AVR:
ارتباط سریال USART یک نوع از انواع ارتباطات AVR هستش که به دو روش سنکرون(همزمان) و آسنکرون (غیرهمزمان) برای انتقال داده استفاده میکنه.در روش سنکرون تمام اطلاعات در یک لحظه و بدون قالب بندی و بدون نیاز به بیت های اضافی(بیت های STOP,START,PARITY) و بصورت یک بلوک داده منتقل میشه در این مدل،دو دستگاه فرستنده و گیرنده با ارسال پالس کلاک با هم همزمان میشن ولی در مدل آسنکرون،در هر لحظه یک بایت منتقل میشه و تا تمام نشدن انتقال بایت اول،انتقال بایت دوم شروع نمیشه و همچنین این مدل به ارسال پالس کلاک نیازی نیس.
میتوان برنامه ایی ساخت که هم به روش سنکرون و هم به روش آسنکرون طراحی شده باشه ولی ممکنه برنامه ایی با روش سنکرون طولانی باشه ولی با روش آسنکرون ساده یا برعکس،برای همین آیسی هایی به نام USART طراحی شده ان که این کار رو میکنه.
USART=Universal Synchronous-Asynchronous Receiver-transmitter
از انتقال سنکرون داده ها معمولا برای ارسال تک کاراکتر استفاده میشه و از آسنکرون برای انتقال بلوکی (مجموعه ای از کاراکترها)استفاده میشه که در این روش بلوک قالب بندی شده و در وسط بیت آغاز و پایان قرار داره.(قالب بندی یعنی اینکه داده ها رو در وسط بیت های آغاز و پایان قرار بدیم).
در قالب بندی هنگامی که داده ایی منتقل نمیشه،سیگنال یک هستش(که به آن نشانه میگن) و انتقال داده با بیت آغاز شروع شده که یک بیته و مقدار این بیت صفره و به دنبال همین بیت آغاز،بیت های داده که به ترتیب،اول بیت b0 و بعد b1 و…وb7 میان و درنهایت بعد از بیت b7 بیت پایان که مقدارش یک هستش و میتونه یک یا دو بیتی باشه،میاد.
شکل زیر قالب بندی دریافت کد اسکی کاراکتر M رو نشون میده.
قالب بندی در مد آسنکرون در ارتباط سریال USART

نکته:همزمان سازی در مد آسنکرون توسط انتخاب مناسب نرخ بیت (Boud Rate) و بیت های شروع و پایان انجام میشه.
[ads1]
در ارتباط سریال (مخصوصا ارتباط سریال USART)سه حالت وجود داره که به این قراره:
یک طرفه: در این نوع انتقال داده فقط ارسال میشه یا اینکه فقط دریافت میشه.مثلن پرینتر،داده از کامپیوتر فقط دریافت میکنه و یا اینکه موس،داده به کامپیوتر فقط ارسال میکنه.
نیمه دوطرفه:در این نوع انتقال در یک لحظه،میتوان داده یا ارسال کرد و یا دریافت کرد و همزمان نمیشه که هم بفرستیم و هم دریافت کنیم.
تمام دوطرفه:در این نوع انتقال در هر لحظه،میتوان داده هم ارسال کرد و هم میتوان دریافت کرد.
انواع ارتباط سریال در ارتباط سریال USART

قبل از فعال سازی پورت سریال باید آن را تنظیم کرده سپس فعال کنیم، تنظیمات عبارت است از سرعت انتقال ، قالب داده ها(۵،۶،۷،۸،۹ بیتی) ، حالت سنکرون و آسنکرون و آسنکرون با سرعت دو برابر ، حالت مستر و …
[ads1]

معرفی رجیسترهای ارتباط سریال USART:
در میکروکنترلر avr پنج ثبات به ارتباط سریال USART اختصاص دارد که عبارتند از:
1.UDR
2.UCSRA
3.UCSRB
4.UCSRC
5.UBRR
رجیستر UDR:
USART DATA REGISTER
این رجیستر،یه رجیستر 8 بیتی بوده که دیتای ارسالی و دریافتی ارتباط سریال USART تو این رجیستر ذخیره میشه،یعنی زمانی که اطلاعات دریافت میشه تو این رجیستر ذخیره میشه و قابل خواندنه و همچنین زمانی که بعنوان ارسال کننده استفاده کنیم،اطلاعات تو این رجیستر نوشته میشه(قابل نوشتنه) تا میکرو بتونه بفرسته.

رجیستر UCSR:
USART CONTROL STATUS REGISTER
این رجیستر وظیفه تنظیم و کنترل وضعیت پورت ارتباط سریال USART رو برعهده داره که از سه رجیستر UCSRA و UCSRBو UCSRC تشکیل میشه.

رجیستر UCSRA:
USART CONTROL STATUS REGISTER A
رجیستر UCSRA در ارتباط سریال usart در میکروکنترلر AVR

بیت RXC:
این بیت پرچم دریافت اطلاعات هستش،زمانی که بافر دریافت اطلاعات خالیه،مقدار این بیت صفره و زمانی که دریافت اطلاعات تکمیل شده (بافر گیرنده پر باشه) و همچنین زمانی که داده ها خوانده نشده،پرچم این بیت فعال شده و مقدار یک تو این بیت ذخیره میشه.
ازین بیت برای ایجاد وقفه تکمیل دریافت هم استفاده میشه.یعنی زمانی که داده ها بطور کامل دریافت بشن،با فعال کردن وقفه تکمیل دریافت،میتونیم هنگام تکمیل دریافت وقفه ایی رخ بده و طبق این وقفه،روال سرویس وقفه اجرا بشه.
بیت TXC:
عملکرد این بیت هم مثل عملکرد بیت RXC بوده با این تفاوت که بیت TXC پرچم فرستنده و RXC پرچم گیرنده هستش.
هنگامی تمامی محتویات رجیسترUDR بطور کامل ارسال بشه این پرچم،یک میشه.
از این بیت هم مثل بیت RXC،میتونیم برای ایجاد وقفه (وقفه تکمیل ارسال داده) استفاده کنیم به این صورت که با فعال کردن وقفه تکمیل ارسال(روش فعال سازی در ادامه گفته میشه)،هنگامی که اطلاعات بصورت کامل ارسال بشه،وقفه تکمیل ارسال رخ داده و طبق این وقفه،روتین سرویس وقفه (وقفه تکمیل ارسال) اجرا میشه.
تو آموزش های قبلی هم گفته بودم که برای صفر کردن پرچم ها در محیط کدنویسی،به بیت پرچم مربوطه مقدار یک میدیم تا پرچم پاک بشه(مقدارش صفر بشه) به عبارت دیگه اگه بخواییم پرچمی صفر بشه باید از طریق کدنویسی به اون بیت مقدار یک بدیم تا صفر بشه(تو پروژه ها این مطلبو میبینین).

ادامه در پست بعد......
 

saalek110

Well-Known Member
بیت UDRE:
این بیت،پرچم خالی بودن یا پر بودن بافر رو نشون میده به این معنیه که اگه بافر پر باشه و آماده نوشتن(در ارسال) یا آماده خواندن (در دریافت) از طریق پورت ارتباط سریال USART باشه،این بیت فعال میشه(یک میشه) و اگه بافر خالی باشه (یعنی اطلاعاتی برای خواندن یا نوشتن موجود نباشه) این بیت صفر میشه و همچنین این بیت به محض نوشتن اطلاعات یا خواندن اطلاعات صفر میشه.
بیت FE :
این بیت خطای قالب بندی که در ابتدای مطلب بحث کردبم رو میگه که اگه در قالب بندی مشکلی وجود داشته باشه این بیت یک میشه که لازمه برای مطلع بودن از خطا ی قالب بندی،ابتدا مقدار این بیت رو صفر قرار بدیم تا در صورت وجود خطا مطلع بشیم.
بیت DOR :
هنگامی که بافر دریافت (رجیسترUDR) پر بشه و اطلاعات جدید وارد بافر بشه،اطلاعات قبلی از بین رفته و این پرچم یک میشه و تا وقتی که اطلاعات از بافر خوانده نشده باشه این بیت همچنان صفر باقی میمونه.این بیت هم باید در ابندا صفر کنیم.
بیت PE :
این بیت زمانی یک میشه که خطای توازن در داده دریافتی رخ بده.
بیت U2X :
این بیت سرعت ارسال داده رو فقط در حالت آسنکرون دو برابر میکنه و که برای استفاده ازین قابلیت باید این بیت یک بشه و درحالت سنکرون نمیشه سرعت ارسال رو دو برابر کرد بنابرین باید این بیت رو در این حالت صفر کنیم.
بیت MPCM :
ازین بیت زمانی که میخواییم چن تا میکرو رو بهم وصل کنیم،استفاده میکنیم و با یک کردن این بیت،ارتباط شبکه ایی بین میکروکنترلرها فعال میشه.
بیت های U2X و MPCM کاربرد عمومی چندانی تو پروژه ها ندارن.
[ads1]

رجیستر UCSRB:
USART CONTROL STATUS REGISTER B
رجیسترUCSRB در ارتباط سریال USART در میکروکنترلر AVR

بیت RXCIE:
این بیت وقفه ی دریافت رو فعال وغیرفعال میکنه.اگه این بیت یک باشه وقفه دریافت داده فعال شده و اگه اطلاعاتی از طریق ارتباط سریال USART برسه،به آدرس وقفه ی دریافت پرش کرده و روتین سوریس وقفه رو اجرا میکنه.
بیت TXCIE :
این بیت هم مثل بیت RXCIE عمل میکنه که اگه این بیت فعال باشه و ارسال اطلاعات به پایان برسه،به این وقفه پرش کرده و برنامه ای این وقفه رو اجرا میکنه.
بیت UDRIE:
این بیت برای فعال سازی وقفه پرچم UDRE در رجیستر UCSRA به کار میره،یعنی اگه رجستر دیتا(UDR) خالی باشه(بافر خالی باشه)،وقفه ی خالی بودن اجرا میشه.
بیت RXEN:
در صورت یک بودن این بیت،گیرنده ارتباط سریال USART فعال میشه.
بیت TXEN :
در صورت یک بودن این بیت،فرستنده ارتباط سریال USART،فعال میشه.
بیت UCSZ2 :
این بیت و بیت های UCSZ1 و UCSZ0 (این دو بیت تو رجیستر بعدی قرار داره) برا تنظیم قالب بندی به کار میرن.
بیت RXB8 :
این بیت زمانی که از قالب ۹ بیتی استفاده کنیم بیت نهم دریافتی در این بیت ذخیره شده و قابل خواندنه و باید قبل از خواندن هشت بیت دیگر در UDR این بیت خوانده بشه.
بیت TXB8 :
این بیت هم زمانی قابل استفاده اس که از قالب نه بیتی استفاده کنیم و برای ارسال بیت نهم کاربرد داره و باید برای ارسال بیت نهم، اول بیت نهم در این بیت نوشته بشه و سپس هشت بیت دیگر و در رجیستر UDR نوشته بشه.
[ads1]

رجیستر UCSRC:
USART CONTROL STATUS REGISTER C
رجیسترUCSRC در ارتباط سریال USART در میکروکنترلر AVR

بیت URSEL:
برای انتخاب و تنظیم رجیستر UCSRC باید این بیت رو یک کنیم زیرا آدرس I/Oاین رجیستر باUBRRH یکسان بوده و اگه این بیت یک باشه میتونیم این رجیستر رو تنظیم کنیم.
بیت UMSEL:
این بیت مد ارتباط سریال USARTرو انتخاب میکنه.اگه این بیت یک باشه مد سنکرون انتخاب میشه و اگه صفر باشه حالت آسنکرون انتخاب میشه.
بیت های UPM1,UPM0:
این بیت،میتونه بیت توازن را غیرفعال یا فعال کنه و در واحد فرستنده،بیت توازن زوج و یا فرد ایجاد کنه.
همانطوری که گفته شد یک بودن بیت PE،خطا رو نشون میده و اگه در توازن هم خطایی بود تو این بیت ثبت میشه.
بیت های UPM0 و UPM1 رجیسترUCSRC در ارتباط سریال USART در میکروکنترلر AVR

بیت USBS:
این بیت ،تعداد بیت های STOP رو مشخص میکنه اگه این بیت صفر باشه یک بیت STOPداریم و اگه یک باشه،دو بیت STOP داریم.
بیت های UCSZ2 و UCSZ1 و UCSZ0:
این بیت ها سایز کاراکترها(داده ها)رو تعیین میکنه
بیت های UCSZ در رجیسترUCSRC در ارتباط سریال USART در میکروکنترلر AVR

بیت UCPOL:
این بیت در حالت سنکرون کاربرد داشته و تعیین میکنه که از حالت پایین رونده نمونه برداری کنه یا از حالت بالارونده.
[ads1]

رجیستر UBRR:
USART BUAD RATE REGISTER
رجیسترUBRR در ارتباط سریال USART در میکروکنترلر AVR

از این رجیستر برای تنظیم نرخ انتقال(Bd rate) استفاده میشه که یه رجیستر 16 بیتی بوده که از دو رجیستر UBRRH و UBRRL تشکیل میشه.
بیت URSEL:
همونطور که قبلا گفته شد،آدرس رجیستر UBRRH با آدرس رجیستر UCSRC یکسان بوده و برای تنظیم و انتخاب رجیستر UCSRC ،بیت URSEL رو یک میکنیم و برای انتخاب و تنظیم رجیستر UBRRH ،این بیت رو صفر میکنیم.
بیت های 0 تا 11:
تو این بیت ها اعدادی متناسب با باود ریت نوشته میشه که از فرمول زیر بدست میاد.
فرمول UBRR و باودریت و فرکانس میکرو و Buadrate در ارتباط سریال USART در میکروکنترلر AVR

Buad rate=1200 , 2400 , 4800 , 9600 , 19200 , 38400 , 57600 , 115200 , 000
[ads1]
مثال)مقدار رجیستر UBRR با باودریت 2400 و با فرکانس 16مگا هرتز برابر خواهد بود با:
11.png

این عدد رو رند کرده و تو رجیستر UBRR قرار میدیم که تو این رند کردن مقدار خطا ظاهر میشه که باید کمتر از2 درصد باشه.
12.png

همونطوری می بینین میزان خطا 0.16درصد بوده و این مقدار هم کمتر از 2درصد میشه که یه مقدار مقبولی هستش.
پس مقدار 415 رو تو این رجیستر مینویسیم.عدد 415 به باینری بصورت 1111 1001 0001میشه که خواهیم داش:
13.png

در صورتی که عدد کمتر از 255 باشه مقدار UBRRH برابر صفره.


ارتباط سریال USART در میکروکنترلر AVR - خانه الکترونیک
 

جدیدترین ارسال ها

بالا