اطلاعیه

Collapse
No announcement yet.

debounce

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

    debounce

    سلام دوستان خوبم

    سوالی که دارم در مورد debouce اینه که اصولا کسی تونسته یا میآ‌تونه با اسکوپ این پدیده رو ببینه یا نشون بده
    مثلا اطلاعات زیر رو میآ‌خوام:
    ۱-دوست دارم ببینم که این پدیده چقدر طول میآ‌کشه که انجام بشه؟
    ۲-شکل موجش چه شکلیه؟
    ۳-اصلا در چه کسری از زمان انجام میآ‌شه(یعنی در چه بازهآ‌های زمانی نمیآ‌شه اون رو دید؟)
    ۴-چه راهآ‌هایی برای رفعش هست؟(منظورم خود الگوریتم برنامه هست نه تابع یا ... مثلا با استفاده از وقفه یا تاخیر زمانی(مناسبآ‌ترین تاخیر رو میآ‌خوام بدونم) و یا هر الگوریتم دیگهآ‌ای)

    راستی یادم رفت بگم که اگه دوستان راهی ارائه میآ‌دن لطفا فقط زبان c!!
    البته همونآ‌طور که گفتم نیازی به کد ندارم و صرفا الگوریتم مد نظرمه اما خوب اگه کسی خواست بیشتر لطف کنه و مایه بذاره فقط c!
    ممنون

    #2
    پاسخ : debounce

    کد:
    #include <mega16.h>
    #define sr PINB.1
    unsigned char dad,a=1;
    void up(void){
    if(sr & a){
    PORTC.0=!PORTC.0;
    a=0;
    }
    if(a | sr==0){
    a=1;
    }
    }
    void main(void){
    
    DDRC=(1<<DDC0);
    
    while(1){
    up();
    }//loop 
    }// main


    .The best question deserves a better answer
    =-=-=-=-=-=-=-=-=-==-=-=-=-=-=-=-=-=
    «پناه»می برم «به خدا»
    از عـیبی که ، «امروز» در خود می بینم، و «دیروز» «دیگران را» به خاطر، «هـمان عیـب» ملامت کرده ام.
    محتاط باشیم، در «سرزنش» و «قضاوت کردن دیگران». وقتی نه از «دیروز او» خبر داریم و نه از "فردای خودمان" .

    دیدگاه


      #3
      پاسخ : debounce

      نوشته اصلی توسط سیدآ‌علی
      سوالی که دارم در مورد debouce اینه که اصولا کسی تونسته یا میآ‌تونه با اسکوپ این پدیده رو ببینه یا نشون بده
      مثلا اطلاعات زیر رو میآ‌خوام:
      1-دوست دارم ببینم که این پدیده چقدر طول میآ‌کشه که انجام بشه؟
      2-شکل موجش چه شکلیه؟
      3-اصلا در چه کسری از زمان انجام میآ‌شه(یعنی در چه بازهآ‌های زمانی نمیآ‌شه اون رو دید؟)
      4-چه راهآ‌هایی برای رفعش هست؟(منظورم خود الگوریتم برنامه هست نه تابع یا ... مثلا با استفاده از وقفه یا تاخیر زمانی(مناسبآ‌ترین تاخیر رو میآ‌خوام بدونم) و یا هر الگوریتم دیگهآ‌ای)
      سلام :smile:
      - راستش من نمی دونم بشه با اسکوپ دید.
      1- مقدار زمانی دقیق این پدیده مشخص نیست و بستگی به عوامل خارجی و خود سوییچ داره که متفاوته.
      2- به صورت نوسانی در یه بازه ی زمانی مشخصه که مدام 0 و 1 می شه.
      3- منظ.رت رو متوجه نشدم ولی در سطح میلی ثانیه هستش و بیشتر از اون نمی شه اونو دید.
      4- دو نوع راه برای deboucing وجود داره: سخت افزاری که با استفاده از گیت اشمیت تریگر (!!مدارت زیادی هست!!) و یا شماره های مختلف IC (که من نمی دونم :redface: ولی مدار گیت اشمیت تریگر رو بخوای بلدم و برات می ذارم) و روش دیگه هم به صورت نرم افزاریه که فقط با یه ریتم منظم وقفه های 20 تا 40 میلی ثانیه
      رو توی جای چک کردن کلید ها توی برنامه می ذاری.
      هر سوزني که براي غير خدا زدم به دستم فرو رفت (شيخ رجبعلي خياط)

      دیدگاه


        #4
        پاسخ : debounce

        به نام خدا
        سلام
        ممنون از پاسخ های دوستان
        چند نکته رو اشاره کنم
        سوالی که دارم در مورد debouce اینه که اصولا کسی تونسته یا میآ‌تونه با اسکوپ این پدیده رو ببینه یا نشون بده
        آره، میشه روی اسکوپ دید، اما خب بستگی داره!
        - به اسکوپت
        - به تجربه ت
        - به نوع کلیدت
        و ...
        مثلا اگه از اسکوپ دیجتال استفاده کنی
        خیلی راحت تر میتونی این bounce رو شکار کنی!

        1-دوست دارم ببینم که این پدیده چقدر طول میآ‌کشه که انجام بشه؟
        به محض اینکه کلید رو فشار میدی!
        در جا!
        امون نمیده!

        2-شکل موجش چه شکلیه؟
        چیزی شبیه به نویز!
        در هم برهم!
        یه سرچی بزن توی اینترنت، شکلاشو میاره برات

        3-اصلا در چه کسری از زمان انجام میآ‌شه(یعنی در چه بازهآ‌های زمانی نمیآ‌شه اون رو دید؟)
        همونطور که دوستان گفتن در حد میلی ثانیه ست!
        (البته زمانی که با دست یک کلید رو فشار میدی)
        این پدیده امکان داره به جهت بی کیفیتی برخی قطعات
        در فرکانس های بالا هم رویت بشه!

        4-چه راهآ‌هایی برای رفعش هست؟(منظورم خود الگوریتم برنامه هست نه تابع یا ... مثلا با استفاده از وقفه یا تاخیر زمانی(مناسبآ‌ترین تاخیر رو میآ‌خوام بدونم) و یا هر الگوریتم دیگهآ‌ای)
        همونطور که دوستان اشاره کردن، دو راه داریم + یک راه!
        اول اون یک راه رو بگم!
        - اسفاده از سوئیچ های دیبانس!
        در بازار یه سری سوئیچ موجوده که از نظر سخت افزاری
        بانسشون گرفته شده و شما با خیال راحت میتونی ازش استفاده کنی!
        اما اون دو راه چیه؟
        همونطور که دوستان گفتن:
        - سخت افزاری؛ یه عالمه مدار توی نت هست! ساده هم هست!
        - نرم افزاری؛ که در این مورد هم دوستان هم برنامه گذاشتن هم روش رو بیان کردن
        بنده هم به صورت الگوریتمی بیان میکنم:
        فرض کن میخوای به کمک یک میکرو و با استفاده از وقفه خارجی یک سوئیچ رو بخونی
        و فرض کن این پایه مثلا pinx.0 هستش
        (این فرض ها برای ساده سازیه، وگرنه هر جور دیگه اگه بخوای بخونی،
        روش دیبانسینگ همینیه که در اینجا مطرح شده)
        فرض کن کلید فشرده شد
        و فرض کن وقفه با لبه ی بالا رونده حساس بود
        و میکرو زیر برنامه ی مربوط به وقفه رو اجرا کرد
        در این زیر برنامه باید کار زیر صورت بگیره:
        - ابتدا وقفه غیر فعال بشه
        - سپس pinx.0 خونده میشه. طبق فرضمون که وقفه با لبه ی بالارونده فعال شد، الان مقدار pinx.0 باید 1 باشه
        - یک تاخیر به میزان 20 الی 50 میلی ثانیه ایجاد میکنی
        - دو باره pinx.0 خونده میشه.
        - اگه در هر دوباری که خونده شد، مقدارش همون 1 بود، یعنی کلید فشرده شده
        - حالا بقیه ی برنامه ی مربوط به وقفه رو مینویسی (هر چی دلت میواد)
        - وقفه رو فعال میکنی
        - خروج از زیر برنامه ی وقفه ...

        :read:
        1: اللهم صل علي محمد و آل محمد و عجل فرجهم و ...
        2: دانش بهتره يا ثروت؟ بدون شعور هيچکدوم!
        3: دلا معاش چنان کن که گر بلغزد پاي *** فرشته‌ات به دو دست دعا نگه دارد (حافظ)

        دیدگاه


          #5
          پاسخ : debounce

          با سلام

          دو روش مهم معمولا استفاده میشود اول سخت افزاری







          دوم نرم افزاری که این کار نیز به دو روش معمولا اجرا میشود
          الف: بعد از سنس تغییر وضعیت مدتی تاخیر و سپس سنس دوباره و تنها در صورت برابر بودن هر دو , تغییر وضعیت قبول و عملیات مربوطه اجرا میگردد ( این روش علرغم استفاده همگانی دارای اشکالاتی میباشد اولا سرعت را پایین می آورد ودوم قابلیت اعتماد قابل قبولی ندارد )
          ب: با اولین سنس تغییر وضعیت برنامه به داخل حلقه منتقل و وضعیت پین (من معمولا 20 بار باتاخیر 5 میلی ثانیه اینکار را میکنم ) تست میشود و در پایان حلقه جنانچه
          وضعیت قابل قبول بیشتر از نصف باشد تغییر وضعیت قبول و عملیات مربوطه اجرا میگردد

          دیدگاه


            #6
            پاسخ : debounce

            در لینک زیر شکل بانس روی اسکوپ نشون داده (البته نمیدونم زمانش درست هست یا نه)
            http://www.labbookpages.co.uk/electronics/debounce.html
            شما علاوه بر مدارات دیبانس میتونید از تراشه های مخصوص اینکار هم استفاده کنید مثلا max6816

            دیدگاه

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