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

সমস্যাগুলি দূর করার জন্য আমাদের উপকরণটি ব্যবহার করে দেখুন





মাইক্রোকন্ট্রোলার আইসি সম্পর্কে একটি জিনিস দুর্দান্ত, এগুলি বিশ্বের প্রায় সমস্ত অঞ্চলে এবং ইলেকট্রনিক খুচরা বিক্রেতাদের কাছে উপলভ্য।

ভূমিকা

মৌলিকভাবে মাইক্রোকন্ট্রোলার ডিভাইসগুলি পার্শ্ববর্তী পরিবেশের মূল্যায়ন এবং অনুরূপ ইলেকট্রনিক্সগুলিতে জড়িত অ্যাপ্লিকেশনগুলিতে জনপ্রিয়ভাবে ব্যবহৃত হয়।



আপনি নির্দিষ্ট ডিভাইসগুলি মোটর কন্ট্রোল অ্যাপ্লিকেশনগুলিতে, এলইডি লাইটিংয়ে, বিভিন্ন ধরণের সেন্সর যেমন টিল্ট সেন্সর, অ্যাক্সিলোমিটার, বেগ মিটার, ডেটা লগার, তাপমাত্রা নিয়ন্ত্রক, কীবোর্ড ইত্যাদির জন্য ব্যবহৃত হতে পারেন devices

মাইক্রোকন্ট্রোলার সম্পর্কিত প্রাথমিক উপলব্ধি এভিআর আমেগা 32 মাইক্রোকন্ট্রোলারকে উল্লেখ করে প্রাপ্ত করা যেতে পারে যা এত উন্নত যে কখনও কখনও একে চিপের মধ্যে একটি কম্পিউটারও বলা হয়।



এই ডিভাইসটি একটি প্রোগ্রাম গঠনের জন্য কমান্ডের ধারাবাহিকগুলি সম্পাদন করার জন্য নির্ধারিত হয়েছে।

আপনি যে প্রোগ্রামটির ভাষা এখানে দেখতে পাচ্ছেন তা হ'ল সি ++। আপনি এখানে কোর্সটিতে আরও গভীরতায় এই ভাষা শিখতে পারবেন।

এটি এমসিইউতে আসে, আপনি এর সমস্ত পিনআউটগুলি নিয়ন্ত্রণ ও কনফিগার করার বিকল্প পেয়ে যাবেন।

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

একটি এমসিইউ চিপে ভিডিডি এবং ভিএসএস বাদে সমস্ত পিন যা চিপের পাওয়ার পিন, একচেটিয়া উপাধি সহ নির্ধারিত হতে পারে।

পিনআউট বিশদ

আপনি যদি উপরে থেকে চিপটি এক নজরে দেখেন তবে আপনি কিছুটা ত্রিভুজাকার খাঁজ পাবেন যা সূচিত বিন্দুটি নির্দেশ করে যেখানে পিনআউটগুলি শুরু হয় এটি গণনা করে যে চিপের # 1 পিনটি এই খাঁজের নীচে শুরু হয়।

এই পিনটি থেকে শুরু করে আপনি ডান পাশের নীচে থেকে বাম দিকে (বাম) এবং অন্য দিকে 20 টি পিনগুলি অন্যদিকে (ডানদিকে) পাবেন।

খাঁজ থেকে শুরু হওয়া প্রথম 8 পিনগুলি হ'ল পিবিও -7 যা আইসি-র সূচক পিনগুলি তৈরি করে যেহেতু এখানে সমস্ত প্রোগ্রাম সূচক শূন্যের সাথে শুরু হয়।

উপরোক্ত সিরিজের পিনআউটগুলিকে পোর্ট বি বলা হয়, অন্যদিকে পকেটের অন্যান্য অভিন্ন সেট সেট রয়েছে যা এ কে ডি তে নির্ধারিত হয় assigned

এই পোর্টগুলি INPUT নামক একটি খাওয়ানো ডেটা গ্রহণ এবং স্বীকৃত করার জন্য এবং OUTPUT নামে নির্দিষ্ট কিছু ফর্মের মধ্যে ডেটা প্রেরণ করার জন্য নির্ধারিত হতে পারে।

সাধারণ বিভাগে আসা পিনগুলির মধ্যে দুটি হ'ল (+) / (-) পিন যা ভিডিডি এবং জিএনডি নামেও অভিহিত হয়।

পোর্ট ডি (PDO-6) থেকে একটি পিন নীচের অংশে চিপের বাম দিকে অবস্থিত দেখা যেতে পারে।

PD7 যা পোর্ট ডি-এর পিন # 7 রয়েছে তা একা দাঁড়িয়ে এবং ডানদিকে পিনআউটগুলির সিরিজ শুরু করতে পারে।

এখন চিপের ডান দিক থেকে অগ্রসর হওয়া যেখানে পোর্ট ডি শেষ হয়, পোর্ট সি তার গণনাটি উপরের দিকে শুরু করে।

এগুলি এমসইউর অনেকগুলি আকর্ষণীয় পিনের সাথে সরাসরি এনালগ থেকে ডিজিটালগুলি অবদান রাখে।

এই পিনগুলি বহিরাগতভাবে কনফিগার করা অ্যানালগ সার্কিট পর্যায়ে অনেকগুলি পরামিতিগুলি সনাক্ত করার জন্য সেন্সিং ইনপুটগুলিতে বৈশিষ্ট্যযুক্ত।

উপরের পিনগুলি পোর্ট এ গঠন করে

উপরোক্ত পিনগুলি জুড়ে ডিজিটাল রূপান্তরকরণের অ্যানালগটি উদাহরণের সাহায্যে বোঝা যায় যেখানে থার্মিস্টারের মতো সাধারণ সেন্সর ব্যবহার করে এনালগের তাপমাত্রার স্তরটি পোর্ট এ পিনের একটিতে প্রয়োগ করা হয় যা এমসিইউ দ্বারা সহজেই গ্রহণযোগ্য এবং রূপান্তরকারী হয় is শূন্য থেকে 255 ডিগ্রি এফ পর্যন্ত ডিজিটাল রিডআউট উত্পাদন করতে (একটি 8-বিট চিত্র যা 10-বিট আউটপুট অর্জনের জন্য আপগ্রেড করা যেতে পারে)।

আরও একটি বৈশিষ্ট্য যা এমসিইউগুলিতে অতিরিক্তভাবে প্রত্যক্ষ করা যায় তা হ'ল উপলব্ধ প্রোগ্রামিং স্পেস বা মেমরি যা মাইক্রোকন্ট্রোলারের জন্য নির্দিষ্ট ভেরিয়েবল এবং প্রোগ্রামের জন্য স্থান নির্ধারণ করে।

এর বাইরেও, এমসিইউগুলিতে প্রাসঙ্গিক পরামিতিগুলি গণনা করার জন্য একটি অন্তর্নির্মিত ঘড়ি বরাদ্দ রয়েছে।

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

এতক্ষণে আপনি মাইক্রোকন্ট্রোলার ধারণাটি কিছুটা হলেও বুঝতে পেরেছেন এবং এর বন্দরগুলি এবং পিনগুলি সম্পর্কে।

প্রোগ্রামার থেকে মাইক্রোকন্ট্রোলারের কাছে কীভাবে এসপিআই সংযোগকারী তৈরি করবেন

এখন সময় এসেছে বিষয়টির আরও গভীরে যাওয়ার এবং প্রোগ্রামিংয়ের বিশ্বে অনুসন্ধান করার।

