اطلاعیه

Collapse
No announcement yet.

راه اندازیWDTدر زبانpicbasic

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

    راه اندازیWDTدر زبانpicbasic

    سلام.
    برای راه اندازی واچ داگ تایمر در زبان picbadic این دو روش را امتهان کروم اما جواب نداده.
    1-option-reg=% 10001000
    2 Device WDT-ON

    دوستان.
    کمکی ؟ نظری؟
    با این قضیه درگیرم.
    هر چند دستورات فوق کانلا درسته اما چرا کار نمیکنه موندم.
    میکرو مورد استفاده هم 16f877a هست
    جدیدترین ویرایش توسط شاهرخ مستقیمی; ۱۱:۳۰ ۱۳۹۵/۰۸/۰۶. دلیل: ادغام دو پست برای جلوگیری از اسپم

    #2
    پاسخ : راه اندازیWDTدر زبانpicbasic

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

    دیدگاه


      #3
      تشکر از لطف شما.
      با مساله زمان بندی مشکلی ندارم
      واچ داگ اصلا کار نمیکنه چه حداکثر زمان که کمی بیش از 2.3 ثانیه هست و چه کمترین مقدار یا همان 18ms
      هر مدلی تست کردم انگار واچ داگ فعال نمیشه.
      از یه میکرو دیگه هم استفاده کردم بازم داستان همانه..
      البته هنگام پروگرام باpickit2همیشه مجبورم بعضی از فیوزبیتها رو دستکاری کنم چون در غیر این صورت حتی یه برنامه ساده هم کار نمیکنه .
      شاید مربوط به آن باشد نظر شما چیست؟
      ظاهرا تنظیمات کریستال در pickit 2باید بصورت دستی ست شود(میدونم خود برنامه این کارو انجام میده اما قبل از پروگرام اگر دستی تنظیم نکنم بصورت اتوماتیک روی 4 مگ تنظیم میشه)حالا چرا والله اعلم.
      قبلا از یک پروگرامر پارالل استفاده میکردم که کاملا درست بود
      ویندوز عوض کرد. فایل خود پروگرامر رو هم عوض کردم اما داستان همانست

      INCLUDE "MODEDEFS.BAS"
      DEFINE OSC 20
      OPTION_REG=%10001111
      define DEBUG_BAUD 9600
      define DEBUG_MODE 1
      define LCD_DREG PORTB
      define LCD_DBIT 4
      define LCD_RSREG PORTB
      define LCD_RSBIT 2
      define LCD_EREG PORTB
      define LCD_EBIT 3
      define LCD_BITS 4
      define LCD_LINES 2
      اینم یه کد مثالی اول برنامه

      در صورت امکان شما لطف کنید روش کانفیگ wdt در picbasic بفرمایید
      جدیدترین ویرایش توسط شاهرخ مستقیمی; ۱۸:۳۰ ۱۳۹۵/۰۸/۰۶. دلیل: ادغام دو پست برای جلوگیری از اسپم

      دیدگاه


        #4
        پاسخ : راه اندازیWDTدر زبانpicbasic

        شما یه لطفی بکن، برنامه ای بنویس که یه LED دو بار چشمک بزنه بعدش برنامه تموم بشه و هیچ کاری انجام نده. ببین واچ داگ کار میکنه؟ اگه کار بکنه، باید LED باز هم شروع بکنه به چشمک زدن، چون واچ داگ میکرو رو ریست میکنه.
        برنامه رو هم کامل تر قرار بدین.
        همچنان نظرم رو اینه که PICBasic فایل هگز خروجیش مشکلی نداره و نیازی به تنظیمات خاصی هم تو پروگرمر نیست.
        برنامه ای که عرض کردم رو بنویسین و سورس به همراه فایل هگز اینجا بذارین تا بشه بهتر نظر داد.
        با سپاس

        دیدگاه


          #5
          پاسخ : راه اندازیWDTدر زبانpicbasic

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

          دیدگاه


            #6
            پاسخ : راه اندازیWDTدر زبانpicbasic

            نوشته اصلی توسط leader. نمایش پست ها
            تشکر.
            بنده طبق دستور جهت راه اندازی led یه برنامه ساده نوشتم و بالاخره wdt را راه اندازی کردم.
            برنامه در پروتیوس جواب میده کامل اما وقتی بخوام عملی تستش کنم حتما باید فیوزبیتهای میکرو را قبل از پروگرام طبق روال همیشگی دستکاری کنم.
            بعبارتی از موقع خرید این پروگرامر هر کاری کردم نتونستم بدون دستکاری فیوزبیتها میکرو را راه اندازی کنم.
            مشکل اصلی همینه.
            واسه حل این مشکل حالا چه دستوری میفرمایین بنده انجام بدم
            خب...تاحدودی بهتر شد. حالا یه سوال دیگه، تا الان به جز فایل هگز خروجی این کامپایلر، فایل هگز دیگه ای رو با همین پروگرمر پروگرم کردین؟ این مداری که بستین، میکروش چیه؟ این به ذهنم میرسه که یه فایل هگز براتون بفرستم و اون رو بدون هیچ دستکاری ای، پروگرم کنین و نتیجه رو اعلام کنین.
            راستی، یه پیشنهاد هم داشتم، البته چندان نمیتونه ارتباطی داشته باشه، ولی خب...تستش زمان خاصی نمیخواد و ضرری هم نداره. پیشنهاد هم این هست که برنامه ی پرورگرمر رو آپدیت کنین.آموزشش اینجا هست.

            دیدگاه


              #7
              تشکر از لطف شما.
              مشکل پروگرامر را با افزودن DEVICE HS-OSC
              به اول برنامه حل کردم.
              واچ داگ را هم حل کردم.
              حالا یه سوال داشتم از خدمتون:
              آیا امکان روشن و خاموش کردن واچ داگ در بخشهای مختلف برنامه وجود داره؟
              من تونستم در قسمتی از برنامه خاموشش کنم اما روشن کردن دوباره واچ داگ به درستی عمل نمیکنه.یعنی برنامه از همونجا ادامه نمی یابه بلکه از اول شروع میکنه.
              بعبارتی مثلا در قسمتی از برنامه نمیتونم شمارشگر واچ داگ را خالی کنم.مجبورم در آن قسمت شمارشگر را خالی کرده و خاموشش کنم و بعد از آن قسمت دوباره روشنش کنم
              حالا اگر چنین امکانی برای واچ داگ نیست چه راهکاری پیشنهاد میکنید.

              هدف از راه اندازی واچ داگ :
              توسط میکرو یک دستگاهی راه اندازی میشه که این دستگاه گاهی هنگ میکنه.
              میخوام در مواقع هنگ توسط واچ داگ دستگاه را دوباره راه اندازی کنم.
              زمانیکه میکرو مشغول گوش کردن به پورت سریال برای دریافت داده است به دلایلی نمیتوانم با خالی کردن شمارشگر واچ داگ از ریست ناخواسته جلوگیری کنم
              جدیدترین ویرایش توسط شاهرخ مستقیمی; ۱۵:۵۴ ۱۳۹۵/۰۸/۰۷. دلیل: ادغام دو پست برای جلوگیری از اسپم

              دیدگاه


                #8
                پاسخ : راه اندازیWDTدر زبانpicbasic

                خب...خدا رو شکر که حل شده.
                شما در اواسط برنامه نیاز به خالی کردن تایمر واچ داگ دارین. ساده ترین راه هم استفاده از دستور اسمبلی زیر هست:
                clrwdt
                که شمارنده ی واچ داگ رو ریست میکنه.

                دیدگاه


                  #9
                  پاسخ : راه اندازیWDTدر زبانpicbasic

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

                  دیدگاه


                    #10
                    پاسخ : راه اندازیWDTدر زبانpicbasic

                    راستش تا الان نیاز نشده اینکار رو انجام بدم، و این حرفی که میزنم، صرفا از روی استنباط خودم هست. اون هم اینه که خب روشن و خاموش کردن واچ داگ، بستگی به تنظیمات option_reg داره، اگه تغییرش بدی، در هرجای برنامه، میتونی واچ داگ رو خاموشش کنی.
                    یه تست تو پروتئوس بزنین ببینین چی میشه؟

                    دیدگاه


                      #11
                      پاسخ : راه اندازیWDTدر زبانpicbasic

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

                      دیدگاه


                        #12
                        پاسخ : راه اندازیWDTدر زبانpicbasic

                        خب من الان یه نگاه کامل انداختم، شما هم برین بخش Watchdog Timer دیتاشیت رو مطالعه بفرمایید. دوتا رجیستر روی عملکرد واچ داگ تاثیر میذارن. یکی Option_reg هست، و دیگری که موقع پروگرم کردن ارسال میشه، Config. bits هست. بیت دوم WDTE هست که همون Enable واچ داگ هست. فقط یه چیزی که نمیدونم اینه که وسط برنامه میشه بیت کانفیگ میکرو رو دستکاری کرد یا نه؟

                        دیدگاه


                          #13
                          پاسخ : راه اندازیWDTدر زبانpicbasic

                          برگه اطلاعاتی pic18f458 صفحه 267 در پاراگراف 24.1
                          .Programming the configuration registers is done in a manner similar to programming the Flash memory
                          جهان پیر است و بی بنیاد ازاین فرهاد کش فریاد
                          که کرد افسون و نیرنگش ملول از جان شیرینم

                          دیدگاه


                            #14
                            پاسخ : راه اندازیWDTدر زبانpicbasic

                            همون صفحه از دیتاشیت رو یه خورده برین پایین تر، بخش 24.2 رجیستر WDTCON رو معرفی کرده برای روشن و خاموش کردن نرم افزاری واچ داگ.
                            علاوه بر اون تو همون صفحه ای که اشاره کردین، رجیستر CONFIG2H تماما مربوط به کنترل واچ داگ هست. توضیحاتش رو با دقت بیشتر مطالعه بفرمایید مسئله تون حل میشه.

                            دیدگاه


                              #15
                              پاسخ : راه اندازیWDTدر زبانpicbasic

                              نوشته اصلی توسط leader. نمایش پست ها
                              سلام.
                              برای راه اندازی واچ داگ تایمر در زبان picbadic این دو روش را امتهان کروم اما جواب نداده.
                              بسم الله الرحمن الرحیم
                              البته امیدوارم که تاکنون مسئله شما حل شده باشد.
                              و اما از هر چه بگذریم سخن PBP خوشتر است...

                              اینکه واچ داگ باشد یا نباشد موضوعی است که به اسمبلر شما برمی گردد. یعنی همان تعیین فیوزبیت ها در میان کدهای برنامه . به بیان دیگر شما از اسمبلر بازنشسته و خوش دست PM استفاده می کنید؟؟ یا از MPASM بهره می برید؟
                              اما با هر کدام از این دو :
                              WDT به طور اتوماتیک در پس زمینه محیط PBP کنترل میشود و نیازی نیست که واقعا کاربر هیچ کاری انجام دهد .
                              اگر به فایل های لیست شده اسمبلر در هر کدام از برنامه های قبلی تان نگاهی بیندازید ، LST فایل ها ، می بینید که به تعداد زیادی دستور CLRWDT در آنها قرار دارد. در غیر اینصورت مثلا تاخیری به اندازه 10000 ده هزار میلی ثانیه چگونه ایجاد خواهد یشد؟؟
                              و بسیار بسیار سخت است که بگوئیم واچ داگ باعث تخریب اجرای یک برنامه سالم و بی عیب و نقص است. یا به عبارتی دیگر در یک برنامه بدون ایراد واچ داگ تاثیری بر روال کار ندارد.
                              در خطوط زیر برنامه ای قرار دارد که یک ال ای دی تنها در زمان روشن شدن یک چشمک می زند و تا روز قیامت روشن و بدون تغییر باقی می ماند . در برنامه زیر فیوز واچ داگ تایمر فعال است.
                              کد:
                              Led VAR PORTB.1
                              HIGH Led
                              PAUSE 1000
                              LOW Led
                              Pause 1000
                              HIGH Led
                              EndLessLoop:
                              PAUSE 1200
                              GOTO EndLessLoop
                              END
                              توضیحات بیشتری هم البته در راهنمای PIC BASIC MANUAL تحت قسمت ClearWDT آمده است که بسیار جالب است. بخش 5 پاراگراف شماره 2
                              یعنی اینکه شما می توانید به کمک Define No ClearWDT 1 وارد شدن اتوماتیک ریست در خلال برنامه توسط PBP را متوقف کنید.
                              کد:
                              [FONT=Arial][SIZE=2][LIST][*][COLOR=#333333][FONT=Verdana][INDENT]DEFINE NO_CLRWDT 1 ' Don't automatically insert CLRWDT's[/INDENT]
                              
                              [/FONT]
                              [/COLOR][/LIST]
                              
                              
                              [/SIZE][/FONT][FONT=Yekan][/FONT]

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

                              زیاده جسارت است.
                              والسلام علي من اتبع الهدي .... و درود بر کساني که راه هدايت را دنبال مي کنند.

                              هوشمندانه بپرسيد...

                              دیدگاه

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