আরটিসি সম্পর্কে আমার কতবার জিজ্ঞাসা করা উচিত?


11

আমি এখনও আরটিসি ব্যবহার করি নি তাই আমি বাস্তব সময়ের ঘড়ি পড়ার "স্বাভাবিক" উপায় সম্পর্কে সম্পূর্ণ নিশ্চিত নই। এখানে কয়েকটি ভিন্ন পদ্ধতির রয়েছে যা আমি ভেবেছিলাম তবে সে সম্পর্কে কিছু পরামর্শের জন্য প্রত্যাশা রেখেছিলাম।

আমি এখন পর্যন্ত সময়টি পড়ার এবং ব্যবহার করার জন্য যেভাবে ভাবলাম তা এখানে রইল:

  1. পাওয়ারের তারিখ এবং সময় পাওয়ার জন্য এবং র‌্যামে সংরক্ষণ করুন এবং তারপরে টাইমার বিঘ্নিত ইনক্রিমেন্টের মাধ্যমে প্রতি সেকেন্ডে র‌্যামের মান মূল্যায়ন করে The
  2. একটি টাইমার বিঘ্নিত ব্যবহারের মাধ্যমে, প্রতি সেকেন্ডে আরটিসিকে জিজ্ঞাসা করুন এবং প্রাপ্ত তারিখ এবং সময়টি র‍্যামে অনুলিপি করুন। আবার কোডটি তখনই র‍্যামের মানগুলি ব্যবহার করবে যখনই তারিখ / সময় জানার দরকার পড়ে।
  3. প্রতিবার যখন সময়টি খুঁজে বের করা দরকার তখন আরটিসিকে জিজ্ঞাসা করুন এবং এর প্রতিক্রিয়াটি সরাসরি ব্যবহার করুন।

কোনটি সেরা পন্থা হবে?


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

সব খুব ভাল উত্তর আমি একটি উত্তর বাছাই করতে পারে না!
ব্যবহারকারী 9993

উত্তর:


23

আমি একটি চতুর্থ বিকল্প ব্যবহার করবে।

বেশিরভাগ আরটিসি চিপগুলিতে 1 সেকেন্ডের ডাল আউটপুট দেওয়ার বিকল্প রয়েছে। আপনার এমসিইউতে একটি বাধা সক্ষম সক্ষম ইনপুটটিতে সেই ডালটি সংযুক্ত করা উচিত।

  • আপনি আপনার প্রোগ্রামের শুরুতে একবার চিপ থেকে সময় পান, এবং সম্ভবত মাঝে মধ্যে থেকে - সম্ভবত একবারে একবারে।
  • বিঘ্নিত সিগন্যালটি তখন আপনার এমসিইউতে একটি বিঘ্নিত রুটিনকে ট্রিগার করে যাতে আপনি সময়টি এক সেকেন্ড বাড়িয়ে তোলেন।

সেই ব্যবস্থাটি আপনাকে সক্রিয়ভাবে আরটিসি না পড়ার ওভারহেড ছাড়াই আরটিসি- র দ্বিতীয়টির যথার্থতা দেয় ।


5
এই পদ্ধতির ব্যবহার করার সময়, কোন ঘড়ির প্রান্তটি ইনক্রিমেন্টের প্রতিনিধিত্ব করে তাও জেনে রাখা গুরুত্বপূর্ণ এবং সেই ঘড়ির প্রান্তের সময় যে কোনও পাঠক চলমান রয়েছে তা পরিত্যাগ করা উচিত তা নিশ্চিত করাও গুরুত্বপূর্ণ।
সুপারক্যাট 11'15

বা নিশ্চিত করুন যে পড়াটি কেবল আইএসআর দ্বারা চালিত হয়েছে - আপনি পরবর্তী আইএসআর ট্রিগার হওয়ার আগে পঠন করার জন্য একটি দ্বিতীয় ব্যবধান পান।
মাজনকো

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

... উপরের 32 বিট বা নীচের 31 প্লাস ক্লক-ইনপুট স্থিতিতে একটি অ্যালার্ম রয়েছে যা সিঙ্ক্রোনাইজেশন বিলম্ব ছাড়াই যে কোনও সময় চালু এবং বন্ধ হতে পারে এবং অ্যালার্মের সময় যে কোনও সময় লেখা যেতে পারে এমন একটি অ্যালার্ম রেজিস্টার রয়েছে have বন্ধ, শব্দার্থবিজ্ঞানের সাথে যে অ্যালার্মটি ঘটে যখন অ্যালার্ম সক্ষম হওয়ার সময় কোনও বর্ধন ঘটে । যদি কোনও চিপ যথাযথভাবে অ্যাসিঙ্ক্রোনাস ওয়েকআপগুলি গ্রহণ করতে পারে এবং সফ্টওয়্যার ডাবল-চেক করে পোলিং করে, তবে অন্য কোনও হার্ডওয়্যার সিঙ্ক্রোনাইজেশন প্রয়োজন হবে না, এবং সফ্টওয়্যারটিকে অন্যান্য ধরণের হার্ডওয়্যার সিঙ্ক্রোনাইজেশন দ্বারা সৃষ্ট সমস্যাগুলির জন্য কাজ করতে হবে না।
সুপারক্যাট

9

3 য় এবং 2 য় আরও কার্যকর।

