সুচিপত্র:

উচ্চ রেজোলিউশন ফ্রিকোয়েন্সি কাউন্টার: 5 টি ধাপ (ছবি সহ)
উচ্চ রেজোলিউশন ফ্রিকোয়েন্সি কাউন্টার: 5 টি ধাপ (ছবি সহ)

ভিডিও: উচ্চ রেজোলিউশন ফ্রিকোয়েন্সি কাউন্টার: 5 টি ধাপ (ছবি সহ)

ভিডিও: উচ্চ রেজোলিউশন ফ্রিকোয়েন্সি কাউন্টার: 5 টি ধাপ (ছবি সহ)
ভিডিও: বুয়েটে এ ম্যাথ না পারলে কি করব? || BUET MATH PROBLEM 2024, নভেম্বর
Anonim

এই নির্দেশযোগ্য দ্রুত এবং যুক্তিসঙ্গত নির্ভুলতার সাথে ফ্রিকোয়েন্সি পরিমাপ করতে সক্ষম একটি পারস্পরিক ফ্রিকোয়েন্সি কাউন্টার দেখায়। এটি স্ট্যান্ডার্ড উপাদান দিয়ে তৈরি এবং সপ্তাহান্তে তৈরি করা যেতে পারে (এটি আমাকে একটু বেশি সময় নিয়েছিল:-))

সম্পাদনা করুন: কোডটি এখন গিটল্যাবে উপলব্ধ:

gitlab.com/WilkoL/high-resolution-frequency-counter

ধাপ 1: ওল্ড স্কুল ফ্রিকোয়েন্সি কাউন্টিং

ওল্ড স্কুল ফ্রিকোয়েন্সি কাউন্টিং
ওল্ড স্কুল ফ্রিকোয়েন্সি কাউন্টিং
ওল্ড স্কুল ফ্রিকোয়েন্সি কাউন্টিং
ওল্ড স্কুল ফ্রিকোয়েন্সি কাউন্টিং

সিগন্যালের ফ্রিকোয়েন্সি পরিমাপ করার পুরাতন স্কুল উপায় হল একটি লজিক এন্ড-গেট ব্যবহার করা, সিগন্যালকে একটি পোর্টে পরিমাপ করা এবং অন্য পোর্টে ঠিক 1 সেকেন্ড উচ্চ সময়ের সংকেত দেওয়া এবং আউটপুট গণনা করা। GHz এর মধ্যে কয়েক kHz ভাল সংকেতের জন্য এটি বেশ ভাল কাজ করে। কিন্তু যদি আপনি ভাল রেজোলিউশনের সাথে কম ফ্রিকোয়েন্সি সংকেত পরিমাপ করতে চান? বলুন আপনি মেইন ফ্রিকোয়েন্সি পরিমাপ করতে চান (এখানে 50 Hz)। পুরনো স্কুল পদ্ধতির সাহায্যে আপনি আপনার ডিসপ্লেতে একটি ধ্রুব 50 দেখতে পাবেন যদি আপনি ভাগ্যবান হন, তবে সম্ভবত আপনি 49 থেকে 50 বা 50 থেকে 51 পর্যন্ত ডিসপ্লে সুইচ দেখতে পাবেন। রেজোলিউশন হল 1 Hz, এবং এটাই। আপনি কখনই 50.002 Hz দেখতে পাবেন না যদি না আপনি গেটের সময় 1000 সেকেন্ডে বাড়াতে ইচ্ছুক হন। একক পরিমাপের জন্য এটি 16 মিনিটেরও বেশি!

