কেন প্রোগ্রামগুলি এমএসপি 430 এ ওয়াচডগ টাইমার বন্ধ করে দেয়?


11

এমএসপি ৪৩০ এর জন্য অনেকগুলি নমুনা প্রোগ্রামের প্রথম লাইনটি রয়েছে:

WDTCTL = WDTPW | WDTHOLD; // Stop watchdog timer

কেন তারা এই কাজ করে?

উত্তর:


15

ওয়াচডগ টাইমার (ডাব্লুডিটি) ডিফল্টরূপে চালু থাকে, আরও জটিল অ্যাপ্লিকেশন ব্যবহার করা একটি দরকারী জিনিস, তবে প্রচুর নতুন লোককে ট্রিপ করে। তারা প্রায়শই তাদের কোডে ডাব্লুডিটি পরিষেবা দেয় না বা ডাব্লুডিটি ইভেন্টটি পরিচালনা করতে একটি বিঘ্নিত পরিষেবা রুটিন (আইএসআর) অন্তর্ভুক্ত করে, তাই, যখন তাদের চিপটি পুনরায় সেট করা চালিয়ে যায় তখন তারা খুব হতাশ হয়। অতিরিক্তভাবে, স্যাম্পল প্রোগ্রামগুলি বেশিরভাগ অংশে ডাব্লুডিটি প্রদর্শনের চেষ্টা করছে না যাতে এটি বন্ধ রয়েছে।

সম্পাদনা করুন: ওয়াচডগ টাইমারটির নাম দেওয়া যেতে পারে "মৃত ব্যক্তির স্যুইচ"। এর ডিফল্ট আচরণটি হ'ল মাইক্রোকন্ট্রোলারটিকে রিসেট করা যদি না ফার্মওয়্যার পর্যায়ক্রমে এটি জানতে দেয় যে সবকিছু ঠিকঠাক চলছে। এটি "কুকুরকে খাওয়ানো" বা "কুকুরটিকে লাথি মারা" হিসাবে পরিচিত। এইভাবে, যদি আপনার ফার্মওয়্যারটি কোনও লুপে আটকে যায় বা অন্যথায় প্রত্যাশা অনুযায়ী কাজ করা বন্ধ করে দেয়, প্রহরীদাগকে খাওয়ানো হয় না এবং চিপটি পুনরায় সেট করা হবে (আশা করা যায় একটি নতুন, কার্যক্ষম অবস্থায়)।

আপনি ডাব্লুডিটি অন্যান্য কার্য সম্পাদন করতে পর্যায়ক্রমে বাধা হিসাবে ব্যবহার করতে পারেন, আপনি যা কল্পনা করতে পারেন। আপনাকে কেবল প্রাসঙ্গিক আইএসআর লিখতে হবে।


+1 ধন্যবাদ, যদিও আমি এবং অন্যান্য পাঠকরা এটি সন্ধান করতে পারেন তবে ডাব্লুডিটি কেন চিপটি পুনরায় সেট করে তার জন্য একটি সংক্ষিপ্ত যুক্তি জানতে পেরে ভাল লাগবে। (যদিও এটি যুক্ত করার বিষয়ে চিন্তা করবেন না, আপনার উত্তরটি যেমনটি ঠিক তেমন গ্রহণযোগ্যভাবে যথেষ্ট (অন্যান্য সম্ভাব্য উত্তরের জন্য আরও কয়েক ঘন্টা অপেক্ষা করার পরে))
নেক্রোমেন্সার

আমি মনে করি যে প্রশ্নটিতে আমার উল্লেখ করা উচিত ছিল যে আমি একজন নিখুঁত নবাগত, যার প্রহরীদাগ টাইমার কী তাও তার কোনও ধারণা নেই :)
নেক্রোমেন্সার

2
@ এনক্রোমেন্সার আহা, কোনও উদ্বেগ নেই, আমি প্রাসঙ্গিক তথ্য যুক্ত করেছি।
স্যামুয়েল

2
স্যামুয়েল- প্রায় সব ক্ষেত্রেই আপনার ডাব্লুডিটি পুনরায় সেট করতে কোনও আইএসআর ব্যবহার করা উচিত নয়। এটি প্রায় সবসময়ই ভুল কাজ। প্রোগ্রামের অন্যান্য অংশগুলি লা-লা জমিতে বন্ধ থাকাকালীন বাধাগুলি আনন্দের সাথে চালিয়ে যেতে পারে। এটি মাঝে মাঝে সম্ভব / প্রয়োজনীয় (আইএসআর এবং ফার্মওয়্যারের অন্যান্য অংশগুলির মধ্যে যোগাযোগের সাথে কার্যকরভাবে ডাব্লুডিটি-র একটি দ্বিতীয় স্তর নির্ধারণ করে) তবে প্রথম দৃষ্টিভঙ্গি হিসাবে কোনও নবজাতকের পরামর্শ দেওয়া উচিত নয়।
স্পিহ্রো পেফানি

9

লোকজন দুর্ঘটনাক্রমে ডাব্লুডিটি ট্রিপ করা সম্পর্কে শমূয়েলের বক্তব্য ছাড়াও, এটি প্রাথমিকভাবে অক্ষম করার জন্য আরও একটি গুরুত্বপূর্ণ কারণ রয়েছে।

এমনকি যদি আপনার অ্যাপ্লিকেশনটি সাধারণত টাইমারটিকে সঠিকভাবে পুনরায় সেট করতে সক্ষম হয় তবে এটি দুটি কারণে শুরুর কোডের সময় করতে সক্ষম নাও হতে পারে:

  • সূচনাতে একক ডাব্লুডিটি টিকের চেয়ে বেশি সময় লাগতে পারে তবে ব্যাহত করতে অক্ষম হওয়া প্রয়োজন। এর অর্থ হ'ল যদি আপনি টাইমারটি পুনরায় সেট করতে একটি টাইমার আইএসআর নির্ভর করেন, বলুন, আপনি অসীম বুট লুপে যেতে পারেন।
  • আপনি অগত্যা সমস্ত এমসিইউতে টাইমার নিবন্ধের অবস্থা জানেন না (যেমন পরবর্তী টিকটি প্রত্যাশার চেয়ে অনেক দ্রুত হতে পারে, কারণ নিবন্ধটি 0 থেকে শুরু নাও হতে পারে)।

ফলস্বরূপ, আপনি কখনই সক্ষম না করলেও , ডাব্লুডিটিটিকে আপনার প্রথম কাজ হিসাবে অক্ষম করা ভাল অনুশীলন ।

আপনি যদি এটি ব্যবহার করতে চান তবে আপনার সূচনা কোডের শেষ পদক্ষেপ হিসাবে আপনি বিঘ্নগুলি চালু করার আগে অবিলম্বে এটি পুনরায় সক্ষম করতে পারেন।


+1 উত্তরে যুক্ত করার জন্য আপনাকে ধন্যবাদ। আমি আবিষ্কার করেছি যে আপনি int _system_pre_init(void)ফাংশনটি ব্যবহার করে আরম্ভের আগে এটি অক্ষম করতে পারবেন , যা আগে সম্পাদন করেmain
নেক্রোমেন্সার
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.