اطلاعیه

Collapse
No announcement yet.

مشکل با واچ داگ avr

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

    مشکل با واچ داگ avr

    دوستان سلام
    من در یک برنامه که با بسکام مینویسم وکلا یک لوپ ساده برای نمایش یک عدد افزایشی است ، به محض اینکه واچ داگ رو فعال میکنم (برنامه و فیوز بیت) دیگه برنامه اجرا نمیشه.
    اینم برنامه:
    کد:
    [left]$regfile = "m64def.dat"
    $crystal = 16000000
    $hwstack = 32
    $swstack = 32
    $framesize = 40
    Dim B As Byte
    Config Lcd = 20x4
    Config Lcdpin = Pin , Db4 = Portc.4 , Db5 = Portc.5 , Db6 = Portc.6 , Db7 = Portc.7 , E = Portd.7 , Rs = Portd.5    ', Rw = Pind.6
    
    Config Watchdog = 2048
    
    Cls
    Start Watchdog
    Reset Watchdog
    Dim I As Word
    For I = 1 To 1000
     Waitms 1
     Locate 1 , 1
     Lcd I
     Reset Watchdog
     Next
    End[/left]
    
    
    
    [left]لطفا بگید چرا سیستم بالا نمیاد.[/left]
    [left]متشکرم[/left]

    #2
    پاسخ : مشکل با واچ داگ avr

    سلام.
    اینکه میکرو اصلا درایو نمی شود بخاطر این است که علاوه بر فعال سازی واچداگ در نرم افزار برنامه اون را به شکل سخت افزاری روشن کردی یعنی به عبارتی با دستور کانفیگ ، استپ ، ریست ، و استارت واچداگ در برنامه کنترل این تایمر دست شماست..
    اما اگر فیوزبیت WDTON=0 کنی اون به شکل دایم و سخت افزاری(عدم قابلیت استپ و ریست) روشن شده و چون اجازه و مجال دسترسی به شمارنده واچداگ نمی ده میکرو ظاهرا کار نمی کند.
    پس شما فقط واچداگ را نرم افزاری اجرا کن وفیوز بیت واچداگ را غیر فعال کن WDTON=1 .
    طبق برنامت ، هیچ وقت واچداگ سرریز نمی شود مگر در حلقه هنگ کند.لذا اینطور بنویس تا کارکرد واچداگت را ببینی:
    کد:
    $regfile = "m64def.dat"
    $crystal = 16000000
    $hwstack = 32
    $swstack = 32
    $framesize = 40
    Dim B As Byte
    Config Lcd = 20x4
    Config Lcdpin = Pin , Db4 = Portc.4 , Db5 = Portc.5 , Db6 = Portc.6 , Db7 = Portc.7 , E = Portd.7 , Rs = Portd.5    ', Rw = Pind.6
    
    Config Watchdog = 2048
    reset watchdog
    Start Watchdog
    
    Dim I As Word
    For I = 1 To 100
     cls
     Locate 1 , 1
     Lcd I
    waitms 200
     Reset Watchdog
     Next
    End

    دیدگاه


      #3
      پاسخ : مشکل با واچ داگ avr

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

      دیدگاه


        #4
        پاسخ : مشکل با واچ داگ avr

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

        دیدگاه


          #5
          پاسخ : مشکل با واچ داگ avr

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

          دیدگاه


            #6
            پاسخ : مشکل با واچ داگ avr

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

            دیدگاه


              #7
              پاسخ : مشکل با واچ داگ avr

              مرسی
              جالبه ! من برای ریست کردن میکرو یک سیم به یکی از پایه هاش وصل می کردن و اون سر سیم را به پایه ریست میکرو وصل می کردم و ...

              پس کل دستورات همین ۳ خط هست درسته ؟

              Config Watchdog = 2048
              reset watchdog
              Start Watchdog

              کانفیگ که قبل از حلقه برنامه قرار می گیره اما ریست و استارت داخل حلقه درسته ؟ فاصله بین ریست و استارت اگه بیشتر از ۲ ثانیه باشه میکرو ریست میشه درسته ؟ برای درمان هنگ کردن میکرو خیلی بدرد می خوره :mrgreen:

              توی avrgcc به چه شکل میشه این کار را انجام داد ؟
              پس نیازی به دستکاری فیوزبیت واچداگ نیست ؟

              دیدگاه


                #8
                پاسخ : مشکل با واچ داگ avr

                یک سوال دیگه
                برای ریست کردن تایمر واچ داگ حتما باید اول دستوری ریست واچ داگ را نوشت بعد دستور استارت واچ داگ ؟
                مرسی

                دیدگاه


                  #9
                  پاسخ : مشکل با واچ داگ avr

                  نوشته اصلی توسط Nicolas1390
                  یک سوال دیگه
                  برای ریست کردن تایمر واچ داگ حتما باید اول دستوری ریست واچ داگ را نوشت بعد دستور استارت واچ داگ ؟
                  مرسی
                  سلام
                  نیازی به فیوزبیت واچداگ نیست.
                  من AVR GCC کار نکردم
                  ضمنا شما ابتدای برنامه یه بار کانفیگ و رستارت می کنید.. سپس در قسمت های برنامه و زیر برنامه ها فقط ریست می کنید :
                  config watchdog=2048
                  start watchdog
                  ..
                  .
                  Do
                  reset watchdog

                  loop
                  end
                  اول هر زیربرنامه یا جاهای که میکرو بیشتر از تایمر باید بماند فقط و فقط reset watchdog می کنید
                  موفق باشید

                  دیدگاه


                    #10
                    پاسخ : مشکل با واچ داگ avr

                    ببینی من که کار این تایمر رو فهمیدم.اینطور که گفتین اگه 2 ثانیه طول بکشه و و مقدار این تایمر ریست نشه ،تایمر سر ریز میشه و میکرو رو کامل به ریست میبره.
                    حالا فرض کنید ما یه تاخیر 5 ثانیه ای تو برنامه انداختم ،خوب این بیشتر از زمان 2 ثانیه است دیگه.در این صورت میکرو قبل از اینکه 5 ثانیه وایسه میره ریست که.
                    حالا برای این باید چیکار کرد،راهی هست؟یا فقط تو برنامه هایی که کمتر از 2 ثانیه استفاده میشه این تایمر استفاده میشه؟
                    مثلا برنامه زیر رو نگا کنید:
                    config watchdog=2048
                    start watchdog
                    ..
                    .
                    Do
                    wait 5
                    reset watchdog

                    loop
                    end
                    :nerd:
                    به سمت نور خورشید حرکت کن،تو میتونی تابش خورشید رو حس کنی ،حتی اگه کور باشی.
                    (پیش به سوی هدف)

                    دیدگاه


                      #11
                      پاسخ : مشکل با واچ داگ avr

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

                      دیدگاه


                        #12
                        پاسخ : مشکل با واچ داگ avr

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

                        دیدگاه


                          #13
                          پاسخ : مشکل با واچ داگ avr

                          سلام مهندسین گرامی
                          میتونید برنامه بالا رو که به زبان بسکام نوشته شده رو برای کد ویژن بنویسید با تنظیم واچ داگش

                          ممنون میشم.

                          آخه با کامپایلر کد ویژن کار میکنم
                          نمیدونم دستور ریست واستارت واچ داگ چطوریه تو کامپایلر کدویژن ؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟/

                          دیدگاه


                            #14
                            پاسخ : مشکل با واچ داگ avr

                            سلام
                            شما با وارد شدن به ویزارد کدویژن در لبه تایمر ها و لبه watchdog میتونید آنرا فعال کنید
                            کد:
                            // Watchdog Timer initialization
                            // Watchdog Timer Prescaler: OSC/16k
                            #pragma optsize-
                            WDTCR=0x18;
                            WDTCR=0x08;
                            #ifdef _OPTIMIZE_SIZE_
                            #pragma optsize+
                            #endif
                            وبرای ریست کردن این تایمر از دستور اسمبلی زیر استفاده کنید:
                            کد:
                            #asm("wdr")
                            موفق باشید
                            امام علی (علیه السلام) : الزکات العلم نشرهُ/ زکات علم نشر آن است

                            دیدگاه


                              #15
                              پاسخ : مشکل با واچ داگ avr

                              سلام چرا در بیسکام ورژن2078 واچ داگ رو ارور میگیره؟اپدیت کردم الان تمام برنامه هام که واچ داگ داره رو ارور میگیره
                              { خلاف قوانین - پاک شد }

                              دیدگاه

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