এটি বলার পরে, একটি প্রোগ্রাম লোড পদ্ধতিতে চিপটিতে লিপ্ত হওয়ার আগে আমাদের এসপিআই (সিরিয়াল পেরিফেরাল ইন্টারফেস) সংযোগকারীটিকে এমসইউয়ের সাথে সংহত করার জন্য একটি সঠিক উপায় খুঁজে বের করতে হবে।

তবে এর পরেও আমরা কেবল এসসিআইকে এমসইউ পিনআউটগুলিতে ফেলে দিতে পারি না, আমরা কি পারি? আমরা এসপিআই থেকে বর্ধিত তারগুলি সরাসরি ব্রেড বোর্ডের মধ্যে প্রবেশ করতে পারি না। এটি ভুল সংযোগ তৈরি করে ভুল পিনের সাথে সংযুক্ত ভুল তারের সেটিংসের কারণও হতে পারে।

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

সুতরাং উপরের সমাবেশটি এখন এসসিআই-এর এমসইউতে একটি স্নাগ এবং নির্ভরযোগ্য মধ্যবর্তী সংযোগ প্ল্যাটফর্ম তৈরি করে।

এখন পর্যন্ত সবকিছুই দুর্দান্ত বিজ্ঞাপনকে নিখুঁত দেখাচ্ছে, সুতরাং আপনার পিসি এবং এমসিইউর মধ্যে প্রয়োজনীয় প্রোগ্রামার সম্পর্কিত আয় করতে এগিয়ে চলুন।

এমন একটি হোস্ট সংস্থাগুলি থাকতে পারে যারা এই প্রোগ্রামার ইউনিটগুলি তৈরি করে এবং বিক্রি করতে পারে, সুতরাং এগুলি কেনা আপনার পক্ষে সমস্যা হওয়া উচিত নয়, যেমন অ্যাডাফ্রুট ইন্ডাস্ট্রিজ, ইউএসবি টিনিআইএসপি বা স্পার্কফুন ইত্যাদি to

এর মধ্যে কয়েকটি প্রচলিত ধরণের থেকে সম্পূর্ণ আলাদা দেখতে পারে তবে মূলত সমস্ত কিছুই অভিন্ন এবং মানক প্রোগ্রামিং নিয়মগুলি অনুসরণ করে এবং আপনার পিসি এবং এভিআর মাইক্রোকন্ট্রোলারের মধ্যে একটি ইন্টারফেস হিসাবে ব্যবহার করা যেতে পারে।

তবে একটি ভাবনার বিষয়টি নিশ্চিত করুন, আপনি যদি অন্য কোনও এমসিইউ ব্যবহার করেন এবং কোনও এভিআর এটমেগ 32 না, তবে আপনাকে সেই নির্দিষ্ট এমসিইউ চিপের জন্য উপযুক্তভাবে সামঞ্জস্যপূর্ণ প্রোগ্রামার পরীক্ষা করতে হবে।

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

আপনার পিসিটিকে মাইক্রোকন্ট্রোলার চিপের সাথে সংযুক্ত করা সত্যই প্রাথমিক এবং এটির জন্য কার্যকরীতা কতটা সহজ। তা জানতে পেরে আপনি আনন্দিত হবেন। সুতরাং আসুন এখনই বোতামটি টিপুন

উপরে বর্ণিত এসপিআই ইন্টারফেস বোর্ড তৈরি করা কঠিন নয়, এটি একটি ছোট সাধারণ উদ্দেশ্য বোর্ডে পিনের দেখানো দুটি শিরোনাম সারি জুড়ে সমস্ত সংযোগের মাধ্যমে আপনার সোল্ডার আয়রনকে কাজ করার বিষয়ে।

উপরের চিত্রটি সংযোগের বিশদটি দেখায় যে শিরোনামগুলির মধ্যে তারগুলি আন্তঃসংযোগ করার সময় আপনাকে অনুসরণ করতে হবে।

জিনিসগুলিকে আরও সহজ করে তুলতে, নীচের চিত্রটির উল্লেখ করে নিম্নলিখিত সংযোগের বিশদটি অনুসরণ করি:

উপরের বাম দিক থেকে শুরু হওয়া এসপিআই পিনটি 'মাস্টার ইন, স্লেভ আউট' (মিসো) এ যায়

কেন্দ্রের বাম দিক থেকে এসপিআই পিনটি ক্লক পিনের সাথে সংযুক্ত করে (এসসিকে)

নীচে বাম দিকে এসপিআই পিনটি রিসেটের সাথে যোগ দেয়। (আমরা নিম্নলিখিত টিউটোরিয়ালে এই পিনটি সম্পর্কে বিস্তারিতভাবে শিখব)

এমসিইউর জিএনডি পিনের সাথে নীচে ডান হুকসের সাথে সম্পর্কিত এসপিআই, জিএনডি বলতে পিনকে বোঝায় যা শূন্য সরবরাহের লাইন বা সরবরাহের নেতিবাচক (আপেক্ষিক) রেল গঠন করে।

মধ্যম ডান শিরোনাম থেকে এসপিআই শেষ করে এমসিইউর 'মাস্টার আউট, স্লেভ ইন' (এমওএসআই) পিনের সাথে লিঙ্ক আপ করে।

উপরের ডান দিকের শিরোনাম থেকে বেরিয়ে আসা এসপিআই এমসিইউর (+) দিয়ে ওয়্যার্ড হয়ে গেছে যা অবশ্যই স্পষ্টতই ভিডডি বা এমসিইউর ইতিবাচক সরবরাহের পিন।

এটাই.

বর্ণিত হিসাবে দুটি সংযোজকগুলি সংযুক্ত করুন এবং আপনার এসপিআই ইন্টারফেস বোর্ড প্রয়োজনীয় ক্রিয়াগুলির জন্য প্রস্তুত।

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

আমি আশা করি আপনি পূর্ববর্তী টিউটোরিয়ালে যেমন ব্যাখ্যা করেছেন তেমনই আপনি এসপিআই ইন্টারফেসটি তৈরি করেছেন এবং এখন আমাদের কম্পিউটার পিসি এবং এমসিইউর মধ্যে সংহত করার জন্য যে প্রোগ্রামারটিকে গ্রহণ করবে তা নিশ্চিত করার সময় এসেছে।

এমসিইউর জন্য একটি সাধারণ প্রোগ্রামিং কোড তৈরি করা

কম্পিউটারটি মাইক্রোকন্ট্রোলারের সাথে সংযুক্ত করার জন্য আমরা স্পার্কফুন থেকে পাওয়া একটি ইউএসবি টিনিআইএসপি ইউনিট নিই।

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

আসুন আপনার কম্পিউটার ওএসে ড্রাইভার ইনস্টল করার জন্য প্রয়োজনীয় প্রক্রিয়াগুলি দেখে নেওয়া যাক, আমরা এখানে 32-বিট বা 64-বিট স্পেক সহ উইন্ডোজ 7 ওএসের উদাহরণ নিই।

স্পার্কফান ডট কম খুলুন এবং 'পকেট এভিআর প্রোগ্রামার পৃষ্ঠা' এ ক্লিক করুন। লিঙ্কটি সহজেই পৃষ্ঠার মধ্যে দৃশ্যমান করা যেতে পারে।

এরপরে, নথিগুলির অধীনে 'উইন্ডোজ ড্রাইভার' সন্ধান করুন এবং এটিতে ক্লিক করুন।

