Jfpoil ব্যাখ্যার স্বীকৃত উত্তরটি খুব ভালভাবে লিখিত, পুরোপুরি বৈধ এবং 99% ক্ষেত্রে আমি ঠিক সেভাবে করব যা তিনি ব্যাখ্যা করেছেন। তার সমাধানগুলি আপনার সংজ্ঞায়িত পরামিতিগুলির মধ্যে ভাল, সুতরাং তাদের খুব ভাল কাজ করা উচিত। তবে " খুব ভাল " এর চেয়ে ভাল আর কী ? পরিপূর্ণতা! সর্বোপরি, প্রশ্নটি একটি সঠিক মান উত্পন্ন করার বিষয়ে। যেমনটি বলা হয়েছে যথেষ্ট ক্ষেত্রে বেশিরভাগ ক্ষেত্রে ভাল (তর্কযোগ্যভাবে সমস্ত), এবং এমনকি যখন 1 সেকেন্ডের 1 সেকেন্ড হওয়া দরকার তখন একটি ঘড়ি হিসাবে কিছু কাজ করার পরেও আপনাকে উত্তরাধিকার সূত্রে প্রাপ্ত অংশগুলির অসম্পূর্ণতা ভোগ করতে হবে।
আমি যা পরামর্শ দেব তা সবসময় সম্ভব হয় না। কিছু ক্ষেত্রে, এটি সম্ভব, তবে এই ক্ষেত্রেটির চেয়ে অনেক বেশি ঝামেলা ও প্রচেষ্টা সহ। এটি কি কেস-কেস-কেস ভিত্তিতে নির্ভর করে? আমার লক্ষ্যটি বেশিরভাগ ক্ষেত্রে ভবিষ্যতের রেফারেন্সের বিকল্প দেখানো যা কিছুটা সীমাবদ্ধতার ক্ষেত্রে ভাল। ইলেক্ট্রনিক্সে বিস্তৃত অভিজ্ঞতা নেই বলে মনে করে এই নবাগত আরডুইনো ব্যবহারকারীদের নিয়ে এটি লেখা হয়েছে।
আরও উন্নত ব্যক্তিদের জন্য এটি সম্ভবত খুব ভার্জোজ এবং বোবা হয়ে দেখাবে। তবে আমি বিশ্বাস করি যে, একই লোকেরা সম্ভবত এটি ইতিমধ্যে জানে এবং এই উত্তরটির প্রয়োজন নেই। এটি প্রতিটি মাইক্রোকন্ট্রোলার এবং প্রতিটি নির্মাতা এবং আর্কিটেকচারের ক্ষেত্রেও প্রযোজ্য। তবে অন্যান্য মাইক্রোকন্ট্রোলারদের জন্য আপনাকে সঠিক রেজিস্ট্রার এবং প্রেসকেল নাম এবং মানগুলি খুঁজে পেতে সঠিক তথ্যপত্রিকার সাথে পরামর্শ করতে হবে।
আপনার ক্ষেত্রে, আপনার একটি নির্দিষ্ট ফ্রিকোয়েন্সি এবং এটি সম্পর্কে দুর্দান্ত জিনিসটি প্রয়োজন, হ'ল 56 কেএইচজেড আসলে খুব সহজেই অর্জন করা যায় (অংশগুলির ব্যবহারিক অপূর্ণতা গণনা করা হয় না)। সুতরাং এটি একটি নিখুঁত উদাহরণ কেস।
সিগন্যাল তৈরি করা মাইক্রোকন্ট্রোলারের টাইমার এবং ঘড়ির উত্সের উপর নির্ভর করে, যেমন জেফপোইলিয়েটার দ্বারা ভাল ব্যাখ্যা করা হয়েছে। তার উত্তরটি কেবলমাত্র একটি দৃষ্টিকোণের সমস্যার সাথে সম্পর্কিত এবং এটি টাইমারদের সাথে ম্লান। তবে আপনি ঘড়ির উত্সটি খুব ভাল করতে পারেন, বা সিনারি এবং দুর্দান্ত ফলাফলগুলির জন্য আরও ভাল। পরিবেশের পরামিতিগুলি পরিবর্তন করে, এক্ষেত্রে সিস্টেম হ্যাক করা এবং ঘড়ির উত্সকে প্রতিস্থাপন করে আমরা অনেক বেশি, আরও সহজলভ্যতা এবং সরলতার সাথে একটি নির্দিষ্ট সমস্যা মোকাবিলা করতে পারি।
প্রথমে মনে করিয়ে দেওয়ার জন্য, পিনের স্থিতি টগল করার কারণে আপনাকে সংকেত ফ্রিকোয়েন্সি থেকে দু'বার বেশি আইএসআর কার্যকর করতে হবে। এটি প্রতি সেকেন্ডে 112,000 বার। ইতিমধ্যে উল্লিখিত হিসাবে 56,000 এবং 16,000,000 খুব সুন্দরভাবে জুড়ে না। আমাদের সিগন্যাল ফ্রিকোয়েন্সি বা কৌশল ফ্রিকোয়েন্সি পরিবর্তন করতে হবে। চলুন এখনই একটি অপরিবর্তনীয় সিগন্যাল ফ্রিকোয়েন্সি নিয়ে ডিল করি এবং আরও ভাল ঘড়ির গতি সন্ধান করি।
আপনি কেবল জিরো যুক্ত করেন এবং এই ধরণের গণিত বেশিরভাগ লোকের পক্ষে সহজ, কারণ 56 কেজি হার্জ (বা 112 কেজি হার্জ) এর চেয়ে বেশি আকারের কিছু ক্রমযুক্ত একটি ঘড়ি চয়ন করা সবচেয়ে সহজ হবে। দুর্ভাগ্যক্রমে এই বিশ্বের প্রতিটি কিছুর সাথে কোনও না কোনও সমঝোতা। প্রতিটি মান কাজ করবে না।
প্রথম উদাহরণটি খুব কম কৌশলের জেনারেটরের গতি নিয়ে।
আপনি যদি ৫,000,০০০ হার্জেড ঘড়ি চয়ন করেন তবে আপনি কিছু করতে পারবেন না কারণ আপনার প্রতিটি চক্রকে আইএসআর কল করতে হবে এবং অন্য কিছু করতে পারবেন না। এটি একেবারে অকেজো। আপনি যদি 10 গুণ দ্রুত গতি (560 কেএইচজেড) চয়ন করেন তবে আপনার কাজটি করার জন্য টাইমারটির সর্বাধিক মান পর্যন্ত পৌঁছানোর জন্য আপনার কাছে 9 (10 চক্র থাকবে - একটি আইএসআর ফাংশন কল করার জন্য একটি চক্র) মাইক্রোকন্ট্রোলার চক্র আপনার কাজটি করতে পারে এবং এটি যথেষ্ট সম্ভব নয়। আপনার কেবল প্রায়শই আরও বেশি গণনার শক্তি প্রয়োজন।
আপনি যদি অন্যদিকে খুব দুর্দান্ত মান চয়ন করেন তবে 56 মেগাহার্টজ মাইক্রোকন্ট্রোলার কেবল এটির সাথে কাজ করতে পারে না। এটা উপায় খুব দ্রুত। সুতরাং, কেবলমাত্র দোকানের সর্বাধিক মান চয়ন করা এটি কোনও কাটবে না।
অরিজিনাল আরডুইনো ইউনো আর 3 এর স্টক ঘড়ি 16 মেগাহার্টজ, তাই কোনও কাজের গ্যারান্টিযুক্ত ধীর গতির কিছু anything পরবর্তী মানটি 56 এর চেয়ে বড় এবং 16 মেগাহার্জ এর চেয়ে কম মাত্রার অর্ডার যা 5.6 মেগাহার্টজ। এটি প্রতি 50 টি চক্রকে আইএসআর কল করতে সক্ষম করবে এবং সঠিক 112,000 Hz টাইমার ফ্রিকোয়েন্সি তৈরি করবে। এবং আপনার সিগন্যাল হ'ল 56 kHz হবে। আইএসআর কলগুলির মধ্যে আপনার প্রোগ্রামটি সম্পাদন করার জন্য আপনার কাছে 49 এমসিইউ চক্র থাকবে তবে এটি এখনও মূল ঘড়ির গতির প্রায় 1/3 অংশ is কেউ বেস হিসাবে 112 ব্যবহার করতে পারে এবং 11.2 মেগাহার্টজ ঘড়ি ব্যবহার করতে পারে এবং এটি স্টক 16 মেগাহার্টজ রেজোনেটারের প্রায় 2/3 দেবে। আইএসআর ফাংশনটি প্রতি 100 চক্রকে কল করা হবে এবং এখনও নিখুঁত 56 কেএইচজেড সংকেত তৈরি করে।
তবে এই মানগুলির সাথে দুটি বড় সমস্যা বিদ্যমান।
প্রথম সমস্যাটি গুরুতরভাবে আপনার প্রয়োজনের উপর নির্ভর করে: আপনি সন্ধানের সহজ রেজিস্ট্রার মান (ওসিআর আইরিক ) ব্যবহার করে সঠিক সংকেত ফ্রিকোয়েন্সি পেতে আপনার সর্বাধিক গণনা শক্তি প্রায় 1/3 (11.2 মেগাহার্টজ সহ) ত্যাগ করেন । আপনি এটি ভাল হতে পারে বা আপনি নাও করতে পারেন।
দ্বিতীয় সমস্যাটি হ'ল হার্ড স্টপ্পার : মানগুলি পাওয়া খুব সহজ তবে খুব সহজেই এগুলি উত্পাদিত ঘড়ির উত্স হিসাবে উপস্থিত থাকে না। এটি ফার্নেলের রেজোনেটর ওয়েব পৃষ্ঠা যা কেবলমাত্র 5.6 মেগাহার্টজ এবং 11.2 মেগাহার্টজ উভয়েরই অভাব রয়েছে।
এটিকে রোধ করার জন্য আমরা উপলভ্য অনুরণকগুলির মানগুলি দেখতে পারি এবং ঠিক তেমন পছন্দসই মানগুলি তৈরি করতে ব্যবহার করা যেতে পারে এমন অন্য কিছু খুঁজে পেতে পারি। যদি আমরা 56 দ্বারা 4 বিভক্ত করি আমরা 14 পাই এবং ভাগ্যক্রমে 14 মেগাহার্টজ প্রতিধ্বনি রয়েছে। এটি আমাদেরকে অনেক বেশি গতি এবং আরও শক্তি এবং সমানভাবে নিবন্ধের মান সন্ধান করতে সহায়তা করে। প্রতি সেকেন্ডে আইএসআর 112,000 বার কল করতে আমাদের ওসিআর রেজিস্ট্রারে দশমিক 124 বা হেক্সাডেসিমাল 0x7 সি এর মান রাখা দরকার, সুতরাং আইএসআর কল করার জন্য 124 চক্র + 1 গণনা করে আমরা আমাদের পছন্দসই নিখুঁত মান পাই।
বিশেষ দ্রষ্টব্য
- আইএসআর - বিঘ্নিত পরিষেবার রুটিন (এটি কোড যা কেবল উত্পন্ন বাধাতে কার্যকর করা হয়)
- আপনার প্রোগ্রামটি কত বড় হতে পারে তা মেমরির আকারের উপর নির্ভর করে! এটির ঘড়ির গতির সাথে কোনও সম্পর্ক নেই এবং আপনি কতবার আইএসআর কল করেন তার সাথে কোনও সম্পর্ক নেই।
যখন মাইক্রোকন্ট্রোলার প্রোগ্রাম কমান্ড দিয়ে শুরু হয় তখন একটি কাউন্টার বাড়ানো হয়। যদি কোনও বাধা উত্পন্ন হয়, আইএসআর কল করা হয় এবং এই মানটি একটি বিশেষ রেজিস্টারে সংরক্ষণ করা হয়। আইএসআর কোডটি সম্পূর্ণ হলে, প্রোগ্রামের কাউন্টারটির মান এই বিশেষ রেজিস্টার থেকে পুনরুদ্ধার করা হয় এবং প্রোগ্রামটি সেখান থেকে অবিরত থাকে যেখানে এটি কখনও বাধা হয়ে দাঁড়িয়েছিল।
আমি একটি অত্যন্ত বোবা-ডাউন উদাহরণ দেব। আপনি যদি পিউরিস্ট হন তবে আমি আপনাকে সতর্ক করে দিচ্ছি: নাক এবং চোখের রক্তপাত হতে পারে।
ভাবুন আপনাকে কোথাও থেকে কোথাও যেতে হবে। ধাপে ধাপে রুট নির্দেশাবলী হ'ল আপনার প্রধান প্রোগ্রাম এবং এর আদেশগুলি। আপনি কতটা দ্রুত হাঁটা বা চালনা করেন তা আপনার "ঘড়ির গতি" এর উপর নির্ভর করে তবে রুটের নির্দেশাবলীর উপর নয় (30 ধাপ এগিয়ে, 1 টার্ন 90 গ্রেড। বাম, 10 ধাপ এগিয়ে, 45 গ্রেড, ডান ইত্যাদি) সর্বদা একই থাকে । এখন ভাবুন কোনও ছোট বাচ্চা বা কোনও লোভী দুর্নীতিগ্রস্থ স্থানীয় রাজনীতিবিদ এখন থেকে আপনার জুতো খুলুন। এটি একটি ইভেন্ট বাধা সৃষ্টি করে। তারপরে আপনি আপনার শেষ পদক্ষেপের পরে থামেন, হাঁটু গেড়ে আবার আপনার জুতো বেঁধে রাখুন। এটি আপনার আইএসআর প্রোগ্রাম।
তারপরে আপনি যে জায়গাটি থামিয়েছেন সেখান থেকে চালিয়ে যান; আপনি শুরু থেকে শুরু করবেন না। আপনি যখন পৃথিবীতে এবং সর্বদা যত্ন ব্যতীত হাঁটাচলা করেন, প্রতি জুতায় প্রতিটি জুতো বেঁধে রাখার পরেও আপনার যত্ন নেই। আপনি যদি অলিম্পিকে ১০০ মিটার দৌড়ানোর মতো (বা ক্ষুধার্ত মাংস খাওয়া শিকারীর হাত থেকে) চালানোর মতো সময়সীমাবদ্ধতাগুলি দিয়ে থাকেন তবে আপনার জুতো থামানো এবং বেঁধে রাখার মারাত্মক পরিণতি হতে পারে। একই রকম মাইক্রোকন্ট্রোলারদের। এমনকি যদি আপনি কেবলমাত্র একটি লাইন কোড কার্যকর করেন তবে আপনার প্রোগ্রামটি চলতে থাকবে, ধীর হলেও। আপনি যদি মোটেও গতি সম্পর্কে চিন্তা না করেন তবে সমস্যা হবে না। যদি আপনাকে অন্যান্য টাইমার নির্ভরশীল ক্রিয়াগুলি ব্যবহারের মতো কিছু সময় করতে হয় তবে হস্তক্ষেপ খুব অযাচিত এবং সমস্যাযুক্ত হতে পারে।
কমই বেশি! একটি দ্রুত ঘড়ি সবসময় ভাল হয় না। ধীর ক্লকড ডিভাইসগুলি যথেষ্ট কম শক্তি ব্যবহার করে। এটি ব্যাটারি-চালিত ডিভাইসে একটি গুরুত্বপূর্ণ পয়েন্ট হতে পারে।
প্রয়োজনীয় চক্রগুলি এই সূত্রগুলি থেকে উদ্ভূত:
(ঘড়ির গতি / (প্রেসকিলারের মান * প্রয়োজনীয় আইএসআর কলিং ফ্রিকোয়েন্সি)) - 1