به نام خدا : خب تو این مطلب از آموزش آردوینو میخوام به آموزش تایمر واچ داگ در آردوینو بپردازم، برا AVR این مبحث رو توضیح دادم، گفتم برا آردوینو هم توضیح بدم یدفه تموم بشه بره پی کارش
آموزش آردوینو جلسه ۱۳ Introduction to Watchdog Timers in Arduino
توضیحات لازم :
- اول برید مطلب مقابل رو بخونید، یه سری توضیحات و آموزش های مقدماتی توش دادم لذا دیگه اینجا نمیگم : آموزش واچ داگ در Avr
- تو مطلب بالا گفتم که تو کدویژن تابع delay_ms یه مشکلاتی رو ایجاد میکنه ولی تو آردوینو همچین مشکلی نداریم.
- تو آردوینو هم ۳ تا تابع داریم، فعال سازی، غیر فعال سازی و ریست کردن که دقیقا مثل کدویژن هستش.
توابع واچ داگ در آردوینو
۱) (wdt_enable(x
این تابع همون طور که از اسمش معلومه تایمر واچ داگ رو فعال میکنه، و اون پارامتری هم که میگیره(x) باید بجاش یکی از موارد زیر رو بزارید، که این پارامتر تعیین میکنه که تایمر واچ داگ میکرو رو بعد از چند ثانیه ریست بشه.(که کار همون ریجستر های تقسیم فرکانسی رو تو کدویژن انجام میده…کلا این آردوینو همه چیز رو آماده و حاظر کرده برامون….نمیدونم این ویژگی خوب محسوب میشه یا بد )
در ستون اول زمانی که تایمر واچ داگ بعد از گزشتش میکرو رو ریست میکنه رو مشاهده میکنید و ستون دوم هم باید به جای x قرارش بدیم و ستون سوم هم میگه که این گزینه برای چه مدل هایی از Avr هستش.
۲) ()wdt_reset
خب این تابع کارش ریست کردن شمارنده تایمر واچ داگ هستش، که در مطلب مربوط به کدویژن(avr) توضیحش دادم لذا دیگه توضیح اضاف نمیدم.
۳) ()wdt_disable
اینم مثل تابع غیر فعال کردن واچ داگ در avr(کدویژن) هستش.
پروژه واچ داگ با آردوینو
پروژه اول(ساده)
1 2 3 4 5 6 7 8 9 10 11 12 |
#include <avr/wdt.h> void setup() { Serial.begin(9600); wdt_enable(WDTO_1S); } void loop() { Serial.println("Mahdi"); while (1); Serial.println("Damarchilu"); } |
پروژه دوم(جامع و مثل پروژه توی اون یکی مطلب)
برا درک بهتر پروژه مطلب روبرو رو ببینید : پروژه ساده روشن کردن ۸ تا LED با آردوینو
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 |
#include <avr/wdt.h> int PORTAA[4] = {2, 3, 4, 5}; int PORTBB[4] = {6, 7, 8, 9}; int PORTCC[4] = {10, 11, 12, 13}; void setup() { for (int i = 2; i <= 13; i++) pinMode(i, OUTPUT); } void loop() { AllPORT(0); for (int j = 0; j < 5; j++) { for (int i = 1; i <= 8; i *= 2) { DigitalWrite_To_PORT(i, PORTAA); delay(100);//100ms * 8 = 800ms } } AllPORT(0); wdt_enable(WDTO_1S); for (int j = 0; j < 5; j++) { for (int i = 1; i <= 8; i *= 2) { DigitalWrite_To_PORT(i, PORTBB); delay(100);//100ms * 8 = 800ms < 1s } wdt_reset(); } AllPORT(0); wdt_disable(); for (int j = 0; j < 5; j++) { for (int i = 1; i <= 8; i *= 2) { DigitalWrite_To_PORT(i, PORTCC); delay(200);//200ms * 8 = 1600ms > 1s } } AllPORT(1); while(1){}; } void AllPORT(int i) { DigitalWrite_To_PORT(i, PORTAA); DigitalWrite_To_PORT(i, PORTBB); DigitalWrite_To_PORT(i, PORTCC); } void DigitalWrite_To_PORT(int Value, int PinList[4]) { digitalWrite(PinList[0], bitRead(Value, 0)); digitalWrite(PinList[1], bitRead(Value, 1)); digitalWrite(PinList[2], bitRead(Value, 2)); digitalWrite(PinList[3], bitRead(Value, 3)); } |
فیلمی از پروژه۲ در عمل ( برای اطمینان از صحت عملکرد پروژه )
آموزش آردوینو جلسه 13 Introduction to Watchdog Timers
لینک های مفید :
- Creating an Arduino Watchdog Timer
- Raspberry Pi and Arduino: Building Reliable Systems with WatchDog Timers
- How To Detect Lockups Using The Arduino Watchdog
در ضمن حال نداشتم زیاد مطالب مربوطه رو نخوندم تا یاد بگیرم و به شما بگم…اگه چیزی هستش که نگفتم بگید؛ فعلا یا علی.
مهمان
سلام
لطفا راهنمایی کنید 
اموزش عالی دارید ،من یک مشکل دارم توی برنامه ام اینتراپت وجود داره با وجو اینتراپت وقتی واچ داگ شروع به کار میکنه و مثلا یک ثانیه اش تمام میشه دیگه هنگ میکنه
مهمان
سلام دادا ربطی به استفاده همزمان اینترراپت و واچ داگ نداره فکر کنم شما توو یه سایت دیگه هم این سوال رو پرسیده بودی. توو کد ات ایراد داری…
کد رو بفرست تا اصلاح اش کنیم.
مهمان
سلام
دمت گرم بابت آموزش هایی که گذاشتی و خدا خیرت بده.یه سوال داشتم. وقتی واچداگ فعال شده باشه، و توی برناممون خودمون از اینتراپت استفاده کنیم چی میشه؟ آیا اینتراپت تایمر واچداگ رو هم نگه میداره یا نه؟
مهمان
نه واچ داگ کار خودش رو میکنه و ریست میکنه میکرو رو.
مهمان
سلام مثل همیشه عالی بود.
مهمان
سلام خط 18 نوشته i*=2
متوجه نشدم
نویسنده این مطلب
سلام-یعنی i ضربدر2 میشه به خودش داده میشه
i=i*2;
مهمان
مهندس جان سلام.توی سروش هم بهتون پیام دادم..این پروژه واچ داگز رو متوجه نشدم من لطفا کاملشو برام توضیح بدین.خواهش میکنم
نویسنده این مطلب
سلام-چیشو متوجه نشدید؟
کامل که توضیح نمیدم چون حوصلشو ندارم – جزئی بخوای در خدمتم.
مهمان
مهمان
سلام من میخواستم اینو برای stm32 f103 رو اردوینو فعال کنم که به #include
گیر میده راهی براش هست آیا؟
نویسنده این مطلب
سلام-این آردیونو هستش-میکرو شما Stm – نمیشه که.
مهمان
سلام
مطالب واقعا عالین
ممنون
تایمر کانتر آموزش نمیدین؟
نویسنده این مطلب
سلام
آموزشش رو گزاشتم تو سایت فک کنم
مهمان
تایمر کانتر با آردوینو؟
من پیداش نکردم میشه لینک بدین
نویسنده این مطلب
https://dmf313.ir/%D8%A2%D9%85%D9%88%D8%B2%D8%B4-%D8%AC%D8%A7%D9%85%D8%B9-%D8%A2%D8%B1%D8%AF%D9%88%DB%8C%D9%86%D9%88-%D8%AC%D9%84%D8%B3%D9%87-%DB%B8-%D9%85%D9%88%D8%B6%D9%88%D8%B9-time/
مهمان
سپاس
یعنی کل اون تایمر کانتر به اون عظمت توی AVR شده این
به قول دوستم آردوینو باعث میشه آدم تنبل بشه
مرسی بابت سایت خوبتون
مهمان
سلام.
من اینو نفهمیدم دلیل غیر قعال کردن wdt چیه مثلا تو همین مثال شما اومدیم برنامه بعد خط 40 هنگ کرد اون موقع که دیگه wdt نیست تا میکرو رو ریست کنه.
نویسنده این مطلب
سلام
مثال بود برای درک ملت از بحث واچ داگ – من این کارو کردم تا لت ببینم که میکرو توی حلقه وای گیر میکنه(راه دیگه ای برای هنگوندن میکرو پیدا نکردم)
مهمان
سلام مهدی جان ،قارداشیم درخواست کمک دارم عزیز،من خیلی بااین تایمر کانتر تو آردوینو مشکل دارم دادا خاجکیمم همچین مالی نیست وسایت آردوینو رو خوندم چیزی نفهمیدم اگه ی منبع پدر ومادر دار معرفی کنی بهم یا ی آموزش خودت بذاری که خدا امواتتو بیامرزه،اگه منبع داشتی ی لطفی کن ایمیل کن برام آخه یادم میره تو کدوم صفحه نطر دادم دمت گرم…
نویسنده این مطلب
سلام – مطلبش رو که تو سایت گزاشتم که – برا بحث تایمر تو آردوینو – عنوان مطلبش فک کنم TIME بود – دقیقا خاطرم نیست – بگردی پیدا میکنی.
مهمان
مهدی جان اللارین آقرمسه،چخ یاقچیدی، ساغل همشهری
نویسنده این مطلب
نوکرم گارداش
مهمان
فدات …… عالی بود
مهمان
منظورم دست بود . (;
مهمان
مطلب خیلی جالب، واضح و آموزنده است. رست آقا مهدی درد نکنه.
مهمان
آقا مهدی خیلی مردی . ایول به مرامت
نویسنده این مطلب
مرد اونیه که دمشقه
مهمان
آقا ممنون دستت درد نکنه.معذرت میخوام این همه زحمت میکشی باز یه **** مثل من این همه طلبکارانه کامنت میزاره.
فقط اینو به عنوان یه نقد میگم
یه نمایشگر معقول برای نمایش خروجی آردوینو نداریم.OLED واقعا عالی هستن ولی سایزشون خیلی کوچیکه.
LCD های کارکتری قدرت مانوری ندارن.
شیلد خود آردوینو LCD tft shield arduino uno روی آردوینو درست سوار نمیشه.خلاصه خروجی این همه ماژول را اکثرا باید داخل سریال مانیتورینگ ببینیم.
به نظر من حقیر KS0108 برای نمایش خروجی آردوینو عالیه البته به نظر من
بازم تشکر میکنم از آموزشهاتون ومعذرت میخوام به خاطر کامنت طلبکارانه ام.
نویسنده این مطلب
سلام
lcd های رنگی هم ارزونن، هم اندازشون کوچیکه و وزنشون کم و ریزولیشن بالا و تمام رنگ و ….
لذا هیچ دلیلی وجود نداره که من بخوام این مطلب رو(ks108) با آردوینو بخوام بزارم تو سایت
(برا avr هم که گزاشتم الان پشیمونم…..)
در هر صورت اگه واقعا دنبال یادگیری هستی و میخوام پروژه صنعتی و کاربردی بسازی از من میشنوی بیخیالش بشو.
مهمان
داخل سایتهای مختلف انواع و اقسام آموزشهای آردوینو هست به جز راه اندازی glcd با وجود اینکه میتونیم تمام خروجی آموزشها را داخل glcd ببینیم ولی نمیدونم چرا اینقدر نسبت به آموزشش بی محبتی میشه.
خودم دستمو زدم بالا ولی حقیقتش حریفش نشدم.
۳ ماه منتظر بودم بری تهران تا طبق قول خودت آموزشش را بذاری
نویسنده این مطلب
سلام






خدا بگم چیکارتون نکنه
۲۰۰ تومن پول قطعه دادم
انواع مدل lcd برای آردوینو رو سفارش دادم
چند روز دیگه میرسه دستم—-فقط برای آردیونو lcd های گرافیکی(این سیاه و سفیدها) رو دیگه توضیح نمیدم(چون از هیچ نظری ارزش کارکردن ندارن…ریزولیشن پایین و اندازه بزرگ و قیمت بالا و سنگین و تک رنگ و …. همه جوره lcd های آشغالی هستن….همین ks0108 و شوشیبا۶۹۶۱_فک کنم همین بود_ رو میگم.)
بابام ۲ تومن(برا وصیغه کربلا) بهم داده….الان فقط ۸۰۰ تو حسابم مونده
بفهمه دهنم رو سرویس میکنه
خدا خودش رحم کنه
چند روز دیگه قطعات میرسه دستم و شروع میکنم.
مهمان
سلام آقا مهدی
آقا الوعده وفا.قول دادی بری تهران آموزش GLCD را برای آردوینو بزاری
۳ماهه منتظرم
یا علی