اطلاعیه

Collapse
No announcement yet.

lpc2368 ,اینتراپت خارجی

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

    lpc2368 ,اینتراپت خارجی

    سلام
    من در راه اندازی اینتراپت خارجی مشکل دارم وقتی set up کلاک را در start up غیر فعال می کنم درست کار می کند در این حالت نمی دونم اصلا با چه کلاکی میکرو کار می کند و وقتی با دستورهای نرم افزاری یا با start up کلاک را تنظیم میکنم درست رو هر لبه اینتراپت نمیده(یکسری از لبه هار و نمیبینه)!!!!!!!!!
    اگر دوستان کمک کنند ممنون میشم.

    #2
    پاسخ : lpc2368 ,اینتراپت خارجی

    سلام
    معمولا این مشکل وقتی بوجود میاد که شما بخش aic رو درست پیکربندی نکرده باشید .
    توی آرم نحوه ی راه اندازی وقفه با میکرو کنترلر های مثل avr و pic کاملا متفاوت هست و شما باید علاوه بر پیکربندی بخش aic ریجستر ها ی PIO_IER و PIO_IMR و.. رو هم تنظیم کنید ، تا پایه به عنوان ورودی وقفه پیکربندی بشه
    اگه برنامه ای رو که نوشتید بزارید من میکتم اون رو تصحیح کنم .

    دیدگاه


      #3
      پاسخ : lpc2368 ,اینتراپت خارجی

      سلام

      دوستان میشه لطفا بگید که برای راه اندازی وقفه خارجی چه تنظیماتی لازمه ؟ من تنظیمات زیر رو که مربوط به EINT0 هست رو برای LPc2368 انجام دادم ولی وقتی یه وقفه به پایه P2.10 میدم اصلا جواب نمیده !!! :cry2: :cry2:


      کد:
      #include <LPC23xx.h>
      
      void wait (unsigned long b);
      long int i ;
      __irq void FIQ_Handler (void) {
      IOSET0=0x001; //set led1
      wait (1000);
      IOCLR0=0x001;
      wait (1000);
      EXTINT=1; //Acknowledge
      VICVectAddr=0; //Acknowledge
      i= 0x0;
      }
      
      int main (void)
      {
      	CLKSRCSEL=0;
      	IODIR0=0x401;
      	PINSEL4 = 0x00100000; //set PORT2.10 to EINT0
      	EXTMODE=0x01; //set EINT0 to edge sensitive
      	EXTPOLAR=0x01; //set EINT0 to falling edge sensitive
      	EXTINT = 0x01; 
      	VICIntSelect= 0x00004000; //set eint0 to FIQ
      	VICIntEnable= 0x00004000; //enable Eint0
      while (1)
      {
      	IOSET0=0x400;
      	wait (1000);
      	IOCLR0=0x400;
      	wait (1000);
      }
      
      }
      
      void wait (unsigned long b)
      {
      
      unsigned long c;
      c=2000 * b ;
      
      for (i=0;i<c;i++);
      }
      اگه چیز دیگه ای باید اضافه کنم بگید چیه ؟ دیگه نمیدونم باید چیکار کنم
      میشه لطفا راهنمایی کنید . دوستمون گفته بودند
      شما باید علاوه بر پیکربندی بخش aic ریجستر ها ی PIO_IER و PIO_IMR و.. رو هم تنظیم کنید ، تا پایه به عنوان ورودی وقفه پیکربندی بشه
      میشه یه توضیحی بدین

      دیدگاه

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