اطلاعیه

Collapse
No announcement yet.

وقفه خارجی در ATmega32

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

    وقفه خارجی در ATmega32

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


    $regfile = "m32def.dat"
    $crystal = 8000000
    Config Lcd = 16 * 2
    Config Lcdpin = Pin , Db7 = Portb.7 , Db6 = Portb.6 , Db5 = Portb.5 , Db4 = Portb.4 , E = Portb.3 , Rs = Portb.1
    Enable Interrupts
    On Int0 Int0_isr
    Config Portd = Input
    Config Portc = Output
    Portc = 0
    Dim Test1 As Bit , Test2 As Bit
    Cls
    Lcd "Iran"
    Dim A As Byte
    Enable Int0

    Here:
    Idle
    Goto Here
    End 'end program


    Int0_isr:
    Test1 = Pind.2
    Waitms 1
    Test2 = Pind.2
    If Test1 <> Test2 Then
    Goto Exitroutin
    End If

    Cls
    Incr A
    Toggle Portc.0
    Select Case A
    Case 1:
    Lcd "First is OK"
    Case 2:
    Lcd "second is OK"
    Case 3:
    Lcd "Third is OK"
    Case 4:
    Lcd "Forth is OK"
    A = 0
    End Select
    Exitroutin:
    Return
    عمر گران میگذرد خواهی نخواهی سعی بر آن کن نرود رو به تباهی
    مطلب دل را طلب از سوی خدا کن زآنکه بود رحمت او لا یتناهی

    #2
    پاسخ : وقفه خارجی در ATmega32

    البته این هم جواب نداده ها.... :angry:
    $regfile = "m32def.dat"
    $crystal = 8000000
    Config Lcd = 16 * 2
    Config Lcdpin = Pin , Db7 = Portb.7 , Db6 = Portb.6 , Db5 = Portb.5 , Db4 = Portb.4 , E = Portb.3 , Rs = Portb.1
    Enable Interrupts
    On Int0 Int0_isr
    Config Portc = Output
    Portc = 0
    Dim Test1 As Bit , Test2 As Bit
    Cls
    Lcd "Iran"
    Dim A As Byte
    Enable Int0

    Here:
    Idle
    Goto Here
    End 'end program


    Int0_isr:
    Enable Int0
    Cls
    Incr A
    Toggle Portc.0
    Select Case A
    Case 1:
    Lcd "First is OK"
    Case 2:
    Lcd "second is OK"
    Case 3:
    Lcd "Third is OK"
    Case 4:
    Lcd "Forth is OK"
    A = 0
    End Select

    Return
    عمر گران میگذرد خواهی نخواهی سعی بر آن کن نرود رو به تباهی
    مطلب دل را طلب از سوی خدا کن زآنکه بود رحمت او لا یتناهی

    دیدگاه


      #3
      پاسخ : وقفه خارجی در ATmega32

      سلام..
      اصلا مشخص نکردی که وقفه به چه صورتی باشه..

      Config Int0 = Low Level
      Enable Interrupts
      Enable Int0
      On Int0 lable

      الان برنامه بالا اینتراپت با سطح پایین کار میکنه..میتونی اون برای لبه بالا رونده و لبه پایین رونده config کنی فقط کافیه به جای low level از rissing-falling استفاده کنی...

      برای اینکه دفعه اول یه کار و دفعه بعد یه کار دیگه انجام بده تو برچسب اینتراپت از if استفاده کن.
      www.icesi.ir

      دیدگاه


        #4
        پاسخ : وقفه خارجی در ATmega32

        تو atmega32 وقفه فقط در حالت low level کار میکنه یعنی برای فعال شدن باید into , int1 , int2 به زمین وصل شه
        orteghali bashi

        دیدگاه


          #5
          پاسخ : وقفه خارجی در ATmega32

          نوشته اصلی توسط kh0shmaze
          تو atmega32 وقفه فقط در حالت low level کار میکنه یعنی برای فعال شدن باید into , int1 , int2 به زمین وصل شه
          نه من با 3 حالتش کار کردم .. هم low level , Rissing , Falling خیلی هم خوب جواب داده البته من با int0 , int1 کار کردم..
          www.icesi.ir

          دیدگاه


            #6
            پاسخ : وقفه خارجی در ATmega32

            آقا میلاد شما چه جوری با هر سه حالت کار کردی؟ آخه وقتی میخوای وقفه ها رو config کنی Error میده.

            در ضمن از لحاظ سخت افزاری هم من با یه مقاوت پایه INT0 رو Pull up کردم و در ضمن با یه خازن هم به GND وصلش کردم. موقعی که میخوام وقفه ایجاد کنم پایه INT0 رو به زمین وصل می کنم. :nerd:

            یه سوال دیگه هم دارم. موقعی که برای بار اول میکرو وارد وقفه میشه آیا وقفه ها رو غیرفعال می کنه یا نه؟ یعنی لازم هست که ما تو زیربرنامه وقفه، دوبار وقفه ها رو فعال کنیم یا نه؟ :NO:
            عمر گران میگذرد خواهی نخواهی سعی بر آن کن نرود رو به تباهی
            مطلب دل را طلب از سوی خدا کن زآنکه بود رحمت او لا یتناهی

            دیدگاه


              #7
              پاسخ : وقفه خارجی در ATmega32

              ورژن نرم افزارت چیه؟ خطا هیچ دلیلی جز این نمی تونه داشته باشه.

              با این حالتی که ایجاد کردی باید تنظیمات رو تو حالت Falling بذاری.

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

              دیدگاه


                #8
                پاسخ : وقفه خارجی در ATmega32

                نوشته اصلی توسط reza_micro
                آقا میلاد شما چه جوری با هر سه حالت کار کردی؟ آخه وقتی میخوای وقفه ها رو config کنی Error میده.

                در ضمن از لحاظ سخت افزاری هم من با یه مقاوت پایه INT0 رو Pull up کردم و در ضمن با یه خازن هم به GND وصلش کردم. موقعی که میخوام وقفه ایجاد کنم پایه INT0 رو به زمین وصل می کنم. :nerd:

                یه سوال دیگه هم دارم. موقعی که برای بار اول میکرو وارد وقفه میشه آیا وقفه ها رو غیرفعال می کنه یا نه؟ یعنی لازم هست که ما تو زیربرنامه وقفه، دوبار وقفه ها رو فعال کنیم یا نه؟ :NO:
                من گفتم با هاشون کار کردم نگفتم که داخل یه برنامه int0 رو به سه حالت config کردم.. تو برنامه هر اینتراپت باید یا Rissing,Falling,low Level باشه(نمیدونم که درست تایپ کردم یانه)

                بقیه مواردم حامد جعفری جواب کامل رو داده. :applause:
                www.icesi.ir

                دیدگاه


                  #9
                  پاسخ : وقفه خارجی در ATmega32

                  شما فقط به Falling تغییر بدید حله
                  ِِDie for Life, Not Live to Die
                  Freedom Fighter
                  " ناخود گاه، هریک از ما ، از نامیرائی خود یقین دارد " . فروید

                  دیدگاه


                    #10
                    پاسخ : وقفه خارجی در ATmega32

                    نرم ازار من ورژن 1.11.7.4 هست. که اگه بخوام توش وقفه رو config کنم، error میده که تو ATmega32 وقفه ها همیشه Low Level هستن و نمیشه اونا رو config کرد.
                    آقا میلاد من سوالم اینه که شما ATmega32 رو به حالت rising و یا falling برنامه ریزی کردی.

                    سوال دیگه ام اینه که چون در اسمبلی AVR ، وقتی که یه وقفه فعال میشه و میکرو به زیر برنامه وقفه میره، خودش کلیه وقفه ها رو غیرفعال می کنه و باید به وسیله کاربر دوباره فعال بشه. من سوالم اینه که آیا باید تو بسکام هم به این صورت عمل کنم یا نه؟
                    عمر گران میگذرد خواهی نخواهی سعی بر آن کن نرود رو به تباهی
                    مطلب دل را طلب از سوی خدا کن زآنکه بود رحمت او لا یتناهی

                    دیدگاه


                      #11
                      پاسخ : وقفه خارجی در ATmega32

                      نوشته اصلی توسط reza_micro
                      نرم ازار من ورژن 1.11.7.4 هست. که اگه بخوام توش وقفه رو config کنم، error میده که تو ATmega32 وقفه ها همیشه Low Level هستن و نمیشه اونا رو config کرد.
                      آقا میلاد من سوالم اینه که شما ATmega32 رو به حالت rising و یا falling برنامه ریزی کردی.
                      بله من با هر سه صورت کار کردم فقط باید پول پ و پول داون رو رعایت کنی..
                      همیشه سعی کن ورژن کامپایلرتو به روز نگه داری.... بیشتر مشکلات به خاطر ورژن قدیمی هستش.

                      اینم لینک بسکام آخرین ورژن: http://www.eca.ir/forum2/index.php?topic=15203.0


                      نوشته اصلی توسط reza_micro
                      سوال دیگه ام اینه که چون در اسمبلی AVR ، وقتی که یه وقفه فعال میشه و میکرو به زیر برنامه وقفه میره، خودش کلیه وقفه ها رو غیرفعال می کنه و باید به وسیله کاربر دوباره فعال بشه. من سوالم اینه که آیا باید تو بسکام هم به این صورت عمل کنم یا نه؟
                      نه .. نیازی نیست...
                      من تو یه برنامه هم وقفه خارجی و هم وقفه های تایمر ها فعال بود هیچ مشکلی پیش نیومد.. وقفه تایمر هام هر 3 میلی ثانیه بود و به موقع کار خود رو میکرد.
                      www.icesi.ir

                      دیدگاه


                        #12
                        پاسخ : وقفه خارجی در ATmega32

                        ورپن 1.11.7.4 با وقفه ها مشکل داره. یه ورژن بالاتر دانلود کن یا بخر

                        دیدگاه


                          #13
                          پاسخ : وقفه خارجی در ATmega32

                          ممنون که لینک آخرین ورژن رو برام گذاشتید. از جواب های دیگه تون هم ممنونم.
                          باید اول این ورژن بسکام رو دانلود کنم ببینم مشکلم حل میشه یا نه
                          ممنون از توجهتون
                          عمر گران میگذرد خواهی نخواهی سعی بر آن کن نرود رو به تباهی
                          مطلب دل را طلب از سوی خدا کن زآنکه بود رحمت او لا یتناهی

                          دیدگاه


                            #14
                            پاسخ : وقفه خارجی در ATmega32

                            BASCOM-AVR 1.11.9.0 :

                            http://www.eca.ir/forum2/index.php?topic=15523.msg72113

                            دیدگاه


                              #15
                              پاسخ : وقفه خارجی در ATmega32

                              نوشته اصلی توسط reza_micro
                              ممنون که لینک آخرین ورژن رو برام گذاشتید. از جواب های دیگه تون هم ممنونم.
                              باید اول این ورژن بسکام رو دانلود کنم ببینم مشکلم حل میشه یا نه
                              ممنون از توجهتون
                              از حامد باید تشکر کنی هم به خاطر لینک و هم به خاطر اطلاعات خیلی خوبش..
                              www.icesi.ir

                              دیدگاه

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