اطلاعیه

Collapse
No announcement yet.

دکمه در کدویژن

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

    دکمه در کدویژن

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

    #2
    پاسخ : دکمه در کدویژن

    سلام,
    از وقفه میکروکنترلر استفاده کنید....
    کارایی یا دستوراتی رو که میخوای با فشردن دکمه انجام بشه , اونجا بنویسید,

    دیدگاه


      #3
      پاسخ : دکمه در کدویژن

      از وقفه خارجی هم استفاده کردم ولی بازم دستورات داخل وقفه چند بار اجرا میشه!

      دیدگاه


        #4
        پاسخ : دکمه در کدویژن

        کد های برنامه و این که چه کاری میخوای تو وقفه انجام بشه رو بزارین تا برسی شه,

        دیدگاه


          #5
          پاسخ : دکمه در کدویژن

          نوشته اصلی توسط Hamidreza.BRZ نمایش پست ها
          کد های برنامه و این که چه کاری میخوای تو وقفه انجام بشه رو بزارین تا برسی شه,
          پروژه ی avr یک که تو لینک زیر هست رو دانلود کردم و تو کدویژن و پروتئوس میکروکنترلرش رو به Atmega8 تغییر دادم.
          تو خود پروتئوس درست کار می کنه و هیچ مشکلی نداره ولی در عمل وقتی دکمه رو میزنم ، led چشمک میزنه!
          http://dmf313.ir/آموزش-جامع-میکروکنترلر-avr-جلسه3/

          دیدگاه


            #6
            پاسخ : دکمه در کدویژن

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

            مسله دوم که می فرمایید, با فشردن دکمه, ال ای دی ,چشمک میزنه و یا به قول شما دستورات داخل وقفه چند بار اجرا میشه, این مشکل مربوط به Bounce دکمه میباشد,
            یعنی از زمانی که دکمه فشرده شود تا زمانی که رها شود عملیات مربوط به قطع و وصل کردن کنتاکت ها در داخل کلید به کندی انجام می شود ( به خاطر وجود اجزا و قطعات مکانیکی ) و در نهایت یک سری نواسانت ریز به وجود می آید,وبرای سخت افزار به نظر می اید که انگار دکمه را چند بار فشار داده باشیم...

            برای رفع این مشکل :
            1- پیشنهاد می شود از وقفه پایین رونده (Falling edge) , به جای وقفه بالا رونده (Rising edge) استفاده کنید, چرا که این وقفه به صفر شدن حساس است و عواملی مثل نویز و یا همان نوسانات کلید, به صورت لبه بالا رونده است(یک می باشد), در صورتی که اگر وقفه با صفر فعال شود, تاثیر این موارد کمتر خواهد بود که برای این کار کافی است که در فعال سازی وقفه میکرو , وقفه پایین رونده (Falling edge) را انتخاب و مقاومت را Pull Up کنید.


            2 –اگر از همان وقفه بالا رونده (Rising edge) استفاده می کنید, با استفاده از یک مدار RC, یک فیلتر درست کنید تا این نواسانت و نویزها عبور داده نشود و به حداقل برسد.



            3- روش نرم افزاری: استفاده از delay
            همان قسمتی که برای وقفه نوشته شده است, دستورات را بنویسید وسپس یک تاخیر میلی ثانیه با استفاده از کتابخانهdelay قرار دهید ( که در حقیقت مربوط به فشردن کلید می باشد), اینطوری اول دستورات اجرا میشود و تا زمانی که نوسانات فروکش کند, delay وجود دارد و دیگر دستورات اجرا نمیشود...

            دیدگاه

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