وقفه در AVR :
توجه مهم : وقفه به معنی تاخیر زمانی نیست.
بزارید با یه مثال توضیح بدم،
مثال : ما میخایم یه LED رو با یه کلید روشن و خاموش کنیم ؟
@Micro_Controllers
توجه مهم : وقفه به معنی تاخیر زمانی نیست.
بزارید با یه مثال توضیح بدم،
مثال : ما میخایم یه LED رو با یه کلید روشن و خاموش کنیم ؟
@Micro_Controllers
وقفه در AVR :
1) روش سرکشی (Polling)
ما تو تابع MAIN میایم و میگیم هر موقع که ما کلید رو زدیم فلان پایه ی میکرو فعال شد (یا همون 1منطقی شد) ، اون وقت جنابعالی (منظور میکروکنترلر هستش) هم فلان پایه میکرو رو فعال کن تا LED روشن بشه. حالا مشکل زمانی هستش که ما هنوز کلید رو نزدیم و جناب میکروکنترلر مجبوره که هی بره و ببینه که آیا فلان پایه فعال شده یا نه و هی میره و هی برمیگرده (بیچاره خسته نمیشه این همه راه رو میره !!! ) 😰😰😰
@Micro_Controllers
1) روش سرکشی (Polling)
ما تو تابع MAIN میایم و میگیم هر موقع که ما کلید رو زدیم فلان پایه ی میکرو فعال شد (یا همون 1منطقی شد) ، اون وقت جنابعالی (منظور میکروکنترلر هستش) هم فلان پایه میکرو رو فعال کن تا LED روشن بشه. حالا مشکل زمانی هستش که ما هنوز کلید رو نزدیم و جناب میکروکنترلر مجبوره که هی بره و ببینه که آیا فلان پایه فعال شده یا نه و هی میره و هی برمیگرده (بیچاره خسته نمیشه این همه راه رو میره !!! ) 😰😰😰
@Micro_Controllers
وقفه در AVR :
2) روش وقفه ( Interrupt )
تو این روش برخلاف روش قبلی به جای این که ما هی بریم و برگردیم تا بفهمیم که آیا فلان پایه فعال شده یا نه میاییم یه کاری میکنیم : یه موبایل برا دو طرف میخریم و هر موقع که اون پایه هه فعال شد زنگ میزنه به میکرو و میگه دادا بدو بیا که فعال شدم !!! لپ کلوم ای که تو این روش اگه پایه فعال شد خودش ما رو خبر میکنه و دیگه لازم نیس که هی بریم و هی برگردیم و هی بریم و هی … حالا چطور میاد ما رو خبر میکنه رو بعدا یا در ادامه میگم … 😜😜😜
@Micro_Controllers
2) روش وقفه ( Interrupt )
تو این روش برخلاف روش قبلی به جای این که ما هی بریم و برگردیم تا بفهمیم که آیا فلان پایه فعال شده یا نه میاییم یه کاری میکنیم : یه موبایل برا دو طرف میخریم و هر موقع که اون پایه هه فعال شد زنگ میزنه به میکرو و میگه دادا بدو بیا که فعال شدم !!! لپ کلوم ای که تو این روش اگه پایه فعال شد خودش ما رو خبر میکنه و دیگه لازم نیس که هی بریم و هی برگردیم و هی بریم و هی … حالا چطور میاد ما رو خبر میکنه رو بعدا یا در ادامه میگم … 😜😜😜
@Micro_Controllers
وقفه در AVR :
1) وقفه داخلی : تقریبا تمام امکانات داخلی میکرو دارای وقفه بوده مانند تایمر–کانترها و پروتکل های ارتباطی و مقایسه کننده ها و مبدل آنالوگ به دیجیتال .
@Micro_Controllers
1) وقفه داخلی : تقریبا تمام امکانات داخلی میکرو دارای وقفه بوده مانند تایمر–کانترها و پروتکل های ارتباطی و مقایسه کننده ها و مبدل آنالوگ به دیجیتال .
@Micro_Controllers
وقفه در AVR :
2) وقفه خارجی : در میکرو پایه هایی به نام INTx وجود دارد که زمانی تحریک شوند ، میکرو به زیر برنامه وقفه پرش می کند و کار تعیین شده را انجام می دهد.این وقفه ها می توانند با یک لبه بالا رونده یا پایین رونده و یا یک منطقی تحریک شوند.
@Micro_Controllers
2) وقفه خارجی : در میکرو پایه هایی به نام INTx وجود دارد که زمانی تحریک شوند ، میکرو به زیر برنامه وقفه پرش می کند و کار تعیین شده را انجام می دهد.این وقفه ها می توانند با یک لبه بالا رونده یا پایین رونده و یا یک منطقی تحریک شوند.
@Micro_Controllers
وقفه در AVR :
نکته :👇👇👇
هنگامی که یک پایه به عنوان وقفه استفاده شود دیگر نمی توانیم از آن پایه به عنوان ورودی یا خروجی استفاده کنیم.
@Micro_Controllers
نکته :👇👇👇
هنگامی که یک پایه به عنوان وقفه استفاده شود دیگر نمی توانیم از آن پایه به عنوان ورودی یا خروجی استفاده کنیم.
@Micro_Controllers
وقفه در AVR :
این یه میکرو کنترلر avr از نوع Atmega16 هستش که توش پایه های وقفه صفر- وقفه1 و وقفه 2 رو مشخص کردم. 👇👇👇
@Micro_Controllers
این یه میکرو کنترلر avr از نوع Atmega16 هستش که توش پایه های وقفه صفر- وقفه1 و وقفه 2 رو مشخص کردم. 👇👇👇
@Micro_Controllers
وقفه در AVR :
ریجستر ها در وقفه (بازم ریجستر های دوست داشتنی خودمون !!!)
1) ریجستر SREG
2) ریجستر GICR
3) ریجستر GIFR
4) ریجستر MCUCR
5) ریجستر MCUCSR
@Micro_Controllers
ریجستر ها در وقفه (بازم ریجستر های دوست داشتنی خودمون !!!)
1) ریجستر SREG
2) ریجستر GICR
3) ریجستر GIFR
4) ریجستر MCUCR
5) ریجستر MCUCSR
@Micro_Controllers
وقفه در AVR :
1) ریجستر SREG
بیت 7 ( I ) : با یک کردن این بیت ، وقفه سراسری یا کلی فعال میشود.(یعنی میتونیم از وقفه استفاده کنیم.)👇👇👇
@Micro_Controllers
1) ریجستر SREG
بیت 7 ( I ) : با یک کردن این بیت ، وقفه سراسری یا کلی فعال میشود.(یعنی میتونیم از وقفه استفاده کنیم.)👇👇👇
@Micro_Controllers
وقفه در AVR :
2) ریجستر GICR
تو این ریجستر ما فقط با 3 بیت آخرش کار داریم (البته فعلا ! )
بیت 7 (INT1 ) : با یک کردن این بیت وقفه 1 فعال میشود. متناظر با پایه PORTD.3 میباشد.
بیت 6 (INT0 ) : با یک کردن این بیت وقفه 0 فعال میشود. متناظر با پایه PORTD.2 میباشد.
بیت 5 (INT2 ) : با یک کردن این بیت وقفه 2 فعال میشود. متناظر با پایه PORTB.2 میباشد.👇👇👇
@Micro_Controllers
2) ریجستر GICR
تو این ریجستر ما فقط با 3 بیت آخرش کار داریم (البته فعلا ! )
بیت 7 (INT1 ) : با یک کردن این بیت وقفه 1 فعال میشود. متناظر با پایه PORTD.3 میباشد.
بیت 6 (INT0 ) : با یک کردن این بیت وقفه 0 فعال میشود. متناظر با پایه PORTD.2 میباشد.
بیت 5 (INT2 ) : با یک کردن این بیت وقفه 2 فعال میشود. متناظر با پایه PORTB.2 میباشد.👇👇👇
@Micro_Controllers
وقفه در AVR :
3) ریجستر GIFR
لپ کلوم رو بگم و گیجتون نکنم :
اگه وقفه مورد نظر(وقفه صفر- یک یا دو) و وقفه سراسری فعال بود و در صورت تحریک شدن (فعال شدن/غیر فعال شدن ) این ریجستر با توجه به شرایط موجود تصمیم میگیره که دستور اجرای وقفه رو بده یا نده.
برای این که این قدرت تصمیم گیری رو به این ریجستر بدیم باید بیت های لازم و مورد نیازمون از این ریجستر رو یک کنیم.
مثلا اگه دارید از وقفه صفر استفاده میکنید باید بیت 6 رو یک کنید.
بیت 5 این ریجستر مربوط به وقفه 2 ، بیت 6 این ریجستر مربوط به وقفه 0 و بیت 7 این ریجستر مربوط به وقفه 1 است. 👇👇👇
@Micro_Controllers
3) ریجستر GIFR
لپ کلوم رو بگم و گیجتون نکنم :
اگه وقفه مورد نظر(وقفه صفر- یک یا دو) و وقفه سراسری فعال بود و در صورت تحریک شدن (فعال شدن/غیر فعال شدن ) این ریجستر با توجه به شرایط موجود تصمیم میگیره که دستور اجرای وقفه رو بده یا نده.
برای این که این قدرت تصمیم گیری رو به این ریجستر بدیم باید بیت های لازم و مورد نیازمون از این ریجستر رو یک کنیم.
مثلا اگه دارید از وقفه صفر استفاده میکنید باید بیت 6 رو یک کنید.
بیت 5 این ریجستر مربوط به وقفه 2 ، بیت 6 این ریجستر مربوط به وقفه 0 و بیت 7 این ریجستر مربوط به وقفه 1 است. 👇👇👇
@Micro_Controllers
وقفه در AVR :
4) ریجستر MCUCR
این ریجستر هم ریجستر مهمی هستش O_o
ما با نحوه مقدار دهی این ریجستر میتونیم نحوه فعال و غیر فعال شدن (نحوه تحریک شدن) وقفه رو تعیین کنیم.
مثلا طوری تعیین کنیم که اگه صفر منطقی شد(0 ولت) فعال بشه (Falling Edge)
یا طوری تعین کنیم که با یک منطقی (5 ولت) فعال بشه (Rising Edge) 👇👇👇
@Micro_Controllers
4) ریجستر MCUCR
این ریجستر هم ریجستر مهمی هستش O_o
ما با نحوه مقدار دهی این ریجستر میتونیم نحوه فعال و غیر فعال شدن (نحوه تحریک شدن) وقفه رو تعیین کنیم.
مثلا طوری تعیین کنیم که اگه صفر منطقی شد(0 ولت) فعال بشه (Falling Edge)
یا طوری تعین کنیم که با یک منطقی (5 ولت) فعال بشه (Rising Edge) 👇👇👇
@Micro_Controllers
وقفه در AVR :
5) ریجستر MCUCSR
این ریجستر فقط برای وقفه 2 هست .
اگه بیت 6 (ISC2) این ریجستر رو صفر کنی با صفر منطقی (همون 0 ولت خودمون) فعال میشه.
اگه بیت 6 (ISC2) این ریجستر رو یک کنی با یک منطقی (همون 5 ولت خودمون) فعال میشه.👇👇👇
@Micro_Controllers
5) ریجستر MCUCSR
این ریجستر فقط برای وقفه 2 هست .
اگه بیت 6 (ISC2) این ریجستر رو صفر کنی با صفر منطقی (همون 0 ولت خودمون) فعال میشه.
اگه بیت 6 (ISC2) این ریجستر رو یک کنی با یک منطقی (همون 5 ولت خودمون) فعال میشه.👇👇👇
@Micro_Controllers
با سلام لطفا اگه تمایل داشتید کانال ما رو به سایر دوستانتون معرفی کنید.
https://telegram.me/Micro_Controllers
https://telegram.me/Micro_Controllers