اطلاعیه

Collapse
No announcement yet.

چک کردن دو پایه و مقایسه با هم بطور همزمان

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

    چک کردن دو پایه و مقایسه با هم بطور همزمان

    با سلام خدمت اساتید محترم .من میخوام دو پایه رو بصورت مداوم چک کنم مثلا با کانتر یا مثلا روش افزایش و کاهش مقدار متغیرر(incr,decr) یعنی مثلا اگر پایه اول 10 بار صفر میشه این مقدار توی یک متغییر ریخته بشه و پایه دیگر هم همینطور چک بشه و اگر تعداد صفر شدن این دو پایه برابر شد حالا یک کاری انجام بده. فقط میخوام این کار به صورت مداوم انجام بشه .ممنون میشم در برنامه نویسیش با بسکام کمکم کنید .
    اگر دین نداری حداقل آزاده باش <امام حسین (ع)>

    #2
    پاسخ : چک کردن دو پایه و مقایسه با هم بطور همزمان

    مسلما بهترین کار همون کانتره :

    $regfile = "m8def.dat"
    $crystal = 8000000

    Config Timer0 = Counter , Edge = Rising ' 256
    Config Timer1 = Counter , Edge = Rising '65536

    Do

    if timer1 = timer0 then

    برنامه ی شما

    end if

    loop

    فقط توجه کنید که تایمر 0 تا 256 بیشتر نمیشمره ... اگه بیشتر لازم داریم با برنامه باید ok کنین ... :agree:
    زاویه ی نگاهتو عوض کن . . .

    دیدگاه


      #3
      پاسخ : چک کردن دو پایه و مقایسه با هم بطور همزمان

      نوشته اصلی توسط shadkanlu
      مسلما بهترین کار همون کانتره :

      $regfile = "m8def.dat"
      $crystal = 8000000

      Config Timer0 = Counter , Edge = Rising ' 256
      Config Timer1 = Counter , Edge = Rising '65536

      Do

      if timer1 = timer0 then

      برنامه ی شما

      end if

      loop

      فقط توجه کنید که تایمر 0 تا 256 بیشتر نمیشمره ... اگه بیشتر لازم داریم با برنامه باید ok کنین ... :agree:
      با تشکر از شما .راستش شنیدم تایمر ممکنه هنگ کنه منم کارم طوری هست باید 24 ساعته مدار فعال باشه. مورد استفاده من هم برای هوشمند سازی پارکینگ
      هستش که در این پست کاملا توضیح دادم : http://www.eca.ir/forum2/index.php?topic=65882.0 که ممنون میشم اونجا هم اگر لازم میدونید نظر بدید

      فقط اگر ممکنه دستور اینکه چطوری صفر کردن دو پایه رو به این دو تایمر ارتباط بدم رو هم بگید . یک سوال دیگه اینکه این rising که نوشتید معنیش اینه اگر پایه مورد نظرم یک شد کانتر میشموره؟ یعنی معنی حساس به لبه بالا رونده این میشه؟ ممنون
      اگر دین نداری حداقل آزاده باش <امام حسین (ع)>

      دیدگاه


        #4
        پاسخ : چک کردن دو پایه و مقایسه با هم بطور همزمان

        نوشته اصلی توسط parham144
        با تشکر از شما .راستش شنیدم تایمر ممکنه هنگ کنه منم کارم طوری هست باید 24 ساعته مدار فعال باشه. مورد استفاده من هم برای هوشمند سازی پارکینگ
        میتونی از واچداگ استفاده کنی.

        نوشته اصلی توسط parham144
        یک سوال دیگه اینکه این rising که نوشتید معنیش اینه اگر پایه مورد نظرم یک شد کانتر میشموره؟ یعنی معنی حساس به لبه بالا رونده این میشه؟ ممنون
        بله.
        ?Why not

        دیدگاه


          #5
          پاسخ : چک کردن دو پایه و مقایسه با هم بطور همزمان

          ممنون میشه در مورد واچداگ بیشتر توضیح بدید ؟چه فرقی داره؟ اینم جزء دستورات کانتر هستش ؟
          اگر دین نداری حداقل آزاده باش <امام حسین (ع)>

          دیدگاه


            #6
            پاسخ : چک کردن دو پایه و مقایسه با هم بطور همزمان

            نوشته اصلی توسط parham144
            با تشکر از شما .راستش شنیدم تایمر ممکنه هنگ کنه منم کارم طوری هست باید 24 ساعته مدار فعال باشه. مورد استفاده من هم برای هوشمند سازی پارکینگ
            هستش که در این پست کاملا توضیح دادم : http://www.eca.ir/forum2/index.php?topic=65882.0 که ممنون میشم اونجا هم اگر لازم میدونید نظر بدید

            فقط اگر ممکنه دستور اینکه چطوری صفر کردن دو پایه رو به این دو تایمر ارتباط بدم رو هم بگید . یک سوال دیگه اینکه این rising که نوشتید معنیش اینه اگر پایه مورد نظرم یک شد کانتر میشموره؟ یعنی معنی حساس به لبه بالا رونده این میشه؟ ممنون
            دقیقا همونطور که مهندس گفتن watch dog گزینه ی خوبیه ولی دیتات هم ریست میشه و برای نگه داری از دیتا هات باید در eeprom ذخیره کنی ...
            watchdog در واقع یک نوع ریست داخلی هستش و مربوط به تایمر کانترها هم نیست . کلیه ...

            در مورد ارتباطم که فقط نیاز پایه های t0 و t1 میکرو پالسو اعمال کنی و اگر میخوای به low حساس باشه باید به جای rising از falling استفاده کنی ...
            زاویه ی نگاهتو عوض کن . . .

            دیدگاه


              #7
              پاسخ : چک کردن دو پایه و مقایسه با هم بطور همزمان

              نوشته اصلی توسط shadkanlu
              دقیقا همونطور که مهندس گفتن watch dog گزینه ی خوبیه ولی دیتات هم ریست میشه و برای نگه داری از دیتا هات باید در eeprom ذخیره کنی ...
              watchdog در واقع یک نوع ریست داخلی هستش و مربوط به تایمر کانترها هم نیست . کلیه ...

              در مورد ارتباطم که فقط نیاز پایه های t0 و t1 میکرو پالسو اعمال کنی و اگر میخوای به low حساس باشه باید به جای rising از falling استفاده کنی ...
              ممنون .فقط کجای برنامه از watch dog استفاده کنم ؟ در صورت استفاده باید بین دستورات تایمر کانتر باشه یا اصلا اونو فراموش کنم ؟ چه نیازی به ریست کردن هست؟ هنگ کردن رو کاهش میده ؟ میشه یک مثال ساده بزنید همراه با همین ریختن توی eeprom .خیلی ممنون

              در مورد تایمر هم پس پایه هایی که میخوام چک کنم رو باید همون پایه های t0 و t1 میکرو باشن دیگه؟ یعنی نمیشه مثلا واسه چک کردن یک پایه دیگه کانتر رو فعال کرد؟
              و مثلا اگر بخوایم مقدار کانتر رو که مثلا 10 بار صفر شده داخل یک متغییر بریزیم دستورش این میشه : timer0= a1 ؟ اینجوری میتونیم مقدار 2 متغیر مثلا a1 و a2 که هر کدوم نگه دارنده مقدار یک تایمر هستند رو با هم مقایسه کرد ؟ :read: ممنون
              اگر دین نداری حداقل آزاده باش <امام حسین (ع)>

              دیدگاه


                #8
                پاسخ : چک کردن دو پایه و مقایسه با هم بطور همزمان

                نوشته اصلی توسط parham144
                ممنون .فقط کجای برنامه از watch dog استفاده کنم ؟ در صورت استفاده باید بین دستورات تایمر کانتر باشه یا اصلا اونو فراموش کنم ؟ چه نیازی به ریست کردن هست؟ هنگ کردن رو کاهش میده ؟ میشه یک مثال ساده بزنید همراه با همین ریختن توی eeprom .خیلی ممنون
                هر جایی.
                فقط فرض کن که میخوای هر 10 ثانیه 10 ثانیه اینکارو بکنی.
                دستور writeeeprom A (متغیر A) رو که توش میتونه اطلاعات کانترت باشه رو قبله watchdog بذاری تا قبل از ریست شدن تو eepromت باشه. بعدشم که تو همون شروع برنامه بنویس readeeprom A (متغیر A).

                نوشته اصلی توسط parham144
                در مورد تایمر هم پس پایه هایی که میخوام چک کنم رو باید همون پایه های t0 و t1 میکرو باشن دیگه؟ یعنی نمیشه مثلا واسه چک کردن یک پایه دیگه کانتر رو فعال کرد؟
                نه

                نوشته اصلی توسط parham144
                و مثلا اگر بخوایم مقدار کانتر رو که مثلا 10 بار صفر شده داخل یک متغییر بریزیم دستورش این میشه : timer0= a1 ؟ اینجوری میتونیم مقدار 2 متغیر مثلا a1 و a2 که هر کدوم نگه دارنده مقدار یک تایمر هستند رو با هم مقایسه کرد ؟
                چرا که نه.
                ?Why not

                دیدگاه


                  #9
                  پاسخ : چک کردن دو پایه و مقایسه با هم بطور همزمان

                  نوشته اصلی توسط QUARK
                  هر جایی.
                  فقط فرض کن که میخوای هر 10 ثانیه 10 ثانیه اینکارو بکنی.
                  دستور writeeeprom A (متغیر A) رو که توش میتونه اطلاعات کانترت باشه رو قبله watchdog بذاری تا قبل از ریست شدن تو eepromت باشه. بعدشم که تو همون شروع برنامه بنویس readeeprom A (متغیر A).

                  نه

                  چرا که نه.
                  خیلی ممنون از راهنمایهاتون .فقط یه سوال من هنوز برای درست جا نیافتاده چرا ما باید هر 10 ثانیه یک بار برنامه رو ریست کنیم و اصلا چطوری میشه تعیین کرد هر چند ثانیه این دستور اجرا بشه؟چون همه دستورات فکر کنم توی یک سیکل لنجام بشه .ممنون
                  اگر دین نداری حداقل آزاده باش <امام حسین (ع)>

                  دیدگاه


                    #10
                    پاسخ : چک کردن دو پایه و مقایسه با هم بطور همزمان

                    من گفتم هر وقتی که دلت خواست هر چی رنج متعادل تری داشته باشی به نفعه خودته.
                    این ده ثاینه رو میتونی اینجوری واسه خودت تعریف کنی که اگه مثلاً کانتر 10 تا یا 20 تا یا 100 تا شمورد یه بار تایمر واچ داگ رو فعال کن. تایمر واچ داگ هم تا 2048 و در بعضی از میکرو ها 4096 و 8192 میلی ثانیه بیشتر نمیشمورن . یعنی هرگاه شما استارت واچ داگ رو زدید هر زمانی رو که براش انتخاب کرده باشید به همون اندازه میشموره و بعد ریست میشه.
                    ?Why not

                    دیدگاه


                      #11
                      پاسخ : چک کردن دو پایه و مقایسه با هم بطور همزمان

                      نوشته اصلی توسط QUARK
                      من گفتم هر وقتی که دلت خواست هر چی رنج متعادل تری داشته باشی به نفعه خودته.
                      این ده ثاینه رو میتونی اینجوری واسه خودت تعریف کنی که اگه مثلاً کانتر 10 تا یا 20 تا یا 100 تا شمورد یه بار تایمر واچ داگ رو فعال کن. تایمر واچ داگ هم تا 2048 و در بعضی از میکرو ها 4096 و 8192 میلی ثانیه بیشتر نمیشمورن . یعنی هرگاه شما استارت واچ داگ رو زدید هر زمانی رو که براش انتخاب کرده باشید به همون اندازه میشموره و بعد ریست میشه.
                      خیلی ممنون فکر کنم منظورتون رو فهمیدم یعنی میگید بهتره برای اجرای روان و هنگ نکردن مثلا بعد هر 20 ار شمردن یک بار مقدار متغییرمون رو توی eeprom بریزم و واچ داگ رو اجرا کنیم و دوباره به برنامه برگشه و eeprom رو بخونیم و ادامه ماجرا...

                      فقط به نظر شما برای اینکه هنگ کردن کمتر باشه از (incr و decr) یعنی افزایش و کاهش متغییر استفاده کنم یا کانتر ؟ ممنون
                      اگر دین نداری حداقل آزاده باش <امام حسین (ع)>

                      دیدگاه


                        #12
                        پاسخ : چک کردن دو پایه و مقایسه با هم بطور همزمان

                        نوشته اصلی توسط parham144
                        خیلی ممنون فکر کنم منظورتون رو فهمیدم یعنی میگید بهتره برای اجرای روان و هنگ نکردن مثلا بعد هر 20 ار شمردن یک بار مقدار متغییرمون رو توی eeprom بریزم و واچ داگ رو اجرا کنیم و دوباره به برنامه برگشه و eeprom رو بخونیم و ادامه ماجرا...
                        بله کاملاً درست گفتید.

                        نوشته اصلی توسط parham144
                        فقط به نظر شما برای اینکه هنگ کردن کمتر باشه از (incr و decr) یعنی افزایش و کاهش متغییر استفاده کنم یا کانتر ؟ ممنون
                        شما دارید چیکار میکنید؟ بسته به نوع کارتون دستوراتتون رو انتخاب کنید.
                        هنگ کردن چیزه طبیعیه باید باهاش مبارزه کرد نه اینکه ازش فرار کرد.
                        اگه کارتون با کانتر حله پس از کانتر استفاده کنید .
                        نیست من از اول نوشته هاتون رو ندیدم به خاطر همین اینو میگم.
                        ?Why not

                        دیدگاه


                          #13
                          پاسخ : چک کردن دو پایه و مقایسه با هم بطور همزمان

                          نوشته اصلی توسط QUARK
                          بله کاملاً درست گفتید.
                          شما دارید چیکار میکنید؟ بسته به نوع کارتون دستوراتتون رو انتخاب کنید.
                          هنگ کردن چیزه طبیعیه باید باهاش مبارزه کرد نه اینکه ازش فرار کرد.
                          اگه کارتون با کانتر حله پس از کانتر استفاده کنید .
                          نیست من از اول نوشته هاتون رو ندیدم به خاطر همین اینو میگم.
                          با تشکر .ببینید من این مدار رو برای هوشمند سازی پارکینگ میخوام و که در پست زیر به طور کامل بهش پرداختم و دلیل پرشم به این موضوع هم سوالی در همان مسئله بود که ممنون میشم نظرتون رو بدونم
                          http://www.eca.ir/forum2/index.php?topic=65882.0
                          اگر دین نداری حداقل آزاده باش <امام حسین (ع)>

                          دیدگاه


                            #14
                            پاسخ : چک کردن دو پایه و مقایسه با هم بطور همزمان

                            با این وجود بهتره که از کانتر استفاده کنید.
                            ?Why not

                            دیدگاه


                              #15
                              پاسخ : چک کردن دو پایه و مقایسه با هم بطور همزمان

                              بله ممنون
                              اگر دین نداری حداقل آزاده باش <امام حسین (ع)>

                              دیدگاه

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