এটি আপনাকে আপনার কম্পিউটারে পকেটপ্রোগ -ড্রাইভার.জিপ ফাইল সরবরাহ করবে।

আপনার কম্পিউটারে যান, ডাউনলোডের অবস্থানটি সন্ধান করুন এবং ডাউনলোড করা ফাইলটি কোনও ফোল্ডারে আনজিপ করুন।

যদি আপনার কম্পিউটারটি একটি 64৪-বিট ওএস হয়, তবে আপনাকে 32-বিট ওএসের সাহায্যে আরও কয়েকটি ধাপ অনুসরণ করতে হবে, আপনি সরাসরি আনজিপড ফাইল থেকে ইনস্টলেশন শুরু করতে পারেন।

Follow৪-বিটের জন্য এগুলি অনুসরণ করুন, ৩২-বিটের জন্য কেবল উপেক্ষা করুন:

গুগল 'libusb সোর্সফোর্জ' এবং এই লিঙ্কগুলিতে সর্বশেষ সংস্করণে ক্লিক করুন।

আপনি কয়েকটি অতিরিক্ত ফাইল দেখতে পাবেন, তবে আপনি বাইব ফাইলটি খুঁজে পেতে আগ্রহী হবেন, এটি হ'ল: libusb-win32-bin - #। #। #। #। জিপ

এখন, যান এবং আপনার কম্পিউটারে এই ডাউনলোডের অবস্থানটি সন্ধান করুন, আনজিপ করুন এবং কোনও ফোল্ডারে এটি সংরক্ষণ করুন।

এই ফোল্ডারে, বিন ফোল্ডারটি নেভিগেট করে amd64 ফোল্ডারে এগিয়ে যান।

আপনি এখানে বেশ কয়েকটি ফোল্ডার দেখতে পাবেন: ghcalled libusb0.dll এবং libusb0.sys।

আপনি এগুলির নাম পরিবর্তন করতে চান: libusb0_x64.dll এবং libusb0_x64.sys।

এখন আপনাকে উপরের ফাইলগুলি পকেটপ্রোগ-ড্রাইভার ফোল্ডারে অনুলিপি করতে হবে, কেবল বিদ্যমান সংস্করণে ফাইলগুলি ওভাররাইট করতে হবে।

উপরের ড্রাইভারগুলি ইনস্টল করতে, নিম্নলিখিত পদ্ধতিটি বরং এটির মতো একটি প্রচলিত যা আপনার আগ্রহী:

এটি একটি 'লেগ্যাসি হার্ডওয়ার যুক্ত করুন' মোড।

'স্টার্ট মেনু' এ ক্লিক করুন

তারপরে 'কম্পিউটার' এ ডান ক্লিক করে এগিয়ে যান

'পরিচালনা করুন' এ ক্লিক করুন এবং শেষ পর্যন্ত 'ডিভাইস পরিচালক' এ ক্লিক করুন

এরপরে, মেনুর ভিতরে, 'লেগ্যাসি হার্ডওয়্যার যুক্ত করুন' নির্বাচন করুন

উইজার্ডটি sertedোকানো না হওয়া পর্যন্ত 'পরবর্তী' টিপুন

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

এখন কেবল 'পরবর্তী' ক্লিক করুন

এটি আপনাকে 'সমস্ত ডিভাইসগুলি দেখান' মেনুতে প্রদর্শিত হবে যা আপনাকে ক্লিক করতে হবে।

এটির পরে 'হ্যাভ ডিস্ক' আইকনে ক্লিক করুন।

'ব্রাউজ করুন' আইকনের সাহায্যে পকেটপ্রোগ-ড্রাইভার ফোল্ডারের অবস্থানটিতে এগিয়ে যান। বাছাই যদি সঠিকভাবে আপনার দ্বারা করা হয়ে থাকে, আপনি সেই নির্দিষ্ট ফোল্ডারে থাকা পকেটপ্রোগ.inf ফাইলটি কল্পনা করতে পারবেন।

এই ফাইলটির উপর ডাবল ক্লিক করুন এবং আপনি অবশ্যই প্রত্যক্ষ করবেন যে ড্রাইভারটি আপনার পিসিতে ইনস্টল হচ্ছে।

ওভার অ্যান্ড আউট !! আসুন পরবর্তী পৃষ্ঠায় আমাদের পরবর্তী টিউটোরিয়ালটি দিয়ে চলুন।

এতক্ষণে আপনি প্রয়োজনীয় সফ্টওয়্যার ইনস্টল করে এসপিআই ইন্টারফেসটি তৈরি করতে পারেন।

মাইক্রোকন্ট্রোলার চিপে কোনও প্রোগ্রাম স্থানান্তর করার উপায়

পরের ধাপে উদ্দেশ্যে তৈরি অ্যাপ্লিকেশনের জন্য কয়েকটি উপাদান যেমন একটি ব্রেডবোর্ড, একটি এলইডি এবং গণনা করা প্রতিরোধকের জন্য কল করবে।

এই বিভাগে আমরা প্রোগ্রামারটির পরীক্ষার পদ্ধতিটি শিখব এবং প্রাসঙ্গিক ড্রাইভার এবং সফ্টওয়্যার ইনস্টলেশন নিশ্চিত করব।

ড্রাইভার এবং সফ্টওয়্যার সঠিকভাবে ইনস্টল করা হয়েছে কিনা তা যাচাই করার জন্য আমরা অ্যাড্রুড নামে পরিচিত একটি সাধারণ প্রোগ্রামটি প্রয়োগ করব।

এভিআরডুড হ'ল সর্বশেষ উইনএভিআর ইনস্টলেশনের সাথে যুক্ত এমন একটি প্রোগ্রাম যা এমসইউতে ফাইলের আসল স্থানান্তর সম্ভব নয়।

এই প্রোগ্রামটি একটি .hex ফাইল ফর্ম্যাট যা প্রয়োজনীয় মৃত্যুদণ্ডের জন্য এমসিইউতে মূলত বোধগম্য হয়।

যাচাইকরণ সফল না হলে প্রোগ্রামার ফাইল স্থানান্তর করতে অক্ষম হবে।

নিম্নলিখিত নির্দেশাবলীর সাহায্যে আমরা কীভাবে পরীক্ষার পদ্ধতিটি প্রয়োগ করতে পারি তা দ্রুত দেখুন:

প্রদত্ত অনুসন্ধান বাক্সে 'স্টার্ট মেনু' ক্লিক করে এবং cmd.exe টাইপ করে ডস (ডিস্ক অপারেটিং সিস্টেম) প্রম্পটটি খুলুন।

এখন এভিআরডুড বহন করা ডস প্রম্পটে সহজভাবে টাইপ করে avrdude –c usbtiny –p m32 লিখে করা যেতে পারে। এটি কার্যকর হওয়ার সাথে সাথে ডস সংযোগটি সফল হয়েছে কিনা তা তাত্ক্ষণিকভাবে স্বীকার করবে।

উপরের কমান্ডে, '-c' হ'ল একটি বিজ্ঞপ্তিযুক্ত পতাকা যা 'ইউএসবিটিনি' প্রোগ্রামার প্যারামিটারের বিশদটি অন্তর্ভুক্ত করে, যখন '-পি' ট্যাগটি মাইক্রোকন্ট্রোলার ডিভাইসটি সনাক্ত করে ('এম 32 এটমেগ 32 নির্দেশ করে)।

