اطلاعیه

Collapse
No announcement yet.

فعال کردن Watch DOG تایمر به صورت صحیح

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

    فعال کردن Watch DOG تایمر به صورت صحیح

    سلام به دوستان عزیز

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

    توی جستجویی که داشتم مطالب و راهنماییها اکثرا مربوط به AVR بود و موارد کمی به PIC اشاره شده بود....

    با کمک دوستان میخواستم چند مثال عملی برای بیسیک و C به صورت کامل زده بشه تا هم من و هم دوستان دیگه اطلاعاتشون کاملتر بشه....

    مثلا توی حلقه ها...... توی دستورات IF و حتی تایمرها و هنگام اجرای دستورات Delay و Sleep عکس العمل و نحوه کارکرد درست Watchdog رو متوجه بشیم

    با سپاس فراوان......
    دیگه رو زمین جا نیست... باید رفت....

    #2
    پاسخ : فعال کردن Watchdog تایمر به صورت صحیح

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

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

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

    دیدگاه


      #3
      پاسخ : فعال کردن Watchdog تایمر به صورت صحیح

      سلام.
      ماشاالله شما خودتون اطلاعات مناسبی دارین تو زمینه واچ داگ.
      تو کامپایلر CCS ، از طریق کدویزارد میشه واچ داگ رو فعال کرد.
      یا با استفاده از دستور
      کد:
      #fuses WDT
      میشه اون رو فعال کرد و با دستور
      کد:
      #fuses NOWDT
      میشه غیر فعالش کرد.
      دستور زیر هم علاوه بر تعریف مقدار فرکانس کاری و نوع اون؛ باعث میشه که موقع استفاده از تاخیر،تایمر واچ داگ صفر بشه و باعث ریست شدن میکرو نشه:
      کد:
      #use delay(internal=4000000,restart_wdt)
      این دستور هم برای زمان بندی ریست شدن تایمر واچ داگ هست:

      کد:
      setup_wdt(WDT_2304MS);
      البته اون عدد تو ویزارد مشخص شده بود و همونطور که میدونین فقط مقادیر مشخصی رو میشه بهش اختصاص داد.

      خب نحوه ی ریست کردن واچ داگ چطوره؟
      استفاده از دستور زیر :
      کد:
      restart_wdt();
      تو کجای برنامه؟
      اگه حلقه ی (while(1 دارین، آخر اون حلقه و اگه اون حلقه یه خرده طولانی هست یا احتمال میدین طولانی بشه، وسطهای حلقه هم از این دستور میتونین یک یا چند بار استفاده کنین تا از سرریز واچ داگ جلوگیری بشه.

      دیدگاه


        #4
        پاسخ : فعال کردن Watchdog تایمر به صورت صحیح

        درود بر شاهرخ عزیز

        اول تشکر از زحمات شما

        دوم میخوایم افرادی ( اول خودم) که اطلاعات کمی راجعبه این دستور مهم (ولی متاسفانه کمتر شناخته شده) دارند بتوانند بدون مشکل برای کارهای برنامه نویسی خود بهره برداری کنند

        سوم مثالهای مختلفی بزنیم در زبانهای بیسیک و C آخه هر دوتاشون کاربرد دارند بین دوستان

        چهارم اینکه فوت و فن های این دستور یا شرایط های خاص اون بیان بشه ( مثلا توی AVR واچ داگ با استفاده از دستور Delay به صورت خودکار غیر فعال میشه) ( اگه اشتباه نکنم :mrgreen
        دیگه رو زمین جا نیست... باید رفت....

        دیدگاه


          #5
          پاسخ : فعال کردن Watchdog تایمر به صورت صحیح

          main:


          TRISB = 0
          portb = 0

          loop1:

          portb = 255
          delay_ms 500
          portb = 0
          delay_ms 500

          clrWDT

          goto loop1

          end.


          من برای فعال کردن واچ داگ در کامپایلر میکروبیسیک پرو کدی پیدا نکردم که واچ داگ رو فعال کنم و یا مقدار دهی کنم...

          برنامه بالا رو که نوشتم اگه برنامه حدود دو ثانیه به انتها نرسه میکرو ریست میشه....

          دوستان راهنمایی کنند و نظر بدند.... ممنون
          دیگه رو زمین جا نیست... باید رفت....

          دیدگاه


            #6
            پاسخ : فعال کردن Watchdog تایمر به صورت صحیح

            واچ داگ رو تو تنظیمات پروژه هم میشه فعال کرد.(تو کامپایلر میکروسی که اینطور بود)
            شما تو بیسیک نوشتی(PBP) خیلی وقته با این کامپایلر کار نکردم.نمیدونم چطوری تو این کامپایلر میشه فعالش کرد؟ (از طریق تنظیمات برنامه)
            الان این برنامه که نوشتین، مدت زمانی که اگه هنگ بکنه، میکرو ریست میشه، تو کجا تنظیم شده؟ (همون 2 ثانیه- تست کردین؟)

            دیدگاه


              #7
              پاسخ : فعال کردن Watchdog تایمر به صورت صحیح

              نوشته اصلی توسط شاهرخ مستقیمی
              واچ داگ رو تو تنظیمات پروژه هم میشه فعال کرد.(تو کامپایلر میکروسی که اینطور بود)
              شما تو بیسیک نوشتی(PBP) خیلی وقته با این کامپایلر کار نکردم.نمیدونم چطوری تو این کامپایلر میشه فعالش کرد؟ (از طریق تنظیمات برنامه)
              الان این برنامه که نوشتین، مدت زمانی که اگه هنگ بکنه، میکرو ریست میشه، تو کجا تنظیم شده؟ (همون 2 ثانیه- تست کردین؟)
              نه توی pbp ننوشتم... منم مثه شما با میکرو بیسیک پرو و میکرو سی پرو کار میکنم

              توی کانفیگوریشن واچ داگ رو فعال میکنم..... زمان بندی رو هم دقیق بدست اوردم (به روش خودم :eek حدود 2 ثانیه اگه میکرو هنگ کنه یا به آخر برنامه نرسه (چون فرمان ریست آخر برنامه هست) ریست میکنه

              دیگه رو زمین جا نیست... باید رفت....

              دیدگاه


                #8
                پاسخ : فعال کردن Watch DOG تایمر به صورت صحیح

                روش بدست اوردن زمان دو ثانه من اینطوری بود که با کم و زیاد کردن DELAY استفاده شده در برنامه اون رو بدست اوردم و فهمیدم میکرو کی ریست میشه با کرنومتر هم اندازه گرفتم همون بود

                در اینجا متوجه شدم که دستورات DELAY عملکرد واچ داگ رو غیر فعال نمیکنه در صورتی که اگه اشتباه نکنم جایی خونده بودم که توی AVR اینگونه نیست

                خوب برای تجربه اول بد نبود حداقلش اینه که فهمیدم برای استفاده از واچ داگ نباید دستور تاخیر بیشتر از دو ثانیه داشته باشم وگرنه در زمان اجرای این دستور که بالاتر از دو ثانه بره میکرو ریست میشود.... :nerd:
                دیگه رو زمین جا نیست... باید رفت....

                دیدگاه


                  #9
                  پاسخ : فعال کردن Watch DOG تایمر به صورت صحیح

                  خوب......


                  حالا مونده راهی برای بدست اوردن فعال کردن با مقدار دهی دلخواه به واچ داگ و غیر فعال کردن در زمان دلخواه و مورد نیاز

                  :mrgreen:
                  دیگه رو زمین جا نیست... باید رفت....

                  دیدگاه


                    #10
                    پاسخ : فعال کردن Watch DOG تایمر به صورت صحیح

                    نوشته اصلی توسط roodi
                    خوب......


                    حالا مونده راهی برای بدست اوردن فعال کردن با مقدار دهی دلخواه به واچ داگ و غیر فعال کردن در زمان دلخواه و مورد نیاز

                    :mrgreen:
                    تو CONFIGURATION WORD ، بیت 2 عملکردش این هست: WDTEN: Watchdog Timer Enable bit

                    یه سری تنظیمات هم داره که تو OPTION_REG هست.(با تایمر صفر مشترک هست)

                    دستور اسمبلی پاک کردن مقدار تایمر رو هم که خودتون اشاره کردین این هست : CLRWDT

                    دیدگاه


                      #11
                      پاسخ : فعال کردن Watch DOG تایمر به صورت صحیح

                      چرا استقبال نمیشه؟؟؟؟ :sad: :sad: :sad: :cry2: :cry2: :cry2:

                      اینجا اگه تاپیک AVR بود الان ترکیده بود :surprised: :surprised:

                      باز هم ممنون جناب شاهرخی عزیز

                      با توجه به اهمیت واچ داگ خواهشمندم دوستان فعالیت کنند.....


                      دیگه رو زمین جا نیست... باید رفت....

                      دیدگاه


                        #12
                        پاسخ : فعال کردن Watch DOG تایمر به صورت صحیح

                        این مطلب در مورد واچداگ یه چیزایی گفته که البته عمومیه و مشخصاً در مورد PIC نیست: http://johnsantic.com/comp/wdt.html

                        دیدگاه


                          #13
                          پاسخ : فعال کردن Watch DOG تایمر به صورت صحیح

                          نوشته اصلی توسط roodi
                          چرا استقبال نمیشه؟؟؟؟ :sad: :sad: :sad: :cry2: :cry2: :cry2:

                          اینجا اگه تاپیک AVR بود الان ترکیده بود :surprised: :surprised:

                          باز هم ممنون جناب شاهرخی عزیز

                          با توجه به اهمیت واچ داگ خواهشمندم دوستان فعالیت کنند.....
                          دیگه رو زمین جا نیست... باید رفت....

                          دیدگاه


                            #14
                            پاسخ : فعال کردن Watch DOG تایمر به صورت صحیح

                            متاسفانه توی بعضی تاپیک ها به خاطر یک آی سی سوخته یا ترانزیستور معیوب صدها پاسخ داده میشه و کلی نظر و بازدیدکننده داره...

                            واچ داگ به چه درد میخوره؟؟؟؟ اصلا ازش استفاده کردی؟؟؟ اصلا این حرف رو قبول ندارم که بعضی ها میگن: ( من مدارم رو طوری میبندم که نیازی به استفاده از واچ داگ ندارم)... اصلا تا حالا پروژه ای بستین که اگر میکرو کوچکترین اشتباهی کنه ضرر بزرگی بهتون بزنه؟؟؟

                            بله دوستان واچ داگ خیلی حیاتی و مهمه مخصوصا توی مواردی که گفتم....

                            لطفا کسی اگه اطلاعاتی داره در اختیار من و دوستان دیگه قرار بده

                            هدف آشنایی با واچ داگ نبود هدف استفاده صحیح و کاربردی و مثال هست........ :rolleyes: :rolleyes: :rolleyes: :rolleyes:
                            دیگه رو زمین جا نیست... باید رفت....

                            دیدگاه


                              #15
                              پاسخ : فعال کردن Watch DOG تایمر به صورت صحیح

                              دوست عزیز منظورتون از استفاده ی صحیح چی هست؟ یه خرده خواسته ی شما مبهمه!
                              امیدوارم انتظار نداشته باشین که کسی بیاد یه برنامه ی سنگین رو اینجا بذاره و تحلیل کنه که کجا از دستور ریستارت واچ داگ استفاده کرده و چرا؟!!

                              دیدگاه

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