اطلاعیه

Collapse
No announcement yet.

مشکل با وقفه تایمر صفر

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

    مشکل با وقفه تایمر صفر

    یه حلقه for دارم که میخوام تا یه زمان مشخصی دستورات داخلش تکرار بشن.تابع delay() رو باید کجای برنامه قرار بدم و برای فعال سازی وقفه تایمر کدوم رجیستر ها رو باید مقدار دهی کنم و چه مقداری؟
    کد:
    void delay()                   
    void main()
     {
     while (1)
        {      
         for(i= ; i<= ; );
          { .
           .       
           .
           }
          
        }
     }
    //--------------------------
    interrupt [7] void timer0 Overflow(void)
     {
     #asm("cli");
      .
      .
      .
     #asm("sei");
     }
    //--------------------------
    void delay()
     {
     TCCR0=0x02;
     while(!(TIFR& 0x02));
     TIFR |=0x02;
     }

    #2
    پاسخ : مشکل با وقفه تایمر صفر

    از وقفه تایمر ها نمیتونید استفاده کنید؟ اگر قصدتون استفاده از وقفه تایمر هست باید اول تنظیمات تایمر رو برای زمان لازم انجام بدید
    به عنوان مثال برای تولید زمان یک میلی ثانیه در مد ctc این تنظیمات لازمه :
    کد:
     OCR0=124;
     TCCR0=(1<<WGM01)|(1<<CS00); // CTC
     TIMSK=1<<OCIE0;
    در فرکانس 8 مگاهرتز

    دیدگاه

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