منابع کلاک در AVR از طریق فیوزبیتها قابلتنظیم هستند.
کلاک در AVR را میتوان از طریق منابع زیر تأمین کرد:
- اسیلاتور RC داخلی
- اسیلاتور داخلی با RC خارجی
- اسیلاتور داخلی با اتصال کریستال و رزوناتور
- اسیلاتور داخلی با اتصال کریستال فرکانس پایین
- اسیلاتور خارجی
شاید برای شما مفید باشد: آموزش AVR از مقدماتی تا پیشرفته | 100% رایگان
اسیلاتور RC داخلی
بهصورت پیشفرض در شمارههای مختلف از این منبع برای تأمین کلاک استفاده میشود. این اسیلاتور در فرکانسهای مختلف موجود است و ممکن است در یک شماره بیش از یک اسیلاتور RC داخلی وجود داشته باشد.
فرکانسهایی مثل1, 1.2, 1.6, 2, 4, 4.8, 8, 9.6 MHz و همچنین، 128kHz در برخی از شمارهها نمونههایی از فرکانس اسیلاتور RC داخلی هستند.
از لحاظ ورژن و نوع ساخت اسیلاتور RC داخلی، در شمارههای مختلف ورژن و کیفیت اسیلاتورهای RC داخلی متفاوت است. مثلاً در شماره AT Tiny13 ورژن اسیلاتور داخلی بالاتر است از شمارهای مثل ATmega128 بنابراین حساسیتها نسبت به تغییرات دما، تغییرات VCC به لحاظ پایداری در شمارههای مختلف متفاوت است که برای جزئیات بیشتر باید به دیتاشیت هر میکروکنترلر مراجعه کنید.
در برخی مواقع با بالارفتن دما فرکانس اسیلاتور افزایش مییابد و در بعضیاوقات فرکانس کاهش مییابد که نوع ورژن اسیلاتور داخلی در این عملکرد تأثیرگذار است و لزوماً شمارهای مثل ATmega128 از این لحاظ بهتر از شمارهای مثل AT Tiny13 نیست چون ATmega128 نسخه 3.1 است ولی AT Tiny13 نسخه 4.1 هست که برای اطلاعات بیشتر میتوانید به مراجع موجود در سایت atmel مراجعه کنید.
امکان کالیبره کردن فرکانس اسیلاتور RC داخلی از طریق خطوط نرمافزار وجود دارد و فرکانس میتواند از طریق calibration byte مقداری تغییر کند.
اسیلاتور داخلی با RC خارجی
از دیگر امکانات موجود در اسیلاتورهای RC، امکان تأمین نوسان در بعضی از شمارهها از طریق قراردادن RC بهصورت خارجی مطابق شکل زیر است.
مثلاً در ATmega64 فرکانس نوسان است که خازن C باید از 22pF بزرگتر باشد و همچنین، در این شماره این امکان وجود دارد که خازن حذف شود و از طریق فعال کردن فیوزبیت CLKOPT یک خازن 36pF داخلی در مدار قرار گیرد تا نوسان تأمین شود.
اسیلاتور داخلی با اتصال کریستال و رزوناتور
از جمله موارد دیگر اتصال کریستال و رزوناتور خارجی برای تأمین نوسان است. بهاینترتیب که یک کریستال به دو خازن متصل میشود و نوسان از این طریق تأمین میشود که پایداری اینگونه اسیلاتورها نسبت به اسیلاتور RC چه داخلی و چه خارجی بیشتر است.
نکته: اسیلاتور درهرصورت داخل میکروکنترلر وجود دارد؛ ولی برای تأمین نوسان خودش از المانهای خارجی مثل کریستال و رزوناتور استفاده میکند.
اسیلاتور داخلی با اتصال کریستال فرکانس پایین
در شمارههایی مثل MEGA64 این امکان وجود دارد که کریستال دارای فرکانس پایینی باشد. (مقادیری در 32768Hz) .
این امکان غیر از بحث امکان اتصال کریستال در این شمارهها برای تأمین کلاک تایمر است و به پایههای XTAL1 و XTAL2 برای ایجاد فرکانس متصل میشویم.
اسیلاتور خارجی
در این مورد کلاک از منبع نوسان خارجی تأمین میشود.
در بعضی موارد که بحث نویزپذیری یا پایداری نوسان مطرح باشد، لازم است کلاک بهصورت خارجی ایجاد شود و به میکرو اعمال شود.
امکانی در برخی از شمارهها وجود دارد این است که منبع کلاک به یک عدد ثابت تقسیم شود و بعد به CPU اعمال شود که این کار از طریق تنظیم فیوزبیت مشخصی انجام میشود.
مثلاً در ATTiny13 امکان یک ضریب تقسیم بر 8 در راه کلاک است. در برخی از شمارهها امکان قراردادن یک تقسیمکننده متغیر وجود دارد.
مثلاً درATmega48 وATmega88 این امکان وجود دارد که یک ضریب تقسیم متغیری که از طریق خطوط نرمافزار قابلتنظیم هست سر راه کلاک قرار بگیرد.
در جایی که لازم است مصرف جریان و توان میکرو کاهش یابد با قراردادن یک ضریب تقسیم بالا کلاک اعمال شده به CPU کاهش پیدا کند.
در جایی که ظرفیت پردازش بالا در طول اجرای نرمافزار موردنیاز باشد، این ضریب تقسیم روی 1 قرار میگیرد.
نکته
زمانی که منبع نوسان از کریستال خارجی است برنامهریزی این فیوزبیت (CLKOPT) منجر به افزایش سویینگ و دامنه نوسان میشود.
در محیطهای پر نویز و پر تشعشع امکان خوبی است برای اینکه میکرو به شیوه بهتری به کار خودش ادامه دهد.
جمع بندی
برای انتخاب کلاک با گزینههای متفاوت در شمارههای مختلفی روبرو هستیم که در هر شماره امکانات متفاوتی موجود است.
در ATTiny13 امکان اتصال کریستال خارجی موجود نیست و منبع نوسان یا اسیلاتور داخلی در 3 فرکانس مختلف یا کلاک خارجی است.
- آموزش کاربردی AVR – بخش اول – میکروکنترلر و میکروپروسسور
- آموزش کاربردی AVR – قسمت دوم-آشنایی با معماری داخلی AVR
- آموزش کاربردی AVR – قسمت سوم-آموزش سخت افزار میکروکنترلر Pinout و کار با رجیسترهای AVR
- آموزش کاربردی AVR – قسمت چهارم- برنامه های کدویژن و بسکام مرتبط با بخش سوم
- آموزش کاربردی AVR – قسمت پنجم – خلاصهای از کلیه امکانات موجود در AVR
- آموزش کاربردی AVR – قسمت ششم- نوشتن برنامههایی با کامپایلرهای کدویژن به منظور پیاده سازی یک دیکدر BCD to 7segment