تبلیغات
پاوردی POWERD - آموزش CodeVission جلسه پنجم- وقفه در AVR
پاوردی POWERD
دانشنامه برق
گروه طراحی قالب من گروه طراحی قالب من گروه طراحی قالب من گروه طراحی قالب من گروه طراحی قالب من
درباره ما


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

مدیر وبلاگ : عباس نجفی
نویسندگان
تبلیغات
وقفه در AVR

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


وقفه در AVR :   توجه مهم : وقفه به معنی تاخیر زمانی نیست.
بزارید با یه مثال توضیح بدم، مثال : ما میخایم یه LED   رو با یه کلید روشن و خاموش کنیم ؟
1) روش سرکشی (Polling)
ما تو تابع MAIN   میایم و میگیم هر موقع که ما کلید رو زدیم فلان پایه ی میکرو فعال شد (یا همون 1منطقی شد) ، اون وقت جنابعالی (منظور میکروکنترلر هستش) هم فلان پایه میکرو رو فعال کن تا LED روشن بشه. حالا مشکل زمانی هستش که ما هنوز کلید رو نزدیم و جناب میکروکنترلر مجبوره که هی بره و ببینه که آیا فلان پایه فعال شده یا نه و هی میره و هی برمیگرده (بیچاره خسته نمیشه این همه راه رو میره !!! )
2) روش وقفه ( Interrupt )
تو این روش برخلاف روش قبلی به جای این که ما هی بریم و برگردیم تا بفهمیم که آیا فلان پایه فعال شده یا نه میاییم یه کاری میکنیم : یه موبایل برا دو طرف میخریم و هر موقع که اون پایه هه فعال شد زنگ میزنه به میکرو و میگه دادا بدو بیا که فعال شدم !!! لپ کلوم ای که تو این روش اگه پایه فعال شد خودش ما رو خبر میکنه و دیگه لازم نیس که هی بریم و هی برگردیم و هی بریم و هی … حالا چطور میاد ما رو خبر میکنه رو بعدا یا در ادامه میگم …





انواع وقفه:
1) وقفه داخلی :  تقریبا تمام امکانات داخلی میکرو دارای وقفه بوده مانند تایمر–کانترها و پروتکل های ارتباطی و مقایسه کننده ها و مبدل آنالوگ به دیجیتال .
2) وقفه خارجی : در میکرو پایه هایی به نام INTx وجود دارد که زمانی تحریک شوند ، میکرو به زیر برنامه وقفه پرش می کند و کار تعیین شده را انجام می دهد.این وقفه ها می توانند با یک لبه بالا رونده یا پایین رونده و یا یک منطقی تحریک شوند.
نکته:  هنگامی که یک پایه به عنوان وقفه استفاده شود دیگر نمی توانیم از آن پایه به عنوان ورودی یا خروجی استفاده کنیم.
شکل زیر یک میکرو کنترلر avr از نوع Atmega16 هستش که توش پایه های وقفه صفر- وقفه1 و وقفه 2 رو مشخص کردم.

وقفه در AVR

ریجستر ها در وقفه (بازم ریجستر های دوست داشتنی خودمون !!!)
1) ریجستر SREG
2) ریجستر GICR
3) ریجستر GIFR
4) ریجستر MCUCR
5) ریجستر MCUCSR

1) ریجستر SREG
بیت 7 ( I ) :  با یک کردن این بیت ، وقفه سراسری یا کلی فعال میشود.(یعنی میتونیم از وقفه استفاده کنیم.)

رجیستر SREG

2) ریجستر GICR
 تو این ریجستر ما فقط با 3 بیت آخرش کار داریم (البته فعلا ! )
بیت 7 (INT1 )  : با یک کردن این بیت وقفه 1  فعال میشود.  متناظر با پایه PORTD.3 میباشد.
 بیت 6 (INT0 )  : با یک کردن این بیت وقفه 0 فعال میشود. متناظر با پایه PORTD.2 میباشد.
بیت 5 (INT2 )  : با یک کردن این بیت وقفه 2  فعال میشود. متناظر با پایه PORTB.2 میباشد.

