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

ধরেন, আপনি ঢাকা স্কুল নামক একটি স্কুলে পরেন। তাহলে সেই স্কুলে অবশ্যই কিছু সংখ্যক ক্লাস আছে এবং আপনি ক্লাস নাইনে পরেন। সেই ক্লাস নাইনেও আবার বেশ কিছু সংখ্যক ছাত্রও আছে। প্রত্যেক ছাত্রেরই আবার কতগুলো করে বই আছে। ধরেন আপনারও ৮টি বই আছে।

এখন দেখেন, স্কুলটি হল আমাদের মাইক্রোকন্ট্রোলার। কিন্তু আমাদের দেশে তো আর স্কুল একটা না তাই না? তাই আমি বলেছি ঢাকা নামক একটি স্কুল। ধরেন এটা আমাদের PIC16F877A যা একটি মাইক্রোকন্ট্রোলার। এই PIC16F877A মাইক্রোকন্ট্রোলারের ভেতরে আবার কিছু সংখ্যক ক্লাস আছে যাদের মডিউল [Module] বলা হয়। সব স্কুলে যেমন সমান সংখ্যক ক্লাস থাকে না তেমনি সব মাইক্রোকন্ট্রোলারেও সমান সংখ্যক মডিউল থাকে না। আবার বলতে গেলে এই মডিউলই হল একটি মাইক্রোকন্ট্রোলারের features (বৈশিষ্ঠ)। সকল ক্লাসের পড়া যেমন এক নয় তেমনি সকল মডিউলের কাজও কিন্তু এক না। যেহেতু আপনি ক্লাস নাইনে পরেন ধরি এই ক্লাস নাইন হল ADC Module [ADC = Analog to Digital Converter অর্থাৎ মাইক্রোকন্ট্রোলারের যে মডিউল এনালগকে মানকে ডিজিটালএ রূপান্তর করতে পারে]।

এই নাইনে কিন্তু আবার বেশ কিছু ছাত্র আছে, মডিউলে যাদের রেজিস্টার[Register] বলা হয়। একটি মডিউলেও রেজিস্টারের সংখ্যা একাধিক হতে পারে। যেমন, ADC Module এর জন্য ADCON0, ADCON1, ADRES ইত্যাদি রেজিস্টার। আবার এই প্রতিটি রেজিস্টার কিছু বিট[bit] নিয়ে গঠিত। যেমন, ADCON0 Register এর মধ্যে ADON, GO/DONE ইত্যাদি বিট।

নোটঃ এখানে ব্যবহৃত রেজিস্টার কিন্তু ইলেকট্রিক্যাল ও ইলেকট্রনিক্স সার্কিটে ব্যবহৃত রেজিস্টর নয়।

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

How Work!

যদি কারও বিশ্বাস না হয় তাহলে এখন মাইক্রোকন্ট্রোলারের একটি ডাটাশীট ওপেন করে দেখে নিন। আসলে আমি কোন কিছু বেশি দিন মনে রাখতে পারি না। তাই এভাবে বুঝে নিয়েছিলাম। আশা করি আপনারাও বুঝতে পেরেছেন।

শুধু মাত্র ডাটাশীট পড়েই আপনি জানতে পারবেন কোন পিন কিভাবে কাজ করে। এজন্য আপনার বিট, বাইট[৮ বিটে ১ বাইট], রেজিস্টার সম্পর্কে ভাল জ্ঞান থাকতে হবে। মনে রাখা ভাল, ৮-বিট মাইক্রোকন্ট্রোলারের বেশির ভাগ রেজিস্টারই ৮ বিটের হয়।

এখানে ৮-বিট মাইক্রোকন্ট্রোলার বলতে বুঝায়, যে সকল মাইক্রোকন্ট্রোলারের ইনপুট/আউটপুট[I/O] পিন গুলোর রেজিস্টারে সর্বাধিক ৮টি বিট থাকে। যেমন, PIC16F877A এর RB0-RB7, RC0-RC7 ইত্যাদি। অর্থাৎ ৮বিটের বেশি নাই। RB[PORTB] একটি রেজিস্টার এবং RB0 এই রেজিস্টারের একটি বিট।

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

PIC16F877A এর পিনআউটঃ

PIC16F877a পিন আউট

নিচে PIC16F877A এর ডাটাশীট এর কিছু অংশ হাইলাইট করে দেখানো হলঃ

High-Performance RISC CPU:

Operating speed: DC – 20 MHz clock input

DC – 200 ns instruction cycle

  • Up to 8K x 14 words of Flash Program Memory,
  • Up to 368 x 8 bytes of Data Memory (RAM),
  • Up to 256 x 8 bytes of EEPROM Data Memory.

