اطلاعیه

Collapse
No announcement yet.

وقفه در IAR

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

    وقفه در IAR

    سلام خدمت دوستان گلم

    توی کامپایلر IAR روتین وقفه رو چطور میشه تعریف کرد ؟؟؟؟ :nerd:

    دلا خو کن به تنهایی که از تنها بلا خیزد

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

    منظورتون چه نوع وقفه ای هست ٍ
    تمام تنظیمات روی همون رجیسترها و مثل کدویژن است و از این نظر فرقی نمی کند :
    مثلابرای پورت سریال:
    //rs232 9600
    UCSR0A=0x00;
    UCSR0B=0x98;
    UCSR0C=0x06;
    UBRR0H=0x00;
    UBRR0L=0x2f;

    // UBRR0L=0x2f; //9600
    //*********************** watchdog
    // WDTCR=0x18;
    //WDTCR=0x08;
    UCSR1A=0x00;
    UCSR1B=0x98;
    UCSR1C=0x06;
    UBRR1H=0x00;
    UBRR1L=0x03;
    __enable_interrupt();

    دیدگاه


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

      نه دوست من منظور من :
      Intrerrupt isr()
      {
      }
      دلا خو کن به تنهایی که از تنها بلا خیزد

      دیدگاه


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

        سلام
        help نرم افزار خودش کامل هست هرجا گیر کردید به help مراجعه کنید
        برای این مورد عبارت vector رو سرچ کنید
        با سپاس

        دیدگاه


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

          من Help رو هم نگاه کردم
          اینو :
          #pragma vector=0x14
          __interrupt void my_handler(void);
          نوشته
          که چرا بردار وقفه تو دستور #pragma تعریف میشه ؟
          حالا این به کنار کامپایلر از این دستور ایراد میگیره
          مورد بعدی اینکه
          بردار ها رو از کجا میتونم گیر بیارم ؟؟؟؟
          دلا خو کن به تنهایی که از تنها بلا خیزد

          دیدگاه


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

            http://www.cprogramming.com/referenc...or/pragma.html
            ادرس بردار ها در دیتاشیت ذکر شده در قسمت vector table که ادرس ها به word هست و باید برای استفاده در کمپایلر در 2 ضرب بشه تا به بایت تبدیل بشه
            اینم طرز استفاده
            کد:
            #include <ioavr.h>
            #pragma vector = 0x001 * 2
            __interrupt void int0(void)
            {
            PORTB ^= 0X01;
             
            }
            
            void main()
            {
            MCUCR |=0X03;
            GICR |= 0x40;
            DDRB |= 0x01;
            asm("sei");
            
            while(1)
              {
            
            
            
              }
            }

            دیدگاه

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