آیرنکس موظف به پاسخگویی و رفع اشکال هر مطلب است
برای پشتیبانی از انجمن ، نظرات و تلگرام میتونید اقدام کنید | تلگرام : 09358790909
کانال تلگرام
AVRآموزشمیکروکنترلر ها

آموزش رجیستر AVR (آموزش AVR جلسه چهارم)

آموزش رجیستر AVR (آموزش AVR جلسه چهارم)

سلام

ما توی این جلسه به معرفی و نحوه استفاده از رجیستر های AVR میپردازیم.

در جلسه قبل ما به آموزش پردازنده و حافظه میکروکنترلر AVR پرداختیم

جلسه سوم آموزش AVR کلیک کنید.

خب سوالی که اول از همه پیش میاد

رجیستر چیه ؟

رجیستر ها یه نوع حافظه هستند که داخل سی پی یو قرار دارن . طول هر رجیستر 8 بیت هستش و به دلیل این که با پردازنده میکروکنترلر ارتباط نزدیکی دارن ، سرعت بالایی دارن . همچنین تعدادشون هم محدوده !

رجیستر AVR

وقتی که CPU میخواد چیزی رو پردازش کنه به یک فضا برای انجام عملیات پردازشی نیاز داره . این فضا همون SRAM هستش . ولی قبل اینکه اطلاعات روی SRAM ریخته بشن ، سی پی یو از فضای رجیستر داخلی خودش استفاده میکنه و وقتی که فضای رجیستر هاش تکمیل شد بعدش نوبت به SRAM میرسه. (به همین دلیل سرعتش بیشتره !)

رجیستر های میکروکنترلر های AVR :

به تصویر زیر دقت کنید :

آموزش رجیستر AVR
آموزش رجیستر AVR

همونطور که مشاهده میکنید ، ما در میکروکنترلر 32 عدد رجیستر هشت بیتی داریم. این رجیستر ها R0-R31 نام گذاری میشن.

آموزش رجیستر AVR آموزش AVR

همونطور که میبیند ، Register ها بین سی پی یو و اس رم هستن . یعنی اول اطلاعات توی رجیستر ها ثبت میشه و بعدش وارد SRAM میشه .

نکته هایی که برای ادامه مطلب باید بدونین :

  1. میکروکنترلر های ای وی آر 32 تا رجیستر عمومی دارند و 64 تا رجیستر I/O هستش.
  2. ما توی این آموزش کلا با رجیستر های ورودی / خروجی کار داریم . ( منظور I/O )
  3. ALU به همه رجیستر های عمومی میکروکنترلر دسترسی داره .
  4. x توی ادامه مطلب به معنی اسم پورت ها هستش مثل A , B , و …

رجیستر DDRx :

  • این رجیستر 8 بیتی هستش . مقدار هر بیت تعیین کننده ورودی یا خروجی بودن همون بیت در پورته مورد نظر هستش .

یعنی :

  • اگه مقدار بیت 0 باشه > پین ورودی در نظر گرفته میشه.
  • اگه مقدار بیت 1 باشه > پین خروجی در نظر گرفته میشه.

این جدول رو ببینید :

DDRx - آموزش AVR
DDRx – آموزش AVR

همونطور که گفتیم و توی تصویر بالا هم میبینید ، ما 8 بیت داریم و از 0 تا 7 نام گذاری شده اند .

برای مثال ما اگه بخوایم پین چهارم از پورت A رو به عنوان ورودی و پین 7 از پورت A رو به عنوان خروجی تعریف کنیم باید این مقادیر رو به پین بدیم :

DDRD :

01000000

(ترتیب از راست به چپ هستش)


آموزش رجیستر AVR آموزش AVR

آموزش رجیستر AVR

رجیستر PORTx :

از این رجیستر فقط وقتی استفاده میکنیم که بخوایم چیزی در پورت بنویسیم . با مقدار دادن به بیت های این رجیستر ما تعیین میکنیم که پین Low هستش یا High .

توی رجیستر DDRx ما فقط تعیین کردیم که پین (یا همون بیت) ورودی باشه یا خروجی !

حالا برای هر پین وضعیتشون رو تعیین میکنیم ، مثلا وقتی میخوایم یک ال ای دی رو روشن کنیم ، یکی از پایه های ال ای دی رو به یک پین از میکروکنترلر وصل میکنیم . پین مورد نظر رو با DDRx خروجی در نظر میگیریم ولی روشن نمیشه که !. پس همون بیت رو با PORTx برابر با 1 قرار میدیم . بعدش روشن میشه !

در نتیجه

  • اگه مقدار پین 1 باشه > High
  • اگه مقدار پین 0 باشه > Low

ما برای پورت PORTD داریم :

آموزش رجیستر AVR
آموزش رجیستر AVR

آموزش AVR

رجیستر PINx :

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

اگه توی این رجیستر یک پین رو به عنوان ورودی در نظر بگیریم، میتونیم از اون پین اطلاعات دریافت کنیم .

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

آموزش رجیستر AVR
آموزش رجیستر AVR

این رجیستر هم 8 پایس و ما با 0 یا 1 قرار دادن اون رو High یا Low میکنیم

  • اگه مقدار پین 1 باشه > High
  • اگه مقدار پین 0 باشه > Low

حالا یه سوال فنی پیش میاد ، اگه حالت ورودی رو انتخاب کرده باشیم چ اتفاقی میفته ؟.

خب اگه پین روی ورودی تنظیم شده باشه و پین در رجیستر PORTx برابر با High باشه ، مقاومت پول آپ داخلی فعال میشه.

همچنین اگه پین روی ورودی تنظیم شده باشه ولی پین در رجیستر PORTx بر روی Low تنظیم شده باشه ، پین حالت نامشخص به خودش میگیره مث وقتی میشه که انگار اصلا هیچی براش تعریف نکردیم !.

مشاهده همه آموزش ها ، کلیک کنید !

امتیاز کاربر 4.5 (2 رای)
درحال ارسال
اشتراک ویژه رایگان میخوای ؟ کلیک کن !

محمد رحیمی

محمد رحیمی هستم مدیر وبسایت آیرنکس ! در سال 1394 سایت ای وی آر استودیو رو طراحی کردم (ای وی آر استودیو رو حذف کردیم) . و در تیر ماه 1396 سایت آیرنکس رو طراحی کردم و در خدمت شمام !

مطالب مرتبط

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

درحال ارسال

Close