میکروکنترلرها – Telegram
میکروکنترلرها
4.95K subscribers
472 photos
39 videos
58 files
40 links
آموزش AVR , ARM , PIC

پیام به ادمین👈 @Ali_Kazemi87

تبلیغ در کانال👈 https://news.1rj.ru/str/mic_ads

فروشگاه👈 https://news.1rj.ru/str/iranshop99

وب سایت👈 www.ClockPulse.ir

ایمیل👈 iri.micro@gmail.com

❌️تبادل نداریم❌️
Download Telegram
مبدل آنالوگ به دیجیتال
معمولا در یک میکرو AVR چندین کانال ADC وجود داره ؛ مثلا در مدل ATMEGA16 تعداد 8 عدد کانال ADC وجود داره !
توجه داشته باشید که در میکروکنترلر AVR تنها یک مبدل آنالوگ به دیجیتال وجود دارد و برای هر کانال از یک مبدل جدا استفاده نشده است.
یعنی اگر میبینید 8 تا کانال ADC در میکرو ATmega32 داریم ،
معناش این نیست که 8 تا مبدل داریم بلکه این 8 کانال با یکدیگر مالتی پلکس شدند و در نهایت اون که مورد نیازه به مبدل وصل میشه.
مثال خودمونی : تو خونتون 8 تا تلوزیون هست(چه شود ^_^) !!! حالا بابات میره یه آنتن میخره برا همشون و همشون مجبورن از این آنتن استفاده کنن.
@Micro_Controllers
مبدل آنالوگ به دیجیتال
میکروکنترلرهای AVR دقت 10 بیتی دارند . یعنی مقدار سیگنال تبدیل شده با دقت 10 بیت ذخیره میشود. (البته لازم بذکره که میشه با دقت 8 بیت نیز ازشون استفاده کرد)
ببینید دوستان ، بنده گفتم درجه دقت 10 بیتی این یعنی چه ؟
ما وقتی به یکی از کانال های ADC میکرو ولتاژی بین 0 تا 5 ولت میدیم و انتظار داریم که میکرو هم برامون نسبت بگیره و اونو تبدیل به سیگنال دیجیتال کنه ، روش کار بدین صورته که در دقت 10 بیت،میکرو بازه بین 0 تا 5 ولت رو به 1024 واحد تقسیم میکنه : 👇👇👇
@Micro_Controllers
مبدل آنالوگ به دیجیتال
تصویر بالا کاملا گویاست ! 👆👆👆
در حالت گفته شده 0 ولت برابر عدد 0 دیجیتال و 5 ولت برابر عدد 1023 دیجیتال میباشد.
و هر ولتاژی بین 0 تا 5 ولت با همون نسبتی که گفتم خدمتتون به مقدار دیجیتالش تبدیل میشه.
برای مثال ولتاژ 2.5 ولت معادل دیجیتالش در این حالت برابر با عدد 512 میباشد.
کاملا مشخص است که هرچقدر این درجه دقت (n) بالاتر باشد،مقدار دیجیتال بدست آمده نیز به مقدار آنالوگ آن نزدیکتر است.
@Micro_Controllers
مبدل آنالوگ به دیجیتال
در مورد ولتاژ مرجع( Vref )
واحد ADC برای اینکه عملیات تبدیل رو انجام بده نیاز به یه ولتاژ مرجع داره تا ولتاژ وارد شده رو با اون مقایسه کنه.
در واقع اگر ولتاژ مرجع رو مثلا 3 ولت انتخاب کردیم،بازه 0 تا 3 ولت به 1024 قسمت تبدیل میشه و همون ماجرای بالا …
@Micro_Controllers
وقفه در AVR :
توجه مهم : وقفه به معنی تاخیر زمانی نیست.
بزارید با یه مثال توضیح بدم،
مثال : ما میخایم یه LED رو با یه کلید روشن و خاموش کنیم ؟
@Micro_Controllers
وقفه در AVR :
1) روش سرکشی (Polling)
ما تو تابع MAIN میایم و میگیم هر موقع که ما کلید رو زدیم فلان پایه ی میکرو فعال شد (یا همون 1منطقی شد) ، اون وقت جنابعالی (منظور میکروکنترلر هستش) هم فلان پایه میکرو رو فعال کن تا LED روشن بشه. حالا مشکل زمانی هستش که ما هنوز کلید رو نزدیم و جناب میکروکنترلر مجبوره که هی بره و ببینه که آیا فلان پایه فعال شده یا نه و هی میره و هی برمیگرده (بیچاره خسته نمیشه این همه راه رو میره !!! ) 😰😰😰
@Micro_Controllers
وقفه در AVR :
2) روش وقفه ( Interrupt )
تو این روش برخلاف روش قبلی به جای این که ما هی بریم و برگردیم تا بفهمیم که آیا فلان پایه فعال شده یا نه میاییم یه کاری میکنیم : یه موبایل برا دو طرف میخریم و هر موقع که اون پایه هه فعال شد زنگ میزنه به میکرو و میگه دادا بدو بیا که فعال شدم !!! لپ کلوم ای که تو این روش اگه پایه فعال شد خودش ما رو خبر میکنه و دیگه لازم نیس که هی بریم و هی برگردیم و هی بریم و هی … حالا چطور میاد ما رو خبر میکنه رو بعدا یا در ادامه میگم … 😜😜😜
@Micro_Controllers
وقفه در AVR :
-انواع وقفه:

1) وقفه داخلی
2) وقفه خارجی
@Micro_Controllers
وقفه در AVR :
1) وقفه داخلی : تقریبا تمام امکانات داخلی میکرو دارای وقفه بوده مانند تایمر–کانترها و پروتکل های ارتباطی و مقایسه کننده ها و مبدل آنالوگ به دیجیتال .
@Micro_Controllers
وقفه در AVR :
2) وقفه خارجی : در میکرو پایه هایی به نام INTx وجود دارد که زمانی تحریک شوند ، میکرو به زیر برنامه وقفه پرش می کند و کار تعیین شده را انجام می دهد.این وقفه ها می توانند با یک لبه بالا رونده یا پایین رونده و یا یک منطقی تحریک شوند.
@Micro_Controllers
وقفه در AVR :
نکته :👇👇👇
هنگامی که یک پایه به عنوان وقفه استفاده شود دیگر نمی توانیم از آن پایه به عنوان ورودی یا خروجی استفاده کنیم.
@Micro_Controllers
وقفه در AVR :
این یه میکرو کنترلر avr از نوع Atmega16 هستش که توش پایه های وقفه صفر- وقفه1 و وقفه 2 رو مشخص کردم. 👇👇👇
@Micro_Controllers
وقفه در AVR :
ریجستر ها در وقفه (بازم ریجستر های دوست داشتنی خودمون !!!)
1) ریجستر SREG
2) ریجستر GICR
3) ریجستر GIFR
4) ریجستر MCUCR
5) ریجستر MCUCSR
@Micro_Controllers
وقفه در AVR :
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
وقفه در AVR :
3) ریجستر GIFR
لپ کلوم رو بگم و گیجتون نکنم :
اگه وقفه مورد نظر(وقفه صفر- یک یا دو) و وقفه سراسری فعال بود و در صورت تحریک شدن (فعال شدن/غیر فعال شدن ) این ریجستر با توجه به شرایط موجود تصمیم میگیره که دستور اجرای وقفه رو بده یا نده.
برای این که این قدرت تصمیم گیری رو به این ریجستر بدیم باید بیت های لازم و مورد نیازمون از این ریجستر رو یک کنیم.
مثلا اگه دارید از وقفه صفر استفاده میکنید باید بیت 6 رو یک کنید.
بیت 5 این ریجستر مربوط به وقفه 2 ، بیت 6 این ریجستر مربوط به وقفه 0 و بیت 7 این ریجستر مربوط به وقفه 1 است. 👇👇👇
@Micro_Controllers