I/O পোর্ট: মাইক্রোকন্ট্রলারের সহজ পাঠ (৩য় কিস্তি)

0
629

I-O Pins-AVR

(এই কিস্তি ও পরবর্তি কিছু কিস্তিতে শুধু AVR MCU নিয়ে বিস্তারিত আলোচনা হবে। পরবর্তি অন্য কোন কিস্তিতে PIC MCU নিয়ে আলোচনার ইচ্ছা রাখি)

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

বাস্তবিক জগতে যেমন এয়ার পোর্ট, ল্যান্ডপোর্ট, বা সী পোর্ট দিয়ে আমদানী বা রপ্তানী দুটোই সম্ভব। মাইক্রো কন্ট্রলারের পোর্টগুলি তদ্রুপ ইচ্ছামত ইনপুট (আমদানী) বা আউটপুট (রপ্তানী) করা সম্ভব। সাধারনত একগুচ্ছ পিন নিয়ে এক একটি পোর্ট তৈরী হয় (যেমন এক গুচ্ছ লেন দিয়ে ল্যান্ড পোর্ট, আরেকগুচ্ছ রানওয়ে দিয়ে এয়ারপোর্ট, বা একগুচ্ছ পল্টুন দিয়ে সী পোর্ট)।

 

যেমন কিছু AVR মাইক্রো কন্ট্রোলারে ৩২ I/O পিন আছে। এদের ৪ টি পোর্টে যেমন A, B, C, D ভাগ করা হয় প্রতিটি পোর্টের অধিনে ৮ টি I/O পিন থাকে। আবার প্রতিটি পোর্টের সাথে ৩টি রেজিষ্টার সংশিষ্ট আছে যেমনঃ

  • The DDRx Register
  • The PORTx Register
  • The PINx Register

(এখানে x কে A, B, C, D দ্বারা প্রতিস্থাপিত করলে ঐ পোর্টের রেজিষ্টার পাওয়া যায়। যেমন DDRA)

 

DDR (Data Direction Register) :

এটি দ্বারা ডাটার ডাইরেকশন বা দিক ঠিক করা হয় মানে কোন পিন ইনপুট না আউটপুট হিসাবে আচরন করবে তা নির্ধারন করা হয়। যেমন DDRA রেজিষ্টারে ০ (শুন্য) সেট করলে তা ইনপুট পিনে আর DDRB তে ১ সেট করলে তা আউটপুট পিনে পরিবর্তি করা যায়।

যেমন শাহজালাল এয়ারপোর্ট-এ ধরা যাক ৮ টি রানওয়ে আছে এর কতক রানওয়েকে ল্যান্ডিং অনলি (ইনপুট পিন) আরা কতক রানওয়েকে টেকঅফ অনলি (আউটপুট পিন) করতে হবে যাতে ব্যাস্ত এয়ারপোর্টে সংঘর্ষ এড়ানো যায়। তাই রান ওয়ের পাশে বাতি বসানো হলো যে সব রানওয়েতে বাতি নিভে থাকবে (০) সেগুলিতে কেবল ল্যান্ডিং হবে আর যেগুলিতে বাতি জ্বলবে (১) তাতে শুধু টেক অফ করা যাবে। পাইলটরা প্রতিমূহুর্তে এই ষ্টাটাস দেখে নির্ধারন করবেন কোন রানওয়েতে নামা বা উঠা যাবে। তাই

ধরা যাক সকাল ১০ টায় ষ্ট্যাটাস এমন 10110001 । তার মানে দাঁড়ায় রানওয়ে ১,৩,৪,৮ দিয়ে টেকঅফ হবে আর ২, ৫,৬,৭ দিয়ে ল্যান্ডিং হবে।

MCU এর পরিভাষায় DDR C = 10110001 করলে AVR MCU Port C এর ১,৩,৪,৮ পিন আউটপুট পিন আর ২, ৫,৬,৭ পিন ইনপুটের জন্য প্রস্তুত হবে।

Port Register:

ধরাযাক কোন মুহুর্তে এয়ারপোর্টে অবস্থিত করা প্লেন গুলির জন্য ৮ টি রানওয়েতে প্রস্তুত। ৮ রানওয়ের সাথে ৮ টি টার্মিনাল সংশ্লিষ্ট । প্লেন কোন টার্মিনাল দিয়ে থেকে যাত্রিদের প্লেনে পাঠানো হবে আর কোন টার্মিনাল দিয়ে যাত্রিদের বের করে আনা হবে তা DDR রেজিষ্টার থেকে বুঝা যাবে। ধরাযাক প্লেনটেক টেকঅফ আর ল্যান্ডিং আলাদা অফিস হ্যান্ডেল করে। এখন DDR রেজিষ্টারের অবস্থা দেখে টেকঅফ অফিস বুঝতে পারে যে কোন কোন টার্মিনালে যাত্রি পাঠানো যাবে। তাদের হাতে অপশন এই মুহূর্তে শুধু ১,৩,৪,৮ টার্মিনালে প্লেন শিডিল করা কারন DDR রেজিষ্টার তাদের শুধু ঐ টার্মিনাল টেকঅফের জন্য বরাদ্দ করেছে। এখন ঐ তাদের হাতে রেজিশষ্টারের অবস্থা এমন হবেঃ – ০ – -০ ০ ০ – । ড্যাশ (-) চিহ্নিত স্থানে তারা ইচ্ছা মত শিডিউল করতে পারবে (০ বা ১ দিয়ে)। যদি প্লেন শিডিউল করে তাহলে বিট ১ আর না করলে ০ বিট সেট করা হয়। ধরা যাক ১০ টায় DDR কতৃক অনুমুদিত সবগুলা টার্মিনালে ফ্লাইট শিডিউল করা হলো তবে তাদের রেজিষ্টারের মান যা দাড়াবেঃ ১০১১০০০১। এখন ১১ টায় ৩ নং টার্মিনালে ফ্লাইট শিডিউল নাই। তাই তাদের রেজিষ্টার হবে ১০০১০০০১।

MCU এর পরিভাষায় Port রেজিষ্টার MCU থেকে যে ডাটা গুলি বাইরে যাবে তার বিট তথ্য গুলি জমা রাখে। আমরা এই বিটগুলি পরিবর্তন করে এর আউটপুট ডিভাইসগুলি কন্ট্রোল করি।

কিছু ব্যাতিক্রমি অবস্থা চিন্তা করা যাকঃ ধরা যাক PortC এর ৮ টি পিনের সাথে ৮টি এল ই ডি বাতি কানেক্ট করা হলো এরপর PortC = 11111111 হিসাবে ম্যানিপুলেট করা হলো কিন্তু DDR = 10110001 হিসাবে সেট। তাই DDR এর মতে শুধু ১,৩,৪,৮ পিনের সাথে যুক্ত আউটপুট ডিভাস (যেমন এল ই ডি বাতি) গুলি আউটপুট বিট রিসিভ করতে পারবে। তাই শুধু ঐ এল ই ডি গুলিই জ্বলবে আর বাকি বাতিগুলি নিভে থাকবে। তার মানে সত্যিকার আউটপুট দাঁড়াবে 10110001 তার মানে DDR Register একটা মাস্ক বা ছাকনির মতো আচরন করে।

 

Pin Register:

এই রেজিষ্টার Port Register এর মতোই কিন্তু এর কাজ হচ্ছে ইনপুট ডাটাকে স্টোর করা। মানে আমাদের এয়ারপোর্টের হিসাবে আগত যাত্রীদের হ্যান্ডেল করা।

ব্যাতিক্রমি দৃষ্টান্ট আবার ব্যাবহার করা যাক, ধরাযাক কোন মূহুর্তে Port A এর ৮ টি পিনে ৮ টি ব্যাটারি যুক্ত করা হল। এর পর Pin A রেজিষ্টারকে এভাবে ম্যানিপুলেট করা হলো PinA = 11111111 । এবার আসুন আমরা DDR রেজিষ্টারের ছাকনি দিয়ে ইনপুট ডাটাকে ছাকি। ছাকনি আমাদের বলছে শুধু ২,৫,৬,৭ নং বিট ইনপূট হিসাবে ছাকনি দিয়ে প্রবেশ করবে বাকি বিট শুন্য হবে কারন বাকি বিট গুলা আউটপুট হিসাবে পরগনিত হবে। তবে ইনপুট যা হবে তা হলো 01001110

 

চিত্রে AVR MCU এর বিভিন্ন পিন দেখানো হয়েছে যেখানে PA0 – PA7, A পোর্টের পিন ও PB0 – PB7, B পোর্টের পিন ইত্যাদি।

PIC MCU তে অনুরূপ A, B, C, D, E ইত্যাদি পোর্টগ্রুপ আছে তাদের সংশ্লিষ্ট রেজিষ্টার হলো TRISx রেজিষ্টারগুলো। তবে সবগুলো পোর্টের অধিনে ৮ টি করে পিন নাও থাকতে পারে। যেমন PIC 16F877 এর PortA তে ৬ বিট বা ৬ ইনপুট/আউটপুট পিন আছে। আবার PortE তে আছে ৩ পিন।

<< ২য় কিস্তি এখানে                                            ৪র্থ কিস্তি এখানে >>

উত্তর প্রদান

আপনার মন্তব্য লিখুন
আপনার নাম লিখুন