ارتباط سریال در AVR
يكشنبه, ۳ مهر ۱۳۹۰، ۰۵:۴۲ ق.ظ
برای بهره مندی کامل از تمامی مزیتهای یک میکروکنترلر نیاز به ارتباط
میکرو کنترلر با محیط خارج است،بطوریکه اغلب انجام یک پروژه صنعتی بدون
ارتباطات متداول بین میکروکنترلر و محیط خارج ممکن نیست.به عنوان مثال یک میکرو باید بتواند تعدادی از المانهای محیطی را دریافت(به اصطلاح SENSE )کند
و پس از پردازشهای لازم و بدست آوردن معلوماتی که به آنها نیاز است آن
دادها و نتایج حاصل را به دنیای خارج مثل یک کامپیوتر برای استفاده و یا
احیانا پردازشهای بیشتر ارسال کند.به عبارت ساده تر میکرو باید داده
های پردازش شده ی توسط خود را به شکلی به خارج ارسال کند تا برای انسان
قابل استفاده باشد،بعنوان نمونه سنسور دمای دیجیتالی را در نظر بگیرید که
خروجی دمای آن یک موج دیجیتال (مانند کلاک پالس) است،میکرو این خروجی
سنسور را دریافت کرده و با مبدلهای دیجیتال به آنالوگ (D/A) خود و یا با
استفاده از روشهای دیگر(مثل استفاده از فرمول سیکل عملکرد سنسور که در
دیتا شیت آن موجود است)دما را اندازه گیری می کند.برای اینکه ما بتوانیم
از این دما (به عنوان یک خروجی از میکرو )بهره ببریم،نیاز به مثلا یک LCD
داریم.برای ارتباط میکرو با LCD روشهای مختلفی وجود دارد.همینکه ما در اینجا از ارتباط و انتقال داده بین دو وسیله مختلف که هماهنگی با یکدیگر نداند صحبت میکنیم،بحث پروتکلها مطرح میشود.از
مطالبی که تا اینجا مطرح شده نتیجه می گیریم که ارتباط سریال USART در
واقع یک پروتکل برای ارتباط میکروکنترلرها با محیط خارج است. ::book::USART مخفف کلمات زیر است:Universal synchronous and Asynchronous Serial Receiver and Transmitterیاارتباط سریال سراسری(سنکرون و آسنکرون)توجه
داشته باشید که در مقابل ارتباط سریال USART ارتباط سریال سراسری آسنکرون
یا به اختصار UART نیز وجود دارد که در آینده به آن نیز خواهیم پرداخت.با مقدمه که گفته شد در قسمت بعد به شرح این ارتباط سریال خواهیم پرداخت.
ارتباط سریال USARTارتباط سریال USART یکی از
پروتکل هایی است که توسط انواع کامپیوترها نیز حمایت میشود و لذا برای بر
قراری ارتباط بین میکرو کنترلرها و کامپیوتر غالبا از این روش استفاده می
شود و به این دلیل مطالعه آن از اهمیت زیادی بر خوردار است .ما در این
قسمت قصد داریم پس از معرفی USART و قسمتهای مختلف آن بر روی دریافت و
ارسال اطلاعات به صورت رشته های کاراکتری متمرکز می شویم و در ادامه
مزایای این روش را با دو پروژه عملی روشن کنیم .1)آشنایی با ارتباط سریال USART :بخش ارتباطی سریال USART در میکرو کنترلرهای AVR قابلیتهای متنوعی دارد که از جمله آنها می توان به موارد زیر اشاره کرد :• عملکرد Full Duplex ( رجیسترهای سریال مستقل برای دریافت و ارسال )• عملکرد سنکرون و آسنکرون .• عمل به صورت Slave , Master در حالت سنکرون• تولید کننده نرخ ارسال (baud rate) دقیق• حمایت از فریمهای سریال با 5-6-7-8-یا 9 بیت داده و 1 یا 2 بیت توقف .• تولید parity به صورت زوج وفرد و امکان چک کردن سخت افزاری آن .• تشخیص خطاهای سر ریز و نوع فریم .• فیلتر پایین گذر دیجیتال• تولید سه وقفه مجزا برای اتمام TX ،خالی شدن رجیستر داده TX و اتمام RX .• کار در حالت ارتباط چند پردازنده .• امکان دو برابر کردن سرعت در حالت آسنکرون .
2)سازگاری USART با UART در AVR:بعضی از انواع AVR تنها ارتباط
سریال UART حمایت می کنند . به این معنی که ارتباط سریال تنها به صورت
آسنکورن قابل انجام می باشد ،در انواع پیشرفته میکرو کنترلرهای AVR می
توانند به صورت سنکرون و آسنکرون ارتباط برقرار کنند .این دو نوع
ارتباط سریال از نظر محل بیتها در داخل رجیسترها ، نحوه تولید نرخ ارسال ،
و دریافت اطلاعات و عملکرد بافر مربوط به ارسال اطلاعات کاملا مطابقت دارد
و تنها عملکرد بافر مربوط به دریافت اطلاعات در ارتباط سریال USART بهبود
یافته است .
3)تولید کننده نرخ ارسال (baudrate) داخلی:واحد ارتباط سریال ، یک
تولید کننده کلاک داخلی را شامل می شود ، که از آن در حالت آسنکرون و حالت
سنکرون در مد Master استفاده می کند . در این واحد یک کانتر وجود دارد که
همیشه به صورت کاهشی می شمارد . این کانتر کلاک خود را به صورت مستقیم از
کلاک سیستم (fosc) می گیرد . هربار که محتوای این کانتر به صفر می رسد یک
کلاک تولید می شود و محتوای کانتر از رجیستر (USART Baud Rate Register)
بار می شود ، سپس بسته به مد عمکلرد ارتباط سریال کلاک تولید شده بر 2،8
یا 16 تقسیم می گردد که قسمتهای مختلف از آن استفاده می کنند . جدول زیر
روابط لازم برای محاسبه نرخ ارسال ( بر حسب تعداد بیتها در هر ثانیه ) و
محاسبه مقدار UBRR را بسته به مد عملکرد ارتباط سریال نشان می دهد .که
در آن BAUD نرخ ارسال ( بر حسب تعداد بیتها در یک ثانیه bps ) و fosc
فرمانس کلاک اسیلاتور سیستم و UBRR محتوای رجیسترهای (0-4095)UBRRL ,
UBRRH می باشند .
کار با سرعت دو برابر (U2X) می توان نرخ ارسال را با یک کردن بیت U2X واقع در رجیستر UCSRA دو برابر نمود .تنظیم
این بیت تنها در مد آسنکرون تأثیر خواهد داشت و باید در مد سنکرون مقدار
آن صفر گردد.با یک کردن این بیت نرخ ارسال به جای 16 بر 8 بیت تقسیم می
گردد،بنابراین در ارتباط آسنکرون نرخ ارسال دو برابر می کند .**********************************بوسیله پورت سریال می توانید به تبادل اطلاعات بین یک میکرو
و کامپیوتر بپردازید.تقریبا همه میکرو های AVR به صورت on-board از UART
پشتیبانی می کنند.مکانیزم تبادل اطلاعات بین میکرو و کامپیوتر به صورت
سریال و آسنکرون می باشد.سریال به این معنی که بیت ها یکی پس از دیگری
منتقل می شوند ، و آسنکرون به این معنی که سیگنال ساعت به منظور همزمانی
در ارسال و دریافت همراه با دیتا وجود ندارد.هر یک بایت داده ، توسط 10
بیت منتقل می گردد، که 1 بیت شروع و یک بیت پایان در اول وآخر دیتا اضافه
می گردد همانند شکل زیر :
استاندارد انتقال داده به صورت سریال RS232 نام دارد.در این
استاندارد صفر منطقی ولتاژی بین 5- تا 15- ولت و یک منطقی ولتاژی بین 5+
تا 15+ دارد.میکروهای AVR از 5 ولت برای انتقال سیگنال استفاده می
کنند.بنابراین باید سیگنال ها را از ولتاژ TTL به ولتاژ استاندارد RS232
تبدیل نماییم که برای این کار از یک MAX232c استفاده می کنیم که تنها با
استفاده از منبع تغذیه 5 ولت ، ولتاژهای TTL را به RS232 و بلعکس تبدیل می
نماید.بیشترین فاصله ای که دو دستگاه RS232 می توانند به تبادل اطلاعات
بپردازند 15 متر می باشد.
سخت افزار مورد نیاز :
در شماتیک زیر نحوه اتصال مبدل RS232 به میکرو نشان داده شده است .
نرم افزار:
نرم افزار BASCOM دستورات متعددی برای ارتباط سریال دارد ،که
باآن ها می توان به سادگی ، نرم ا فزار برای ارتباط با میکرو نوشت.در مثال
نشان داده شده در شکل زیر با ، چند خط کد ساده یک برنامه برای ارتباط با
میکرو نوشته شده است .این برنامه یک متن را در ترمینال کاربر نمایش می
دهد.که می توان از برنامه شبیه ساز ترمینال BASCOM یا هایپر ترمینال
استفاده نمود.
تنظیمات پورت COM به صورت زیر می باشد. COM1,9600,N,8,1.
کد برنامه : '-----------------------------------------------' (c) 2006 AVR projects'--------------------------------------------------------------' file: RS232 test.bas' comport settings: COM1,9600,N,8,1' device AT M8' Xtal freq: 4096000 Hz' Hardware req.: STK500 board, RS232 connection with PC' Software: Hyperterminal or BASCOM terminal emulator'--------------------------------------------------------------$regfile = "attiny2313.dat"Config Lcdpin = Pin , Db4 = Portb.0 , Db5 = Portb.1 , Db6 = Portb.2 , Db7 = Portb.3 , E = Portb.6 , Rs = Portb.7Config Lcd = 16 * 2ClsCursor OffDim Name_s As String * 20Dim X As Integer$crystal = 10000000 'change this value into the value of the Xtal you use.$baud = 9600Print "Welcome to AVR projects"Input "Give your name " , Name_sPrint "Hello " ; Name_s ; " your serial communication is OK!"Lcd Name_sDoIncr XPrint XLoopEnd 'end prog
۹۰/۰۷/۰۳