MSP430 के लिए कई नमूना कार्यक्रमों में उनकी पहली पंक्ति है:
WDTCTL = WDTPW | WDTHOLD; // Stop watchdog timer
वे यह क्यों करते हैं?
MSP430 के लिए कई नमूना कार्यक्रमों में उनकी पहली पंक्ति है:
WDTCTL = WDTPW | WDTHOLD; // Stop watchdog timer
वे यह क्यों करते हैं?
जवाबों:
वॉचडॉग टाइमर (डब्लूडीटी) डिफ़ॉल्ट रूप से चालू है, अधिक जटिल अनुप्रयोगों में होना एक उपयोगी बात है, लेकिन बहुत सारे नए लोगों को यात्रा करता है। वे अक्सर अपने कोड में WDT की सेवा नहीं लेते हैं या WDT ईवेंट को संभालने के लिए एक इंटरप्ट सर्विस रूटीन (ISR) शामिल करते हैं, इसलिए, जब उनकी चिप रीसेट होती रहती है तो वे बहुत निराश हो जाते हैं। इसके अतिरिक्त, नमूना कार्यक्रम, अधिकांश भाग के लिए, WDT को प्रदर्शित करने की कोशिश नहीं कर रहे हैं, इसलिए इसे बंद कर दिया गया है।
संपादित करें: वॉचडॉग टाइमर को "मृत आदमी का स्विच" नाम दिया जा सकता था। इसका डिफ़ॉल्ट व्यवहार माइक्रोकंट्रोलर को रीसेट करना है जब तक कि फर्मवेयर समय-समय पर यह नहीं बताता है कि सब कुछ ठीक चल रहा है। इसे "कुत्ते को खिलाना" या "कुत्ते को मारना" के रूप में जाना जाता है। इस तरह, यदि आपका फर्मवेयर लूप में फंस जाता है या अन्यथा अपेक्षा के अनुसार काम करना बंद कर देता है, तो वॉचडॉग को फीड नहीं किया जाता है और चिप को रीसेट कर देगा (उम्मीद है कि एक नए सिरे से काम कर रहा है)।
आप अन्य कार्यों को करने के लिए आवधिक व्यवधान के रूप में WDT का उपयोग भी कर सकते हैं, जो भी आप कल्पना कर सकते हैं। आपको बस संबंधित ISR लिखना होगा।
लोगों द्वारा गलती से WDT को ट्रिप करने के बारे में सैमुअल की बात के अलावा, एक और महत्वपूर्ण कारण है कि इसे शुरू में अक्षम किया जाना चाहिए।
यहां तक कि अगर आपका एप्लिकेशन सामान्य रूप से टाइमर को सही ढंग से रीसेट करने में सक्षम है, तो यह दो बार शुरू करने के लिए प्रारंभिक कोड के दौरान ऐसा करने में सक्षम नहीं हो सकता है:
नतीजतन, डब्ल्यूडीटी को अक्षम करने के लिए यह अच्छा अभ्यास है जो आप करते हैं, भले ही आपने इसे कभी भी सक्षम न किया हो ।
यदि आप इसका उपयोग करना चाहते हैं, तो आप अपने अंतर्विरोध कोड के अंतिम चरण के रूप में, इंटरप्ट को चालू करने से तुरंत पहले इसे फिर से सक्षम कर सकते हैं।
int _system_pre_init(void)
फंक्शन के इस्तेमाल से पहले अक्षम कर सकते हैं , जो पहले निष्पादित होता हैmain