মিলিস () পিডাব্লুএমএম পিনের সাথে টাইমার 0 এর সাথে সম্পর্কিত নয়?


9

আমি পড়েছি যে millis()ফাংশনটি পিডব্লিউএম পিনের দু'টির মতো একই টাইমার ব্যবহার করে।

আপনি যদি এই পিডাব্লুএম পিনগুলি ব্যবহার করেন তবে millis()এখনও সঠিক মানটি ফেরত দেবে?

উত্তর:


6

তারা millis()তাত্ক্ষণিক মানটি কঠোরভাবে পড়ায় বিরোধিতা করে না TCNT0যেখানে পিডাব্লুএমএম টাইমার 0 এর মাধ্যমে হার্ডওয়্যারটির কোনওটির মানকে প্রভাবিত না TCNT0করে মানগুলির সাথে মানটির তুলনা করার ক্ষমতা ব্যবহার OCR0xকরে।


millis()কেবল টাইমার 0 ওভারফ্লো গণনা ব্যবহার করে। micros()মধ্যে তাত্ক্ষণিক মান পড়া TCNT0
নিক গ্যামন

5

কেবলমাত্র @ Ignacio এর উত্তর যুক্ত করতে যা আপনার প্রশ্নের সরাসরি উত্তর দিয়েছে। আপনি যে "দ্বন্দ্ব" এর কথা Timer0বলছেন তা প্রেসক্যালারের সাথে সম্পর্কিত।

বেশিরভাগ ক্ষেত্রে, আপনি পিডব্লুএম এর সাথে কোনও সমস্যা ছাড়াই those পিনগুলি (ঘটনাক্রমে ইউএনওতে পিন 5 এবং 6) ব্যবহার করতে পারেন এবং সঠিক মানটি পড়তে পারেন millis()(পাশাপাশি প্রত্যাশিত বিলম্বও পাবেন delay)

আপনি যে সমস্যার মধ্যে পড়েছেন তা হ'ল যদি আপনি প্রেসকেলারটি পরিবর্তন করতে চান (সাধারণত পিডব্লিউএম সংকেতের ফ্রিকোয়েন্সিটি পরিবর্তন করতে চান)। আপনি যদি এটি পরিবর্তন করেন তবে আপনি সরাসরি গণনা এবং রিপোর্টিং millis()এবং দৈর্ঘ্যের উপর প্রভাব ফেলবেন delay(x)


আপনি সিরিয়াল.প্রিন্টলনের (টিসিসিআর0 এ, বিআইএন) নীচে বিটগুলি দ্বারা আপনার টাইমারের প্রেসক্যালারটি পড়তে পারেন; যদি সেগুলি '11' হয় তবে আপনার প্রেসক্যালারটি clk / 64 হয়। তারপরে আপনি মিলিস () এবং দেরি () পরিবর্তন করার জন্য ফ্যাক্টরটি গণনা করতে পারেন।
ডেভ এক্স

এটি একটি খুব ভাল পয়েন্ট এবং আমি সর্বদা এটির সংশোধন করার জন্য কেবল পরিষ্কার হয়েছি, তবে আপনি যদি সত্যিই প্রয়োজন / প্রয়োজন চান তবে কোনও কারণ নেই। অন্য বিষয়টি হ'ল আপনি যদি এটি পরিবর্তন করে থাকেন তবে আপনি ইতিমধ্যে নতুন প্রেসক্যালারকে জানেন এবং পরিবর্তে millis ()বা যে delay ()কোনও উপায়ে
মোড়ক
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.