কম ফ্রিকোয়েন্সি সংকেত পরিমাপ করার একটি ভাল উপায় হল এর সময়কাল পরিমাপ করা। আবার একটি উদাহরণ হিসাবে প্রধান গ্রহণ, 20 মিলিসেকেন্ড সময়কাল আছে। একই যুক্তি এবং গেট নিন, এটি দিয়ে খাওয়ান, 10 মেগাহার্টজ (0.1 মার্কিন ডাল) বলুন এবং অন্য পোর্টে আপনার সংকেত এবং 200000 ডাল বেরিয়ে আসে, তাই সময়কাল 20000.0 ইউএস এবং এটি 50Hz এ অনুবাদ করে। যখন আপনি মাত্র 199650 ডাল পরিমাপ করেন ফ্রিকোয়েন্সি 50.087 Hz, এটি অনেক ভালো, এবং এটি মাত্র এক সেকেন্ড পরিমাপের সময়। দুর্ভাগ্যবশত এটি উচ্চ ফ্রিকোয়েন্সিগুলির সাথে ভাল কাজ করে না। উদাহরণস্বরূপ, আমরা এখন 40 kHz পরিমাপ করতে চাই। রেফারেন্স হিসাবে একই 10 মেগাহার্টজ ইনপুট ফ্রিকোয়েন্সি দিয়ে আমরা এখন মাত্র 250 ডাল পরিমাপ করি। যখন আমরা মাত্র 249 ডাল গণনা করি তখন হিসাব 40161 Hz দেয় এবং 251 দিয়ে ফলাফল 39840 Hz হয়। এটি একটি গ্রহণযোগ্য রেজোলিউশন নয়। অবশ্যই রেফারেন্স ফ্রিকোয়েন্সি বৃদ্ধি ফলাফল উন্নত কিন্তু আপনি একটি মাইক্রো নিয়ামক ব্যবহার করতে পারেন একটি সীমা আছে।

ধাপ 2: পারস্পরিক উপায়

পারস্পরিক উপায়
পারস্পরিক উপায়
পারস্পরিক উপায়
পারস্পরিক উপায়

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

যত তাড়াতাড়ি এই সংকেতটি নিম্ন থেকে উচ্চ পর্যন্ত যায়, ডি-ফ্লিপফ্লপের আউটপুটটি ডি-ইনপুটের অবস্থাকে আউটপুট (Q) এ স্থানান্তর করে। এই RISING সিগন্যালটি ইনপুট সিগন্যালের পাশাপাশি রেফারেন্স ক্লক সিগন্যাল গণনা শুরু করতে ব্যবহৃত হয়।

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

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

আবার পরবর্তী ক্লক-ইনপুটে Q আউটপুট অনুসরণ করে এবং এই RISING সিগন্যালটি মাইক্রো কন্ট্রোলারকে ট্রিগার করে, এইবার উভয় কাউন্টারের গণনা শেষ করার জন্য।

ফলাফল দুটি সংখ্যা। প্রথম সংখ্যা হল রেফারেন্স থেকে গণনা করা ডালের সংখ্যা। আমরা যেমন রেফারেন্স ফ্রিকোয়েন্সি জানি, আমরা সেই ডালগুলি গণনা করতে যে সময় নিয়েছি তাও জানি।

দ্বিতীয় সংখ্যা হল আমরা যে ইনপুট সিগন্যালটি পরিমাপ করছি তার থেকে ডালের সংখ্যা। যেহেতু আমরা এই সিগন্যালের RISING প্রান্তে ঠিক শুরু করেছি আমরা এই ইনপুট সিগন্যালের ডালের সংখ্যা সম্পর্কে খুব আত্মবিশ্বাসী।

এখন ইনপুট সিগন্যালের ফ্রিকোয়েন্সি নির্ধারণের জন্য এটি একটি গণনা মাত্র।

একটি উদাহরণ, ধরা যাক আমাদের এই সংকেত আছে এবং আমরা f- ইনপুট পরিমাপ করতে চাই। রেফারেন্স 10 মেগাহার্টজ, একটি কোয়ার্টজ স্ফটিক দোলক দ্বারা উৎপন্ন। f_input = 31.416 Hz f_reference = 10000000 Hz (10 MHz), পরিমাপের সময় প্রায়। 1 সেকেন্ড

এই সময়ে আমরা 32 ডাল গণনা করেছি। এখন, এই সংকেতটির একটি সময় লাগে 1 / 31.416 = 31830.9 ইউএস। সুতরাং 32 পিরিয়ড আমাদের 1.0185892 সেকেন্ড সময় নিয়েছে, যা মাত্র 1 সেকেন্ডের বেশি।

এই 1.0186 সেকেন্ডে আমরা রেফারেন্স সিগন্যালের 10185892 ডালও গণনা করব।

এটি আমাদের নিম্নলিখিত তথ্য দেয়: input_count = 32 reference_count = 10185892 f_reference = 10000000 Hz

ফ্রিকোয়েন্সি গণনা করার সূত্রটি হল: freq = (input_count * f_reference) / ref_count

আমাদের উদাহরণে: f-input = (32 * 10000000) / 10185892 = 31.416 Hz

