সুচিপত্র:

ATtiny84/85 SPI ইন্টারফেস পিন পুনuseব্যবহার: 6 ধাপ
ATtiny84/85 SPI ইন্টারফেস পিন পুনuseব্যবহার: 6 ধাপ

ভিডিও: ATtiny84/85 SPI ইন্টারফেস পিন পুনuseব্যবহার: 6 ধাপ

ভিডিও: ATtiny84/85 SPI ইন্টারফেস পিন পুনuseব্যবহার: 6 ধাপ
ভিডিও: RT809F Bios flasher | Sofi Bios programmer | Use Bios all Adapter | Bangla | মনিটর প্রোগ্রামার? 2024, নভেম্বর
Anonim
ATtiny84/85 SPI ইন্টারফেস পিন পুনuseব্যবহার
ATtiny84/85 SPI ইন্টারফেস পিন পুনuseব্যবহার

এই নির্দেশযোগ্য হল "ATtiny84/85 ইন-সার্কিট ডিবাগিং উইথ সিরিয়াল আউটপুট" নির্দেশনা এবং অ্যাপ্লিকেশন প্রোগ্রাম দ্বারা প্রোগ্রামিং ডাউনলোড পিনের পুনuseব্যবহারের সমস্যা সমাধানে হার্ডওয়্যার এবং সফ্টওয়্যার কনফিগারেশন প্রসারিত করে। সর্বোপরি, এই এবং অংশ 1 নির্দেশের মধ্যে, নিম্নলিখিত বিষয়গুলি আলোচনা/প্রদর্শিত হয়:

বিষয় ATtiny84 ATtiny85
সফটওয়্যার সিরিয়াল ক্লাস ব্যবহার করে সিরিয়াল যোগাযোগ এক্স এক্স
অ্যাপ্লিকেশন এবং ডাউনলোডের মধ্যে ডিভাইসের পিন ভাগ করা এক্স এক্স
পিন পরিবর্তন বাধা এক্স
বাহ্যিক বাধা এক্স
POWER_DOWN মোডে ঘুমান; বিরতিতে জেগে ওঠা এক্স
সফ্টওয়্যার সিরিয়াল সম্পর্কিত "গুণিত সংজ্ঞায়িত" বাধা ভেক্টর লিঙ্ক ত্রুটির জন্য কাজ করুন এক্স
ATtiny ডিভাইসের জন্য ইন-সার্কিট মডিফাই, ডাউনলোড, ডিবাগ,… ডেভেলপমেন্ট সাইকেল এক্স এক্স

SPI প্রোগ্রামিং ইন্টারফেসের জন্য নিবেদিত পিনগুলির মধ্যে একটি হার্ডওয়্যার I/O কম্পোনেন্ট যোগ করা কখনও কখনও ঠিক থাকে, কখনও কখনও না। উদাহরণস্বরূপ, MISO- তে একটি LED যোগ করা কেবল ডাউনলোডের সময় LED ঝলকানি সৃষ্টি করে এবং তারপর এটি অ্যাপ্লিকেশনের জন্য উপলব্ধ। যাইহোক, MISO তে একটি পাইজো বুজার যুক্ত করার ফলে ডাউনলোডের ব্যর্থতার পরে একটি ভয়ঙ্কর চিৎকারের শব্দ হবে।

এই নির্দেশাবলী ব্যাখ্যা করে কিভাবে 4x2: 1 মাল্টিপ্লেক্সার ব্যবহার করে SPI ইন্টারফেস MISO, MOSI, এবং SCK সিগন্যালগুলিকে ডাউনলোডের সময় তাদের সুরক্ষিত করে "পুনরুদ্ধার" করা যায়। রিসেট পিনের পুনuseব্যবহারের জন্য একটি ফিউজ পরিবর্তন প্রয়োজন এবং এই পদ্ধতির দ্বারা আচ্ছাদিত নয়। ডাউনলোড চলছে কিনা তা নির্ভর করে অ্যাপ্লিকেশন এবং প্রোগ্রামিং ইনপুটগুলির মধ্যে স্যুইচ করার জন্য মাল্টিপ্লেক্সার ব্যবহার করে পিনের দ্বৈত নিয়োগ সম্পন্ন হয়। ATtiny84 এবং ATtiny85 উভয়ের জন্য কোড এবং স্কিম্যাটিক্স অন্তর্ভুক্ত। ATiny84 কনফিগারেশনটি প্রথমে সম্বোধন করা হয়েছে কারণ এটিতে দুটি I/O পোর্ট রয়েছে এবং এটি কিছু অতিরিক্ত সমস্যা/সমাধান ব্যাখ্যা করতে ব্যবহার করা যেতে পারে। Tiny84 আলোচনার পরে, ATtiny85 এর জন্য একই দৃশ্যগুলি আলোচনা করা হয়েছে।

