মাইক্রোকন্ট্রোলারের বেসিক

Bangla tutorial series on Microcontroller, retreived from my previous blog d15tech.com. Dated here according to the original published date.

Posted by Shadly on January 7, 2014

বেসিক Atmega8

মাইক্রোকন্ট্রোলার প্রোগ্রামিংএ ঢুকার আগে মাইক্রোকন্ট্রোলার সম্পর্কে কিছু বেসিক জিনিস জেনে নেয়া দরকার। প্রথমেই আমরা দেখে নেই মাইক্রোকন্ট্রোলার জিনিসটা দেখতে কেমন।

আমরা খুবই কমন একটি মাইক্রোকন্ট্রোলার, Atmega8 দেখব। এটি বাজারে প্রচলিত মাইক্রোকন্ট্রোলারগুলোর মধ্যে সবচেয়ে বেশি ফিচার সম্ব্রিদ্ধ মাইক্রোকন্ট্রোলার। এতে আছে মোট ২৮ টি পিন। এতে আছে ৩ টি পোর্ট, ২৩ টি প্রোগ্রামেবল IO ( Input / Output ) লাইন, দুটি ৮ বিট এবং ১ টি ১৬ বিট টাইমার , ৬ চ্যানেল ADC (Analog to Digital Converter) এবং USART, SPI সহ আরও অনেক ফিচার যেগুলো সম্পর্কে পরবর্তীতে আলোচনা করা হবে।

Atmega8 এর ২৩ টি প্রোগ্রামেবল IO পিন তিনটি পোর্টে ভাগ করা আছে। পোর্টগুলো যথাক্রমে PORTB, PORTC, PORTD। এর মধ্যে পোর্ট বি ও ডি তে আছে ৮ টি এবং পোর্ট সি তে আছে ৭ টি পিন। পোর্ট সি এর ৭ম পিনটি হল রিসেট বার পিন যা নরমালি IO পিন হিসেবে ব্যবহার করা যায় না। তবে একেও বিশেষ পদ্ধতিতে IO পিন হিসেবে কাজ করানো যায় তবে এক্ষেত্রে মাইক্রোকন্ট্রোলারটিকে পরবর্তীতে অার প্রোগ্রাম করা যায় না।

এছাড়া ও Atmega8 এ আছে আরও কিছু বিশেষ পিন। এসব পিনের কাজকর্ম এক নজরে দেখে নেয়া যাক।

Atmega8 Pinout

AAtmega8 Pinout

VCC পিন

৭ নম্বর পিনটি হল VCC পিন। মাইক্রোকন্ট্রোলারকে চালু করার জন্য এই পিনকে অ্যাক্টিভ অর্থাৎ এতে ৫ ভোল্ট ডিসি সাপ্লাই দিতে হবে।

GND পিন

৮ নম্বর পিনটি হলো Ground পিন। একে DC Supply এর Ground ( -ve বলা ভুল, কারণ Ground এবং Negative আলাদা জিনিস ) লাগাতে হবে।

Reset

১ নম্বর পিন হল রিসেট বার পিন।বার অর্থ Active Low। অর্থাৎ এই পিনে ভোল্টেজ দিলে তা Inactive হবে এবং Ground করলে Active হয়ে যাবে এবং মাইক্রোকন্ট্রোলার রিসেট হয়ে যাবে অর্থাৎ প্রোগ্রাম আবার প্রথম থেকে শুরু হবে।

AREF

এটি Analog Reference Voltage পিন যা ADC নিয়ে কাজ করার সময় কাজে লাগবে।

AVCC

এটি Analog VCC। এটি মাইক্রোকন্ট্রোলারের ভেতরের এনালগ সার্কিটকে একটিভ করতে ব্যবহার করতে হয়।এটিও ADC নিয়ে কাজ করার সময় কাজে লাগবে।

আরও কিছু পিন

এছাড়াও আরও কিছু পিন সম্পর্কে জানতে হবে যা পরবর্তীতে কাজে লাগবে। যেমনঃ MISO (Master In Slave Out), MOSI (Master Out Slave In), SCK (SPI Bus Master clock Input), SS (SPI Bus Master Slave Select)।

পোর্টগুলোর পোস্টমর্টেম

এখন আমরা দেখব পোর্টগুলোর পোস্টমর্টেম। মাইক্রোকন্ট্রোলারের প্রত্যেকটি পোর্ট তিনটি করে রেজিস্টার নিয়ে গঠিত। রেজিস্টারগুলো হচ্ছে DDR, PORT এবং PIN। সহজ ভাষায় রেজিস্টার হল মাইক্রোকন্ট্রোলারের ভেতরের কিছু ভেরিয়েবল। এই ভেরিয়েবলগুলোতে থাকে মাইক্রোকন্ট্রোলারের গঠনগত তথ্যাবলী।

DDR

DDR এর অর্থ হল Data Direction Register। অর্থাৎ ডাটার ডিরেকশন নির্ধারণ করা হয় এই রেজিস্টার দিয়ে। পোর্ট দিয়ে ডাটা ইনপুট দেয়া হবে নাকি অাউটপুট নেয়া হবে তা নির্ধারণ করা হয় এই রেজিস্টার দিয়ে। যেহেতু মাইক্রোকন্ট্রোলার ০ আর ১ ছাড়া আর কিছুই বুঝে না তাই পোর্ট দিয়ে ডাটা ইনপুট দেয়া হবে নাকি অাউটপুট নেয়া হবে এটাও ০ অথবা ১ দিয়েই তাকে বুঝাতে হবে। এই রেজিস্টার ০ করে রাখা হলে পোর্টটি ইনপুট আর ১ করে রাখা হলে মাইক্রোকন্ট্রোলার পোর্টটিকে আউটপুট হিসেবে প্রস্তুত করবে। ধরি, আমরা Port B কে ইনপুট দিতে আর Port C থেকে আউটপুট নিতে চাই। তাহলে যা করতে হবে তা হল DDRB = 0, DDRC = 1; এভাবে ডিফাইন করে দিতে হবে। আমরা চাইলে Port গুলোর সব পিনকে একসাথে ডিফাইন না করে পিনগুলোকে আলাদা আলাদাভাবেও ইনপুট বা আউটপুট হিসেবে ডিফাইন করতে পারি। ধরি, আমি Port B এর ০,১,৫ ও ৬ এই পিনগুলোকে ইনপুট আর ২,৩,৪,৭ এই পিনগুলোকে আউটপুট হিসেবে নিতে চাই। তাহলে যা করতে হবে তা হল PORTB = 0b10011100; এভাবে ডিফাইন করতে হবে।

PORT এবং PIN

Port রেজিস্টার হল আউটপুট দেখার জানালা। আর PIN রেজিস্টার হল ইনপুট দেয়ার দরজা। আমরা তো ইনপুট বা আউটপুট ডিফাইন করে দিলাম কিন্তু আউটপুট দেখবই বা কোথা থেকে আর ইনপুট দিবই বা কোথায়? আউটপুট দেখার জন্য যে ব্যবস্থা তা হল PORT রেজিস্টার আর ইনপুট দেয়ার যে ব্যবস্থা তা আছে PIN রেজিস্টারে। এটাকেও যথারীতি ০ আর ১ দিয়ে ডিফাইন করতে হবে।