اطلاعیه

Collapse
No announcement yet.

مشکل با اینتراپت !!!

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

    مشکل با اینتراپت !!!

    سلام دوستان خسته نباشید :
    یک برنامه ی ساده با بسکام برای اینتراپت نوشتم که هر بار که پایه ی INT0 فعال میشه ، یکی به A اضافه بشه .
    تو پروتئوس عالی جواب میده ولی روی برد بورد جواب نمیده !!!!!! یعنی وقتی پایه ی INT0 رو فعال میکنم ، برای بار اول اعداد
    20 ، 45 ، 50 ، 60 و . . . و همینطور زیاد نشون میده !!!!! :surprised:
    پایه ی INT0 رو تو MEGA32 با مقاومت 10K به زمین وصل کردم و مقاومت رو هم تغییر دادم ولی جواب نداد که نداد . . .
    این برنامه :
    $regfile = "m32def.dat"
    $crystal = 1000000
    Config Lcdpin = Pin , Rs = Portc.0 , E = Portc.1 , Db4 = Portc.2 , _
    Db5 = Portc.3 , Db6 = Portc.4 , Db7 = Portc.5
    Config Lcd = 16 * 2
    Config Int0 = Falling
    Enable Interrupts
    Enable Int0
    On Int0 R
    Dim A As Word
    A = 0
    Cls : Cursor Off
    Do
    Locate 1 , 1 : Lcd ; "INT0 =" ; A
    Waitms 250
    Loop
    End
    R:
    A = A + 1
    Return
    این هم عکس تو پروتئوس :

    http://s6.uplod.ir/i/00738/snqgedek4j61.png
    آرزوی سرافرازی برای ایران عزیز . . .



    #2
    پاسخ : مشکل با اینتراپت !!!

    delay رو قبل از دستور return قرار بده

    دیدگاه


      #3
      پاسخ : مشکل با اینتراپت !!!

      آق این DELAY رو جابه جا کردم ، کم کردم ، زیاد کردم ، حذف کردم . . . . نشد که نشد . . .
      تو پروتئوس خوب جواب میده ها . . . ولی روی برد بورد 10 تا 15 تا . . . . اضافه میشه !!!!
      آرزوی سرافرازی برای ایران عزیز . . .


      دیدگاه


        #4
        پاسخ : مشکل با اینتراپت !!!

        دلیلش تو قسمت عملی به شرح زیر هست؟؟
        همونظور که میدونید تو نرم افزار تمامی قطعات به صورت ایده آل به کار میرن
        پس با یک بار زدن شستی در نرم افزار فقط یک وقفه ایجاد میشه

        اما در عمل اصلا اینطوری نیست :NO:
        وقتی شما در عمل یک شستی رو فشار میدید شستی نوسان میکنه اما با مقیاس بسیار کوچک
        پس در عمل شما وقتی یکبار شستی رو فشار میدید میکرو اونرو حده اقل 10 بار فشارداده شده میبینه که خوب این عمل از نوسان شستی در داخل قسمت مکانیکی هست
        یه مثال:
        شما یک خط کش یا هر چیز انعطاف پذیر رو بردارید بکشید فشار بدید و رها کنید
        آیا فقط در هنگام فشار دادن خط کش خم میشه معلومه که خیر

        اما راه حل مشکل:
        در هنگامی که وقفه انجام میشه توسط کلید یک تاخیر 150 میلی ثانیه ای براش در نظر بگیرید و بعدا در lcd نمایش بدید فکر کنم همین کارتون رو راه میندازه
        به این عمل لرزش گیری میگن
        تازه اگر دقت کرده باشین وقتی میخواهید یک keypad رو راه اندازی کنید در آخر یک debounce براش تعریف میکنید که این همون تاخیر بعد از فشار دادن شستی هست که مد نظر شما هست

        امیدوارم به دردت خورده باشه
        از دو چیز بسیار زیاد یاد گرفتم (1) نمونه مدارهای موجود در سایت های خارجی (2) مهندسی معکوس بردهای غیر ایرانی. به نقل از آقای مرتضی امانی
        --------------------------------------------------------
        تمام دنیا ما را تحریم کرده اند؛ حداقل خودمان همدیگر را تحریم نکنیم. به نقل از pencil
        --------------------------------------------------------
        اشک هایی که پس از هر شکست ریخته میشوند همان عرق هاییست که برای پیروزی ریخته نشده است. mehran901

        دیدگاه


          #5
          پاسخ : مشکل با اینتراپت !!!

          در ادامه نکات دوستان
          در عمل بسته به تعیین تحریک وقفت که لبه بالا رونده میزاری یا پایین رونده،متناظرش مقاومت pull down یا pull up فراموش نشه

          و نکته 2 اینکه بسته به لبه پایین رونده یا بالاروندت توی روال وقفت یه شرط حلقه ای چک کردن صفر ماندن پین وقفه(تو حالت پایین رونده) و یا ه شرط حلقه ای چک کردن یک ماندن پین وقفه (تو حالت بالا رونده) می تونه تو شمارش دقیق تر کمکت کنه

          مثلا توی C موقعی که لبه بالا رونده برای تحریک وقفه تعیین میشه با نوشتن
          کد:
          while(PIND.2==1);
          و یا موقعی که لبه پایین رونده برای تحریک وقفه تعیین میشه با نوشتن

          کد:
          while(PIND.2==0);
          میتونه کمک کنه

          یا علی

          دیدگاه


            #6
            پاسخ : مشکل با اینتراپت !!!

            آقا من هنوز مشکلم پا برجاست !!!!!! :surprised:
            مقاومت ها رو هم کم و زیاد کردم ولی تغییری نکرد !!!!
            تاخیرها رو هم کم و زیاد و هم جابه جا کردم ولی نشد که نشد ، این برنامه تاپیک زیر رو هم چک کردم ، 10 تا 20 تا میشماره !!!!!
            برنامه ای تاپیک رو : :NO:

            http://www.eca.ir/forum2/index.php?topic=53975.msg285648#msg285648
            آرزوی سرافرازی برای ایران عزیز . . .


            دیدگاه


              #7
              پاسخ : مشکل با اینتراپت !!!

              این برنامه هم مشکل داره
              وقتی اینتراپت زده میشه - اینتراپت رو desable کن و 500 میکرو ثانیه تاخیر بزار
              قبل از return دوباره اینتراپت رو فعال کن
              محاله جوای نده !!!

              دیدگاه


                #8
                پاسخ : مشکل با اینتراپت !!!

                نوشته اصلی توسط rezamajdi
                آقا من هنوز مشکلم پا برجاست !!!!!! :surprised:
                مقاومت ها رو هم کم و زیاد کردم ولی تغییری نکرد !!!!
                تاخیرها رو هم کم و زیاد و هم جابه جا کردم ولی نشد که نشد ، این برنامه تاپیک زیر رو هم چک کردم ، 10 تا 20 تا میشماره !!!!!
                برنامه ای تاپیک رو : :NO:

                http://www.eca.ir/forum2/index.php?topic=53975.msg285648#msg285648
                شرط چک کردنی رو که گفتم رو توی زیر روال وقفه اینتراپتت گذاشتی؟
                برنامتو بزار اگه میتونی

                دیدگاه


                  #9
                  پاسخ : مشکل با اینتراپت !!!

                  به جای حساس به لبه، حساس به سطح کن مشکلت حل میشه.البته پول پ کن تا به تغییر سطح به صفر وقفه رخ بده!استفاده میکنم تو پروژه و مشکلی پیش نیومده.در ضمن داخل وقفه که رفتی اولش یه 20-40 میلی ثانیه تاخیر بذار تا نوسانات رفع بشه بعد دستورات رو ادامه بده.
                  موفق باشی
                  Aristar Group - Always And Forever

                  دیدگاه


                    #10
                    پاسخ : مشکل با اینتراپت !!!

                    آقا این برنامه :
                    [code=asm][$regfile = "m32def.dat"
                    $crystal = 8000000
                    '******************************************** **********************
                    Dim A As Byte
                    Config Lcdpin = Pin , Rs = Portc.0 , E = Portc.1 , Db4 = Portc.2 , _
                    Db5 = Portc.3 , Db6 = Portc.4 , Db7 = Portc.5
                    Config Lcd = 16 * 2
                    '******************************************** ************************
                    Config Int0 = Falling
                    Enable Interrupts
                    Enable Int0
                    '******************************************** *********************
                    A = 0
                    Cls : Cursor Off
                    '******************************************** ***********************
                    On Int0 R:
                    '******************************************** *******************
                    Do
                    Locate 1 , 1 : Lcd ; "INT0=" ; A
                    Waitms 500
                    Loop
                    '******************************************** **************************
                    R:
                    Disable Int0
                    Waitms 200
                    A = A + 1
                    Wait 1
                    Enable Int0
                    Return
                    '******************************************** ******************][/code]

                    این هم عکس تو پروتئوس که در عمل هم همینه ، حتی WAIT 1 ثانیه هم اعمال کردم ولی اعداد با قاعدهی خاصی اضافه نمیشه ! :surprised:


                    آرزوی سرافرازی برای ایران عزیز . . .


                    دیدگاه


                      #11
                      پاسخ : مشکل با اینتراپت !!!

                      با سلام
                      هیچ مشکلی در برنامه ای که آقای مجیدی قرار دادن نیست
                      اگر مقدور هست سخت افزار را قرار دهید چون 100% اشکال در سخت افزار هست
                      تیم کاوش در مسابقات بین المللی ایران اپن 2016.نمایشی.مین یاب.
                      علم را باید در آزمایشگاه یاد گرفت نه در دانشگاه!

                      دیدگاه


                        #12
                        پاسخ : مشکل با اینتراپت !!!

                        کوچیک شما مجدی هستم . . .
                        سخت افزاری دقیقآ مثل عکس تو پروتئوس هستش . . .
                        پایه INT0 رو با یک مقاومت 10K اهم به زمین وصل کردم و با کلید ، که یک سر اون 5 ولته و سر دیگه به پایه INT0 وصله همین . . .
                        والا نمیدونم مشکل از چیه :sad:
                        تایمر رو هم کم و زیاد و هم جابه جا کردم ، نشد که نشد . . .
                        چون همین مشکل رو هم تو کانتر دارم ، که تو پروتئوس درست کار میکنه ولی در عمل نه !!!! :surprised:
                        چون تو پروتئوس همش اید آل در نظر میگیره ( تغذیه هم وصل نکنی کار میکنه تو پروتئوس )
                        اگه پیشنهاد دیگه ای دارین ممنون میشم . . .
                        آرزوی سرافرازی برای ایران عزیز . . .


                        دیدگاه


                          #13
                          پاسخ : مشکل با اینتراپت !!!

                          فرکانس برنامه با میکرو برابر هستش؟؟

                          دیدگاه


                            #14
                            پاسخ : مشکل با اینتراپت !!!

                            نوشته اصلی توسط yousef55
                            فرکانس برنامه با میکرو برابر هستش؟؟
                            دقیقاً
                            فیوزبیت ها رو درست پراگرام کردی؟

                            دیدگاه


                              #15
                              پاسخ : مشکل با اینتراپت !!!

                              آره :
                              8MHZ تو برنامه و تو فیوز بیت ها هم ، 8MHZ داخلی رو فعال کردم !!!
                              آرزوی سرافرازی برای ایران عزیز . . .


                              دیدگاه

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