এবং এটি কম ফ্রিকোয়েন্সি এবং উচ্চ ফ্রিকোয়েন্সিগুলির জন্য ভাল কাজ করে, কেবলমাত্র যখন ইনপুট সংকেত রেফারেন্স ফ্রিকোয়েন্সিটির কাছাকাছি (বা তার চেয়েও বেশি) আসে তখন পরিমাপের আদর্শ "গেটেড" পদ্ধতি ব্যবহার করা ভাল। কিন্তু তারপর আমরা কেবল ইনপুট সিগন্যালে ফ্রিকোয়েন্সি-ডিভাইডার যোগ করতে পারতাম কারণ এই পারস্পরিক পদ্ধতিতে যে কোনও ফ্রিকোয়েন্সি (আবার রেফারেন্স পর্যন্ত) এর একই রেজোলিউশন রয়েছে। সুতরাং আপনি যদি 100 kHz সরাসরি বাইরের 1000x বিভাজক দ্বারা ভাগ করেন, রেজোলিউশন একই।

ধাপ 3: হার্ডওয়্যার এবং এর পরিকল্পিত

হার্ডওয়্যার এবং এর পরিকল্পিত
হার্ডওয়্যার এবং এর পরিকল্পিত
হার্ডওয়্যার এবং এর পরিকল্পিত
হার্ডওয়্যার এবং এর পরিকল্পিত

আমি এই ধরনের ফ্রিকোয়েন্সি কাউন্টারগুলির কয়েকটি তৈরি করেছি। অনেক আগে আমি একটি ATMEGA328 (একটি Arduino হিসাবে একই নিয়ামক) দিয়ে তৈরি করেছি, পরে ST থেকে ARM মাইক্রো কন্ট্রোলার দিয়ে। সর্বশেষটি 168 MHz এ ক্লক করা STM32F407 দিয়ে তৈরি করা হয়েছিল। কিন্তু এখন আমি আশ্চর্য হয়েছি যদি আমি একটি * অনেক * ছোটটির সাথে একই কাজ করি। আমি একটি ATTINY2313 বেছে নিয়েছি, এতে মাত্র 2kbyte ফ্ল্যাশ মেমরি এবং 128 বাইট র‍্যাম আছে। আমার যে ডিসপ্লে আছে তা হল MAX7219 যার উপর 8 টি সেগমেন্ট ডিসপ্লে আছে, এই ডিসপ্লেগুলি ইবেতে মাত্র 2 ইউরোর জন্য পাওয়া যায়। একটি ATTINY2313 প্রায় 1.5 ইউরোর জন্য কেনা যেতে পারে বাকি অংশগুলি আমি ব্যবহার করেছি মাত্র এক টুকরা সেন্ট। সবচেয়ে দামি ছিল সম্ভবত প্লাস্টিকের প্রজেক্ট বক্স। পরে আমি এটিকে লিথিয়াম-আয়ন ব্যাটারিতে চালানোর সিদ্ধান্ত নিয়েছি তাই আমাকে একটি (LDO) 3.3V ভোল্টেজ স্টেবিলাইজার ব্যাটারি-চার্জিং-মডিউল এবং ব্যাটারি নিজেই যুক্ত করতে হবে। এটি কিছুটা দাম বাড়ায়, কিন্তু আমি অনুমান করি এটি 20 ইউরোরও কম সময়ে তৈরি করা যেতে পারে।

ধাপ 4: কোড

কোড
কোড
কোড
কোড

কোডটি Atmel (মাইক্রোচিপ) স্টুডিও 7 এর সাথে C তে লেখা হয়েছিল এবং একটি OLIMEX AVR_ISP (ক্লোন?) ব্যবহার করে ATTINY2313 এ প্রোগ্রাম করা হয়েছিল। যদি আপনি এখানে বর্ণনাটি অনুসরণ করতে চান তবে নীচের জিপ ফাইলে (main.c) খুলুন।

আরম্ভ

