سلام جناب حسام الدین
راستش مفهوم watch dog رو فهمیدم فقط نمیدونم چطور تو برنامه ازش استفاده کنم اگه شما بزرگواری کنید یه مثال تو یه برنامه بزنید
واقعا ازتون ممنون میشم
یا علی... :rolleyes:
اصولا watch dog برای اینه که اگه میکرو هنگ کرد ، اونو ریست کنه . ( Watch dog اسیلاتور مجزا داره)
اقا مجید ضمن تشکر از پاسختون من مفهوم watch dog رو فهمیدم ولی یه مثال می خوام که تو یه برنامه ازش استفاده کرده باشه؟
من تا حالا برام پیش نیامده که از watch dog استفاده کنم
اون مطلب در باره watch dog کامل بود حالا نمیدونم
شما watch dog را برای چه منظوری میخواهید؟
اقا محمد مطلبی که گذاشتین کاملا مفید بود و بازم ازتون تشکر می کنم .راستش یه lcd دارم که اگه برقشو(منظورم برق اصلی هم میکرو و هم LCD )
یه لحظه قطع و وصل کنم میکرو هنگ میکنه کارکترای سطر اول LCD همگی روشن میشن با اون روشهایی که فرموده بودین برای watch dog تست کردم
ولی به جواب نرسیدم .
ولی با تنظیمات code vizard تایمر watch dog رو فعال کردم و دیگه از هیچ دستوری استفاده نکردم با این کار جواب داد و دیگه میکرو هنگ نمی کرد
حالا من نمی دونم قضیه چیه او ن دستوراتی که توی Watchdog Timer initialization // ساخته شده چی هستن :angry:
چرا با این روش جواب داد با اون قبلی نه؟؟؟
من فکر کردم مشکل حل شده . برای همین بود که مختصر توضیح دادم
در برنامه زیر تایمر 1 برای یک ثانیه و در حالت وقفه سر ریز تنظیم شده.
یعنی هر یک ثانیه به آدرس A1 پرش می کند.
watchdog هم جوری تنظیم شده که هر 2.048 ثانیه میکرو را ریست میکند
در A1 ما با استفاده از دستور Reset watchdog از reset شدن میکرو جلوگیری می کنیم .
باز هم هر کجا واضح نیست بفرمایید تا توضیح بدم
$regfile = "M16def.dat"
$crystal = 8000000
اقا مجید خیلی عالی بود ممنون
فقط یک نکته این 1ثانیه تاخیر تایمر رو چطور حساب کردید :mrgreen:
دومین نکته ایا امکان داره تایمر watch dog هم هنگ کنه و نتونه میکرو رو ریست کنه بر اثر(نویز و...)
سومین نکته ایا واچ داگ خارجی هم وجود داره :rolleyes:
اقا مجید خیلی عالی بود ممنون
فقط یک نکته این 1ثانیه تاخیر تایمر رو چطور حساب کردید :mrgreen:
دومین نکته ایا امکان داره تایمر watch dog هم هنگ کنه و نتونه میکرو رو ریست کنه بر اثر(نویز و...)
سومین نکته ایا واچ داگ خارجی هم وجود داره :rolleyes:
خواهش می کنم دوست عزیز
ببینید فرکانس کار تایمر از حاصل ( Prescale/فرکانس میکرو) بدست میاید که در اینجا برابر است با 31250 .
معنی اش اینه که هر 31250 شمارش تایمر ، یک ثانیه طول می کشه . از طرفی تایمر یک 16 بیتیه . یعنی ماکزیمم تا 65535 میتونه بشمره و بعد از آن یک وقفه سرریز میتونه اتفاق بیافته .
34285=31250-65535
یعنی کافیه مقدار اولیه تایمر را 34285 بدیم که بعد از شمردن 31250 سر ریز و وقفه اتفاق بیافته
خیر . اگه به این راحتی بخواد از کار بیافته که دیگه Watchdog timer نمیشه !!
دوست عزیز
تا اون جای که من میدونم
watchdog برای اینه که در هنگام اجرای برنامه ممکنه نویزی روی میکرو بیوفته و ولتاژ را از حد مجاز کم یا زیاد بشه ( بیشتر در کارخانه های صنعتی ) و هنگ کند کاربرد دارد.
نه برای اینکه برق کلی میکرو قطع و وصل بشه.
ببینید بحث تایمر watchdog بحث خاصی در حوزه ی برنامه نویسی نداره .. فقط کافیه شما در CodeWizard در واحد تایمر؛ گزینه ی Watchdog رو انتخاب کنید و با تعیین Prescaler مدت زمان Reset شدن رو تنظیم کنید .. تنها نکته ای که وجود داره اینه که شما باید برای ریست نشدن مداوم برنامه به خاطر سرریز شدن watchdog، از دستور اسمبلی زیر استفاده کنید ..
کد:
[left] #asm("WDR")[/left]
این دستور چیکار میکنه؟ قبل از اینکه Watchdog بخواد سرریز بشه (بیهوده .. بدون هیچ اتفاق هنگ شدن..) اون رو ریست میکنه .. پیشنهادی هم که میشه اینه که قبل این دستور یه تاخیر بذاریم به این منظور که صحت اجرا بیشتر بشه .. البته زمان تاخیر هم مهمه و باید بر طبق زمان ریست شدن؛ تنظیمش کنید .. موفق باشید ..
ضمن تشکر از تمامی دوستان
من همه این راه هارو امتحان کردم ولی نشد . یا اینقدر سریع ریست میشد که دیگه هیچی رو LCD نشون نمیداد یا اینکه دیگه ریست نمیشد :angry:
جناب حسام الدین اگه میشه تو یه برنامه مثال بزنید البته شرمنده :redface:
تا اون جای که من میدونم
watchdog برای اینه که در هنگام اجرای برنامه ممکنه نویزی روی میکرو بیوفته و ولتاژ را از حد مجاز کم یا زیاد بشه ( بیشتر در کارخانه های صنعتی ) و هنگ کند کاربرد دارد.
نه برای اینکه برق کلی میکرو قطع و وصل بشه
من برای اینکه بتونم میکرو هنگ کنه از این روش استفاده می کردم
منظورم از کم شدن ولتاژ اینه که میکرو اگه از یک ولتاژی مثلا 2.5 کم بشه وبهد به همان واتاژ اولیه بر گردد میکرو هنگ میکنه که توسط watchdog این مشکل را حل میکنند
ok
دوم در مورد lcd اینکه من واسه خودم هم پیش امده که وقتی برق lcd قطع و وصل میشه lcd کمی مشکل پیدا میکنه و بعد درست میشه
ok
دیدگاه