اطلاعیه

Collapse
No announcement yet.

External interrupt

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

    External interrupt

    سلام به همه دوستان پیک باز
    یه مشکل عجیب دارم اینکه سه تا از اینتراپت های خارجی اینیشیال می کنم با اینکه تمامی تنظیماتشون یکی ولی فقط INT2 یعنی پایه RB2 کار میکنه دو تای دیگه اصلا به بردار وقفه نمیره اولویتشم عوض کردم درست نشد. rising edge یا falling edge تنظیم کردم درست نشد.بردارهای وقفه من درست چون تایمر دارم که به درستی هم در interrupt low_priority و هم در interrupt high_priority می روند و روتین انجام می شود.
    کسی میدونه چه باید کرد
    کد:
    //*************INT1 init******************
      INTCONbits.INT0IF=0;// INT0 External Interrupt Flag bit
      INTCON2bits.INTEDG0=0;//External Interrupt 0 Edge Select bit   Interrupt on falling edge
       INTCONbits.INT0IE=1;//INT0 External Interrupt Enable bit
                     //always priority is high
    
       //*************INT1 init******************
    
       INTCON3bits.INT1IF=0;// INT1 External Interrupt Flag bit
       INTCON2bits.INTEDG1=0;//External Interrupt 1 Edge Select bit     Interrupt on falling edge
       INTCON3bits.INT1IE=1;//INT1 External Interrupt Enable bit
    
    INTCON3bits.INT1IP=1;//INT1 External Interrupt Priority bit    Low priority
        //*************INT2 init******************
        INTCON3bits.INT2IF=0;// INT2 External Interrupt Flag bit
        INTCON2bits.INTEDG2=0;//External Interrupt 2 Edge Select bit   Interrupt on falling edge
       INTCON3bits.INT2IE=1; //INT2 External Interrupt Enable bit
    
     INTCON3bits.INT2IP=2; // INT2 External Interrupt Priority bit    Low priority

    #2
    پاسخ : External interrupt

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

    دیدگاه


      #3
      پاسخ : External interrupt

      نوشته اصلی توسط شاهرخ مستقیمی
      سلام.
      بعد از رخ دادن وقفه، پرچم وقفه رو باید دستی پاک کنین تو ساب روتین اون وقفه. این کار رو انجام میدین؟
      جسارتا جهت یادآوری ؛ اون پین رو ورودی تعریف کردین دیگه؟ از یادتون نرفته باشه؟
      ممنون از پاسختون جناب مستقیمی
      بله INTCONxbits.INTxIF=0 در هر وقفه هست ولی مشکل من اینجاست که به جز INT2 دو وقفه دیگر اصلا به بردار وقفه نمیاد که بخواد فلگ چک کنم و بعد بخوام روتین برنامه انجام دهم و ادامه داستان
      بله قربان انجام دادم
      LATB = 0x20
      TRISB = 0xDF
      WPUB = 0xDF
      با سپاس

      دیدگاه


        #4
        پاسخ : External interrupt

        جای اولویت وقفه ی 2 رو با وقفه ی 0 یا 1 عوض کنین ببینین چه فرقی میکنه؟

        دیدگاه


          #5
          پاسخ : External interrupt

          نوشته اصلی توسط شاهرخ مستقیمی
          جای اولویت وقفه ی 2 رو با وقفه ی 0 یا 1 عوض کنین ببینین چه فرقی میکنه؟
          با دیباگر pickit3 چک کردم اصلا وقفه اتفاق نمی افته که بره به بردار وقفه که اونجا اولویت مهم باشه .



          اضافه شده در تاریخ :
          ردیف شد
          اینجا میگم که کسی مشکل منو داشت دو روز الکی مخش نترکه
          با اینکه پورت ورودی تعیین می کنید ولی قبلش رجیستر ADCON باید 0 کنید تا پورت ها به حالت i/O در بیان.اینجای پیک خیلی مسخرس که پورت ها دیفالت برای ای تو دی تنظیم شده

          دیدگاه


            #6
            پاسخ : External interrupt

            نوشته اصلی توسط koroush.badi
            ردیف شد
            اینجا میگم که کسی مشکل منو داشت دو روز الکی مخش نترکه
            با اینکه پورت ورودی تعیین می کنید ولی قبلش رجیستر ADCON باید 0 کنید تا پورت ها به حالت i/O در بیان.اینجای پیک خیلی مسخرس که پورت ها دیفالت برای ای تو دی تنظیم شده
            ممنون....بله این یه تیکه از PIC یه خورده چرت هست! باید ADC خاموش بشه.
            ممنون از به اشتراک گذاری تجربه تون.

            دیدگاه

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