ریجستر GICR
3) ریجستر GIFR
لپ کلوم رو بگم و گیجتون نکنم :
اگه وقفه مورد نظر(وقفه صفر- یک یا دو)  و وقفه سراسری فعال بود و در صورت تحریک شدن (فعال شدن/غیر فعال شدن ) این ریجستر با توجه به شرایط موجود تصمیم میگیره که دستور اجرای  وقفه رو بده یا نده.
برای این که این قدرت تصمیم گیری رو به این ریجستر بدیم باید بیت های لازم و مورد نیازمون از این ریجستر رو یک کنیم.
مثلا اگه دارید از وقفه صفر استفاده میکنید باید بیت 6 رو یک کنید.
بیت 5 این ریجستر مربوط به وقفه 2 ، بیت 6 این ریجستر مربوط به وقفه 0 و بیت 7 این ریجستر مربوط به وقفه 1 است.

ریجستر GIFR
4) ریجستر MCUCR
این ریجستر هم ریجستر مهمی هستش O_o
ما با نحوه مقدار دهی این ریجستر میتونیم نحوه فعال و غیر فعال شدن (نحوه تحریک شدن) وقفه رو تعیین کنیم.
مثلا طوری تعیین کنیم که اگه صفر منطقی شد(0 ولت) فعال بشه (Falling Edge)
یا طوری تعین کنیم که با یک منطقی (5 ولت) فعال بشه (Rising Edge)

ریجستر MCUCR
5) ریجستر MCUCSR
این ریجستر فقط برای وقفه 2 هست .
اگه بیت 6 (ISC2) این ریجستر رو صفر کنی   با صفر منطقی (همون 0 ولت خودمون)  فعال میشه.
اگه بیت 6 (ISC2) این ریجستر رو یک  کنی   با  یک  منطقی (همون 5  ولت خودمون)  فعال میشه.

ریجستر MCUCSR


فعال کردن وقفه در کدویژن:
داخل کد ویژن وقتی یه پروژه جدید ایجاد میکنی و میری تو قسمت کد ویزارد، میتونی وقفه رو از همون جا فعال کنی و دیگه کد ننویسی.
با توجه به عکس زیر وقفه ها رو میبینید (وقفه 0 ،  وقفه 1   ،   وقفه2)  که با تیک زدنشون فعال میشن.


فعال کردن وقفه در کدویژن

یه توضیحی در مورد کد نویسی وقفه بدم و اون این که به صورت زیر نوشته میشه.
کد وقفه در کدویژن



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








نوع مطلب : ◄کدویژن CodeVission AVR، آموزش نرم افزار، 
برچسب ها : وقفه در AVR، آموزش AVR، آموزش کدویژن، رجیسترهای وقفه، فیوزبیت های وقفه، آموزش codevission، دانلود آموزش میکروکنترلر،
لینک های مرتبط :
عباس نجفی
یکشنبه 9 اسفند 1394
دوشنبه 10 اسفند 1394 04:01 ق.ظ
سلام
من متاسفانه از نظر تخصصی از رشته ی برق چیزی نمی دونم ولی حتما اطلاعاتی که شما به نگارش در آوردید مفید هستند.
موفق باشید.
عباس نجفی بسیار ممنون از نظر شما
 
لبخندناراحتچشمک
نیشخندبغلسوال
قلبخجالتزبان
ماچتعجبعصبانی
عینکشیطانگریه
خندهقهقههخداحافظ
سبزقهرهورا
دستگلتفکر
نظرات پس از تایید نشان داده خواهند شد.




صفحات جانبی
آمار سایت
  • کل بازدید :
  • بازدید امروز :
  • بازدید دیروز :
  • بازدید این ماه :
  • بازدید ماه قبل :
  • تعداد نویسندگان :
  • تعداد کل پست ها :
  • آخرین بازدید :
  • آخرین بروز رسانی :
امکانات جانبی
logo-samandehi



در این وب
در كل اینترنت
به سایت مرجع تخصصی برق (ایران الکتریک) خوش آمدید
کلیه حقوق این وبلاگ برای پاوردی POWERD محفوظ است

آوازک