ধাপ 1: প্রয়োজনীয় হার্ডওয়্যার

ছবি
ছবি

প্রয়োজনীয় হার্ডওয়্যারের অধিকাংশই অংশ 1 নির্দেশে তালিকাভুক্ত ছিল তাই কেবল নতুন হার্ডওয়্যার নীচে তালিকাভুক্ত করা হয়েছে।

নাম সম্ভাব্য উৎস কিভাবে ব্যবহার করা হয়
4x2: 1 মাল্টিপ্লেক্সার মাউসার চারটি 2-ইনপুট রয়েছে; 1-আউটপুট সুইচগুলি যা মেকানিজম যার দ্বারা SPI ইন্টারফেস সিগন্যাল এবং অ্যাপ্লিকেশন I/O ভাগ করা হয়।
SPST সুইচ যে কোন সুইচ টাইপ (ক্ষণস্থায়ী বা ল্যাচড) কাজ করবে। একটি অ্যাপ্লিকেশন ইনপুটের জন্য পিন শেয়ারিং চিত্রিত করার জন্য সুইচ ব্যবহার করা হয়।
10K প্রতিরোধক ভাসমান ইনপুট এড়াতে SPST সুইচের জন্য পুল-ডাউন রোধক
ছবি
ছবি
ছবি
ছবি

মাল্টিপ্লেক্সার হল অ্যাপ্লিকেশন ব্যবহার থেকে পিন ডাউনলোড ব্যবহার বিচ্ছিন্ন করার চাবিকাঠি। 4x2: 1 মাল্টিপ্লেক্সারের সামগ্রিক কার্যকারিতা মোটামুটি স্ট্রেট-ফরোয়ার্ড যার মধ্যে 2 টি নিয়ন্ত্রণ সংকেত এবং 4 টি অভিন্নভাবে সুইচ রয়েছে। প্রতিটি মাল্টিপ্লেক্সার পিনের আচরণ নিচে আলোচনা করা হল:

পিন নাম ফাংশন
15 সত্য সারণীতে নির্দেশিত হিসাবে, মাল্টিপ্লেক্সার কেবল তখনই কাজ করে যখন জি সক্ষম পিন কম থাকে। যেহেতু আমরা মাল্টিপ্লেক্সারকে পুরোপুরি অক্ষম করতে চাই না, তাই পিন 15 সরাসরি মাটিতে সংযুক্ত হবে।
2-4; 5-7; 9-11;12-14 A (ইনপুট), B (ইনপুট), Y (আউটপুট) চারটি 2-ইনপুট আছে; A- ইনপুট, B (ইনপুট), Y (আউটপুট) অর্ডারে ক্রমাগত 3 পিনের প্রতিটি গ্রুপের সাথে 1-আউটপুট সুইচ সুইচ 1 এর জন্য; পিন 2 = 1A; পিন 3 = 1 বি; পিন 4 = 1Y
1 নির্বাচন করুন যখন নির্বাচন কম হয়, সুইচ ইনপুট A সংযুক্ত সুইচ আউটপুট পিনের সাথে সংযুক্ত থাকে, Y. যখন নির্বাচন উচ্চ হয়, তখন সুইচ ইনপুট B এর পরিবর্তে আউটপুটের সাথে সংযুক্ত থাকে সুইচগুলি নির্বাচন সিগন্যাল দ্বারা একযোগে নিয়ন্ত্রিত হয় এবং একইভাবে কাজ করে।
8 GND মাল্টিপ্লেক্সার আইসি গ্রাউন্ড
16 ভিসিসি মাল্টিপ্লেক্সার আইসি পাওয়ার

ধাপ 2: টেস্ট কেসগুলির ওভারভিউ

ছবি
ছবি
ছবি
ছবি

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

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

  1. আউটপুট কেস: ATtiny84 পিন 4 (SCK) থেকে LED আউটপুট মাল্টিপ্লেক্সার সুইচ 2 ব্যবহার করে বিচ্ছিন্ন

    • মাল্টিপ্লেক্সার পিন 2A কে মাটিতে সংযুক্ত করুন
    • মাল্টিপ্লেক্সার পিন 2B কে ATtiny85 pin 4 এর সাথে সংযুক্ত করুন
    • আউটপুট 2Y কে LED অ্যানোডের সাথে সংযুক্ত করুন

      • প্রত্যাশিত ফলাফল:

        • 2A, মাটিতে সংযুক্ত হওয়ার পর থেকে ডাউনলোডের সময় LED বন্ধ
        • 2B এর মাধ্যমে ডাউনলোড করার পরে অ্যাপ্লিকেশন আউটপুট পিন 4 এর সাথে LED সংযুক্ত এবং ঝলকানো শুরু করে
  2. ইনপুট কেস: SPT সুইচ ইনপুট ATtiny84 পিন 6 (MOSI) মাল্টিপ্লেক্সার সুইচ 3 ব্যবহার করে বিচ্ছিন্ন

    • AVR প্রোগ্রামার হেডার থেকে MOSI লিড ওয়্যার 3A তে সরানো হয়েছে
    • সুইচ ইনপুট 3B SPST আউটপুটের সাথে সংযুক্ত
    • আউটপুট 3Y ATtiny84 পিন 6 এর সাথে সংযুক্ত

      • 3A, MOSI, ডাউনলোডের সময় পিন 6 এর সাথে সংযুক্ত
      • 3B, SPST আউটপুট, ডাউনলোডের পরে পিন 6 এর সাথে সংযুক্ত

কেস 1 সফল হয় যদি প্রোগ্রামটি ডাউনলোড করার সময় LED ঝলকানি না করে এবং তারপর প্রোগ্রাম নিয়ন্ত্রণে প্রত্যাশিত হিসাবে ডাউনলোডের পর প্রতি দুই সেকেন্ডে জ্বলজ্বল করে। বিচ্ছিন্নতা ছাড়া LED ডাউনলোডের সময় ঝলকানি হবে কারণ এটি সরাসরি SCK সিগন্যালের সাথে সংযুক্ত, যা ঘড়ির ডাটা রিসিভ/ট্রান্সমিটের অবস্থা পরিবর্তন করে।

কেস 2 সফল হয় যদি MOSI সংকেত ATTiny84 এ ফরওয়ার্ড করা হয় ডাউনলোড করার সময়, যেমন ডাউনলোড ব্যর্থ হয় না, এবং LED ডাউনলোডের পরে SPST সুইচ অন/অফ সাড়া দেয়। কেস 2 একটি অসম্ভব ডাউনলোড ব্যর্থতা প্রতিরোধ করে। বিচ্ছিন্নতা ছাড়াই, SPST সুইচ ব্যর্থতার কারণ হবে যদি 1) একটি ল্যাচড সুইচ ব্যবহার করা হয় এবং 2) ডাউনলোডের সময় সুইচটি অন পজিশনে রেখে দেওয়া হয়। মাল্টিপ্লেক্সার দ্বারা বিচ্ছিন্ন হলে, সুইচটি কোন পরিস্থিতিতে ডাউনলোড ব্যর্থতার কারণ হতে পারে না। কিছুটা প্রসারিত কিন্তু আমাদের পুরানো লোকদের জন্য স্বস্তিদায়ক।

মাল্টিপ্লেক্সার ব্যবহারের একটি ফলাফল হল যে হার্ডওয়্যার উপাদানটি আর সরাসরি মাইক্রোকন্ট্রোলার I/O পিনের সাথে সংযুক্ত করা যাবে না। এটি কিছুটা অসুবিধাজনক কিন্তু অন্যান্য অ্যাপ্লিকেশন হার্ডওয়্যারের সাথে পরীক্ষার সময় উপাদানটিকে রুটিবোর্ডে থাকতে দেয় এবং পরীক্ষা শেষ হলে এটিকে তার যথাযথ স্থানে সরানো যেতে পারে।

ধাপ 3: ATtiny84 কেস 1 - বিচ্ছিন্ন অ্যাপ্লিকেশন আউটপুট

ছবি
ছবি

এই ধাপটি একটি ডাউনলোড সিগন্যাল সহ একটি অ্যাপ্লিকেশন আউটপুট পিন ভাগ করার জন্য সেটআপ বর্ণনা করে। ব্যবহৃত উদাহরণ হল পিন 4 (SCK) এর সাথে সংযুক্ত LED। উদাহরণ হিসেবে বিদ্যমান LED ব্যবহার করে পার্ট 1 হার্ডওয়্যার এবং সফটওয়্যার পরিবেশে মাল্টিপ্লেক্সার যোগ করার উপর জোর দেওয়া হয়।

  • হার্ডওয়্যার

    • উপরের ফ্রিজিং ডায়াগ্রামে দেখানো আপেক্ষিক স্থানে রুটিবোর্ডে মাল্টিপ্লেক্সার যুক্ত করুন। মাল্টিপ্লেক্সার কেস 2 এ প্রয়োজনীয় এসপিএসটি সুইচের জন্য রুমের অনুমতি দেওয়ার জন্য কেন্দ্রের দিকে অবস্থান করছে।
    • মাল্টিপ্লেক্সারে রিসেট সিগন্যাল বাড়ান ATTiny84 পিন 11 থেকে মাল্টিপ্লেক্সার পিন 1 এ একটি সীসা তারের (হলুদ প্রস্তাব) যোগ করে।
    • বাকি হার্ডওয়্যার সেটআপ ধাপ 2 এ দেওয়া আছে

      • মাল্টিপ্লেক্সার পিন 2A সরাসরি মাটিতে সংযুক্ত করুন
      • পিন 2B কে ATtiny84 pin 4 এর সাথে সংযুক্ত করুন
      • আউটপুট 2Y কে LED অ্যানোডের সাথে সংযুক্ত করুন

        • প্রত্যাশিত ফলাফল:

          • ডাউনলোডের সময় 2Y মাটির সাথে সংযুক্ত থাকে (2A) তাই LED বন্ধ থাকে
          • ডাউনলোডের পর 2Y ATTiny84 পিন 4 এর সাথে সংযুক্ত - অ্যাপ্লিকেশন LED নিয়ন্ত্রণ
  • সফটওয়্যার

    • পার্ট 1 কোড পুনরায় ব্যবহার করা হয়; এখানে ডুপ্লিকেট করার পরিবর্তে পার্ট 1 নির্দেশিকা থেকে পাওয়া যায়
    • Arduino IDE তে পার্ট 1 প্রোগ্রাম লোড এবং কম্পাইল করুন
    • একটি পিসি ইউএসবি পোর্টে Tiny AVR প্রোগ্রামারটি লাগান
    • অ্যাডাফ্রুট ইউএসবি থেকে সিরিয়াল কেবল দ্বিতীয় ইউএসবি পোর্টে প্লাগ করুন

      • একটি COM পোর্ট তৈরি করা হয় এবং স্বয়ংক্রিয়ভাবে IDE পোর্ট তালিকায় উপলব্ধ করা হয়
      • COM উইন্ডো চালু করুন
    • ATtiny84 এ সংকলিত কোডটি ডাউনলোড করুন

অ্যাপ্লিকেশন প্রোগ্রামের ফলাফলগুলি পার্ট 1 এর মতোই, যেহেতু একমাত্র পরিবর্তনটি ছিল LED কে একটি "সুরক্ষিত" স্থানে সরানো: LED 2 সেকেন্ডের ব্যবধানে জ্বলজ্বল করে; সিরিয়াল আউটপুট একই। একটি পার্থক্য যা হওয়া উচিত তা হ'ল ডাউনলোডের সময় LED আর ঝলকানি দেয় না, সেই সময় এটি মাল্টিপ্লেক্সার পিন 2A এর মাধ্যমে মাটির সাথে সংযুক্ত থাকে।

ছবি
ছবি

ধাপ 4: ATtiny84 কেস 2 - বিচ্ছিন্ন অ্যাপ্লিকেশন ইনপুট

ছবি
ছবি

এই ধাপটি পূর্ববর্তী আউটপুট বিচ্ছিন্নতার ক্ষেত্রে সেটআপের উপর তৈরি করে। হার্ডওয়্যারের পরিবর্তনগুলি মাল্টিপ্লেক্সারের মাধ্যমে ATtiny84 pin 6 (MOSI) এ একটি SPST সুইচ সংযুক্ত করে। সুতরাং হার্ডওয়্যার পরিবর্তনগুলি ন্যূনতম কিন্তু এসপিএসটি সুইচটি একটি পিন পরিবর্তনের বাধা ব্যবহার করে এলইডি নিয়ন্ত্রণ করার অনুমতি দেওয়ার জন্য বেশ কয়েকটি সফ্টওয়্যার পরিবর্তন রয়েছে। আপডেট কোডটি এই বিভাগের নীচে অন্তর্ভুক্ত করা হয়েছে। কোডটি Arduino IDE এ অনুলিপি করা উচিত; মাল্টিপ্লেক্সার_ইনপুট নামে এটি সংরক্ষণ করার পরামর্শ দিন। (আমি এই বিভাগের দৈর্ঘ্যের জন্য ক্ষমাপ্রার্থী কিন্তু এটি নির্দেশের উদ্দেশ্যটির হৃদয় এবং মনে করি এটি কৃত্রিম বিরতি সন্নিবেশ করার পরিবর্তে একটি একক হিসাবে ভাল পড়ে।)

হালনাগাদ অবস্থান উদ্দেশ্য
"হ্যাকড" সফটওয়্যার সিরিয়াল ক্লাস অন্তর্ভুক্ত করুন বিভাগ অন্তর্ভুক্ত করুন LED এখন একটি পিন পরিবর্তন বিরতির মাধ্যমে SPST সুইচ দ্বারা নিয়ন্ত্রিত হয়। সফটওয়্যার সিরিয়াল শ্রেণীকে অবশ্যই পরিবর্তন করতে হবে কারণ অন্যথায় এটি সমস্ত পিন পরিবর্তন বিঘ্নিত ভেক্টর বরাদ্দ করে। এটি SPST সুইচটিতে নির্ধারিত (পোর্ট 0) ভেক্টরের জন্য "একাধিক সংজ্ঞা" লিঙ্ক ত্রুটি সৃষ্টি করে। হ্যাক করা সফটওয়্যার সিরিয়াল সংস্করণটি প্রোগ্রামের একই ডিরেক্টরিতে রাখা উচিত যাতে এটি শুধুমাত্র এই অ্যাপ্লিকেশনটিকে প্রভাবিত করে।
SPST ইনপুট পিনের সংজ্ঞা অন্তর্ভুক্ত/সংজ্ঞা বিভাগ একটি ডিভাইস পিনে SPST ইনপুট নিয়োগ। পিনটি ডিভাইস নির্দিষ্ট তাই এটি #ifdef ATtiny8x বিভাগে (গুলি) যোগ করা হয়।
SPST ইনপুট পিন মোড সেটআপ ফাংশন SPST পিন একটি INPUT হিসাবে কনফিগার করা হয়
SPST পিন ইন্টারাপ্ট কনফিগার করুন সেটআপ ফাংশন ইন্টারাপ্ট ভেক্টর এসপিএসটি ইনপুট পিনে নির্ধারিত হয় যাতে একটি সুইচ স্টেট পরিবর্তন একটি বাধা সৃষ্টি করে। কনফিগারেশন রেজিস্টার এবং ইন্টারাপ্ট টাইপ ডিভাইস নির্দিষ্ট। কোডটিকে যথাসম্ভব সহজবোধ্য করার জন্য, পার্থক্যগুলি #if সংজ্ঞায়িত বিভাগে পরিচালিত হয়
সম্পূর্ণ সিরিয়াল বার্তা সেটআপ করুন সেটআপ ফাংশন মাল্টিপ্লেক্সার ইনপুট অ্যাপ্লিকেশন প্রতিফলিত করার জন্য সেটআপ সম্পূর্ণ সিরিয়াল আউটপুট বার্তা পরিবর্তন করা হয়
SPST সুইচ ISR ফাংশন যোগ করুন কোড বিভাগ SPST পিন পরিবর্তন বিঘ্নের জন্য ISR যোগ করা হয়েছে। কোডটি সাধারণ কিন্তু ব্যবহৃত ভেক্টরটি ডিভাইস নির্দিষ্ট এবং প্রোগ্রামের শীর্ষে থাকা ডিভাইস নির্ভর বিভাগগুলিতে সংজ্ঞায়িত করা হয়। ISR সক্রিয় আছে কিনা তা যাচাই করার জন্য, LED অবস্থা পরিবর্তন করা হয়েছে। যদিও একটি বাস্তব অ্যাপ্লিকেশনে না-না, একটি সিরিয়াল আউটপুট বার্তা তৈরি করা হয় যা নতুন LED অবস্থা প্রতিফলিত করে।
লুপ প্রক্রিয়াকরণ পরিবর্তন করুন লুপ ফাংশন ISR এখন LED চালু এবং বন্ধ করা নিয়ন্ত্রণ করে যাতে লুপ রুটিন থেকে কার্যকারিতা সরিয়ে ফেলা হয়। ঘুমের রুটিনে একটি কল ATtiny84- এর জন্য "অতিরিক্ত" হিসাবে যোগ করা হয়েছে। এই অ্যাপ্লিকেশনের জন্য, ATtiny85 ঘুম কাজ করে না; সম্ভবত সফ্টওয়্যার সিরিয়াল ক্লাসের হস্তক্ষেপের কারণে এটি সফটওয়্যার সিরিয়ালের সাথে কাজ করে।
ঘুমের রুটিন যোগ করুন কোড বিভাগ মাল্টিপ্লেক্সারের ব্যবহার প্রদর্শন করার জন্য ঘুমের কার্যকারিতা প্রয়োজন হয় না। শুধু যোগ করা হয়েছে কারণ সাধারনত POWER_DOWN মোডে ইনপুটের জন্য পাওয়ার বাঁচাতে অপেক্ষা করতে চান বরং প্রোগ্রাম লুপের মাধ্যমে চলতে থাকুন না যতক্ষণ না একটি ইনপুট ঘটে।

সফটওয়্যার সিরিয়াল ক্লাস কোড পরিবর্তন করুন

সফটওয়্যার সিরিয়াল ক্লাস পরিবর্তন করা প্রয়োজন যাতে এটি সমস্ত পিন পরিবর্তন বিঘ্নিত পোর্টগুলিকে হগ না করে। সফটওয়্যার সিরিয়াল ক্লাস কোড এখানে অবস্থিত

C: / Program Files (x86) Arduino / Hardware / arduino / avr / libraries / SoftwareSerial / src

কোড পরিবর্তনের জন্য শুরুর অবস্থান খুঁজে পেতে SoftwareSerial.cpp- এ PCINT0_vect- এ খুঁজুন। বিদ্যমান #if সংজ্ঞায়িত (PCINT0_vect) স্টেটমেন্টের পূর্বে অবিলম্বে নিম্নলিখিত কোডটি যোগ করুন।

#যদি সংজ্ঞায়িত করা হয় (_ AVR_ATtiny84_)

MYPORT PCINT1_vect #elif সংজ্ঞায়িত করুন }

এখন কোডের বিদ্যমান ব্লকটি মন্তব্য করুন যা নীচে নির্দেশিত হিসাবে পোর্ট ইন্টারাপ্ট ভেক্টর বরাদ্দ করে (শুধু শুরু এবং শেষ ব্লক মন্তব্য চিহ্ন / * এবং * /যোগ করুন):

/*

#if সংজ্ঞায়িত (PCINT0_vect) ISR (PCINT0_vect) {SoftwareSerial:: handle_interrupt (); } #endif #if সংজ্ঞায়িত (PCINT1_vect) ISR (PCINT1_vect) {// SoftwareSerial:: handle_interrupt (); ISR (PCINT1_vect, ISR_ALIASOF (PCINT0_vect)); } #endif #if সংজ্ঞায়িত (PCINT2_vect) ISR (PCINT2_vect, ISR_ALIASOF (PCINT0_vect)); #endif #if সংজ্ঞায়িত (PCINT3_vect) ISR (PCINT3_vect, ISR_ALIASOF (PCINT0_vect)); #যদি শেষ */

হার্ডওয়্যার কনফিগার করুন

SPST সুইচ ATtiny84 pin 6 (MOSI) এর সাথে সংযুক্ত করা হয়েছে যেমন ধাপ 2 এ বর্ণিত হয়েছে। সুবিধার জন্য পদ্ধতিটি এখানে নকল করা হয়েছে।

  • সুইচ ইনপুট 3A কে টিনি এভিআর প্রোগ্রামার হেডার এমওএসআই লিডের সাথে সংযুক্ত করুন
  • আউটপুট পিন অন SPST সুইচ 3B সংযোগ করুন
  • 3Y ATTiny84 পিন 6 এর সাথে সংযুক্ত করুন

    • ফলাফল:

      • 3A, MOSI, ডাউনলোডের সময় ATtiny84 pin 6 এর মাধ্যমে গেট করা হবে
      • 3B, SPST আউটপুট, ডাউনলোডের পরে 6 পিন করতে গেট করা হবে

প্রোগ্রাম চালান

চালানোর আগে, SPST সুইচটি বন্ধ অবস্থায় রাখুন। অন্যথায় সুইচ বন্ধ হয়ে গেলে LED চালু হবে এবং তদ্বিপরীত। Arduino IDE ব্যবহার করে অ্যাপ্লিকেশন ইনপুট প্রোগ্রাম লোড, কম্পাইল এবং ডাউনলোড করার জন্য ধাপ 3 এর পদ্ধতি অনুসরণ করুন। আগের মতই, LED ডাউনলোড করার সময় ঝলকানো উচিত নয় তাই প্রোগ্রামটি চালু এবং চলমান থাকার একমাত্র ইঙ্গিত সেটআপ রুটিনের শেষে সিরিয়াল বার্তা হবে: সেটআপ সম্পূর্ণ - ইনপুট উদাহরণ

এই মুহুর্তে প্রোগ্রামটি SPST সুইচ থেকে একটি ইনপুটের জন্য অপেক্ষা করছে। সুইচটি অন পজিশনে রাখলে LED চালু হয়ে যাবে; বন্ধ অবস্থানে ফিরে পরিবর্তন LED বন্ধ করে দেয়। আউটপুট বার্তা যাচাই করে যে ISR কে আহ্বান করা হয়েছিল (ISR: Led HIGH, ISR: Led LOW)। লক্ষ্য করুন সিরিয়াল মেসেজের অর্ডার হল ঘুমাতে যান প্রথমে একটি সুইচ স্টেট পরিবর্তনের অপেক্ষায়; যখন একটি সুইচ ইনপুট পান ISR চালু করা হয়, LED টগল করে এবং পরিবর্তনের নথি; তারপর প্রক্রিয়াকরণ ঘুমের কল অনুসরণ করে বাধাপ্রাপ্ত হয় যেহেতু বাধা প্রসেসরকে জাগিয়ে তোলে।

ছবি
ছবি

এই নির্দেশের জন্য প্রোগ্রাম:

//************************************************************************

// অংশ 2: অ্যাপ্লিকেশন/ডাউনলোড ডিভাইস পিন শেয়ারিং //। এসপিআই প্রোগ্রামিং ইন্টারফেস // এ নির্ধারিত পিনের পুন reব্যবহারের জন্য পার্ট 1 কোড পরিবর্তন করে। ATtiny85 এবং ATtiny84 এর জন্য "কমন" কোড // ****************************************** ********************************** #অন্তর্ভুক্ত "SoftwareSerial.h" // সংশোধিত Arduino SoftwareSerial ক্লাস #অন্তর্ভুক্ত // যখন প্রক্রিয়াকরণ কোড সাধারণ, ব্যবহৃত পিনগুলি ডিভাইস নির্দিষ্ট #যদি সংজ্ঞায়িত (_ AVR_ATtiny84_) || সংজ্ঞায়িত করা হয়েছে (MOSI) #ডিফাইন ISR_VECT PCINT0_vect // SPST সুইচ পিন পরিবর্তন ইন্টারাপ্ট ভেক্টর #elif সংজ্ঞায়িত (_ AVR_ATtiny85_) #define ledPin 1 #define rxPin 4 #define txPin 3 #SPST সুইচ থেকে INPT_ INT0_ INT0_ INT00 // SPST সুইচ পিন পরিবর্তন বাধাগ্রস্ত ভেক্টর #অন্যথায় #ত্রুটি শুধুমাত্র ATiny84 এবং ATtiny85 এই প্রকল্প দ্বারা সমর্থিত #endif // সফ্টওয়্যার সিরিয়াল মাইসিরিয়াল (rxPin, txPin); // ------------------------------------------------ ------------------------ // প্রক্রিয়াকরণ সম্পদ আরম্ভ করুন // ------------------- -------------------------------------------------- --- অকার্যকর সেটআপ () {mySerial.begin (9600); // সিরিয়াল প্রসেসিং বিলম্ব শুরু (2000); // শুরু করার জন্য সিরিয়াল কম পোর্ট সময় দিন। // অন্যথায়, প্রথম আউটপুট সম্ভবত অনুপস্থিত বা পিনমোড (লিডপিন, আউটপুট); // আউটপুট পিনমোডের জন্য নেতৃত্বাধীন পিন কনফিগার করুন (স্পস্টপিন, ইনপুট); // SPST সুইচ পিনকে একটি INPUT হিসাবে কনফিগার করুন #যদি সংজ্ঞায়িত করা হয় (_ AVR_ATtiny84_) || (_AVR_ATtiny84A_) // পিন 6 (MOSI) GIMSK | = (1 <

ধাপ 5: ATtiny85 কেস 1 - বিচ্ছিন্ন অ্যাপ্লিকেশন আউটপুট

ছবি
ছবি

ATtiny85 এর জন্য একটি ডুপ্লিকেট হার্ডওয়্যার সেটআপ তৈরি করার পরিবর্তে, এটি 4 টি ধাপ থেকে ATtiny84 এর সমাপ্ত কনফিগারেশন দিয়ে শুরু করা এবং tiny84 চিপটিকে tiny85 দিয়ে প্রতিস্থাপন করা সহজ। সমস্ত প্রয়োজনীয় হার্ডওয়্যার ইতিমধ্যে উপলব্ধ। যদি এই পদ্ধতি ব্যবহার করে, tiny85 সনাক্ত করুন যাতে পিন 3 এবং 4 সিরিয়াল ক্যাবল tx এর সাথে লাইন আপ করে এবং তারগুলি গ্রহণ করে। এটি তখন ATTiny85 এর জন্য তাদের প্রয়োজনীয় অবস্থানের সাথে মেলে SPI ইন্টারফেস সীসা তারের স্থানান্তর একটি ব্যাপার।

স্ক্র্যাচ থেকে শুরু করলে, ধাপ 3 থেকে সাধারণ ধাপগুলি এবং উপরের ফ্রিজিং ডায়াগ্রামটি অনুসরণ করুন। কোডটি ধাপ 3 এ ATtiny84 এর জন্য ব্যবহৃত একই ফলাফল প্রত্যাশিত - ডাউনলোডের সময় কোন ঝলকানি নয়; 2 সেকেন্ডের ব্যবধানে LED ঝলকানি চালানোর সময় এবং সিরিয়াল আউটপুট বার্তাগুলি LED অবস্থা অনুসরণ করে।

ছবি
ছবি

ধাপ 6: ATtiny85 কেস 2 - বিচ্ছিন্ন অ্যাপ্লিকেশন ইনপুট

ছবি
ছবি

হার্ডওয়্যার সেটআপের জন্য, ধাপ 5 থেকে কনফিগারেশন দিয়ে শুরু করুন এবং উপরের fritzing ডায়াগ্রামে নির্দেশিত SPST সুইচ যোগ করুন। আমি আসলে tiny85 সংস্করণের জন্য একটি ক্ষণস্থায়ী সুইচ ব্যবহার করেছি এবং এটি যাচাইকরণকে একটু সহজ করে তোলে। লক্ষ্য করুন যে ATTiny84 কনফিগারেশন থেকে সুইচ আউটপুট 180 ডিগ্রী ঘোরানো হয়। এই পরিবর্তনটি হুকআপ তারগুলিকে রুট করা সহজ করে তোলে কারণ ATTiny85 এর জন্য 3 টি SPI সংকেত একই দিকে থাকে।

ATtiny84 ধাপ 4 -এর মতো একই প্রোগ্রাম ব্যবহার করুন। একই সাধারণ ফলাফল প্রত্যাশিত - SPST সুইচ চালু/বন্ধ করার সময় LED পরিবর্তিত হয় এবং সিরিয়াল আউটপুট বার্তাগুলি পরিবর্তনগুলি নথিভুক্ত করে। ঘুমাতে যাওয়ার বার্তাগুলি অনুপস্থিত, যেহেতু ঘুমের কার্যকারিতা ATtiny85 এর জন্য আহ্বান করা হয়নি। যদিও একই প্রোগ্রাম ব্যবহার করা হয়, এটি বাস্তবায়নের ক্ষেত্রে উল্লেখযোগ্য পার্থক্য রয়েছে যে ATTiny85 এর একটি মাত্র পোর্ট রেজিস্টার (পোর্ট 0) রয়েছে:

  1. সফটওয়্যার সিরিয়াল এখন সিরিয়াল যোগাযোগের জন্য পোর্ট 0 পিন পরিবর্তন বিরতি বরাদ্দ করে (মনে রাখবেন আমরা ATtiny84 এর জন্য পোর্ট 1 ব্যবহার করতে সক্ষম হয়েছিলাম।)
  2. SPST সুইচ ইন্টারাপ্ট অবশ্যই এক্সটার্নাল ইন্টারাপ্ট 0 (INT0) দিয়ে বাস্তবায়ন করতে হবে যেহেতু SoftwareSerial দ্বারা একমাত্র এবং শুধুমাত্র পিন পরিবর্তন ইন্টারাপ্ট বরাদ্দ করা হয়। এটি পিন পরিবর্তন বিঘ্ন এবং বহিরাগত বিঘ্নগুলি যৌক্তিকভাবে স্বাধীন এবং একই পোর্ট রেজিস্টারের মধ্যে ব্যবহার করা যেতে পারে।
  3. একটি পরিবর্তিত সফ্টওয়্যার সিরিয়াল সংস্করণ ব্যবহার করে কিছুই অর্জন করা যায় না - কেবল একটি পোর্ট রয়েছে এবং সফ্টওয়্যার সিরিয়াল শ্রেণী এটি দখল করবে। যাইহোক, পরিবর্তিত শ্রেণীটি এখনও এই পদক্ষেপের লক্ষ্যের সাথে সরাসরি সম্পর্কিত নয় এমন পরিবর্তন এড়াতে ব্যবহার করা হয়েছিল।

প্রস্তাবিত: