اطلاعیه

Collapse
No announcement yet.

استفاده از کلید (شاسی) در AVR

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

    استفاده از کلید (شاسی) در AVR

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

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

    #2
    پاسخ : استفاده از کلید (شاسی) در AVR

    زبان برنامه نویسی ات چیه؟
    انا لله و انا اليه الراجعون

    دیدگاه


      #3
      پاسخ : استفاده از کلید (شاسی) در AVR

      نوشته اصلی توسط شاهین شرق
      زبان برنامه نویسی ات چیه؟
      سلام، زبان C :smile:
      به رویاهات فکر کن!!

      دیدگاه


        #4
        پاسخ : استفاده از کلید (شاسی) در AVR

        سلام.
        در زبان بیسیک با سه دستور :
        debounce ، if و bitwait می تونی کلید رو چک کنی که برای توضیحات بیشتره اونها می تونی بری تو help بسکام و دستورات رو بزنی.
        در زبان c هم باز با دستور if می تونی به راحتی این کار رو انجام بدی.
        چرا ناراحتی پاتریک!
        + امروز ی بچه دیدم سرچهارراه گل میفروخت
        - از دیدنش ناراحت شدی؟
        + نه
        پس چی ناراحتت کرده
        + اینکه دیدن اینجور بچه ها انقدر واسم عادی شده که دیگه ناراحتم نمیکنه
        ------------------------------------------------------------------------------------------------------
        تاحالا فکر کردی بیسواد کیه؟- بی سواد یعنی کسی که نمیتونه ذهنیاتش رو عملی کنه!
        ------------------------------------------------------------------------------------------------------
        محصولات

        دیدگاه


          #5
          پاسخ : استفاده از کلید (شاسی) در AVR

          نوشته اصلی توسط soran111
          سلام.
          در زبان بیسیک با سه دستور :
          debounce ، if و bitwait می تونی کلید رو چک کنی که برای توضیحات بیشتره اونها می تونی بری تو help بسکام و دستورات رو بزنی.
          در زبان c هم باز با دستور if می تونی به راحتی این کار رو انجام بدی.
          چجوری .. مثلا..
          if(pinB=1)
          {
          }
          به رویاهات فکر کن!!

          دیدگاه


            #6
            پاسخ : استفاده از کلید (شاسی) در AVR

            رجیسترها تو زبان C حتما یابد با حروف بزرگ نوشته بشوند
            if (PINB.0==0)
            {
            }

            مقاومت پول پ هم یادت نره!
            The harder I work, the luckier I get

            دیدگاه


              #7
              پاسخ : استفاده از کلید (شاسی) در AVR

              نوشته اصلی توسط نارگ راتوس

              مقاومت پول پ هم یادت نره!
              مرسی ، یه توضیح هم در مورد این مقاومت بده :sad:
              به رویاهات فکر کن!!

              دیدگاه


                #8
                پاسخ : استفاده از کلید (شاسی) در AVR

                کار مقاومت پول پ یا بالا کش اینه که سطح منطقی پین مورد نظر و همیشه یک نگه میداره ، اگر مقاومت پول پ و نذاری هر نویزی خیلی راحت وضعیت پایه را میتونه صفر و یا یک کنه.
                یه مقاومت 10 کیلو بین پین ورودی و Vcc وصل کن شاسی رو هم مستقیم بده به ورودی اون سر شاسی هم به زمین. اگه خواستی بگو شماتیکشو بذارم
                The harder I work, the luckier I get

                دیدگاه


                  #9
                  پاسخ : استفاده از کلید (شاسی) در AVR

                  کافیه پایه مورد نظر رو با یه مقاومت ( مثلا 100 کیلو) به زمین وصل کنی و همون پایه رو به یه سر کلید سر دیگه کلید هم به وی سی سی
                  حالا با این دستور ها میتونی از کلید استفاده کنی
                  اگه ابهام داره بگید تا بیشتر توضیح بدم
                  من همیشه از این استفاده میکنم تا حالا مشکل نویز هم نداشتم اگه زمین میکرو و کلید یکی باشه نویز روی جفتشون تاثیر میزاره که باعث نمیشه میکرو اشتباه کنه ، شایدم من اشتباه میکنم


                  lf(PIND & 0b00100000)
                  {
                  while(PIND & 0b00100000);
                  _delay_ms(50);
                  }
                  نــــ_ـــمـــ_ــــیــــ_ـــدونـــــ_ــم.....

                  دیدگاه


                    #10
                    پاسخ : استفاده از کلید (شاسی) در AVR

                    نوشته اصلی توسط نارگ راتوس
                    کار مقاومت پول پ یا بالا کش اینه که سطح منطقی پین مورد نظر و همیشه یک نگه میداره ، اگر مقاومت پول پ و نذاری هر نویزی خیلی راحت وضعیت پایه را میتونه صفر و یا یک کنه.
                    یه مقاومت 10 کیلو بین پین ورودی و Vcc وصل کن شاسی رو هم مستقیم بده به ورودی اون سر شاسی هم به زمین. اگه خواستی بگو شماتیکشو بذارم
                    تقریبا فهمیدم ولی اگه شماتیک دمه دستته بفرستی ممنون میشم :smile:
                    به رویاهات فکر کن!!

                    دیدگاه


                      #11
                      پاسخ : استفاده از کلید (شاسی) در AVR

                      نوشته اصلی توسط mjs1990s
                      کافیه پایه مورد نظر رو با یه مقاومت ( مثلا 100 کیلو) به زمین وصل کنی و همون پایه رو به یه سر کلید سر دیگه کلید هم به وی سی سی
                      حالا با این دستور ها میتونی از کلید استفاده کنی
                      اگه ابهام داره بگید تا بیشتر توضیح بدم
                      من همیشه از این استفاده میکنم تا حالا مشکل نویز هم نداشتم اگه زمین میکرو و کلید یکی باشه نویز روی جفتشون تاثیر میزاره که باعث نمیشه میکرو اشتباه کنه ، شایدم من اشتباه میکنم


                      lf(PIND & 0b00100000)
                      {
                      while(PIND & 0b00100000);
                      _delay_ms(50);
                      }
                      مرسی دوست عزیز، اگه امکان داره یکم از لحاظ نرم افزاری و برنامه ای که قرار دادین بیشتر توضیح بدین، مرسی :smile:
                      به رویاهات فکر کن!!

                      دیدگاه


                        #12
                        پاسخ : استفاده از کلید (شاسی) در AVR



                        حواست هم باشه حتما اون پین و ورودی تعریف کرده باشی
                        The harder I work, the luckier I get

                        دیدگاه


                          #13
                          پاسخ : استفاده از کلید (شاسی) در AVR

                          با سلام
                          منظور از pull up و pull down شکلای زیرن که واسه از بین بردن اثر نویز مفیدن.اینکه از کدوم استفاده کنی فرقی نمی کنه فقط تو برنامه باید حواست باشه کدومو استفاده کردی
                          "لحظه پيروزي از آن جهت برايم شيرين است که ملت کشورم را در آرامش و شادي ببينم"
                          نادر شاه

                          دیدگاه


                            #14
                            پاسخ : استفاده از کلید (شاسی) در AVR

                            مرسی از دوستان، متوجه شدم
                            به رویاهات فکر کن!!

                            دیدگاه


                              #15
                              پاسخ : استفاده از کلید (شاسی) در AVR

                              سلام
                              میخوام کامل و ساده توضیح بدم:
                              اگر بخوایم تغییر وضعیت یک کلید رو تشخیص بدیم باید یک شدن یا صفر شدن یک پایه رو چک کنیم
                              از روی مدار هایی که آقای احمد سمیعی قرار دادن توضیح میدم
                              در مدار پایینی ابتدا بیت c2 صفر است(با یک مقاومت به زمین وصل شده) و با فشرده شدن کلید یک میشود
                              حالا ما باید یک شدن کلید را با یک دستور if چک کنیم
                              اگر بگیم if(PINC == 0b00000100) یک مشکل وجود دارد چون اگر روی سایر بیت ها تغییری ایجاد شود دستور if اجرا نمیشود همینطور که میدونید PINC رجیستر ورودی پورت C میباشد پس هر تغییری که روی پورت C اعمال شود در این رجیستر ذخیره میشود
                              مثلا اگر چهار بیت اول را به VCC و چهار بیت آخر را به زمین وصل کنیم مقدار رجیستر PINC برابر 0b00001111 میشود.
                              برای اینکه تغییر سایر بیت ها به جز بیت C2 برای ما بی اهمیت شود باید به صورت زیر عمل کنیم
                              lf(PINC & 0b00000100)

                              با این کار اگر مقدار سایر بیت ها تغییر کند وقتی با صفر and میشوند حاصلشان صفر میشود و فقط وقتی که بیت C2 یک میشود حاصل and یک میشود
                              بهتره اگر نمیخواید بعد از زدن کلید مرتب دستورات داخل آن اجرا بشه دستور while(PINC & 0b00000100) را داخل دستور if قرار دهید
                              با این کار تا زمانی که دست شما روی کلید قرار دارد برنامه در دستور while متوقف میشود و زمانی که دست خود را از روی کلید بر میدارید دستورات داخل if اجرا میشود
                              بعد از دستو while خم باید یک تاخیر زمانی قرار دهیم چون سرعت میکرو بالا است وزمانی که ما کلید را فشار میدهیم ممکن است چندین بار کلید قطع و وصل شود که یک تاخیر 50 میلی ثانیه ای برای برطرف کردن این مشکل کافی است که در کامپایلر winavr (avrlib) میتوان از دستور زیر استفاده کرد.
                              _delay_ms(50);

                              برنامه کاملش هم به شکل زیره که باید دستورامون رو بعد از تاخیر زمانی بنویسیم:
                              [ltr]lf(PINC & 0b00000100/)
                              {
                              while(PINC & 0b00000100);
                              _delay_ms(50);
                              }

                              حالا اگر بخواهیم از مدار بالا استفاده کنیم باید صفر شدن یک پین رو چک کنیم
                              برای این کار کافی است دستورات داخل if و while را نات کنیم
                              lf(!(PINC & 0b00000100))

                              {
                              while(!(PINC & 0b00000100));
                              _delay_ms(50);
                              }[ltr]
                              بازم اگه جاییش مبهم هست در خدمتم
                              امیدوارم جاییش رو اشتباه نکرده باشم
                              نــــ_ـــمـــ_ــــیــــ_ـــدونـــــ_ــم.....

                              دیدگاه

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