تبلیغات
برق. قدرت. کنترل. الکترونیک. مخابرات. تاسیسات. - آموزش سریع AVR CodeVision در 10 دقیقه

برق. قدرت. کنترل. الکترونیک. مخابرات. تاسیسات.

دایره المعارف تاسیسات برق (اطلاعات عمومی برق)

به دلیل درخواست مکرر دانشجویان مبنی بر عدم آشنایی آنها با نرم افزارهای پروگرامینگ میکروها و همچنین انجام پروژه های عملی توسط دانشجویان تصمیم گرفتم آموزشی کلی و سریع بر نرم افزار codevision داشته باشیم :

زبان برنامه نویسی ، C میباشد .هنگامی که برای اولین بار برنامه را باز میکنید مسلما برای ساخت فایل جدید باید وارد منوی file و گزینه new  را انتخاب کنید. در این حال پیغامی ظاهر میشود که دو انتخاب را پیش روی خواهید داشت : یکی ساخت پروژه و دیگری ساخت فایل سورس. در اینجا میباست ساخت پروژه را انتخاب کنید . تفاوت این دو هم مربوط به این است که پروژه شامل فایلهای دیگری از جمله هدر برنامه هم میشه و همچنین ساخت سورس مستلزم نوشتن تمامی کدها توسط خودتونه . البته نکته مهم تر اینه که فایل سورس قابل کامپایل نیست.

پس از انتخاب Project پیغامی مبنی بر استفاده از CodeWizard برنامه ظاهر میشود که yes را انتخاب میکنیم . مهمترین چیز انتخاب نوع میکرو و کلاک اون هست. کار کردن با قسمت Ports ممکن است شما رو گیج کنه پس برای تنظیم پورت ها بطور دستی افدام میکنیم. بقیه تنظیمات رو فعلا به حال خود واگذار میکنیم. در صورت استفاده از پروتکل USART میتونید تیک هر دو گزینه ارسال و دریافت رو بزنید و مقادیر رو تنظیم کنید. پس از اتمام این کار از منوی فایل Generate, Save and Exit رو انتخاب میکنید تا در محلی که در نظر دارید تمامی فایلها ذخیره شود.

حالا نوبت تنظیم پورت هاست . در avr سه رجیستر برای هر پورت وجود دارد. مثلا برای پورت A :

1.      DDRA که جهت پورت را نشان میدهد. DDRA=0X00 که نشان دهنده انتخاب حالت ورودی است. DDRA=0XFF که نشان دهنده حالت خروجی است . پس اگر در خلال برنامه پورت کم آوردیم میتونیم سریع مقادیر رو عوض کنیم.

2.      PINA که برای نوشتن در پورت استفاده میشود . مثل قرار دادن کلید.

3.      PORTA که برای خواندن از پورت مثلا برای روشن کردن led استفاده میشود.

اگر به انتهای برنامه  برید یک حلقه while  میبینید که بصورت کنترلی میتوان از آن استفاده کرد . اما میتوان بین دو { } که بعد از void main(void) قرار دارد هم برنامه را نوشت.

نکته مهم دیگر این است که در زبان C برای استفاده از هر تابع ، هدر مربوط به اون رو در قسمت #include ها وارد کنید برای مثال برای استفاده از تابع وقفه یا همون Delay باید از #include <delay.h> استفاده کنید. همچنین برای ارتباط ورودی و خروجی باید از #include <stdio.h> هم استفاده کنید.

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

بهتره تمام این کارها رو در قالب یک پروژه انجام بدیم مثلا روشن نمودن یک لامپ :

برای این کار از ATMega 32 و کلاک 4 مگاهرتز استفاده میکنیم . سپس نیاز به تعریف led ها داریم پس بعد از #include ها عبارت زیر را وارد میکنیم :

#define LED PORTA.0

میتوان با تعریف یک متغیر و استفاده از کاراکترها چراغ را روشن یا خاموش کرد :

Char a;

a=UDR;

منظور از عبارت بالا دریافت یک مقدار از user هست.

حالا با گذاشتن یک شرط چراغ را کنترل میکنیم :

If (a=='1') LED=1;

If (a=='2') LED=0;

با این کار کاربر با وارد کردن عدد 1 می تواند LED را روشن و با عدد صفر آن را خاموش نماید.

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

حالا که برنامه بدون اشکال است میتوان از گزینه Build در همین منو استفاده کرد تا فایل .hex هم ساخته بشه و در نهایت برای پروگرام کردن اون هم به منوی Settings و Programmer برید و نوع پروگرامر و پورت پاراللی رو که بهش وصل هستید رو انتخاب کنید و سپس از منوی Tools ، Chip Programmer را انتخاب کنید . در پنجره باز شده باید نوع چیپ و کریستالی که اول برنامه تنظیم کردید با این بخش یکسان باشند . حال از منوی Program گزینه Erase chip رو برای وقتی که روی آی سی برنامه ای دارید انتخاب کنید تا برنامه پاک شود وگرنه از منوی فایل load flash را انتخاب کنید تا فایلتان بارگذاری شود و از طریق منوی Program گزینه Flash را انتخاب کنید تا چیپ پروگرام شود . اگر در خلال این کار error ای داده شد گزینه NO را کلیک کرده و آنقدر این مراحل را تکرار کنید تا بدون اشکال چیپ پروگرام شود .

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

در آخر میتونید برای تست برنامه هاتون از نرم افزارهای کمکی مثل Proteus هم استفاده کنید


برای بهره مندی کامل از تمامی مزیتهای یک میکروکنترلر نیاز به ارتباط میکرو کنترلر با محیط خارج است،بطوریکه اغلب انجام یک پروژه صنعتی بدون ارتباطات متداول بین میکروکنترلر و محیط خارج ممکن نیست.
به عنوان مثال یک میکرو باید بتواند تعدادی از المانهای محیطی را دریافت(به اصطلاح 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 به میکرو نشان داده شده است .

Serial_Communication_sch

نرم افزار:

نرم افزار 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.7


Config Lcd = 16 * 2


Cls


Cursor Off



Dim Name_s As String * 20


Dim X As Integer


$crystal = 10000000                                         'change this value into the value of the Xtal you use.


$baud = 9600


Print "Welcome to AVR projects"


Input "Give your name " , Name_s


Print "Hello " ; Name_s ; " your serial communication is OK!"


Lcd Name_s



Do

Incr X

Print X

Loop



End                                                         'end prog



صفحات جانبی

نظرسنجی

    لطفاً نظرات خود را درمورد وبلاگ با اینجانب در میان بگذارید.(iman.sariri@yahoo.com)نتایج تاکنون15000مفید و 125غیرمفید. با سپاس


  • آخرین پستها

آمار وبلاگ

  • کل بازدید :
  • تعداد نویسندگان :
  • تعداد کل پست ها :
  • آخرین بازدید :
  • آخرین بروز رسانی :