اطلاعیه

Collapse
No announcement yet.

مشکل با وقفه ها

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

    مشکل با وقفه ها

    سلام

    من تازه توی این انجمن عضو شدم اومیدوارم بتونم که با اطلاعات کمی که دارم به بقیه کمک کنم و از اطلاعات زیادی که بچه ها این انجمن دارم اشتفاده کنم.
    سوال:
    من دارم یک ربات می سازم که توی اون باید مسیر طی شده محاسبه بشه . من برای این کار از یک سنسور ir استفاده کردم و فرستنده رو در یک طرف چرخ دنده و گیرنده رو در طرف دیگیه چرخ دنده گزاشتم و خروجی گیرنده رو به int2 وصل میکنم و در زیر برنامه میکرو یک شمارنده رو افزایش میدم . اما مشکل من اینه که این شمارنده در ست کار نمیکنه. مثلا وقتی 10 تا چرخ دنده از جلوی فرستنده گیرنده رد میشه شمارنده عدد 15 رو نشون میده.
    در ضمن از mega32 استغاده می کنم . برد ir هم درست کار می کنه و مشکلی نداره.
    از جوابهای دوستان پیشاپیش ممنونم .

    #2
    پاسخ : مشکل با وقفه ها

    سلام می بخشید این همه سریع یک پست جدید میزارم ولی اگه دوستان لطف کنن سریع تر پاسخ بدن ممنون میشم
    موفق باشید :bye

    دیدگاه


      #3
      پاسخ : مشکل با وقفه ها

      سلام:
      در ابتدابه عنوان یکی از اعضا ورود شما رو تبریک میگم :bye
      بفرمائید که به چه زبانی برنامه رو نوشتید؟
      وقفه رو به چه صورتی فعال کردید؟
      تا جایی که بنده اطلاع دارم شما باید وقفه رو به یکی از صورت های پایین فعال کنید
      falling edge : وقفه با لبه پایین رونده(حساس به صفر)
      rising edge: وقفه با لبه بالا رونده(حساس به یک)
      اگر نشد سورس برنامه رو بزارید تا دوستان کمک کنن

      دیدگاه


        #4
        پاسخ : مشکل با وقفه ها

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

        $regfile "m16def.dat"
        $crystal = 8000000
        Enable Interrupts
        Config Int0 = Falling
        enable int0
        On Int0 Lable
        Dim Row As Byte
        do

        loop
        end
        lable:
        incr row
        return

        دیدگاه


          #5
          پاسخ : مشکل با وقفه ها

          بجز وقفه شما میتونید از کانتر ها هم استفاده کنید.ببینید توی این حال باز هم مشکل دارید؟
          اگه مشکل هنوز بودش فکر کنم یه مقدار روی قسمت گیرنده IR کار کنید بهتره.مثلاً نور محیط رو نذارید بیاد روی گیرنده.

          دیدگاه


            #6
            پاسخ : مشکل با وقفه ها

            یا یه کار دیگه هم میتونید بکنید: با هر بار ورود به روتین وقفه وضعیت یه LED رو بر عکس کنید و در حالیکه چرخ دنده تون رو میچرخونید به LED نگاه کنید. اون جاهایی که انتظار ندارید وقفه رخ بده (وضعیت LED عکس بشه)رو بررسی کنید.

            دیدگاه


              #7
              پاسخ : مشکل با وقفه ها

              سلام
              سنسور IR شما زوج نوریه یا یه فرستنده گیرنده معمولی
              اگه فرستنده گیرنده معمولیه من دیدم بچه های روباتیک روی دو تا led ها یه وارنیش میکشن که جلون نیز و نورهای مزاحم رو بگیره خوب کار میکرد
              بد نیست خروجی گیرنده رو با اسیلوسکوپ ببینید
              اگه اعوجاج داره با یه اشمیت تریگر رفعش کنید :nerd:
              به وبلاگم سر بزنید

              دیدگاه


                #8
                پاسخ : مشکل با وقفه ها

                سلام
                اول از همه دوستان تشکر می کنم
                من از کود ویبژن استفاده کردم و وقفرو در هر دو مود پاین رونده و بالا رونده تست کردم ولی بازم درست نشد.
                درباره نور هم باید بگم که ربات روکش داره و نور محیط واردش نمیشه.
                سنسور ها هم فرستنده گیرندست.
                با شمارنده ها و اشمیت تریگر تست میکنم نتیجرو میگم . بازم از همه ممنون.

                دیدگاه


                  #9
                  پاسخ : مشکل با وقفه ها

                  نوشته اصلی توسط r.gh45
                  سلام
                  اول از همه دوستان تشکر می کنم
                  من از کود ویبژن استفاده کردم و وقفرو در هر دو مود پاین رونده و بالا رونده تست کردم ولی بازم درست نشد.
                  درباره نور هم باید بگم که ربات روکش داره و نور محیط واردش نمیشه.
                  سنسور ها هم فرستنده گیرندست.
                  با شمارنده ها و اشمیت تریگر تست میکنم نتیجرو میگم . بازم از همه ممنون.
                  با LED چی؟
                  تست کردین؟
                  واسه کالیبره کردن مدار خوبه ها!!
                  موفق باشید-میثاق

                  دیدگاه


                    #10
                    پاسخ : مشکل با وقفه ها

                    سلام
                    من همه راهارو بقیر ازاشمیت تریگر امتحان کردم led رو هم امتحان کردم نتیجه نگرفتم . میشه یکمی در مورد اشمیت تریگر توضیح بدید .
                    ممنون

                    دیدگاه


                      #11
                      پاسخ : مشکل با وقفه ها

                      سلام
                      همونطور که دوست عزیز آقای میثاق گفتند از کانتر ها استفاده کنید. بهتره فکر میکنم کار با کانتر راحت تر هست.
                      مشکل هم کمتر به وجود میاد. و سنسورها را با ترانزیستور به کانتر وصل کنید.
                      موفق باشید

                      دیدگاه


                        #12
                        پاسخ : مشکل با وقفه ها

                        سلام ..................

                        ببینید در ابتدا شما فرمودید که وقفه ی میکرو رو فعال کردید (توی قسمت Code Wizard ..) اما مشکلی که با اون روبرو شدید اینه که به ازای چرخش های چرخ دنده زیر برنامه ای که در روال وقفه نوشتید درست اجرا نمیشه (احتمال نود درصد باید شمارش های شما بیش از اون چیزی باشه که در واقعیت اتفاق میفته .. ) حالا علتش چیه؟ ببینید اینکه شما فرمودید چرخ دنده (یا حالا چرخ .. فرقی نمیکنه .. ) 10 دور میچرخه اما روال زیر برنامه 15 بار اجرا میشه؛ علت داره .. در حقیقت وقفه ی شما در زمانهای نامربوطی فعال میشه .. معمولا نکته ای که توی استفاده از وقفه ها باید خیلی به اون توجه بشه اینه که از صحت فعال سازی وقفه مطمئن باشیم .. الان شما فرض کنید با لبه ی پایین رونده وقفتون رو فعال کردید .. خب یعنی اگه یه Transition از 1 به 0 داشته باشید، وقفتون فعال میشه .. اما در زمانی که لبه نیومده چی؟ خب اینجا معمولا از مقاومت Pull Up استفاده میکنن .. یعنی زمانی که شما لبه ی پایین رونده ندارید، پایه ی میکرو در وضعیت بالا قرار میگیره و این بروز هر گونه خطایی که ممکنه در اثر القای نویز در مدار به وجود باره رو از بین میبره .. یه احتمال دیگه ای وجود داره اینه که زیر برنامه ی شما خیلی سریع اجرا میشه و گاها یک Transition رو معادل اجرای پیوسته ی دو اتفاق میگیره .. خب برای این مشکل هم میتونید از یه تاخیر نرم افزاری استفاده کنید .. در حقیقت اشاره ی جناب میثاق که فرمودن از LED استفاده کنید هم مصداق فیزیکی همین اتفاقه ..

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

                        در مورد اشمیت تریگر هم که جناب alitaroosheh فرمودن باید بگم که دسته .. میشه از اون هم استفاده کرد .. برای رفع اعوجاج های غیر خطی (یا بعضا خطی ..) .. اما برای این LED های مادون قرمز من تا به حال از اشمیت تریگر استفاده نکردم .. یعنی نیازی نبوده .. مشکل اعوجاج هم با نرمالیز کردن نرم افزاری حل کردم .. مثلا یه Threshold تعریف کردم و گفتم که اگه از این مقدار کمتر شد، مثلا مقدار a رو برگردون و اگه بیشتر شد مقدار b .. خیلی هم خوب جواب گرفتم .. البته حالا که صحبت از اشمیت تریگر د اجازه بدید یه راه دیگه رو هم بگم .. ببینید خروجی اشمیت تریگر درست مثل یه سنسور با خروجی دیجیتال عمل میکنه (اگه با اسکوپ کل موج خروجی رو ببینید متوجه منظورم میشید ..) .. در این حالت شما میتونید با سنسور مادون قرمزی که خروجی آنالوگ داشت و برای راه اندازی اون باید از کانال های ADC استفاده میکردید؛ به صورت یه سنسور دیجیتال (درست مثل یه سوئیچ دو حالته ..) برخورد کنید و از به کار گیری واحد ADC منصرف بشید و با استفاده از دستور PIN و پیکره بندی مناسب پورت ها، عبور چرخ ها رو از جلوی سنسور بررسی کنید ..

                        در مورد کانتر هم که جناب میثاق اشاره کردن، باید بگم که درسته .. میتونه روش خوبی باشه .. در عمل برای اندازه گیری های اتفاقات Sequential میشه از تایمر/کانتر استفاده کرد .. راه مطمئنیه به شرط اینکه در نوشتن برنامش دقت لازم رو بکنیم .. درست مثل حالتی که در فرکانس متر به کار میره .. یه مد تایمر برای محاسبه ی زمانی و یه مد دیگه ی اون هم برای شمارش ..

                        راستی اگه از واحد ADC استفاده میکنید بین پایه ی 30 و 31 اون از یه خازن الکترولیت 22 تا 100 میکرو استفاده کنید .. روی تداخل اموجاج بیرونی با سیگنال های کانالیتون خیلی تاثیر میذاره .. موفق باید ..
                        دوستان! مدتی کمتر به سایت میام ..

                        دیدگاه


                          #13
                          پاسخ : مشکل با وقفه ها

                          نوشته اصلی توسط r.gh45
                          سلام
                          من همه راهارو بقیر ازاشمیت تریگر امتحان کردم led رو هم امتحان کردم نتیجه نگرفتم . میشه یکمی در مورد اشمیت تریگر توضیح بدید .
                          ممنون
                          یعنی وقتی int رخ میداد چرخ دنده دقیقاً همون جایی بود که باید باشه و در بین دنده اول تا دنده دوم هیچ تغییری در وضعیت LED داده نمیشد؟

                          دیدگاه


                            #14
                            پاسخ : مشکل با وقفه ها

                            سلام

                            [/quote]
                            یعنی وقتی int رخ میداد چرخ دنده دقیقاً همون جایی بود که باید باشه و در بین دنده اول تا دنده دوم هیچ تغییری در وضعیت LED داده نمیشد؟

                            [/quote]
                            نه هیچ تغییری رخ نمیده .
                            ولی من مشکلرو با گزاشتن یک مقاومت پول پ و همچنین گزاشتن یک تاخیر در روال وقفه حل کردم.
                            از همه دوستان منون (همچنین از آقای میثاق که پی گیر بودن)


                            دیدگاه


                              #15
                              پاسخ : مشکل با وقفه ها

                              سلام من یه برنامه ساختم که توش ساعت باتایمر 2 وکریستال داخلی داره این برنامه یکبار روال کلی رومیره اعم از ساعت و دما و... ولی در بار دوم میکرو ریست میشه لطفا" کمکم کنین تا بدونم مشکل از کجاست؟؟؟ای سی 32
                              bamesefid.ir

                              دیدگاه

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