اطلاعیه

Collapse
No announcement yet.

مشکل کار با اینتراپت 2 و 3 در lpc2138

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

    مشکل کار با اینتراپت 2 و 3 در lpc2138

    سلام
    من برای پروژه م احتیاج به سه تا وقفه ی خارجی دارم که این میکر وقفه های خارجی 0 تا 3 رو داره. حالا برای فعال کردن این وقفه ها و آدرس دهی شون با مشکل مواجه شدم. مثلا رجیستر VICVectAddr فقط از 0 تا 15 رو پشتیبانی می کنه و خب شماره های وقفه های خارجی 2 و 3، 16 و 17 هست. یعنی خارج از محدوده. و خب حالا من نمی دونم چطور باید وقفه های 2 و 3 رو آدرس دهی کنم.
    در ضمن حتی رجیستر VICVectCntl هم چهار بیت اولش که مربوط به شماره ی وقفه ها هست فقط از 0 تا 15 رو می گیره.
    ممنون می شم اگه راهنمایی کنید

    #2
    پاسخ : مشکل کار با اینتراپت 2 و 3 در lpc2138

    من پروژه م رو با lpc2138 نوشتم وقفه هاش رو هم تونستم بنویسم....ارور هم نمی ده...ولی وقتی می خوام توی پروتئوس شبیه سازی کنم، سوییچ هایی رو که مربوط به وقفه ها هستند اگه بزنم برنامه متوقف می شه و دیگه کار نمی کنه....می دونید مشکل از کجاست؟؟؟؟
    ممنون می شم کسی پاسخ بده

    دیدگاه


      #3
      پاسخ : مشکل کار با اینتراپت 2 و 3 در lpc2138

      با این گونه سوال پرسیدن که کسی نمی تونه کمکت کنه.شما باید کدی که نوشتید رو بزارید تا بشه کاری کرد.ارور ندادن کامپایلر دلیل بر درستی برنامه نیست.
      شما بعد از ورود به زیرروال وقفه ایا پرچم وقوع وقفه را پاک میکنید؟اگه این کار را نکرده باشید در اولین وقفه میکرو در ان زیر روال خواهد ماند و بیرون نمیاید

      دیدگاه


        #4
        پاسخ : مشکل کار با اینتراپت 2 و 3 در lpc2138

        دوست عزیز وقتی سوییچ مربوط به وقفه رو می زنم اصلا برنامه وارد برنامه ی وقفه نمی شه که پرچم وقوعش رو پاک کنم. بلافاصله می ایسته برنامه.
        توی قسمت main این کدها رو نوشتم...و فکر نمی کنم مسئله مربوطه به کد خود زیربرنامه های وقفه باشه، چون می گم که اصلا داخل زیربرنامه وقفه نمی ره. حالا اگه لازمه کد اون ها رو هم بذارم.
        ممنون از راهنمایی تون

        EXTMODE=0X0F;
        EXTPOLAR = 0x00;
        VICIntSelect=0x0000C000;
        VICIntEnable=0x0003C000;


        VICVectAddr3 = (unsigned long) emergencystop_EXTINT;//?????? 16
        VICVectAddr4 = (unsigned long) alarmbell_EXTINT;//?????? 17
        VICVectAddr0 = (unsigned long) FIQupdown_EXTINT;
        VICVectAddr1 = (unsigned long) FIQupdown_EXTINT;
        VICVectCntl0 = 0x02 | 14;
        VICVectCntl1 = 15 + (1<<5);
        VICVectCntl3 = 0x02 | 16;
        VICVectCntl4 = 0x02 | 17;

        دیدگاه

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