আপনি যদি অন্য কোনও এমসিইউ ব্যবহার করেন তবে প্রয়োগের জন্য আপনাকে প্রাসঙ্গিক উপসর্গগুলি অন্তর্ভুক্ত করতে হবে।

উপরের পদ্ধতিটি শেষ হয়ে গেলে, আপনি ডস প্রম্পটে 'প্রস্থান' টাইপ করতে পারেন এবং এটি আপনাকে উইন্ডো থেকে সরিয়ে ফেলবে।

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

এলইডি বোর্ড তৈরি করা খুব সহজ, এটি কেবলমাত্র ভেরোবাওয়ার্ডের এক টুকরোটির উপরে নেতৃত্বের দুটি নেতৃত্বকে সোল্ডারিংয়ের বিষয়ে এবং প্রতিরোধকের নেতৃত্বের সাথে একটি নেতৃত্বের সাথে সংযুক্ত করে। এই এলইডিটির ভূমিকা কেবলমাত্র এলইডি স্রোতকে সীমাবদ্ধ করা যাতে এমসিইউ আউটপুট থেকে অতিরিক্ত ভোল্টেজ বিজ্ঞাপনের কারণে এটি জ্বলে না।

রোধকের মান নিম্নলিখিত সাধারণ সূত্র ব্যবহার করে গণনা করা যেতে পারে:

আর = (ইউবি - LEDfwd) / আমি

যেখানে ইউবি সাপ্লাই ভোল্টেজ, সেখানে এলইডিএফডাব্লুড হ'ল ব্যবহৃত এলইডিটির সর্বোত্তম অপারেটিং ভোল্টেজ এবং আমি এটির সর্বোত্তম এম্পএস।

মনে করুন আমরা একটি রেড এলইডি ব্যবহার করি যার একটি এলইডি ফরোয়ার্ড ভোল্টেজ = 2.5 ভি এবং বর্তমান আই = 20 এমএ রয়েছে, উপরের সমীকরণটি নীচের হিসাবে সমাধান করা যেতে পারে:

যেহেতু এমসিইউ থেকে ভোল্টেজ 5 ভি হবে তাই এটি প্রকাশিত হতে পারে:

আর = (5 - 2.5) /। 02 = 125 ওহম, ¼ ওয়াট, নিকটতম মান 120 ওহম করবে।

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

এটি হয়ে গেলে, এমসিইউ উপরের এলইডি সেট আপের উদ্দেশ্যে করা প্রতিক্রিয়ার জন্য প্রোগ্রাম করা যেতে পারে।

এরপরে, MCU এর প্রোগ্রামিং।

মাইক্রোকন্ট্রোলারকে কিছু অর্থবহ বাস্তবায়ন করতে দেওয়ার জন্য, এমসইউতে যথাযথ নির্দেশনা লিখাই জরুরী।

কীভাবে একটি প্রোগ্রামিং পরিবেশ ইনস্টল করবেন এবং উইনএভিআর তদন্ত করবেন

এর জন্য আমরা সম্ভবত আমাদের খুব নিজস্ব 'টেক্সট এডিটর' আমাদের পিসিতে ব্যবহার করতে পারি, যদিও আমাদের মধ্যে একটি সাধারণ পাঠ্য সম্পাদকের পরিবর্তে আরও বেশি পেশাদার 'প্রোগ্রামিং পরিবেশ' ব্যবহারের প্রশংসা করতে পারে, সহজ কারণ এই পদ্ধতির সাহায্যে আপনি কিছু উপভোগ করতে পারবেন এই 'প্রোগ্রামিং পরিবেশ' প্যাকেজের মধ্যে অন্তর্নির্মিত আকর্ষণীয় বৈশিষ্ট্য।

এটি বিভিন্ন ভাষার মাধ্যমে প্রোগ্রামগুলি তৈরি এবং সম্পাদনা করতে সহায়তা করবে এবং একটি মাইক্রোকন্ট্রোলার চিপ দ্বারা সহজেই বোঝা ও গ্রহণযোগ্য একটি বিতরণযোগ্য মোডে তাদের সংকলন করবে।

শেষ পর্যন্ত এটি WinAVR দ্বারা সমর্থিত হবে এবং সম্পর্কিত এমসিইউ চিপে স্থানান্তরিত হবে।

উইনএভিআর প্রোগ্রামগুলি সমস্যার সমাধান এবং সম্ভাব্য বাক্য গঠন এবং সংকলন ভুল এবং ত্রুটি সম্পর্কে আমাদের সতর্ক করার মতো আরও অনেক অপারেশন সম্পাদন করতে সজ্জিত হতে পারে। আমরা আমাদের এই পরবর্তী টিউটোরিয়ালগুলি নিয়ে আলোচনা করব।

আপনি WinAVR এর ইনস্টলেশন কোর্সটি অত্যন্ত দ্রুত এবং চটজলদি করে তুলবেন। নিম্নলিখিত পয়েন্টগুলির সাথে বিশদে ডুব দেওয়া যাক:

আপনার উইনএভিআর উত্স ফোর্স ফাইল ফোল্ডার থেকে সর্বশেষতম সংস্করণগুলি ডাউনলোড করতে হবে। আপনি এর অফিসিয়াল ওয়েবসাইট থেকে এই ডাউনলোড সম্পর্কিত কিছু দরকারী তথ্য দেখতে পাবেন।

আপনাকে একটি সুরক্ষা কোয়েরি জুড়ে জিজ্ঞাসা করা হবে, যাতে আপনি উত্তরটি দিতে পারেন যদি আপনি ডাউনলোডটি করতে চান তবে এই ফাইলটি ডাউনলোড করার জন্য জিজ্ঞাসা করা হয়েছে একটি এক্সিকিউটেবল ফাইল।

ফাইলটি ডাউনলোড করুন এবং এটিতে ক্লিক করে সম্পাদন প্রক্রিয়া শুরু করুন। ইনস্টলেশন শুরু করা যাক।

প্রক্রিয়াটি আপনাকে কিছু উত্তরযোগ্য প্রশ্নের সাথে গাইড করবে যাতে আপনি আপনার আরামের সাথে ইনস্টলেশনটি প্রবাহিত করতে সক্ষম হতে পারেন। আপনি এগুলির অনেকগুলি তাদের ডিফল্ট ফর্মগুলিতে উপেক্ষা করতে চান, আপনি সবগুলি ক্রিয়াকলাপের জন্য সবচেয়ে উপযুক্ত বলে মনে করেন তা নির্বাচন করা উচিত।

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

একবার এই আইকনটিতে ক্লিক করা হলে, ইউজার ইন্টারফেস শুরু করবে যাতে আপনি প্রোগ্রামগুলির লিখন প্রয়োগ করতে সক্ষম হন (যেমন তৈরি এবং সম্পাদনা)। আপনাকে কোডগুলি সংকলন করতে এবং মাইক্রোকন্ট্রোলারে এম্বেড করার জন্য মেনু কমান্ডগুলি সমন্বিত প্রোগ্রামটিও প্রত্যক্ষ করবেন।

উপরোক্ত প্রোগ্রামার নোটপ্যাডের মূল কাজটি হ'ল একটি মানব পঠনযোগ্য কোডকে রূপান্তর করা যা আপনি কেবল এমসিইউতে বোধগম্য নির্দেশাবলীর একটি ধারাতে লিখে যাবেন।