তৃতীয় পদ্ধতিটি আমি বেশিরভাগ ক্ষেত্রেই ব্যবহার করি। এটির সুবিধাটি হ'ল র‌্যামে আরটিসি আয়না সম্পর্কে আমার চিন্তা করার দরকার নেই। এটির সম্ভাব্য ঘাটতি হ'ল সিরিয়াল বাসের মাধ্যমে আরটিসিকে জিজ্ঞাসাবাদ করা বিলম্বের পরিচয় দেয়। আপনি যদি সেকেন্ডে একবার ডেটা লিখতে থাকেন তবে এই বিলম্বটি সম্ভবত কার্যকর হবে না।

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

PS সমস্ত ক্ষেত্রে, আমি DS1307 ব্যবহার করছিলাম।


6

কিছু আরটিসি (যেমন এমসি 68 এইচসি 68 টি 1 [যা স্বীকার করা হয়েছে যে এখন প্রায় কেউই ব্যবহার করা উচিত নয়)) ধারাবাহিক প্রতিক্রিয়া জানানো থেকে যখন পাঠ করা হচ্ছে তখন তাদের অভ্যন্তরীণ গণনা বিরতি দেবে। এগুলি অবশ্যই বিরলতা কমাতে খুব কমই পড়া উচিত । তাদের কাছ থেকে একবার পড়ুন এবং তারপরে MCU এর র‍্যামে সঞ্চিত সময় মান আপডেট করতে টাইমার বিঘ্ন ব্যবহার করুন।


এ জাতীয় নকশাগুলি মনকে জাগায়। বর্ধনমূলক ফলনের এলোমেলো ডেটা চলাকালীন যেগুলি পড়ে তা চারপাশে কাজ করা সহজ সমস্যা হবে। পাঠ্য কারণ গণনা মিস করা একটি সমস্যা যা হারানো গণনা গ্রহণ না করে কাজ করা যায় না।
সুপারক্যাট

2
স্পষ্টতই ডাবল বাফারিং এমন কিছু যা কিছু লোক তাদের চিপগুলি ডিজাইন করার সময় ভাবেন না।
ইগনাসিও ওয়াজকেজ-আব্রামস

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

5

আমি ধরে নিতে চলেছি যে আরটিসি হয় তার নিজস্ব স্ফটিক সহ একটি পৃথক চিপ, বা আপনার মাইক্রোকন্ট্রোলারের সাথে একীভূত একটি মডিউল যা মূল ঘড়ির তুলনায় আবার একটি পৃথক সময় উত্স (যেমন একটি 32 কেএইচজেড স্ফটিক) রয়েছে। আর আরটিসির সময় উত্স মাইক্রোকন্ট্রোলারের জন্য একের চেয়ে বেশি সঠিক।

আরটিসি পড়তে আপনার কতবার প্রয়োজন তা নির্ধারণ করার জন্য আপনার প্রধান ঘড়িতে সর্বোচ্চ ত্রুটিটি কী হতে পারে তা নির্ধারণ করতে হবে। উদাহরণস্বরূপ, যদি প্রধান স্ফটিকটি 20 পিপিএম-এ নির্দিষ্ট করা থাকে তবে এটি 0.002% এর সমান। সুতরাং কেবল প্রধান ঘড়ির উত্সের ভিত্তিতে একটি ঘড়ি 0.00002 * 3600 * 24 = 1.728 সেকেন্ডে বয়ে যেতে পারে।

সুতরাং আপনি যদি দিনে কেবল দুবার আরটিসি পড়ে থাকেন, এবং টাইমার বিঘ্নিত ব্যবহার করে সেকেন্ডে একবারে সময় বাড়িয়ে তোলেন, আপনি আর কখনও এক সেকেন্ডের চেয়ে বেশি দূরে থাকবেন না - আরটিসি-র তুলনায় কখনও কখনও সেকেন্ডের চেয়ে বেশি দূরে থাকবেন না।

যদি, আমি আগে ধরেই নিয়েছি, আপনার আরটিসি হয় হয় নিজস্ব স্ফটিক সহ একটি পৃথক চিপ, বা আপনার মাইক্রোকন্ট্রোলারের সাথে সংহত একটি মডিউল, এর অর্থ এটি সঠিক নয়। আরটিসি-তে একটি ত্রুটিও থাকতে পারে। উদাহরণস্বরূপ, যদি এটি 5 পিপিএম সহিষ্ণুতা সহ 32 কেএইজেডজ স্ফটিক ব্যবহার করে (যা 10 পিপিএমের তুলনায় কিছুটা ব্যয়বহুল) তবে এটি প্রতি দিন 0.43 সেকেন্ড - বা মাসে 13 সেকেন্ডে বন্ধ হতে পারে।

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

আর একটি দুর্দান্ত সময় রেফারেন্স হ'ল জিপিএস (10 এনএস যথার্থতা) ব্যবহার করা হবে, যদি কারও প্রকল্পে ইতিমধ্যে জিপিএস হার্ডওয়্যার থাকে।

পরিবর্তে যদি আপনার আরটিসি সময়গুলি বাইরের উত্স থেকে আসে যেমন সেলুলার নেটওয়ার্ক সময় (এটি + সিসিএলকে? কল), বা এনটিপি ব্যবহার করে কোনও নেটওয়ার্ক টাইম সার্ভার, তবে আপনি আরটিসি মানটি ব্যবহার করতে পারেন যেহেতু "টিউন" করার কিছুই থাকবে না ।

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