Peripheral Features:

  • Timer0: 8-bit timer/counter with 8-bit prescaler
  • Timer1: 16-bit timer/counter with prescaler,

can be incremented during Sleep via external

crystal/clock

  • Timer2: 8-bit timer/counter with 8-bit period

register, prescaler and postscaler

  • Two Capture, Compare, PWM modules
  • – Capture is 16-bit, max. resolution is 12.5 ns
  • – Compare is 16-bit, max. resolution is 200 ns

PWM max. resolution is 10-bit

  • Synchronous Serial Port (SSP) with SPI™

(Master mode) and I2C™ (Master/Slave)

  • Universal Synchronous Asynchronous Receiver

Transmitter (USART/SCI) with 9-bit address detection

  • Parallel Slave Port (PSP) – 8 bits wide with external RD, WR and CS controls (40/44-pin only)
  • Brown-out detection circuitry for Brown-out Reset (BOR)

Analog Features:

  • 10-bit, up to 8-channel Analog-to-Digital

Converter (A/D)

  • Brown-out Reset (BOR)
  • Analog Comparator module with:

Two analog comparators

– Programmable on-chip voltage reference (VREF) module

– Programmable input multiplexing from device inputs and internal voltage reference

– Comparator outputs are externally accessible.

ডাটাশীট এ মাইক্রোকন্ট্রোলারের বিশেষ ফিচার

ডাটাশীটটি ডাউনলোড করার জন্য এখানে ক্লিক করুনঃ PIC16F877A Datasheet.

বিট, রেজিস্টার নিয়ে কিছু কথাঃ

প্রোগ্রামিং এ আমাদের মূলত বিট, রেজিস্টারই দরকার পরে। কারণ যেহেতু প্রতিটি রেজিস্টারের নামই ভিন্ন তাই মডিউলকে প্রোগ্রামিং এ দরকার পরে না। রেজিস্টারের নাম বলতেই মাইক্রোকন্ট্রোলার বুঝে যায় আপনি কোন মডিউল নিয়ে কাজ করছেন।

যেহেতু বিট বাইনারি তাই একটি বিট শুধু ০ অথবা ১ হতে পারে। যেমন ধরেন, আপনি এখন PIC16F877A এর ১৫ নং পিনটি অন করবেন তাহলে আপনাকে প্রথমে দেখতে হবে পিনটি কোন রেজিস্টারে। এটি হল RC0, অর্থাৎ PORTC রেজিস্টারের ‘0’ নং বিট। তাহলে পিনটি অন করার জন্য লিখা জেতে পারেঃ

PORTC = 0b00000001; অথবা

PORTC.F0 = 1; অথবা PORTC.B0 = 1; অথবা

RC0_bit = 1;

সব গুলোর আউটপুট একই হবে। [প্রোগ্রামিং এর সময় বিস্তারিত আলোচনা করা হবে।]

[দ্রঃ বিঃ – কোন পিন অন করার আগে অবশ্যই পিনটিকে আউটপুট করে নিতে হবে। কোন পিন ইনপুট না আউটপুট হিসেবে কাজ করবে তা নির্ধারণ করার রেজিস্টার হল TRIS Register।]

PORTC = 0b00000001; এর ক্ষেত্রে আমি সম্পূর্ণ রেজিস্টারের মধ্যে মান দিয়েছি সুতরাং মানটি হবে ৮ বিটের কারণ আমাদের PORTC ৮ বিটের একটি রেজিস্টার।

বাকি সকল ক্ষেত্রে আমি শুধু মাত্র একটি বিটে মান দিয়েছি সুতরাং মানটি হবে বাইনারি[০ অথবা ১]।

এভাবে মাইক্রোকন্ট্রোলারের সকল কিছু নিয়ন্ত্রণ করা হয় বিট এবং রেজিস্টার এর মাধ্যমে।

বিট, রেজিস্টার সম্পর্কে আরও জানতে এখানে ক্লিক করুনঃ প্রাথমিক মাইক্রোকন্ট্রোলার শিক্ষা [বিট, রেজিস্টার নিয়ে কিছু কথা]

আশা করি সকলেই বুঝতে পেরেছেন। কারও কোন প্রশ্ন জিজ্ঞাসা থাকলে কমেন্ট করুন।

আজ এই পর্যন্তই। আল্লাহ হাফেয।

পরবর্তী আকর্ষণঃ

১। আমাদের প্রথম প্রোগ্রাম – এলইডি ব্লিঙ্কিং।

উত্তর প্রদান

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