اطلاعیه

Collapse
No announcement yet.

وقفه تایمر 0 در LPC2368

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

    وقفه تایمر 0 در LPC2368

    دوستان سلام.
    یک برنامه ساده برای راه اندازی وقفه تایمر0 نوشتم و با Keil شبیه سازی کردم. جریان برنامه با تطابق تایمر0 با MR0 وارد سرویس وقفه میشه ولی یک مشکلی هست. فقط برای اولین باری که تطابق صورت گرفت وقفه اتفاق می افته.
    یعنی بعد از خروج از اولین وقفه دیگه وقفه صورت نمیگیره. کدش به صورت زیر هست. اگه امکان داره شما هم تست کنید و ببینید کجا مشکل داره؟ با سپاس.
    کد:
    #include <stdio.h>  
    #include <lpc23xx.h>
    
     void t0_isr(void)
     {
     __nop();
     T0IR=0xff; // clear flags
     __nop();
    
     }
    
    
    int main(void)
    {
    
      PCONP= (1<<1);
      PCLKSEL0 &=~(3<<2);
    
    	T0MCR=(3<<0);
    	T0MR0=9;
    	T0IR=0xff; // clear flags
    	T0PR=0x03;
    	T0CTCR=0x00;
    	T0TCR=0x01;
     //////////////////
    	VICIntEnClr=0xffffffff;// Clear All interrupt
    	VICIntSelect=0x0000; 
    	VICVectAddr4=(unsigned int)t0_isr;
    	VICVectPriority4=0x04;
      VICIntEnable|=(1<<4);
    
     while(1)
      {
    	 __nop();
    	 __nop();
    	 __nop();
      }
    
    // return 0;
    
    }

    #2
    پاسخ : وقفه تایمر 0 در LPC2368

    فکر کنم آخر سرویس وقفه باید کد:
    VICVectAddr=0
    رو هم اضافه کنید.

    دیدگاه


      #3
      پاسخ : وقفه تایمر 0 در LPC2368

      نوشته اصلی توسط jalal gilani
      فکر کنم آخر سرویس وقفه باید کد:
      VICVectAddr=0
      رو هم اضافه کنید.
      ممنونم از پاسختون. ولی این رجیستر فقط نگهدارنده آدرس بردار وقفه جاری هست. البته پیشنهاد شما رو انجام دادم ولی باز همین مشکل وجود داره.

      دیدگاه

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