প্রথমে ATTINY2313 একটি বহিরাগত স্ফটিক ব্যবহার করার জন্য সেট করা হয়েছিল কারণ অভ্যন্তরীণ RC-oscillator কোন কিছু পরিমাপের জন্য অকেজো। আমি একটি 10 মেগাহার্টজ ক্রিস্টাল ব্যবহার করি যা আমি একটি ছোট পরিবর্তনশীল ক্যাপাসিটরের সাথে সঠিক 10 000 000 Hz ফ্রিকোয়েন্সি টিউন করি। প্রারম্ভিকতা ইনপুট এবং আউটপুটগুলিতে পোর্ট সেট করার, টাইমার সেট করা এবং বাধা এবং MAX7219 এর সূচনা সক্ষম করার যত্ন নেয়। TIMER0 একটি বাহ্যিক ঘড়ি, TIMER1 অভ্যন্তরীণ ঘড়ি এবং আইসিপির ক্রমবর্ধমান প্রান্তে কাউন্টারের মান ক্যাপচার করার জন্য সেট-আপ করা হয়েছে, D-flipflop থেকে আসছে।

আমি মূল প্রোগ্রামটি শেষ পর্যন্ত আলোচনা করব, তাই পরবর্তীতে বাধা রুটিন।

TIMER0_OVF

যেহেতু TIMER0 255 (8 বিট) পর্যন্ত গণনা করে এবং তারপর 0 তে রোল করে আমরা ওভারফ্লো সংখ্যা গণনা করতে একটি বাধা প্রয়োজন। TIMER0_OVF এটাই করে, শুধু ওভারফ্লোর সংখ্যা গণনা করুন। পরবর্তীতে এই সংখ্যাটি কাউন্টারের মূল্যের সাথে মিলিত হয়।

TIMER1_OVF

TIMER1 65536 (16 বিট) পর্যন্ত গণনা করতে পারে, তাই বাধা TIMER1_OVF ওভারফ্লোর সংখ্যাও গণনা করে। কিন্তু এটা আরো করে। এটি 152 থেকে 0 পর্যন্ত হ্রাস পায় যা প্রায় 1 সেকেন্ড সময় নেয় এবং তারপর একটি আউটপুট পিন সেট করে, যা ফ্লিপফ্লপের ডি-ইনপুটে যায়। এবং এই অন্তরায় রুটিনে শেষ কাজটি হল সময়সীমা-কাউন্টার হ্রাস করা, 765 থেকে 0 পর্যন্ত যা প্রায় 5 সেকেন্ড সময় নেয়।

TIMER1_CAPT

এটি TIMER1_CAPT বিঘ্ন যা প্রতিবার ট্রিগার হয় যখন D-flipflop ইনপুট সিগন্যালের ক্রমবর্ধমান প্রান্তে (যেমন উপরে ব্যাখ্যা করা হয়েছে) এটি একটি সংকেত পাঠায়। ক্যাপচার লজিক ক্যাপচারের মুহূর্তে TIMER1 কাউন্টারের মান সংরক্ষণের যত্ন নেয়, এটি ওভারফ্লো কাউন্টারের পাশাপাশি সংরক্ষিত হয়। দুর্ভাগ্যবশত TIMER0 এর একটি ইনপুট ক্যাপচার ফাংশন নেই তাই এখানে তার বর্তমান মান এবং ওভারফ্লো কাউন্টারের বর্তমান মূল্য পড়া হয়। একটি মেসেজ-ভেরিয়েবল তার প্রধান প্রোগ্রামের জন্য সেট করা হয়েছে যে এটি নতুন তথ্য।

MAX7219 নিয়ন্ত্রণ করার জন্য দুটি ফাংশন রয়েছে

এসপিআই

যদিও চিপে একটি ইউনিভার্সাল সিরিয়াল ইন্টারফেস (ইউএসআই) পাওয়া যায় আমি এটি ব্যবহার না করার সিদ্ধান্ত নিয়েছি। MAX7219 ডিসপ্লেটি SPI এর মাধ্যমে নিয়ন্ত্রণ করা প্রয়োজন এবং এটি USI এর মাধ্যমে সম্ভব। কিন্তু এসপিআই বিটব্যাং করা এত সহজ যে আমি ইউএসআইয়ের সাথে এটি করতে সময় নিইনি।

MAX7219

MAX7219 সেটআপ করার প্রোটোকলটিও বেশ সহজ যখন আপনি এর ম্যানুয়ালটি পড়েছেন। এটি প্রতিটি সংখ্যার জন্য একটি 16 বিট মান প্রয়োজন যা ডিজিট সংখ্যার জন্য 8 বিট (1 থেকে 8) এবং 8 সংখ্যার জন্য 8 বিট।

প্রধান-প্রোগ

