واحد ورودی/خروجی (Input/Output)

این واحد وظیفه ارتباط میکرو با محیط پیرامون را به صورت موازی (پارالل Parallel) برقرار می کند . اساسا ارتباط میکرو با محیط پیرامون به دو شکل موازی و سریال صورت می گیرد . واحد ورودی/خروجی به صورت موازی و واحد ارتباط سریال به صورت سریال با محیط پیرامون میکرو در ارتباط است   این واحد  که با آن پورت نیز گفته می شود ، دارای چند رجیستر و بافر است و در نهایت به صورت پایه (پین Pin)  از میکرو خارج می شود. در میکروکنترلرهایAVR   با توجه به نوع و سری میکروکنترلر تعداد آنها بین 1  تا 10 پورت متفاوت می باشد. پورت ها در AVR به صورتPORTA ،PORTB،PORTC و… نامگذاری می شود. هر پورت 8 بیت دارد که به صورت PORTX.0 تا PORTX.7 نامگذاری می شود .

واحد کنترل کلاک ورودی

این واحد وظیفه تامین کلاک میکرو را بر عهده دارد . منابع کلاک میکرو به دو دسته منابع کلاک خارجی و کلاک داخلی تقسیم می شود. همانطور که می دانید پالس کلاک یک پالس منظم و دارای فرکانس ثابت است که تمامی واحد های میکرو با لبه های آن پالس کار می کنند. برای تولید پالس کلاک به دو چیز احتیاج می باشد یکی کریستال و دیگری اسیلاتور. خوشبختانه در این واحد هم اسیلاتور وجود دارد و هم کریستال اما بر حسب نیاز به داشتن فرکانس های مختلف احتیاج به اسیلاتور خارجی و یا کریستال خارجی نیز داریم. بنابراین منابع کلاک در میکروکنترلرهای AVR به صورت زیر است :

  • منبع کلاک خارجی : در این حالت از اتصال منبع کلاک با فرکانس مشخص به پایه X1 میکرو استفاده می شود . در این حالت پایه X2 آزاد است .
  • کریستال خارجی: در این حالت از اتصال یک کریستال با فرکانس مشخص و دو عدد خازن بین پایه های X1 و X2 استفاده می شود . جنس بلور این کریستال ها معمولا کریستال کوارتز است . در این حالت از اسیلاتور داخل میکرو استفاده می شود.
  • RC اسیلاتور داخلی: RC اسیلاتور داخلی یک خازن و یک مقاومت است که با فرکانس مشخصی نوسان می کند. در این حالت هر دو پایه X1 و X2 آزاد است .

واحد تایمرها و  شمارنده ها ( Timers & Counters )

در این واحد از یک سخت افزار خاص چندین استفاده متفاوت می شود. این سخت افزار خاص شامل چند رجیستر و چند شمارنده هستند که کارایی های متفاوتی دارند. کاربرد این واحد به عنوان تایمر ، کانتر ، RTC  و PWM  می باشد. رجیستر اصلی مورد استفاده در این واحد رجیستر تایمر نام دارد . اگر یک پالس ورودی منظم (مانند تقسیمی از پالس کلاک میکرو) به این واحد اعمال کنیم ،  رجیستر تایمر شروع به زیاد شدن کرده و در زمان مشخصی پر و سرریز می شود.  بنابراین میتوان با تنظیم مناسب پالس ورودی به این واحد  زمان های مختلف را ایجاد کرد. اگر پالس ورودی تایمر را طوری تنظیم کنیم که رجیستر تایمر هر یک ثانیه سر ریز شود ، در این صورت RTC یا زمان سنج حقیقی ساخته می شود. در زمان استفاده از RTC  به  کریستال 32768 هرتز که به کریستال ساعت معروف است نیاز داریم . اگر رجیستر تایمر را قبل از سر ریز شدن ریست کنیم ، در این صورت میتوان با اعمال پالس خروجی از میکرو یک PWM  یا مدولاسیون پهنای عرض پالس را روی یکی از پایه های میکرو داشت . اما اگر پالس ورودی به این واحد نامنظم باشد ) مانند  پالسی که از بیرون به پایه میکرو اعمال می شود ( در این صورت یک شمارنده تعداد پالسهای ورودی روی رجیستر تایمر ساخته می شود .

واحد تایمر سگ نگهبان Whatchdog

این واحد متشکل از یک رجیستر تایمر و یک اسیلاتور است که با فعالسازی آن رجیستر تایمر شروع به افزایش می کند تا اینکه سرریز شود. با سرریز شدن رجیستر تایمر سگ نگهبان میکروکنترلر ریست می شود.

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

واحد کنترل وقفه Interrupt

در هنگام بروز وقفه ، پردازنده کار فعلی خود را رها کرده و به اجرای وقفه مورد نظر می پردازد. علت بوجود آمدن واحد کنترل وقفه این است که باعث می شود پردازنده کمتر درگیر شود. در حالتی وقفه وجود نداشته باشد ، پردازنده مجبور است طی فواصل زمانی مشخصی چندین بار به واحد مورد نظر سرکشی کرده و بررسی کند که دیتای خواسته شده از آن واحد آماده است یا خیر که اغلب آماده نبوده و وقت پردازنده تلف می شود. برای مثال فرض کنید که یک صفحه کلید به ورودی میکرو متصل است ؛ در حالت سرکشی پردازنده باید یکی یکی کلید های صفحه کلید را در فواصل زمانی مشخص سرکشی کند تا در صورت فشرده شدن یک کلید پردازش مورد نظر را انجام دهد ، اما در حالتی که واحد کنترل وقفه فعال باشد ، پردازنده آزاد است و تا زمانی که کلیدی زده نشده است پردازنده به صفحه کلید کاری ندارد . سپس در صورتی که کلیدی زده شود واحد کنترل وقفه یک سیگنال وقفه به پردازنده مبنی بر اینکه ورودی آمده است ارسال می کند تا پردازنده برای یک لحظه کار خود را رها کرده و به صفحه کلید سرویس می دهد ، کلیدی که زده شده را شناسایی کرده و پردازش مورد نظر را روی آن انجام می دهد.

واحد ارتباطی JTAG

JTAG  کوتاه شده ی عبارت Joint Test Access Group  ، یک پروتکل ارتباطی بر روی دستگاه ها می  باشد که این توانایی را ایجاد می کند که بتوان برنامه نوشته شده موجود در میکرو را خط به خط اجرا نمود تا  در صورت وجود اشکال در برنامه نویسی آن را برطرف ( عیب یابی debug ) کرد . همچنین میتوان توسط JTAG حافظه Flash  ،EEPROM  ، فیوز بیت ها و قفل بیت ها را برنامه ریزی ( پروگرام Program ) کرد

واحد مبدل آنالوگ به دیجیتال ( ADC )

همانطور که میدانید تمامی کمیت های فیزیکی ، آنالوگ هستند. کمیت های آنالوگ برای پردازش توسط میکروکنترلر ابتدا می بایست تبدیل به دیجیتال شوند. تبدیل ولتاژ ورودی آنالوگ به کد دیجیتال متناسب با آن ولتاژ ورودی توسط این واحد انجام می پذیرد. مسائلی که در هنگام کار با این واحد درگیر آن هستیم یکی سرعت نمونه برداری و دیگری ولتاژ مرجع VREF است . ولتاژ مرجع در این واحد به عنوان مرجعی برای سنجش ولتاژ آنالوگ ورودی به  کار می رود به صورتی که بازه ی مجاز ولتاژ ورودی بین 0 تا VREF  است. همچنین سرعت نمونه برداری مسئله ی مهمی است که در بروزرسانی سریعتر اطلاعات نقش دارد .

واحد مقایسه کننده آنالوگ

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

سوالی که ممکن است بوجود آید این است که با وجود مبدل آنالوگ به دیجیتال دیگر چه نیازی به این بخش می باشد؟ در جواب باید گفت سرعت عملکرد این بخش در مقایسه با مبدل انالوگ به دیجیتال بسیار بیشتر بوده و همین سرعت باعث احساس نیاز به چنین بخشی را فراهم کرده است.

واحد ارتباطات سریال

تبادل دیتا با محیط خارجی میکروکنترلر علاوه بر واحد ورودی/خروجی که به صورت موازی است ، می تواند از طریق این واحد به صورت سریال انجام گیرد . مهمترین مسئله در ارتباطات سریال یکی پروتکل ارتباطی و دیگری سرعت ارسال (Baud Rate)  است. پروتکل های ارتباطی سریال که توسط میکروکنترلرهای AVR پشتیبانی می شود عبارتند از :

  • پروتکل spi : دارای سرعت بالا می باشد . از طریق این پورت میکروکنترلر را میتوان پروگرام کرد .
  • پروتکل USART : سرعت  متوسط  دارد. برای مسافت های طولانی و ماژول های ارتباطی مناسب است.
  • پروتکل TWI : یا پروتکل دوسیمه بیشتر برای ارتباط با المانهای جانبی سرعت پایین است .

در پایان شکل بهتری از  کلیه  واحد های یک میکروکنترلر AVR و ارتباط آ نها با یکدیگر را مشاهده می کنید. همانطور که از شکل نیز پیداست در پردازنده های AVR پهنای ارتباطی داده ( Data Bus )  دارای 8  بیت و پهنای ارتباطی برنامه (پهنای دستورالعمل ها)  دارای 16 بیت می باشد.

معماری avr