AVR Microcontrollers উপর আউটপুট পিনের জন্য হার্ডওয়্যার এক্সওর

আপনি কি জানেন যে অনেক AVR CHIPS এর একটি টাইপ এক্সক্লুসিভ বা (এক্সওর) বিকল্প রয়েছে যখন এটি আউটপুট পিনের যুক্তি মাত্রা নিয়ে উদ্বেগ প্রকাশ করে? আপনি যদি ডেটশীটটি দেখেন (উপরের ছবিটি একটি attiny13 ডেটশীট থেকে একটি স্ক্রিনশট হয়) আপনি PIN টগল করার জন্য একটি বিভাগ পাবেন। এটি সক্রিয় করে যে যদি আপনি একটি আউটপুট হিসাবে একটি পোর্ট সেট করেন তবে সংশ্লিষ্ট পিন নিবন্ধনে যুক্তিটি লেখার একটি লজিক লেভেলগুলি টগল করবে। আপনি যদি সি তে লিখছেন তবে এটি অবহেলা করা সত্যিই সহজ, কিন্তু আমি একটি বিট শেখার উপর কাজ করছি এবং এটি খুব দরকারী বলে মনে করা হচ্ছে। বিরতি পরে পড়তে থাকুন এবং আমি আপনাকে বলব কিভাবে আমি এই তথ্যটি এবং এটি কী ভাল তা নিয়ে এসেছি।

সুতরাং প্রথম বন্ধ, আপনি সি কোডে লেখালেখি থাকলে এটি কোন ব্যাপার না তা নিয়ে কথা বলি। সাধারণত আপনি যদি কিছু আউটপুট পিন টগল করতে চান তবে আপনি কেবল একটি এক-মাছ ধরার নৌকাটি লিখবেন যা একটি বিটমাস্কের সাথে XOR এর সাথে লিখুন:

1.
Portb ^ = 0xff;

এটি সি শর্ট্যান্ডের একটি বিট (আমার টিউটোরিয়াল সিরিজ থেকে যে সম্পর্কে আরো অনেক কিছু শিখুন) যা বর্তমান আউটপুটের মাত্রাগুলিতে এক্সওর সঞ্চালন করে এবং ফলাফলটিকে পোর্টে ফিরে আসে। কিন্তু একই জিনিসটি পিএইচবি রেজিস্টার এ বিটমাস্ক লিখে হার্ডমার্কে করা যেতে পারে:

1.
Pinb = 0xff;

আপনি সত্যিই যত্ন না, কারণ এটি কোডের মাত্র এক লাইন। আসলে এটি সম্ভবত পোর্টব XOR এর সহজতর কারণ এটি ধারণাগতভাবে আরও বেশি জ্ঞান করে তোলে। কিন্তু কম্পাইলারটি আপনি PIN নিবন্ধনটিতে লিখেছেন তবে তুলনায় অনেক বেশি চক্র ব্যবহার করে শেষ হতে পারে।

আমি এই বৈশিষ্ট্য জুড়ে ঘটেছে কারণ আমি কিছু LEDs assembler শিখতে একটি উপায় হিসাবে blinking ছিল। আমি এই বিঘ্নিত পরিষেবা রুটিন মধ্যে কোড এই jumble ছিল:

1.
2.
3.
4.
LDI MYREG, 0XFF
Intreg, পোর্টব
Eor Entreg, Myreg
আউট পোর্টব, intreg

এটি একটি নিবন্ধনে একটি বিটমাস্ক লোড করে, পোর্টব থেকে আরেকটি নিবন্ধনে বর্তমান যুক্তিযুক্ত লোড, দুটি এর একটি xor সঞ্চালন করে এবং ফলাফলটি পোর্টবিতে ফিরে আসে। এই চার চক্র লাগে এবং দুই নিবন্ধক প্রয়োজন। Toggling বিট যেমন একটি মৌলিক অপারেশন আমি বিস্মিত ছিল XOR বিট সরাসরি একটি কমান্ড ছিল না তাই আমি কাছাকাছি অনুসন্ধান শুরু। আমি AVR FREAKS এ এই সংক্ষিপ্ত নিবন্ধটি জুড়ে এসেছি যা বিট টগল বৈশিষ্ট্যের মধ্যে আমাকে clued। এখন আমি আমার সমাবেশ কোড হ্রাস করতে সক্ষম হয়েছিলাম নিম্নরূপ:

1.
2.
ldi intreg2, 0xff; অস্থিটি একটি বিট মাস্ক হিসাবে intreg2 ব্যবহার করুন
পিনব, intrem2 আউট; PINB Effectivley লিখতে একটি একচেটিয়া বা পোর্টব আছে

এই একই toggling প্রভাব ফলাফল, কিন্তু মাত্র দুটি চক্র লাগে এবং শুধুমাত্র একটি নিবন্ধনের ব্যবহার প্রয়োজন।

আমি অনেক আকর্ষণীয় খুঁজে পেয়েছি যে আমি এভিআর চিপগুলি কতটুকু ব্যবহার করি তা কোন ব্যাপার না, ডেটশীটের মধ্যে অপেক্ষা করার অপেক্ষায় থাকা আশ্চর্যের অভাব নেই।

Leave a Reply

Your email address will not be published. Required fields are marked *