اطلاعیه

Collapse
No announcement yet.

مشکل با وقفه خارجی در مگا 64

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

    مشکل با وقفه خارجی در مگا 64

    سلام خدمت دوستان.
    من این برنامه رو نوشتم تو پروتیوس درست کار میکنه اما تو عمل وقتی یه بار کلید رو فشار میدم 3 ال 4 تا یا بیشتر میره جلو.
    کامپایلر مد نظر هم atmel studio
    کد:
    /*
     * _1st_lcd_mega64.c
     *
     * Created: 12/25/2013 8:27:33 AM
     * Author: electronic
     */ 
    
    #ifndef F_CPU
    #define F_CPU 4000000UL
    #endif F_CPU
    #include <avr/io.h>
    #include <util/delay.h>
    #include "lcd.h"
    #include <avr/interrupt.h>
    
    unsigned char str[16];
    int c=0;
    ISR(INT4_vect){	
    c++;	
    }	
    int main(void)
    {
    	sei();
    	DDRE=(0<<DDE4);         //input
    	PORTE=(1<<PE4);         // pull up
    	EICRB=(1<<ISC41)|(0<<ISC40); // external interrupt active falling edge
    	EIMSK=(1<<INT4);      //faal kardane flag vaghfe
    	lcd_init();
      while(1)
      {
    		sprintf(str,"shomarande = %d ",c);
    		lcd_gotoxy(0,0); 
    		lcd_puts(str);
    		
      }
    }
    Someone who can change the world
    ELECTRONIC ENGINEER

    #2
    پاسخ : مشکل با وقفه خارجی در مگا 64

    قبل از اضافه کردن متغیر در وقفه اینتراپت یک وایل بزار که شرطش برگشت کلید به حالت اولیه باشه و سپس مقدار متغیر افزایش پیدا کنه.
    در این صورت مشکل حل میشه.
    چرا ناراحتی پاتریک!
    + امروز ی بچه دیدم سرچهارراه گل میفروخت
    - از دیدنش ناراحت شدی؟
    + نه
    پس چی ناراحتت کرده
    + اینکه دیدن اینجور بچه ها انقدر واسم عادی شده که دیگه ناراحتم نمیکنه
    ------------------------------------------------------------------------------------------------------
    تاحالا فکر کردی بیسواد کیه؟- بی سواد یعنی کسی که نمیتونه ذهنیاتش رو عملی کنه!
    ------------------------------------------------------------------------------------------------------
    محصولات

    دیدگاه


      #3
      پاسخ : مشکل با وقفه خارجی در مگا 64

      اقا اگه منظورت این بود گزاشتم جواب نداد.
      کد:
      /*
       * _1st_lcd_mega64.c
       *
       * Created: 12/25/2013 8:27:33 AM
       * Author: electronic
       */ 
      
      #ifndef F_CPU
      #define F_CPU 4000000UL
      #endif F_CPU
      #include <avr/io.h>
      #include <util/delay.h>
      #include "lcd.h"
      #include <avr/interrupt.h>
      
      unsigned char str[16];
      int c=0;
      ISR(INT4_vect){	
      	while(PINE & (0x10)){		
      c++;	
      	}	
      }	
      int main(void)
      {
      	sei();
      	DDRE=(0<<DDE4);         //input
      	PORTE=(1<<PE4);         // pull up
      	EICRB=(1<<ISC41)|(0<<ISC40); // external interrupt active falling edge
      	EIMSK=(1<<INT4);      //faal kardane flag vaghfe
      	lcd_init();
        while(1)
        {
      		sprintf(str,"shomarande = %d ",c);
      		lcd_gotoxy(0,0); 
      		lcd_puts(str);
      		
        }
      }
      Someone who can change the world
      ELECTRONIC ENGINEER

      دیدگاه


        #4
        پاسخ : مشکل با وقفه خارجی در مگا 64

        کلیدی که داری باهاش کار می کنی رو عوض کن.
        چرا ناراحتی پاتریک!
        + امروز ی بچه دیدم سرچهارراه گل میفروخت
        - از دیدنش ناراحت شدی؟
        + نه
        پس چی ناراحتت کرده
        + اینکه دیدن اینجور بچه ها انقدر واسم عادی شده که دیگه ناراحتم نمیکنه
        ------------------------------------------------------------------------------------------------------
        تاحالا فکر کردی بیسواد کیه؟- بی سواد یعنی کسی که نمیتونه ذهنیاتش رو عملی کنه!
        ------------------------------------------------------------------------------------------------------
        محصولات

        دیدگاه


          #5
          پاسخ : مشکل با وقفه خارجی در مگا 64

          تاثیری نداره.
          فکر میکنم مشکل از اسپایک باشه.
          کسی یه روش اصولی بلد نیست.
          Someone who can change the world
          ELECTRONIC ENGINEER

          دیدگاه


            #6
            پاسخ : مشکل با وقفه خارجی در مگا 64

            دوستان کسی کمک نمیکنه؟
            Someone who can change the world
            ELECTRONIC ENGINEER

            دیدگاه


              #7
              پاسخ : مشکل با وقفه خارجی در مگا 64

              کسی روشی برای دیبانسینگ نداره؟ :sad:
              تاخیر هم گذاشتم جواب نمیده.
              Someone who can change the world
              ELECTRONIC ENGINEER

              دیدگاه


                #8
                پاسخ : مشکل با وقفه خارجی در مگا 64

                دوست عزیز مشکلی که می فرمایید رو منم بارها داشتم یعنی وقتی ادم از وقفه استفاده می کنه و اون رو حساس به لبه ها قرار میده انتظار داره دیگه پرش اعداد نداشته باشه ولی در عمل چیزی غیر از این اثبات میشه و همونطور که فرمودین برمی گرده به نویز محیط و لرزش کلید.

                با استفاده از گذاشتن حلقه وایل این مشکل تا حد زیادی حل میشه و گاها پرش های 2 یا 3 تایی خواهد داشت.

                دو سر کلیدت یه خازن 104 موازی کن و وقتی وقفه اجرا شد قبل از وایل وقفه صفر رو غیر فعال و سپس بعد از افزایش متغییر مربوطه و یک تاخیر نا چیز مجددا وقفه رو برای اعمال بعدی فعال کنید.

                لینک زیر رو هم که استاد رضا سپاسیار نوشتن بخونید خالی از لطف نیست:
                http://www.eca.ir/forum2/index.php?t...76622#msg76622

                امیدوارم مشکلتون حل بشه.
                چرا ناراحتی پاتریک!
                + امروز ی بچه دیدم سرچهارراه گل میفروخت
                - از دیدنش ناراحت شدی؟
                + نه
                پس چی ناراحتت کرده
                + اینکه دیدن اینجور بچه ها انقدر واسم عادی شده که دیگه ناراحتم نمیکنه
                ------------------------------------------------------------------------------------------------------
                تاحالا فکر کردی بیسواد کیه؟- بی سواد یعنی کسی که نمیتونه ذهنیاتش رو عملی کنه!
                ------------------------------------------------------------------------------------------------------
                محصولات

                دیدگاه


                  #9
                  پاسخ : مشکل با وقفه خارجی در مگا 64

                  سوران عزیز واقعا ممنون از توجهتون.شما یکی از با ارزش ترین اعضای انجمنید این رو بی اغراق عرض میکنم.
                  دقیقا منم به خاطر دقت میخوام از وقفه خارجی استفاده کنم.
                  با موازی کردن خازن درست شدباز هم ممنون از کمکتون.
                  Someone who can change the world
                  ELECTRONIC ENGINEER

                  دیدگاه

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