পরের টিউটোরিয়ালটি উপরের প্রোগ্রামারটির পরীক্ষাটি কভার করবে যাতে আমরা উইন্ডোজের সাথে তার সামঞ্জস্যতা সম্পর্কে নিশ্চিত হতে পারি এবং এটি আপনার মাইক্রোকন্ট্রোলার আইসি এর সাথে পুরোপুরি 'হাত কাঁপায়' কিনা তা নিশ্চিত করতে পারি।

একটি এলইডি চালু করার জন্য কীভাবে একটি এমসিইউ প্রোগ্রাম করবেন

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

অবশ্যই আমরা এখন এমসইউর ভিতরে আমাদের প্রথম প্রোগ্রামটি বাস্তবায়নের জন্য প্রস্তুত, তবে এর আগে এটি আমাদের পূর্ববর্তী টিউটোরিয়ালের সময় আমরা কী করেছি তা দ্রুত সংক্ষেপে আকর্ষণীয় হবে:

আমরা আমাদের প্রয়োজনীয় স্পেসিফিকেশন অনুসারে এভিআর এটমেল মাইক্রোকন্ট্রোলার সংগ্রহ করেছি এখানে চিত্রের জন্য এটিএমইগা 32 ব্যবহার করেছি e নেক্সট, আমরা মাইক্রোকন্ট্রোলার বেসিক এবং প্রোগ্রামার ইউনিট সম্পর্কে শিখেছি যা এমসিইউ চিপে একটি প্রোগ্রাম স্থানান্তর করার জন্য দায়ী।

আরও, আমরা এসপি ইন্টারফেস সংযোগকারী তৈরি করেছি যা অপরিহার্য যাতে প্রোগ্রামিং ক্রিয়াকলাপগুলির জন্য আপনার কম্পিউটারকে মাইক্রোকন্ট্রোলারের সাথে সংযুক্ত করা যায়।

এর পরে আমরা নিশ্চিত করেছিলাম যে একটি 32-বিটের পাশাপাশি একটি 64-কিন্তু অপারেটিং সিস্টেমের জন্য কম্পিউটারে ড্রাইভারগুলি সঠিকভাবে ইনস্টল হয়েছিল কিনা।

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

শেষের অধ্যায়ে আমরা এলইডি / রেজিস্টার সার্কিট নির্মাণ শেষ করেছি এবং এটিকে প্রাসঙ্গিক এমসিইউ আউটপুটগুলির সাথে সংযুক্ত করেছি।

আসলেই এটি অনেক কাজ, তবুও এখনই আসল প্রোগ্রামিংয়ের কিছু অংশে সরাসরি যাওয়ার সময়!

শুরু করার জন্য আমরা মাইক্রোকন্ট্রোলারকে তিনটি বিভাগে বিভক্ত করতে চাই এটি আমাদের বোঝার অনেক সহজ করে দেবে:

নিয়ন্ত্রণ, সনাক্তকরণ এবং যোগাযোগ

এটি জেনে রাখা আকর্ষণীয় হবে যে উপরের ফাংশনগুলি বিভিন্নভাবে প্রোগ্রাম করা যেতে পারে।

আমাদের প্রথম প্রোগ্রামটিতে আমরা মাইক্রোকন্ট্রোলারকে একটি বাহ্যিক প্যারামিটার 'নিয়ন্ত্রণ' করার আদেশ দেওয়ার চেষ্টা করব, হ্যাঁ আপনি ঠিক বলেছেন যে এটি সম্প্রতি নির্মিত এলইডি হবে be

সুনির্দিষ্টভাবে বলতে গেলে, আমরা MCU কে সংযুক্ত এলইডি চালু করতে বলব, হ্যাঁ আমি জানি এটি বেশ আদিম দেখাচ্ছে, তবে শুরু করার পর্বটি সর্বদা সহজ হওয়া দরকার।

বর্তমান কাজটি নিয়ে এগিয়ে যাওয়া, এমসইউকে নেতৃত্বাধীন এলইডি নিয়ন্ত্রণ করা আসলে বেশ সহজ:

এর জন্য আমরা এলইডিটির জন্য প্রয়োজনীয় 5 ভি উত্পাদন করতে পোর্ট বি তে পিনটি নির্দেশ 0

পূর্ববর্তী টিউটোরিয়ালটি থেকে স্মরণ করুন, আমরা এলসিডিটির আনোডকে এমসইউর উল্লিখিত পিনের সাথে সংযুক্ত করেছি।

MCU- এর এই পিনটিতে দুটি প্রয়োজনীয় জিনিসকে সম্বোধন করতে হবে: 1) আউটপুট এবং 2) 5 ভোল্ট

আমরা এমন একটি উপায় শিখব যার মাধ্যমে আমরা নির্দিষ্ট পিনটিকে এমসইউর আউটপুট হওয়ার নির্দেশ দিয়েছি।

একবার এটি চিপের আউটপুট হিসাবে সেট হয়ে গেলে, আমরা এটিকে অ্যাপ্লিকেশনটির জন্য পছন্দসই হিসাবে 'হাই' (5 ভি) বা 'কম' (0 ভি) হতে নির্দেশ দিতে পারি।

যেহেতু এমসিইউর মতো কোনও লজিক সার্কিট পিনগুলি একটি আউটপুট বা একটি ইনপুট মজাদার হতে পারে এবং লজিক উচ্চ বা লজিক নিম্ন উত্পাদন করতে কনফিগার করা যেতে পারে, পিনগুলি কেবল লজিকাল উচ্চ বা লজিকাল নিম্ন হিসাবে নির্ধারিত হতে হবে , মাইক্রোকন্ট্রোলারদের জন্য বা এই বিষয়ে কোনও ডিজিটাল আইসির জন্য এই দু'টি রাজ্য ছাড়া অন্য কোনও মধ্যবর্তী বা অপরিজ্ঞাত রাজ্য নেই। এছাড়াও এমসইউর প্রতিটি পিনের ক্ষেত্রে একই প্রযোজ্য।

ইনপুট এবং আউটপুট পিন অ্যাসাইনমেন্ট হিসাবে, ইনপুটগুলি বাহ্যিক অ্যানালগ পর্যায়ে থেকে সংকেত গ্রহণ করার জন্য অবস্থিত হবে, তবে ফলাফলগুলি নির্দিষ্ট যৌক্তিক অবস্থানে বা একটি ফ্রিকোয়েন্সিতে এটি ব্যাখ্যা করার জন্য দায়বদ্ধ হবে।

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

তবে এই মুহুর্তে আমরা অন্যান্য পিনগুলি নিয়ে এতটা বিরক্ত করব না এবং কিছু প্রসারণের জটিলতা এড়িয়ে কেবল আগ্রহের পিনগুলি ব্যবহার করব।

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

ডিডিআর ব্যবহার করে আমরা পিনটি হয় কোনও 'আউটপুট' এর মতো ডেটা প্রেরণ করতে, বা একটি 'ইনপুট' আকারে ডেটা গ্রহণ করতে পারি।

তবে আপনি শব্দটি সম্পর্কে বিভ্রান্ত হতে পারেন, এটি কী বোঝায়? একটি ডেটা পিনগুলিতে তৃতীয় মাত্রা যুক্ত করে যা লজিক শূন্য (0 ভি) বা লজিক হাই (5 ভি) এ ধারাবাহিকভাবে নির্ধারিত হতে পারে তবে ডালগুলির ফ্রিকোয়েন্সি যেমন দ্রুত সংঘটিত হতে পারে এমন সংকেতগুলি সম্পর্কে কী বলা যায়। উচ্চতর এবং নিম্ন যুক্তিগুলির সাথে একটি ফ্রিকোয়েন্সিটি উপস্থিত হবে (5 ভি এবং 0 ভি) কিছু নির্দিষ্ট অন্তর বা পিরিয়ডের সাথে দোল করে, সুতরাং এটি সময়কে কেন্দ্র করে পরিণত হয় এবং সময়ের সাথে সামঞ্জস্য হতে পারে, এজন্য আমরা 'ডেটা' হিসাবে চিহ্নিত করি যা একটি পরামিতি নির্দেশ করে অন্য ফাংশনের সাথে সম্পর্কিত একটি ফাংশন (লজিকের অবস্থা এবং সময়)।

