কোনও মাইক্রোকন্ট্রোলারকে অপ্রত্যাশিতভাবে পুনরায় সেট করার কারণ কি হতে পারে?


26

একটি মাইক্রোপ্রসেসর-নিয়ন্ত্রিত সিস্টেমে বিশেষত বিরক্তিকর বাগ হ'ল মাইক্রোপ্রসেসরের অপ্রত্যাশিতভাবে পুনরায় সেট করার জন্য। এই জাতীয় সমস্যার ডিবাগ করার জন্য একটি গুরুত্বপূর্ণ সরঞ্জাম হ'ল সম্ভাব্য কারণগুলির একটি তালিকা। কোনও মাইক্রোকন্ট্রোলারকে অপ্রত্যাশিতভাবে পুনরায় সেট করার কারণ কি হতে পারে?


1
এখানে কয়েকটি উত্তর সহায়ক হতে পারে: ইলেক্ট্রনিক্স.সটাকেক্সচেঞ্জ / প্রশ্নগুলি / 30430/… আপনি কোন ধরণের মাইক্রোকন্ট্রোলার ব্যবহার করছেন?
জন এল

আমি সাধারণত dsPIC ব্যবহার করি। তবে আমি এখনই বিশেষ কিছু ডিবাগ করার চেষ্টা করছি না, কেবল সম্ভাব্য সমস্যার একটি রেফারেন্স তালিকা সংকলন করছি।
স্টিফেন কলিংস

2
এটা কি হোমওয়ার্কের প্রশ্ন?
old_timer

1
@ বাসিন্দা সম্ভবত কোথাও কারও জন্য, তবে আমার বা আমার কোনও শিক্ষার্থীর পক্ষে নয়।
স্টিফেন কলিংস

1
@ ভোরাক এরকম একটি অবশ্যই পড়তে হবে যে অ্যাটেল URL টি নির্ভরযোগ্য রাখার প্রতিশ্রুতি দিতে পারে না।
কাজ

উত্তর:


51

PIC এবং dsPIC চিপগুলিতে, আমি অপ্রত্যাশিত পুনরায় সেট করার নিম্নলিখিত কারণগুলি পর্যবেক্ষণ করেছি।

হার্ডওয়্যার:

  • রিসেট পিন চালিত কম বা ভাসমান। প্রথমে স্পষ্ট জিনিস পরীক্ষা করুন!
  • রিসেট পিনে ইএসডি কাপলিং। সম্পূর্ণ অপ্রাসঙ্গিক সরঞ্জাম একই ডেস্কে চালু হয়ে গেলে আমি এটি ঘটতে দেখেছি। রিসেট পিনে যথেষ্ট পরিমাণ ক্যাপাসিটেন্স রয়েছে কিনা তা নিশ্চিত করুন, সম্ভবত 1 ইউএফের বেশি।
  • প্রসেসরের অন্যান্য পিনগুলিতে ইএসডি কাপলিং। বিশেষত স্কোপ প্রোবগুলি অ্যান্টেনা হিসাবে কাজ করতে পারে, চিপের মধ্যে দম্পতি গোলমাল করে এবং অদ্ভুত পুনরায় সেট করতে পারে। আমি "অবৈধ অপকোড" রিসেট কোডের রিপোর্ট শুনেছি।
  • খারাপ সোল্ডার যৌথ / অন্তর্বর্তী সেতু। প্রসেসরের উপর বা বোর্ডে অন্য কোথাও কোনও পাওয়ার রেল হারাতে বা শর্ট করা যেতে পারে।
  • পাওয়ার রেল গতি / শব্দ। ক্ষতিগ্রস্থ নিয়ন্ত্রক বা প্রবাহের সরবরাহে ডুব দেওয়া সহ যেকোন বাহ্যিক সমস্যার কারণে হতে পারে। প্রসেসরের খাওয়ানো পাওয়ার রেলগুলি স্থিতিশীল কিনা তা নিশ্চিত করুন। কোথাও আরও ক্যাপ লাগতে পারে, সম্ভবত প্রসেসরে সরাসরি ডুপলিং ক্যাপ লাগতে পারে।
  • কিছু মাইক্রোকন্ট্রোলারগুলির একটি ভিসিপ পিন থাকে, যা অবশ্যই ভিডির সাথে সংযুক্ত হওয়া উচিত নয় এবং এর নিজস্ব ক্যাপাসিটারটি সাধারণ হতে হবে। এই পিনটি যথাযথভাবে সংযোগ করতে ব্যর্থ হওয়ার কারণে অপ্রত্যাশিত ফলাফল হতে পারে।
  • কোনও নির্দিষ্ট সীমা ছাড়িয়ে অ্যানালগ ইনপুট চালনা করা রিসেটের কারণ হয়ে থাকে যা ব্রাউনআউটের মতো আরসিএনে রিপোর্ট করে। ডিজিটাল ইনপুটগুলির ক্ষেত্রেও এটি একই হতে পারে।
  • কাছাকাছি পাওয়ার কনভার্টারে খুব উচ্চ ডিভি / ডিটি ব্রাউনআউট রিসেটের কারণ হতে পারে। ( এই প্রশ্নটি দেখুন )) আমি এটি দুটি ক্ষেত্রে দেখেছি এবং একটিতে আমি এটি ক্যাপাসিটিভ কাপলিংয়ে ট্র্যাক করতে সক্ষম হয়েছি। একটি আইজিবিটি 100-200 অ্যাম্পস স্যুইচ করছিল, এবং কিছুটা ফিডব্যাক সার্কিটগুলি একটি 3.3V প্রসেসরের 2V থেকে 8V এর উপরে চলে যাচ্ছিল কয়েকটি মাইক্রোসেকেন্ডে শব্দ শুনতে পেল। সেই প্রতিক্রিয়া রেলটিতে ফিল্টার ক্যাপ বাড়ানো পুনরায় সেটগুলি বন্ধ করে দিয়েছে। যে কেউ ট্রানজিস্টর জুড়ে একটি ডিভি / ডিটি ফিল্টার যুক্ত করার অনুরূপ প্রভাব ফেলতে পারে তা ভাবতে পারেন।

সফটওয়্যার:

  • সময় নির্ণায়ক পাহরাদার. EEPROM লেখার মতো, বিশেষত আপনার কোডের শাখাগুলিতে যে ওয়াচডগ টাইমারটি যথেষ্ট পরিমাণে সাফ হয়ে গেছে তা নিশ্চিত করুন। সমস্যাটি দূরে যায় কিনা তা দেখার জন্য ওয়াচডগটি অক্ষম করে এর জন্য পরীক্ষা করুন।
  • ভাগ-বাই-শূন্য। আপনি যদি আপনার কোডটিতে কোনও বিভাজন অপারেশন করছেন, নিশ্চিত করুন যে বিভাজকটি কখনই শূন্যের সমান হতে পারে না। বিভাগের আগে একটি বাউন্ডস চেক যুক্ত করুন। ভুলে যাবেন না এটি মডুলো অপারেশনেও প্রযোজ্য ।
  • স্ট্যাক ওভারফ্লো অনেকগুলি নেস্টেড ফাংশন কলগুলি স্ট্যাকের জন্য সিস্টেমকে গতিশীল মেমরির বাইরে চলে যেতে পারে, যা কোড এক্সিকিউশনে অস্বাভাবিক পয়েন্টগুলিতে ক্র্যাশ হতে পারে।
  • স্ট্যাক আন্ডারফ্লো আপনি যদি এসেম্বলারের প্রোগ্রামিং করে থাকেন তবে আপনি দুর্ঘটনাক্রমে আপনার কল আহ্বানের চেয়ে বেশি রিটার্নি কার্যকর করতে পারেন।
  • অস্তিত্বহীন বাধা রুটিন। যদি কোনও বাধা সক্ষম করা থাকে তবে কোনও বিঘ্নিত রুটিন সংজ্ঞায়িত না করা হয়, তবে প্রসেসর পুনরায় সেট করতে পারে।
  • অস্তিত্বহীন ফাঁদ রুটিন। একটি বিঘ্নিত রুটিনের মতো, তবে আলাদাভাবে আমি এটি আলাদাভাবে তালিকাভুক্ত করছি। আমি dsPIC 30F4013 ব্যবহার করে দুটি পৃথক প্রকল্প দেখেছি যা এলোমেলোভাবে পুনরায় সেট হয়ে যায় এবং কারণটি এমন একটি ফাঁদে পড়েছিল যা বলা হয়েছিল তবে অপরিজ্ঞাত ছিল। অবশ্যই, এখন আপনার কাছে প্রশ্ন রয়েছে কেন প্রথমে একটি ফাঁদ বলা হয়, যা সিলিকন ত্রুটি সহ অনেকগুলি জিনিস হতে পারে। তবে সমস্ত ফাঁদ হ্যান্ডলার সংজ্ঞায়িত করা সম্ভবত অব্যক্ত রিসেটগুলি সনাক্তকরণের জন্য খুব ভাল প্রাথমিক পদক্ষেপ হওয়া উচিত।
  • ফাংশন পয়েন্টার ব্যর্থতা। যদি কোনও ফাংশন পয়েন্টার কোনও বৈধ অবস্থানের দিকে নির্দেশ না করে, পয়েন্টারটিকে ডিফারেন্স করে এবং ফাংশনটিকে নির্দেশিত কলটি পুনরায় সেট করতে পারে। এর একটি মজাদার কারণ হ'ল আমি যখন একটি কাঠামো সূচনা করছিলাম তখন NULL এর ক্রমাগত মানগুলি (একটি ফাংশন পয়েন্টারটির জন্য) এবং -1 (কোনও অন্তর্দৃষ্টির জন্য)। কমাটি টাইপড হয়ে গেছে, সুতরাং ফাংশন পয়েন্টারটি আসলে নুল -1 এ শুরু হয়েছিল। সুতরাং ধরে নিবেন না যে এটি কেবল একটি কনস্ট কারণ এটির অবশ্যই একটি বৈধ মান থাকতে হবে!
  • অবৈধ / নেতিবাচক অ্যারে সূচক। আপনি যদি প্রযোজ্য তবে উপরের এবং নীচের উভয় সীমানায় সমস্ত অ্যারে সূচকগুলিতে সীমা পরীক্ষা করিয়েছেন তা নিশ্চিত করুন ।
  • প্রোগ্রাম মেমোরিতে ডেটা অ্যারে তৈরি করা যা প্রোগ্রাম মেমোরির বৃহত্তম বিভাগের চেয়ে বড়। এটি সংকলনের ত্রুটি এমনকি ছুঁড়ে ফেলতে পারে না।
  • কোনও স্ট্রাক্টের ঠিকানাটিকে অন্য কোনও পয়েন্টারের কাছে Castালাই করা, সেই পয়েন্টারটিকে ডিফারেন্সিং করে এবং বিবৃতিতে LVALUE হিসাবে অবচয় পয়েন্টারটি ব্যবহার করা ক্রাশের কারণ হতে পারে। এই প্রশ্নটি দেখুন । সম্ভবতঃ এটি অন্যান্য অপরিজ্ঞাত আচরণের ক্ষেত্রেও প্রযোজ্য।

কিছু dsPIC- তে, আরসিওএন রেজিস্ট্রার বিটগুলি রিসেটের কারণ নির্দেশ করে stores এটি ডিবাগ করার সময় খুব সহায়ক হতে পারে।


1
@ রিসেট পিন: ভাসমান পুনরায় সেট করার জন্য একটি ভাসমান রিসেট পিন পরিচিত। প্রতিরোধকের মাধ্যমে সর্বদা এটি ভিসিতে বেঁধে রাখুন।
জিপ্পি

4
এটি একটি অবিশ্বাস্যভাবে বিস্তৃত তালিকা। আমি এভিআরগুলির সাথে আমার অভিজ্ঞতার সাথে বিশ্বাস করি যে সর্বাধিক যদি একই পরিস্থিতিতে না ঘটে তবে অপ্রত্যাশিত ফলাফল বা পুনরায় সেট করতে হবে।
এইচএল-এসডিকে

4
এসেম্ব্লার ল্যাঙ্গুয়েজ প্রোগ্রামিংয়ের জন্য আমি আরও একটি যুক্ত করতে দাও - স্ট্যাক থেকে তুলনাহীন রেজিস্টার PUSH এবং POP।
মাইকেল কারাস

2
আরও কয়েকটি: হার্ডওয়্যার অধীনে, বাদামী রিসেট। সফ্টওয়্যার অধীনে, সফ্টওয়্যার পুনরায় সেট করার নির্দেশ। এই দুটিই বেশ কয়েকটি মাইক্রোকন্ট্রোলারে উপলভ্য।
tcrosley

2
তালিকার জন্য অন্য একটি: একটি তারের কাছে রাখা মোবাইল ফোনগুলি দুর্বল-চালিত লাইনে আশ্চর্যজনকভাবে-উল্লেখযোগ্য পরিমাণে ভোল্টেজ প্ররোচিত করতে পারে। আপনার যদি কেবল তারের মধ্য দিয়ে একটি রিসেট লাইন চলেছে (যেমন একটি বোর্ড অন্যটির রিসেটটি জোর করতে পারে), তারের নিকটে থাকা একটি মোবাইল ফোন যদি রিসেট গ্রহণ করে তবে রিসেটটি ট্রিগার করতে পারে।
সুপারক্যাট

7

রিসেট-পিনটি অবশ্যই ভোল্টেজের ওভার / আন্ডারে রিসেট সার্কিট পর্যবেক্ষণ এবং দীর্ঘ পর্যাপ্ত রিসেট সিগন্যাল তৈরি করে সঠিকভাবে চালিত হওয়া উচিত। এটি মনে রেখে একটি অনিয়ন্ত্রিত হার্ডওয়্যার রিসেটের সাথে আমার অভিজ্ঞতাগুলি পরে আসে:

  • রিসেট পিন / লাইনে লাইনগুলি স্যুইচ করা থেকে ক্রসস্টালক (তাদের সংক্ষিপ্ত করুন)
  • গ্রাউন্ড শিফট / লুপ বহিরাগত উচ্চ বর্তমান লোড চালু / বন্ধ করার কারণে ঘটে
  • ভোল্টেজ স্পাইক বিদ্যুৎ সরবরাহ দ্বারা ফিল্টার হয় না এবং যথাযথ RESET সক্রিয় করতে খুব কম
  • মাইক্রোকন্ট্রোলারের দ্বারা বাহ্যিক লোডগুলি স্যুইচ করা যা উপরের সমস্যার কারণ হতে পারে (মূলত মোটর চালু / বন্ধ, রিলে বা পুরাতন প্রদীপের মতো ইন্ডাকটিভ লোডগুলিতে (বর্তমান স্রোতে প্রবেশ করা)
  • যে কোনও মাইক্রোকন্ট্রোলার পিনের ভোল্টেজ / কারেন্ট স্পাইক (সবচেয়ে খারাপ দিকটি দোলকের দিক থেকে) রিভার্স কারেন্টের কারণ হতে পারে এবং অভ্যন্তরীণ রেজিস্টারে স্যুইচ করতে পারে (সরবরাহের লাইনে ভোল্টেজ স্পাইকের মতো)। সাধারণভাবে, যখন এক ধরণের শিল্প পরিবেশের সাথে হস্তক্ষেপ করা হয় তখন সাবধানতা প্রয়োগ করা দরকার (আরও দেখুন: http://www.ichaus.biz/wp1_mcu_interface )। আইওগুলিতে লেভেল শিফটিং, ইনপুট ফিল্টারিং এবং সফট স্যুইচিং আউটপুটগুলি বিবেচনা করা দরকার। সরবরাহের লাইনগুলি পরিষ্কার করা হার্ডওয়্যার দিকের প্রথম অগ্রাধিকার রয়েছে। তারপরে রিসেট এবং দোলক পিনগুলি, তারপরে আইও-লাইনগুলি। -mm

1
গ্রাউন্ড শিফট আমাকে বিট। আমার ক্ষেত্রে, আমার আমার সাধারণ জালের একটি বিশেষ অংশ ছিল carrying 100 এমপিএস বহন করে। মাইক্রোকন্ট্রোলারটিকে সেই ঘন ট্রেসের একপাশে উল্লেখ করা হয়েছিল, তবে মাইক্রোকন্ট্রোলার যে সার্কিটারিটি চালাচ্ছিলেন তার কিছু অংশ ট্রেসটির অপর প্রান্তে উল্লেখ করা হয়েছিল। ট্রেসটি কেবলমাত্র 3 এমওএইচএম, তবে 100 এমপিএসে এটি চালিত মাইক্রো এবং পেরিফেরিয়ালগুলির মধ্যে 300 এমভি পার্থক্য পেতে যথেষ্ট। নিয়ামক হিসাবে সেই ট্রেসটির একই প্রান্তে পেরিফেরিয়ালগুলিকে সাধারণভাবে চিহ্নিত করা হয়েছে এবং এখন সবকিছু ঠিক আছে। এই স্রোতে নোডের মতো কোনও জিনিস নেই।
স্টিফেন কলিংস

4

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


3

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


2

এটি বিরল জিনিসগুলির মধ্যে একটি যা পপ আপ হতে পারে:

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

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


আমি বুঝতে পারি নি যে এই প্রশ্নটি পুরানো এবং ইতিমধ্যে একটি উত্তর সরবরাহ করা হয়েছে। উফ।
efox29
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.