بخشی از پاورپوینت

--- پاورپوینت شامل تصاویر میباشد ----

اسلاید 1 :

  • AVR ها نهایتا دارای سه تایمر / کانتر هستند (به جز MEGA128 که 4 تایمر دارد).
  • به علت وجود این سه تایمر /کانتر در میکرو نمونه AT90S8535 در این بخش قصد داریم به معرفی تمام تایمر کانتر ها و رجیستر های مربوطه و سپس پیکره بندی آنها در محیط BASCOME بپردازیم

اسلاید 2 :

  • تایمر/کانترصفرهشت بیتی و قابلیت انتخاب کلاک از کلاک سیستم ، تقسیمی از کلاک سیستمی از پایه های خروجی را دارا است.
  • تایمر / کانتر صفر با توجه به تنظیمات رجیستر کنترلی TCCR0می تواند متوقف شود
  • پرچم سر ریز و مد مقایسه ای در رجیستر TIFR موجود است.
  • فعال و غیر فعال کردن وقفه های تایمر/کانتر صفر در رجیستر TIMSK قابل تنظیم است.

اسلاید 3 :

بیت های کنترلی تایمر / کانتر صفر

  • بیت های 3...7:بیت های رزو شده
  • بیت های 2،1،0 : CS02 ,CS01 , CS00 : انتخاب کلاک تایمر / کانتر صفر

     این بیت ها طبق جدول زیر مشخص کننده کلاک تایمر /کانتر صفر هستند.

اسلاید 4 :

  رجیستر تایمر/کانتر صفر
 
[TIMER/COUNTER0 ] TCNT0

üاین رجیستر 8 بیتی محتوای تایمر/کانتر را در خود جای می دهد .تایمر/کانتر به عنوان UP- COUNTER با قابلیت خواندن /نوشتن استفاده می شود.

اسلاید 5 :

 پیکر بندی در مد تایمر

CONFIG TIMER0 = TIMER ,PREACALE =1|8|64|256|1024

  • تایمر می تواند فرکانس خود را از فرکانس اوسیلاتور بخش بر یک ، 8، 64 ، 256 ، 1024 تامین کند.
  • تایمر با دستورSTART TIMER شروع به شمارش و با دستور STOP TIMER متوقف می شود.
  • تایمر پس از شمردن تا مقدار $FF پرچم سرریز خود را (OVF0 ) یک می کند.

اسلاید 6 :

  • در صورتی که وقفه سر ریز با دستور ENABLE OVF0 و وقفه سراسری با دستور ENABLE INTRRUPTS فعال باشد می توان در لحظه سرریزی کانتر با دستور ON OVF0 LABLE  و یا  ON TIMER0 LABLE  به لیبل پرش کرد و روتین وقفه مربوط به ان را اجرا کرد.
  • محتوای تایمر /کانتر یک را می توان با دستور VAR = TIMER0  خواند که VAR  باید متغیری از جنس  BYTE  باشد.
  • با دستور TIMER0 = INITIALVALUE مقدار اولیه ای را می توان در تایمر صفر قرار داد.

اسلاید 7 :

CONFIG TIMER0  = COUNTER , EDGE = RISING / FALLING

  • با انتخاب EDGE = RISING با هر لبه بالا رونده به پایه T0 شمارش صورت می گیرد
  • با انتخاب EDGE = FALLING با هر لبه پایین رونده به پایه T0 شمارش صورت می گیرد
  • کانتر پس از شمردن تا مقدار $FF و به تعداد $FF+1 پالس پرچم OVF0 یک می شود .
  • محتوای تایمر /کانتر صفر را می توان با دستور VAR = COUNTER0  خواند که VAR  باید متغیری از جنس  BYTE  باشد.
  • در صورتی که وقفه سر ریز با دستور ENABLE OVF0 و وقفه سراسری با دستور  ENABLE INTRRUPTS فعال باشد می توان در لحظه سرریزی کانتر با دستور ONOVF0 LABLE  و یا  ON COUNTER LABLE  به لیبل پرش کرد و روتین وقفه مربوط به ان را اجرا کرد.

اسلاید 8 :

  مثال کانتر

Config timer0 = counter , edge = falling

رجیستر  Tcnt0 و یا متغیر counter0 تعداد پالس شمارش شده را نشان می دهد

Tcnt0= 0

Do

    ‘or Print couter0                Print Tcnt0

Loop Until Tcnt0>=10         ‘When 10 pulses are counter loop is                                                      exited

End

اسلاید 9 :

  مثال تایمر

  • کلاک تایمر صفر را می توان از کلاک خود سیستم و یا تقسیمی از ان تهیه کرد . این تقسیمات 8 ، 16 ، 256 ، 1024 می باشند به طور مثال با کریستال 8MHZ و prescaler = 1024 ، تایمر با فرکانس 8MHZ/1024=7.8125KHZ کار خواهد بود.

$crystal = 8000000

Config Timer0 = Timer , Prescale = 1    ‘Timer0 osc = 8MHZ

Stop Timer0

Start Timer0

Do

  ‘evry 125ns tcnt0 increase one             Print Tcnt0 

Loop

End

اسلاید 10 :

  مثال تایمر با وقفه

Config Timer0= Timer , Prescale =1024

Enable Interrupts          ‘Global interrupt should Enable ,when using                                        any interrupt

Enable Timer0              ‘enable timer0 interrupt

On Ovf0 Timer0_isr         ‘or one timer0 tim0_isr

Do

   ‘your program goes here

Loop

End

the fllowing code is executed when the timer overflows

Tim0_isr:

Print “ in interrupt routin  “

return

در متن اصلی پاورپوینت به هم ریختگی وجود ندارد. برای مطالعه بیشتر پاورپوینت آن را خریداری کنید