اطلاعیه

Collapse
No announcement yet.

اشکال در تایمر،هر 15.3 میکروثانیه یک اینتراپت بدهد

Collapse
X
 
  • فیلتر
  • زمان
  • Show
Clear All
new posts

    اشکال در تایمر،هر 15.3 میکروثانیه یک اینتراپت بدهد

    من میخواهم طوری تایمر را برنامه ریزی کنم که هر 15.3میکرو ثانیه یک اینتراپت بدهد ،محاسبات مربوط به آن را انجام دادم ،وقتی برنامه را اجرا می کنم تنها یکبار پس از 15میکروثانیه اینتراپت می دهد.من به این صورت چک کردم که باید یکی از پین های پورت B پس از هز 15.3میکروثانیه تغییر وضعیت بدهد که تنها یک مرتبه تغییر وضعیت داد.؟؟؟!!

    محاسبات:فرکانس مورد استفاده در تایمر 16مگاهرتز و بدون استفاده از ضریب تقسیم.
    بنابراین مدت زمان لازم برای یک شمارش:1/16000000=62.5ns
    تعداد پالس لازم برای تولید مدت زمان 15.3میکروثانیه:15.3ms/62.5ns=245
    مقدار لازم در TCNT0=256-245=11=0X0B

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

    interrupt [TIM0_OVF] void timer0_ovf_isr(void)
    {
    TCNT0=0xb0;
    PORTB.0=~PORTB.0;
    }

    #2
    پاسخ : اشکال در تایمر،هر 15.3 میکروثانیه یک اینتراپت بدهد

    با سلام
    دوست عزیز شما توی محاسباتتون مقدار اولیه رو بدست آوردید 0x0b اما توی روتین وقفه تایمر رو با 0xb0 مقدار دهی کردید ؟!!

    دیدگاه


      #3
      پاسخ : اشکال در تایمر،هر 15.3 میکروثانیه یک اینتراپت بدهد

      نوشته اصلی توسط mojtaba_led
      با سلام
      دوست عزیز شما توی محاسباتتون مقدار اولیه رو بدست آوردید 0x0b اما توی روتین وقفه تایمر رو با 0xb0 مقدار دهی کردید ؟!!
      اینجا اشتباهی نمایش داده شده وگرنه با کد ویزارد مقدار اولیه را وارد کردم حتی مد تایمر کانتر را به ctc تغییر دادم ومحتوای ocr=244 گذاشتم وحالا که با پروتئوس چک می کنم این مقدار درست نیست؟؟!!!

      دیدگاه

      لطفا صبر کنید...
      X