آموزش جامع میکروکنترلر AVR جلسه5
موضوع این جلسه : ارتباط سریال USART
تو جلسه قبل در مورد “انواع تبادل سریال” صحبت کردیم که 4 تا موردش رو ذکر کردیم و ما در این قسمت و پروژه هامون فقط از مد آسنکرون استفاده میکنیم و با 3 تا حالت دیگه کاری نداریم ، البته فعلا .
در این آموزش ریجستر هایی رو معرفی میکنیم که البته در ابتدای کار ما از هر ریجستر فقط با چند بیتش کار داریم و با بقیه بیت هاش کاری نداریم.(البته فعلا)
تو این جلسه که عنوانش ” ارتباط سریال USART ” هست یه 5 تا ریجستر داریم با نام های UCSRA – UCSRB – UCSRC – UBRRL – UBRRH که در ادامه توضیح میدمشون.بریم سراغ آموزش avr مون و این بار با موضوع قشنگ و زیبا USART !!!
بیت 0 : میکروکنترلر avr به حالت ارتباط سریال چند پردازنده ای میرود ؛ مربوط به اتصال چند میکروکنترلر به صورت سریال.
بیت 1 : فقط در حالت آسنکرون کاربرد داره ، در حالت سنکرون باید صفر شود ، با یک کردنش تقسیم فرکانسی (برا تولید نرخ انتقال داده) از 16 به 8 تغیر میکند.
بیت 2 : اگر در قالب دریافتی خطای توازن رخ دهد این بیت یک میشود.(موقع مقدار دهی به این ریجستر ، این بیت را باید صفر کرد.)
بیت 3 : اگه بافر دریافت پر شده باشه و بازم اگه اطلاعات جدیدی بهش داده شه ، اطلاعات جدید از بین میروند.(موقع مقدار دهی به این ریجستر ، این بیت را باید صفر کرد.)
بیت 4 : اگه در قالب داده دریافتی مشکلی رخ دهد این بیت یک میشه.(موقع مقدار دهی به این ریجستر ، این بیت را باید صفر کرد.)
بیت 5 : اگه بافر خالی باشه و آماده دریافت داداه جدید باشه این بیت یک میشه.(موقع مقدار دهی به این ریجستر ، این بیت را باید صفر کرد.)
بت 6 : اگه داده جدیدی برا ارسال موجود نباشه این بیت یک میشه.(موقع مقدار دهی به این ریجستر ، این بیت را باید صفر کرد.)
بیت 7 : زمانی که داده دریافتی در بافر دریافت موجود باشه و این بافر هنوز خونده نشده باشه.
بیت 0 : اگه فریم داده ارسالی رو 9 بیت انتخاب کنیم ، این بیت به عنوان بیت 9 ام عمل میکند لذا باید این بیت رو یک کنیم.
بیت 1 : اگه فریم داده دریافتی رو 9 بیت انتخاب کنیم ، این بیت به عنوان بیت 9 ام عمل میکند لذا باید این بیت رو یک کنیم.
بیت 2 : این بیت به همراه بیت 1 و 2 ریجستر UCSRC مربوط به تعیین تعداد بیت داده هستش که با توجه به جدول زیر میتونید تعیینش کنید.
بیت 3 : برا تعیین قطعه مورد نظر (مثلا میکرو) به عنوان ارسال کننده داده باید این بیت یک شود.(با این کار عملکرد عادی پایه PORTD.1 قطع شده و نقش دومش یعنی TXD فعال میشه.)
بیت 4 : برا تعیین قطعه مورد نظر (مثلا میکرو) به عنوان دریافت کننده داده باید این بیت یک شود.(با این کار عملکرد عادی پایه PORTD.0 قطع شده و نقش دومش یعنی RXD فعال میشه.)
بیت 5 : با یک کردن این بیت وقفه خالی بودن بافر دریافتی فعال میشه.(البته به شرطی که بافر کلی(یا همون سراسری!) هم فعال باشه)
بت 6 : با یک کردن این بیت وقفه کامل شدن ارسال فعال میشه.(البته به شرطی که بافر کلی(یا همون سراسری!) هم فعال باشه)
بیت 7 : با یک کردن این بیت وقفه کامل شدن دریافت فعال میشه.(البته به شرطی که بافر کلی(یا همون سراسری!) هم فعال باشه)
بیت 0 : در مد سنکرون کاربرد دارد.
بیت 1 , 2 : توسط این دو بیت به همراه بیت 2 ریجستر UCSRB میتوان تعداد بیت داده رو تعیین کرد. که با توجه به جدول بالا میتونید تعیینش کنید.
بیت 3 : تعیین تعداد بیت های STOP (اگه صفرش کنیم>>یک بیت STOP و اگه یکش کنیم>> دوبیت STOP )
بیت 4 و 5 : تعیین بیت توازن ارسالی توسط ارسال کننده.با توجه به عکس(جدول!) زیر این کار رو کنید.
بیت 6 : انتخاب مد ارتباط سریال ؛ 0»»مد اسنکرون و 1»»مد سنکرون
بیت 7 : انتخاب دسترسی به یکی از ریجستر های UCSRC یا UBRRH ، برای دسترسی به UCSRC باید این بیت یک شود.
بیت 0 تا 11 : این 12 بیت برا تعیین نرخ انتقال داده استفاده میشوند.(توسط جدول زیر—جدول زیر رو از دیتاشیت مگا16 گرفتم)
روی عکس ها کلید کنید و در اندازه اصلی ببینیدشون
بیت 12 و 13 و 14 : رزرو شده !
بیت 15 : انتخاب دسترسی به یکی از ریجستر های UCSRC یا UBRRH ، برای دسترسی به UBRRH باید این بیت صفر شود.
سایر منابع : سایت دمرچیلو