আমি আড়মালো AVR মাইক্রোকন্ট্রোলারের টাইমার 1 ব্যবহার করার চেষ্টা করছি, এটিআরডিনো বা এটিটিইনি 85 তে ব্যবহৃত হিসাবে এটিএমবেগা 328, দুটি ঘড়ির সংকেত যা একে অপরের মিরর চিত্র are আমি যে ফ্রিকোয়েন্সিটি উত্পন্ন করার চেষ্টা করছি সেটি হল একটি ভেরিয়েবল 1 মেগাহার্জ থেকে 2 মেগাহার্টজ বা তার বেশি যা আপনার নিয়ামকটিতে অন্য কিছু না করতে চাইলে আউটপুট পিনগুলি টগল করতে কোড ব্যবহার করে এটি করা খুব বেশি। তাই আমি সরাসরি সম্পর্কিত পিনগুলিতে টাইমার আউটপুটটি ব্যবহার করতে চাই। আমি জিসিসি টুলচেইন ব্যবহার করছি তাই আরডুইনো লাইব্রেরি বা ভাষার দ্বারা সীমাবদ্ধ নয়।
আতমেগা 328 এর টাইমার 1 এর সাথে দুটি পিন যুক্ত রয়েছে এবং এর মধ্যে আমি দুটি অভিন্ন 1MHz থেকে 2MHz সংকেত পেতে পারি। যদিও ডেটাশিটটি বলে মনে হচ্ছে আমি একটি উল্টানো তরঙ্গরূপ পেতে পারি, এটি আমাকে বিভ্রান্ত করছে। আমি টাইমার 1 এর সাথে পিডব্লিউএম সেটিংস ব্যবহার করে 1 মেগাহার্টজ-এ পৃথক শুল্ক চক্রের দুটি সংকেত পেতে সক্ষম হয়েছি, তবে উভয় সংকেত একই সাথে উচ্চতর হয়, সংক্ষিপ্তটি আগে কম যায়। এটি আমার প্রকল্পের কাজ করে না। আমার পিডাব্লুএম ডাল প্রস্থের প্রকরণের প্রয়োজনও নেই, আমার কেবল বিপরীত পর্বের দুটি অভিন্ন "ঘড়ি" টাইপ সংকেত প্রয়োজন, এগুলিই।
এটি করার জন্য আমি কারও কাছে কোড লিখতে বলছি না, টাইমারটির সাথে সম্পর্কিত দুটি পিনের মধ্যে একটির মোড় / ফ্ল্যাগগুলি আমাকে কী একটি সাধারণ ইনভার্টেড ওয়েভফর্ম দিতে হবে তা বলার জন্য আমার কেবল কারও প্রয়োজন। সম্ভব হলে আমি আউটপুটগুলির মধ্যে একটির জন্য একটি বাহ্যিক ইনভার্টিং সার্কিট ব্যবহার করা এড়াতে চাই যদি না এটি কেবল বিকল্প হয়।
এটিটিটাইনে যদি একেবারেই সম্ভব হয় তবে এটি আরও ভাল। এটিটিইনেও একটি টাইমারের সাথে 2 টি পিন যুক্ত রয়েছে, তবে এটিএমটিগার মতো একই বিকল্প রয়েছে বলে আমি নিশ্চিত নই।
আমার ইতিমধ্যে একটি 20 মেগাহার্জ স্ফটিক এবং পিসিবিতে সংযুক্ত ক্যাপাসিটার রয়েছে এবং 20 মেগাহার্টজ ঘড়ি এটিএমইগ 328 এ নির্ভরযোগ্যভাবে কাজ করছে। এটিটিআই 85 পিসিবিতে আমার কাছে একটি 8 মেগাহার্টজ স্ফটিক রয়েছে এবং এটি নির্ভরযোগ্যভাবেও কাজ করছে is
সাহায্য করুন. ধন্যবাদ.
আপডেট : উত্তর এবং মন্তব্যে এখনও অবধি কিছু অবৈধ অনুমান রয়েছে সম্ভবত আমার স্পষ্ট করা উচিত: নোট করুন যে আমার মূল পোস্টে আমি বলেছি যে আমি 8 মেগাহার্জ নয় , 20 মেগাহার্জ ঘড়ি ব্যবহার করছি এবং আমারও পিডব্লিউএমের দরকার নেই ।
একমাত্র মোড যা একটি উচ্চ পর্যায়ে আউটপুট ফ্রিকোয়েন্সি দেয় তা সিটিসি মোড বলে মনে হয় কারণ পিডব্লিউএম মোডগুলি 2 মেগাহার্টজ আউটপুট জন্য কাজ করছে না। সিটিসি মোডে টাইমার 1 আউটপুট এ, বা আউটপুট বি, উভয়ই উল্টানোর কোনও উপায় আছে?
আমার কোডটি যাচাই করার জন্য আমি এখন আমার নিজস্ব 20 মেগাহার্টজ বোর্ডের পরিবর্তে একটি স্ট্যান্ডার্ড আরডুইনো ইউনো (এটিএমইগা 328, 16 মেগাহার্টজ) এ চলেছি, এবং এটি পিন 9 এবং 10 থেকে সিটিসি মোডে একটি স্থির 2 মেগাহার্টজ ঘড়ির জন্য আমার কোড, টাইমার 1 আউটপুট পিন:
#define tick 9
#define tock 10
void setup() {
pinMode(tick, OUTPUT);
pinMode(tock, OUTPUT);
TCCR1A = _BV(COM1A0) | _BV(COM1B0) ; // activate both output pins
TCCR1B = _BV(WGM12)| 1; // set CTC mode, prescaler mode 1
// various frustrating attempts to invert OC1B failed. What do I put here?
OCR1A = 3; // set the counter max for 2 MHz
}
void loop() {
}
উভয় পিনের জন্য অসিলোস্কোপের চিহ্নগুলি অভিন্ন এবং সিঙ্কে, আমি দুটি সিগন্যালের বিপরীতটি কীভাবে পেতে পারি? ডেটাশিটে উল্টানো মোডটি সিটিসি মোডে কিছুই করে না বলে মনে হয়। আমি কি ডেটাশিটটি ভুল করে পড়ছি, বা আমি কি সর্বোপরি কম ফ্রিকোয়েন্সি এবং পিডব্লিউএম মোড ব্যবহার করতে বাধ্য হব?
আমার মূল ক্যোয়ারীতে একটি নির্দিষ্ট "অনুগ্রহ" প্রশ্ন যুক্ত করার জন্য:
সুতরাং উপরের আমার কোডটিতে আমার কী পরিবর্তন করা দরকার, এটি 16 মেগাহার্টজ ঘড়ির সর্বোচ্চ সম্ভাব্য ফ্রিকোয়েন্সি পিন 9 এবং 11-এ পুরোপুরি উল্টানো সংকেত দেওয়ার জন্য , যে 2 মেগাহার্টজ না?
আমি আপাতত একটি স্ট্যান্ডার্ড আরডুইনো ইউনিোর সাথে আটকে থাকব, যাতে আমার হোমস্পান বোর্ড দ্বারা কোনও ত্রুটি মোড চালু না হয় এবং যাতে আরডুইনো সহ যে কেউ আমার কোডটি উপরে চেষ্টা করে তা নিশ্চিত করতে পারে যে এটি আমার উল্লেখ না করে কাজ করেছে প্রয়োজন নেই!