আউটপুট হিসাবে পিন0 নির্ধারণের একটি পদ্ধতি হ'ল নিম্নলিখিত কোডটি লিখে:

ডিডিআরবি = 0 বি 100000001

উপরের প্রোগ্রামে, ডিডিআরবি পোর্ট বি 0 বি এর জন্য ডেটা নির্দেশিকা রেজিস্টারকে স্বাক্ষর করে যখন সংখ্যার নিম্নলিখিত বাইনারি অভিব্যক্তি সম্পর্কিত সংকলককে নির্দেশ দেয় যখন অভিব্যক্তিটির শেষে '1' পিনের অবস্থান নির্দেশ করে, এটি ফর্মের মধ্যে এটি অবস্থান পোর্ট বি এর প্রথম পিনের

যদি আপনি মনে রাখেন যে আমরা শিখলাম যে পোর্ট বি এর সাথে 8 টি পিন যুক্ত করে (0 থেকে পিন 7 পর্যন্ত), এবং আপনি যদি লক্ষ্য করেন যে উপরের কোডটিতেও 8 টি অঙ্ক রয়েছে, যার অর্থ প্রতিটি অঙ্ক পোর্ট বি এর এই 8 পিনকে বোঝায়

এখন পরবর্তী প্রক্রিয়াটি এই পিনটিতে (5 পিন) 5V নির্ধারণ করা হবে। নীচের বাইনারি কোডের মাধ্যমে উপরোক্ত মত প্রকাশের নীতিটি ডিডিআর অনুরূপ:

পোর্টটিবি = 0 বি 100000001

হিসাবে দেখা যায়, উপরের কোড এবং পূর্বের কোডের মধ্যে একমাত্র পার্থক্য হ'ল এই কোডটিতে আমরা পোর্ট রেজিস্টার ব্যবহার করেছি। এই রেজিস্টারটি নির্দিষ্টভাবে সেই এমএমইউ-এর ভিতরে অবস্থিত সেই নির্দিষ্ট বন্দরটির পিন কার্যাদি পরিচালনা করে। সুতরাং এটি আমাদের সেই পিনআউটগুলির জন্য প্রকৃত ডেটা লজিকগুলি (0 বা 1) বরাদ্দ করতে সক্ষম করে।

এখন আমরা আমাদের প্রোগ্রামের আনুমানিক বিশদ সম্পর্কে কিছু আলোচনা করতে আগ্রহী হতে পারি। যেহেতু আমরা জানি যে সমস্ত প্রোগ্রামগুলি সম্পাদন শুরুর জন্য একটি নির্দিষ্ট স্থানের প্রয়োজন, তাই এটি একটি শেফের সাথে তুলনা করা যেতে পারে যিনি একটি নির্দিষ্ট রেসিপি সম্পর্কিত সমস্ত উপাদান জানেন তবে কোথা থেকে শুরু করবেন তা নির্দেশিত নয়।

এখানে 'মূল' ফাংশনটি সেই অবস্থান যেখানে প্রতিটি সি / সি ++ প্রোগ্রাম প্রতিটি সম্পাদন শুরু করে। সুতরাং প্রধানটি তৈরি করা যেতে পারে:

প্রধান প্রধান (শূন্য)
{
}

তবে এমসিইউ চিপের অভ্যন্তরে ডিডিআর এবং পিওআরটি নিবন্ধের বিবরণ এবং তাদের কার্যকারিতা ব্যাখ্যা করার জন্য প্রোগ্রামটি সক্ষম করার জন্য, একটি অতিরিক্ত বিবৃতি অন্তর্ভুক্ত করা দরকার যা এভিআর এমসিইউ সম্পর্কিত সমস্ত ডেটা ধারণ করে। সম্ভবত আমরা আমাদের সমস্ত প্রোগ্রামে এই অন্তর্ভুক্তি যুক্ত করতে চাই।

# অন্তর্ভুক্ত
প্রধান প্রধান (শূন্য)
{
}

সংকলনটি শুরু হওয়ার সাথে সাথে সংকলকটির প্রাক-প্রসেসর বিভাগটি 'আইও এইচ এইচ' ফাইলটি সনাক্ত করতে এভিআর ডিরেক্টরিতে ফোকাস করে। এখানে '.h' এক্সটেনশনটি এটি একটি শিরোলেখ ফাইল হিসাবে ইঙ্গিত করে এবং এই ফাইলের অভ্যন্তরে এই কোডটি তৈরি করা হচ্ছে এমন উত্স ফাইলের শুরুতে (মাথা) প্রবর্তন করা হত, সুতরাং নামটি 'শিরোনাম'।

এখানে আমরা আমাদের কোডে ডিডিআর এবং পোর্ট বিবৃতি প্রবর্তন করতে পারি, কারণ io.h শিরোনাম ফাইল যুক্ত করার সাথে তাদের সম্পর্কিত সংকলকটি নির্দেশিত হত।

# অন্তর্ভুক্ত

প্রধান প্রধান (শূন্য)

{

DDRB = 0b00000001 // ডেটা দিকনির্দেশ আউটপুট এ পিন0 এবং বাকী পিনগুলি ইনপুট হিসাবে সেট করুন

PORTB = 0b00000001 // পিন0 থেকে 5 ভোল্ট সেট করুন

}

উপরেরগুলি পিন0 এর ওরিয়েন্টেশনটিকে আউটপুট হিসাবে ঠিক করে, 5V এর परिमाण রাখে। তবে এখনও একটি সমস্যা রয়েছে যা এই পিনের জন্য নির্ধারিত নয়, এমসইউ চালিত হওয়া অবধি এই পিনটি অনির্দিষ্টকালের জন্য স্যুইচ করার নির্দেশ দেওয়া হয়নি। এই অসীম প্রতিক্রিয়া লুপটি নিশ্চিত করবে যে এমসইউ থেকে আসা এই পিনটি অফ স্যুইচ করে না, বরং 5V আউটপুট অনির্দিষ্টকালের জন্য অব্যাহত রাখে।

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

# অন্তর্ভুক্ত

প্রধান প্রধান (শূন্য)

{

DDRB = 0b00000001 // ডেটা দিকনির্দেশ আউটপুট এ পিন0 এবং বাকী পিনগুলি ইনপুট হিসাবে সেট করুন

PORTB = 0b00000001 // পিন0 থেকে 5 ভোল্ট সেট করুন

যখন (1)

{

// কোড এখানে এবং যদি বারবার চালানো প্রয়োজন হয় ... অবিরাম

}

}

আপনি লক্ষ করতে পারেন, এখানে আমরা '1' লুপটির জন্য একটি যুক্তি আকারে ব্যবহার করেছি, কারণ ‘0’ ব্যতীত সমস্ত কিছুই যৌক্তিক 'সত্য' হিসাবে বিবেচিত হতে পারে।

এর থেকেই বোঝা যায় যে 'যখন' লুপ বিবেচনা কোনও যুক্তিসঙ্গত 'সত্য' ব্যতীত অন্য কোনও কিছুর জন্য দায়বদ্ধ হবে না, যার অর্থ নির্দিষ্ট পিনটি অনির্দিষ্টকালের জন্য নির্দিষ্ট রাষ্ট্রের সাথে সংযুক্ত থাকবে।

যতক্ষণ না এমসিইউ তার ভিডিডি এবং ভিএসএস জুড়ে ক্ষমতা পেয়েছে ততক্ষণ স্থায়ীভাবে নির্ধারিত পিন জুড়ে এলইডিটি চালু থাকতে পারে।

এটি হ'ল, এখন আমাদের ফলাফলটি আমরা পেতে চেয়েছিলাম এবং পরিশেষে এটি অনেক পরিশ্রমের পরেও ঘটছে তা দেখতে পাচ্ছি, তবে তবুও আমাদের কঠোর পরিশ্রমের মিষ্টি ফলাফলটি দেখার জন্য এটি সন্তুষ্টিজনক।

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

প্রকৃতপক্ষে, উপরোক্ত বাস্তবায়নে, এলইডি আসলে জ্বলজ্বল করছে তবে লুপের হার এত তাড়াতাড়ি যে এটি প্রায় আলোকসজ্জার উপর স্থায়ী সুইচ চালু করার মতো।

আমরা দেখতে পাব কীভাবে এই লুপটি বিলম্বিত হারে এলইডি জ্বলজ্বলে করার জন্য কাঙ্ক্ষিত বিলম্বের সাথে কীভাবে যুক্ত করা যায়।

এভিআর মাইক্রোকন্ট্রোলার ব্যবহার করে কীভাবে একটি এলইডি ব্লিঙ্ক তৈরি করবেন

সর্বশেষ আলোচনায় আমরা শিখেছি কীভাবে একটি মাইক্রোকন্ট্রোলারের মাধ্যমে একটি এলইডি সুইচ চালু করতে পারি, এটি কি অসামান্য ছিল না? এত কিছু নাও হতে পারে!

এখানে আমরা দ্বি-দিকনির্দেশক কার্যকারিতা চিহ্নিত করে উপরের LED আলোকসজ্জাটিকে কীভাবে মশালাই করা যায় তা শিখব, তা হ'ল আমরা কিছু নির্দিষ্ট ফ্রিকোয়েন্সি বা হারে এটি ফ্ল্যাশ বা ঝলকানোর চেষ্টা করব। ব্যবহারকারীর পছন্দসই হারটি কীভাবে বাড়ানো বা হ্রাস করা যায় তা আমরাও দেখতে পাব।

আসুন এটি একবার দেখুন:

# অন্তর্ভুক্ত

# অন্তর্ভুক্ত

প্রধান প্রধান (শূন্য)

{

ডিডিআরবি | = 1<< PINB0

যখন (1)

{

পোর্টটিবি 1 = 1<< PINB0

_ডলে_এমএস (100)

}

}

যদি আপনি উপরের অভিব্যক্তিতে ব্যবহৃত অদ্ভুত চিহ্নগুলি (এবং, ^, | ইত্যাদি) নিয়ে বিভ্রান্ত বোধ করছেন (এবং সেখানে নেই তবে অন্যান্য অনুরূপ কোডগুলিতে ব্যবহার করা যেতে পারে), তবে এগুলি সম্পর্কে জানতে আগ্রহী এমন তথ্য এখানে রইল :

এটিতে অনেকগুলি স্ট্যান্ডার্ড লজিক্যাল অ্যালগোরিদম যেমন এন্ড, ও, না এবং এক্সওআর রয়েছে যা উপরের কোডের সাথে সাধারণত ব্যবহৃত হয়।

এই যৌক্তিক কার্যকারিতা বিশেষত তাদের নির্ধারিত সত্য সারণী অনুসারে দুটি বিট '1' এবং '0' তুলনা করে।

নিম্নলিখিত বিট বিন্যাসটি বিশ্লেষণ করে আমরা একটি ধারণা পেয়ে যাব:

01001011 এবং
10001101
সমান
00001001

উপরের কোডে & সি প্রোগ্রামিংয়ে ব্যবহৃত হিসাবে AND উল্লেখ করে।

সারিগুলি উল্লম্বভাবে পড়া, এটি পরামর্শ দেয় যে 0 এবং 1 সমান 0, 1 এবং 0 সমান 0, 0 এবং 0 সমান 0, 1 এবং 1 সমান 1। এটি পড়া এতটা সহজ। এগুলি একটি এবং অপারেটরের সত্য সারণী অনুসারে।

আমরা যদি নীচের সারণিকে মূল্যায়ন করি তবে এটি '|' প্রতীকটি নির্দেশ করে 'বা' কার্যকারিতা, '|' এর ব্যবহারকে নির্দেশ করে আপনার কম্পিউটার কীবোর্ডের 'ব্যাকস্পেস' এর ঠিক বাম দিকে খুঁজে পাওয়া যায়:

01001011 |
10001101
সমান
11001111

মূলত একটি ওআরজিক কার্যকারিতার এই সত্য সারণীটি নির্দেশ করে যে বিট 0 বা 1 সমান 1, 1 বা 0 সমান 1, 0 বা 0 সমান 0 হয়, যখন 1 বা 1 সমান 1।

নিম্নলিখিত বিট সংমিশ্রণটি XOR লজিক অপারেটরের জন্য ^ দ্বারা চিহ্নিত এবং এটি যেমন আমরা AND, বা সত্য সারণীর সাথে করেছি ঠিক তেমন অধ্যয়ন করা যেতে পারে:

01001011 ^
10001101
সমান
11000110

এখন প্রথম প্রোগ্রামটি দিয়ে চালিয়ে দেওয়া যাক এবং এর নীচের লাইনটি কী বোঝায় তা শিখুন:

# অন্তর্ভুক্ত

আমাদের পূর্ববর্তী টিউটোরিয়ালের মাধ্যমে আমরা জানি যে কীভাবে অভিব্যক্তিটি কাজ করে, তাই আমরা এটিকে পুনর্বার জানাবো না তবে তাদের মনে হচ্ছে # অন্তর্ভুক্ত দ্বারা প্রকাশ করা একটি নতুন 'অন্তর্ভুক্ত' বলে মনে হচ্ছে যা তদন্ত করা দরকার।

এটিতে 'অন্তর্ভুক্ত করুন' এ বিলম্ব হ'ল আমাদের বাস্তবায়নের কয়েকটি সহজ পদ্ধতির অনুমতি দেয়।

নামটি হ'ল বিলম্বের প্রস্তাব দেয়। বিশেষ প্রোগ্রামে আমাদের বিলম্ব ঘটায়।

পরের এক্সপ্রেশন ইন্ট মেইন (শূন্য) চলমান আলোচনা থেকে বাদ দেওয়া যেতে পারে যেহেতু আমরা এটি ইতিমধ্যে আমাদের আগের পোস্টগুলিতে কভার করেছি।

এরপরে আসে পরিবর্তিত ডিডিআরবি।

নিম্নলিখিতটি পূর্বের ফর্মটি দেখায় যা পিনগুলি নির্ধারণের জন্য ভাল পন্থা নয় যেহেতু 0 থেকে 7 পর্যন্ত সমস্ত পিনগুলি ইনপুটগুলি গঠনের জন্য স্যুইচ করা হয়েছিল। তবে কেবল কল্পনা করুন যে আমরা যদি আরও কিছু কার্যকারিতার জন্য সেই পিনগুলির জন্য একটি দীর্ঘতর প্রোগ্রাম তৈরি করতে চাইতাম তবে পরিস্থিতি কী হবে? উদাহরণস্বরূপ, কোনও সরঞ্জামের রিমোট স্যুইচিং প্রয়োগের জন্য পিন 2 এর প্রয়োজন হতে পারে। সেক্ষেত্রে আমরা কেবল পরীক্ষা এবং ত্রুটির মধ্য দিয়ে একটি ইনপুট হিসাবে একইরূপ নির্ধারণ করার জন্য কৃতজ্ঞ হব না। এর অর্থ রিমোট ট্রান্সমিটার থেকে অ্যাপ্লায়েন্স রিসিভারের ভুল প্রতিক্রিয়া হতে পারে।

ডিডিআরবি = 0 বি 100000001

আমরা বরং কেবলমাত্র একটি বিট, টুপি পিন0 বিটকে প্রভাবিত করতে চাই, 'বা' কার্যকারিতাটির দিকে ঝলক দেওয়া এটি বাইনারি মাস্কিংয়ের মাধ্যমে কার্যকর করা যেতে পারে।

ডিডিআরবি = ডিডিআরবি | 0b00000001

এখানে এটি একটি 'ওআর' মাস্কটি দিয়ে আবৃত রয়েছে: 0b00000001, যদিও এটি একেবারে একটি খাঁটি বাইনারি সংখ্যা বলে মনে হয়, উদাহরণস্বরূপ পূর্ববর্তী ডিডিআরবি: 0b01001010, তারপরে মাস্কিংয়ের মাধ্যমে একটি ওআর প্রয়োগ করতে পারে: 0b01001010 | 0b00000001 = 0b01001011।

ফলস্বরূপ পার্থক্যটি প্রত্যক্ষ করা যেতে পারে কেবল পিন0 এর সাথে, যার বিট পরিবর্তন হয়েছে!

উপরোক্ত বিবৃতিটিকে আরও C ++ এর মাধ্যমে সংকুচিত করা দেয়:

ডিডিআরবি | = 0b00000001

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

সুতরাং যদি “ডিডিআরবি | = 1<< PINBO, why it’s like that?

ঘ<< PINBO is implemented for applying the masking effect. The “1” indicates what may be introduced inside the mask, while the < < is simply the left shift functionality. It executes exactly as it’s named, and PINBO is the number of locations that the “1” would sequence across the left hand side. To be precise PINBO may be equivalent of a 0.

সুতরাং আমরা একটি 0b00000000 দিয়ে শুরু করি, এবং 0b0000001 উত্পাদন করতে একটি '1' রাখি এবং তারপরে আমরা এটিকে বাম 0 পজিশনে স্থানান্তর করি, যা উপরের মত একেবারে অভিন্ন 0b00000001 দেয়।

এখন, যদি এটি পিনবি 4 হিসাবে ধরা হয় তবে বিবৃতিটি 1 হিসাবে প্রকাশ করা যেতে পারে<< PINB4. I this case the “1” would be pushed to the left 4 locations producing: 0b00010000.

সাবধান থাকুন আমরা একটি শূন্য সূচক নিযুক্ত করছি যার অর্থ '1' এর পরে চারটি শূন্য রয়েছে।

এখন 'যখন' লুপটিতে এগিয়ে যাচ্ছি আমরা আগে 'অসীম লুপ' জুড়ে লক্ষ্য করেছি। তবে সম্ভবত এখন আমরা চাই মাইক্রোকন্ট্রোলারটি কাঙ্ক্ষিত কিছু মৃত্যুদন্ড কার্যকর করতে চাই। প্রদত্ত লুপের ভিতরে এটি কেবলমাত্র সম্ভব হবে। এটি সেই লুপ যেখানে নির্দিষ্ট ক্রমটি পুনরাবৃত্তি হয়।

যদি ফাঁসির আগে ফাঁসি কার্যকর করা হয় তবে এটি একবারে বাস্তবায়ন করা যেত।

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

বাইনারি সংখ্যায় একটি নির্দিষ্ট বিটের সেট আপ করার পদ্ধতিটি আমরা সচেতন, তবে এটি এখনও '1' না হলে নির্দিষ্ট বিট '0' প্রয়োগের পদ্ধতিটি নিশ্চিত নই।

নিম্নলিখিত প্রোগ্রামটি এটি করতে দেখা যেতে পারে তবে আমরা এটিতেও দেখতে পেলাম যে এটি প্রোগ্রামে দৃশ্যমান নাও হতে পারে।

প্রাথমিক দুটি বিবৃতি বিটটিকে '1' (5 ভি, এলইডি লাইট) এ পরিবর্তিত করে, তারপর 100 এমএসের জন্য একটি বিরতি দেওয়া হয়।

পরবর্তী কয়েক লাইন পিনবি 0 বিটটিকে '0' (জিরো ভোল্টেজ, এলইডি বন্ধ) এ পরিণত করে, তবে দুঃখিত এবং তুলনা করুন বিট থেকে একটি '0' কার্যকর করতে সক্ষম হবে না, তবে আমরা যদি '~' ব্যবহার না করি বাইনারি মাস্কের জন্য এটি সমস্ত 0 গুলি 1s এবং এর বিপরীতে পরিবর্তন করতে পারে।

এটি আমাদের কেবল পিনবি0 বিটকে প্রভাবিত করতে এবং এটি '0' এ ফ্লিপ করতে সক্ষম করবে। মাস্কিং এক্সিকিউশনটি এমনভাবে চালিত করার জন্য প্রথম বন্ধনী অন্তর্ভুক্ত করা হয়েছিল যাতে বাম পাশের শিফ্টের আগে '1' এর উপরে পুরোপুরি মাস্কগুলির জন্য না 'অপারেশন প্রয়োগ করা যেতে পারে'<<”.

পোর্টবি | = 1<< PINB0
_ডলে_এমএস (100)
পোর্টটিবি এবং = ~ (১<< PINB0)
_ডলে_এমএস (100)

অফ অফ বিলম্ব বা সমমান সময়কাল তৈরির জন্য, আমরা আগের চারটি লাইন দুটি কেটে-শর্ট করতে এবং আমাদের সুবিধার জন্য এক্সওআর কার্যকারিতা প্রয়োগ করতে পারি। এটি অবশ্যই একটি এক্সওর এক্সিকিউশনটি 0 এবং এর বিপরীতে ক্ষেত্রে 1 কে একটি নির্ধারিত পিন হিসাবে উল্লেখ করা উচিত। এই কার্যকরকরণটি কেবল পিনবি 0-কে প্রভাবিত করবে। কমান্ডটি প্রয়োগ হওয়ার সাথে সাথে এটি বিটটিকে কেবল বিদ্যমান যুক্তির বিপরীতে পরিণত করবে turn

পোর্টটিবি 1 = 1<< PINB0
_ডলে_এমএস (100)

সম্পন্ন! আপনার এলইডি সেট রেট অনুযায়ী এখন জ্বলজ্বল করা হবে… .সামান্য, তাই না?




পূর্ববর্তী: একাধিক অ্যাপ্লিকেশন রিমোট কন্ট্রোল সার্কিট পরবর্তী: এসি পর্যায়, নিরপেক্ষ, আর্থ ফল্ট সূচক সার্কিট