اطلاعیه

Collapse
No announcement yet.

وقفه در IAR

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

    وقفه در IAR

    با سلام.
    دوستان در مورد وقفه در کامپایلر IAR برا ARM اشکال دارم. توضیحاتی که در راهنمای کامپایلر و پستهای این سایت موجوده برا بنده خیلی گنگ و مبهمه. فرض کنیم از میکروی AT91SAM7S128 داریم استفاده میکنیم. نحوه تعریف یک روال وقفه برای این میکرو در IAR به چه صورته؟ آیا برای میکروهای سری LPC تفاوت زیادی داره؟
    من توی هدر فایل AT91SAM7S128 هیچ توضیحی برای بردار های وقفه های مختلف ندیدم.
    اگه امکان داره با یک مثال ساده (مثلاً وقفه تایمر1 یا...) به طور کامل به بنده نشون بدید چکار کنم.
    ممنون

    #2
    پاسخ : وقفه در IAR

    با سلام
    ببخشید من با ARM کار نکردم ولی برای AVR روتین وقفه به صورت زیر هست که اسم بردار وقفه های مربوطه داخل فایل رجیستر مربوط به اون میکرو قرار میگیره
    فرم کلی روتین وقفه ، به عنوان مثال وقفه خارجی صفر :

    // External Interrupt 0 service routine
    #pragma vector= INT0_vect
    __interrupt void EXT_INT0(void)
    {
    // Place your code here
    }


    که بردار های وقفه مثلا برای مگا 64 در فایل IOM64.H به صورت زیر تعریف شدند :

    کد:
    #define  RESET_vect      (0x00)
    #define  INT0_vect      (0x04)
    #define  INT1_vect      (0x08)
    #define  INT2_vect      (0x0C)
    #define  INT3_vect      (0x10)
    #define  INT4_vect      (0x14)
    #define  INT5_vect      (0x18)
    #define  INT6_vect      (0x1C)
    #define  INT7_vect      (0x20)
    #define  TIMER2_COMP_vect   (0x24)
    #define  TIMER2_OVF_vect   (0x28)
    #define  TIMER1_CAPT_vect   (0x2C)
    #define  TIMER1_COMPA_vect  (0x30)
    #define  TIMER1_COMPB_vect  (0x34)
    #define  TIMER1_OVF_vect   (0x38)
    #define  TIMER0_COMP_vect   (0x3C)
    #define  TIMER0_OVF_vect   (0x40)
    #define  SPI_STC_vect     (0x44)
    #define  USART0_RXC_vect   (0x48)
    #define  USART0_UDRE_vect   (0x4C)
    #define  USART0_TXC_vect   (0x50)
    #define  ADC_vect       (0x54)
    #define  EE_RDY_vect     (0x58)
    #define  ANA_COMP_vect    (0x5C)
    #define  TIMER1_COMPC_vect  (0x60)
    #define  TIMER3_CAPT_vect   (0x64)
    #define  TIMER3_COMPA_vect  (0x68)
    #define  TIMER3_COMPB_vect  (0x6C)
    #define  TIMER3_COMPC_vect  (0x70)
    #define  TIMER3_OVF_vect   (0x74)
    #define  USART1_RXC_vect   (0x78)
    #define  USART1_UDRE_vect   (0x7C)
    #define  USART1_TXC_vect   (0x80)
    #define  TWI_vect       (0x84)
    #define  SPM_RDY_vect     (0x88)

    دیدگاه


      #3
      پاسخ : وقفه در IAR

      ممنونم، ولی برای AVR رو میدونم چون خودمم با IAR کار میکردم. ولی گویا برای ARM کار باهاش خیلی پیچیده است.
      فکر میکنم با فایل های هدری که خود کامپایلر داده نشه وقفه رو استفاده کرد و باید فایلهای cstartup و ... رو از این ور و اون ور دانلود کنم تا باهشون به یه جایی برسم. فقط تا همین جاشو میدونم. دوستانی که قبلاً در این زمینه کار کردن میشه لطف کنید و راهنمایی کنید؟

      دیدگاه


        #4
        پاسخ : وقفه در IAR

        سلام
        شما که با IAR کار کرده اید میتوانید توضیح دهید کد های مربوط به فرکانس ها چطوریه و چطوری باید تنظیم شود
        و در کدام هدر فایل باید نوشته بشه
        ممنون
        :nerd:
        قندیل، تندیس قطره هایی است که تسلیم جاذبه زمین نشدند. "چگوآرا"

        دیدگاه


          #5
          پاسخ : وقفه در IAR

          iar قابلیت خوبی برای وقفه ها داره
          در یک حالت پیشرفته برای اینکه بشه دنیای واقعی رو شبیه ساری کرد زمان وقوع وقفه ها ویا مقادیر وقفه های مثلا usrt رو از یک فایل میخونه که البته باید با اسکریپت نویسی آشنا باشید.
          شما پروژه ات رو بزار تا ببینم میتونم کمکت کنم یا نه
          تنها موردی که همه آدما یقین دارن خدا در حقش زیاد لطف کرده
          داشتن عقله زیادتر از دیگر آدم ها است

          دیدگاه

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