শেষ কথা হল মূল প্রোগ্রামটি ব্যাখ্যা করা। এটি একটি অসীম লুপে চালায় (যখন (1)) কিন্তু আসলে আসলে কিছু করে যখন একটি বার্তা (1) বিঘ্ন রুটিন থেকে বা যখন টাইমআউট কাউন্টার শূন্যে চলে যায় (কোন ইনপুট সংকেত নেই)।

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

রেফারেন্স কাউন্ট এবং ইনপুট-ফ্রিকোয়েন্সি কাউন্ট দিতে ক্যাপচার ইন্টারাপ্টে রেজিস্টার করা নম্বর যোগ করা হয়। (আমাদের নিশ্চিত করতে হবে যে রেফারেন্স কখনই শূন্য হতে পারে না কারণ আমরা পরে এটি দ্বারা ভাগ করব)

পরবর্তী একটি প্রকৃত ফ্রিকোয়েন্সি একটি গণনা। আমি অবশ্যই একটি মাইক্রোকন্ট্রোলারে ফ্লোটিং সংখ্যা ব্যবহার করতে চাই না শুধুমাত্র 2kbytes ফ্ল্যাশ এবং শুধুমাত্র 128 বাইট র্যাম দিয়ে আমি পূর্ণসংখ্যা ব্যবহার করি। কিন্তু ফ্রিকোয়েন্সি 314.159 Hz এর মত হতে পারে, বেশ কয়েকটি দশমিকের সাথে। অতএব আমি ইনপুট-ফ্রিকোয়েন্সি শুধুমাত্র রেফারেন্স ফ্রিকোয়েন্সি দিয়ে নয় বরং গুণক দিয়েও গুণ করি, এবং তারপর দশমিক বিন্দু যেখানে যেতে হবে সেখানে একটি সংখ্যা যোগ করুন। আপনি যখন এটি করবেন তখন এই সংখ্যাগুলি খুব বড় হবে। যেমন 500 kHz ইনপুট, 10 MHz এর রেফারেন্স এবং 100 এর গুণক, এটি 5 x 10^14 দেয়, এটি সত্যিই বিশাল! তারা 32 বিট নম্বরে কোন ল্যাঙ্গার ফিট করবে না তাই আমি 64 বিট সংখ্যা ব্যবহার করি যা 1.8 x 10^19 পর্যন্ত যাবে (এটি ATTINY2313 এ ভাল কাজ করে)

এবং শেষ কাজটি হল MAX7219 ডিসপ্লেতে ফলাফল পাঠানো।

কোডটি প্রায় 1600 বাইটে সংকলিত হয়, তাই এটি ATTINY2313 এ উপলব্ধ 2048 বাইট ফ্ল্যাশে ফিট করে।

ফিউজ-রেজিস্টারগুলি এভাবে পড়তে হবে:

প্রসারিত 0xFF

উচ্চ 0xDF

কম 0xBF

ধাপ 5: নির্ভুলতা এবং যথার্থতা

সঠিকতা এবং স্পষ্টতা
সঠিকতা এবং স্পষ্টতা
সঠিকতা এবং স্পষ্টতা
সঠিকতা এবং স্পষ্টতা
সঠিকতা এবং স্পষ্টতা
সঠিকতা এবং স্পষ্টতা

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

এবং এটি বেশ ভাল কাজ করে, সর্বনিম্ন ফ্রিকোয়েন্সি আমি চেষ্টা করেছি 0.2 Hz, সর্বোচ্চ 2 MHz। এটি স্পট অন। 2 মেগাহার্টজ এর উপরে নিয়ামক বিরতি ছাড়তে শুরু করে, সত্যিই অবাক হওয়ার কিছু নেই যখন আপনি জানেন যে 2 মেগাহার্টজ ইনপুট সিগন্যালে TIMER0 প্রতি সেকেন্ডে 7800 এর বেশি বিরতি তৈরি করে। এবং ATTINY2313 কে অন্যান্য কাজও করতে হবে, TIMER1 থেকে বাধা, প্রতি সেকেন্ডে আরও 150 টি বাধা এবং অবশ্যই গণনা করে, ডিসপ্লে এবং ডি-ফ্লিপফ্লপ নিয়ন্ত্রণ করে। যখন আপনি আসল ডিভাইসটি দেখবেন তখন আপনি দেখতে পাবেন যে আমি ডিসপ্লের আটটি ডিজিটের মধ্যে মাত্র সাতটি ব্যবহার করি। আমি এটি বিভিন্ন কারণে করি।

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

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

প্রস্তাবিত: