গত বছর আমি হ্যান্ডস অনের জন্য একটি বিলুপ্ত TRS-80 মডেল 100 নামিয়েছি। লক্ষ্য ছিল এর 24 কিলোবাইট RAM এবং 2.4-মেগাহার্টজ, 8-বিট সিপিইউ আপগ্রেড করা, কিন্তু নোটবুকের চমৎকার কীবোর্ড এবং এলসিডি স্ক্রিন রাখা। এই নিবন্ধটি 1980-এর দশকের কাঠবিড়ালির মতো এলসিডি কীভাবে নিয়ন্ত্রণ করা যায় তা খুঁজে বের করার বিষয়ে প্রায় সম্পূর্ণ ছিল। বাকিটা আমি পাঠকের জন্য একটি অনুশীলন হিসাবে তারা বলে রেখেছি। সর্বোপরি, ডিসপ্লে নিয়ন্ত্রণকারী আরডুইনো মেগায় একটি নতুন সিপিইউ থেকে ডেটার একটি প্রবাহ পাঠানো একটি তুচ্ছ অনুশীলন হবে, তাই না?
হাহা
না লোকেরা, না এটা ছিল না.
আইইইইবর্ণালীহ্যান্ডস অন নিবন্ধগুলি অগত্যা কীভাবে প্রকল্পগুলি একত্রিত হয় তার রৈখিক সংস্করণ সরবরাহ করে। এটি এমন ধারণা দিতে পারে যে আমরা অত্যন্ত স্মার্ট, যার সাথে একজন প্রভাবকের কিউরেটেড সোশ্যাল মিডিয়া ফিডের মতো বাস্তবতার সম্পর্ক রয়েছে। তাই প্রতিনিয়ত আমি ব্যর্থতার সাথে ধাঁধাঁযুক্ত একটি গল্প উপস্থাপন করতে চাই, আমাকে মনে করিয়ে দিতে যে কখনও কখনও ইঞ্জিনিয়ারিং এমন হয়।
মেগাতে ডিসপ্লে ডেটা পাঠাতে, আমার কাছে সার্কিটপাইথনের ডিসপ্লে ড্রাইভার লাইব্রেরি দ্বারা সমর্থিত বেশ কয়েকটি পদ্ধতির একটি পছন্দ ছিল। আমি মডেল 100-এর নতুন মস্তিষ্ক হিসাবে একটি সার্কিটপাইথন-চালিত মাইক্রোকন্ট্রোলার ব্যবহার করতে চেয়েছিলাম, কারণ সেখানে অনেক বিদ্যমান সফ্টওয়্যার রয়েছে যা আমি স্থানান্তর করতে পারি। বিশেষ করে, CircuitPython এর ডিসপ্লে লাইব্রেরিগুলি ইমেজ এবং টেক্সট তৈরিকে ব্যাপকভাবে সহজ করবে এবং ডিসপ্লে স্বয়ংক্রিয়ভাবে আপডেট করবে। আমার পছন্দগুলি একটি সমান্তরাল ইন্টারফেস এবং দুটি সিরিয়াল ইন্টারফেসের মধ্যে ছিল: SPI এবং I2গ.
সমান্তরাল ইন্টারফেসের জন্য ন্যূনতম 12টি তারের প্রয়োজন। SPI ভাল ছিল কারণ এটি একটি চার-তারের ইন্টারফেস ছিল। কিন্তু আমি2সি তাদের মধ্যে সেরা ছিল, এটি শুধুমাত্র দুটি তারের লাগছিল! এছাড়াও, অনেক ব্রেকআউট বোর্ড রয়েছে যা I সমর্থন করে2সি, স্টোরেজ এবং সব ধরনের সেন্সর সহ। একটি আই2সি-বাস তাত্ত্বিকভাবে শতাধিক আই সমর্থন করতে পারে2সি পেরিফেরাল। I2C SPI এর তুলনায় অনেক ধীর, কিন্তু মডেল 100 এর আশ্চর্যজনকভাবে পুরু 240 বাই 64 পিক্সেল স্ক্রীন আরও ধীর। এবং আমি পূর্ববর্তী প্রকল্পগুলিতে অনেকবার I2C ভিত্তিক পেরিফেরাল ব্যবহার করেছি। i2সি সুস্পষ্ট পছন্দ ছিল. কিন্তু বিক্রেতার তৈরি পেরিফেরিয়াল ব্যবহার করা এবং সেগুলি নিজে তৈরি করার মধ্যে একটি বড় পার্থক্য রয়েছে।
গ্র্যান্ড সেন্ট্রাল কন্ট্রোলার [bottom] ট্যান্ডির নতুন মস্তিষ্কের যত্ন নেয়। যদিও কন্ট্রোলারের Arduino Mega এর মতো একই ফর্ম ফ্যাক্টর রয়েছে, তবে এটির অনেক বেশি প্রক্রিয়াকরণ ক্ষমতা রয়েছে। একটি কাস্টম শিল্ডে একটি সাপোর্টিং ভোল্টেজ-লেভেল শিফটার থাকে [top left] যা কন্ট্রোলার দ্বারা ব্যবহৃত 3.3 এবং 5 ভোল্টের লজিক স্তরকে সঠিকভাবে রূপান্তর করে।জেমস প্রভোস্ট
সার্কিট স্তরে, আই
2সি একটি “খোলা ড্রেন” নীতির চারপাশে নির্মিত। বাস যখন স্থির থাকে, বা কখন ক
1 পাঠানো হয়, পুল-আপ প্রতিরোধক ভোল্টেজ স্তরে লাইন ধরে রাখে যা একটি যৌক্তিক উচ্চ নির্দেশ করে। একটি রেখাকে মাটির সাথে সংযুক্ত করলে তা নিচু হয়ে যায়। একটি লাইন ঘড়ির সংকেত হিসাবে কেন্দ্রীয় নিয়ামক থেকে ডাল পাঠায়। অন্য লাইনটি ডেটা প্রসেস করে, প্রতি ঘড়ি চক্রে এক বিট পাঠায়। বাসে ট্র্যাফিক কখন তাদের জন্য নির্ধারিত হয় ডিভাইসগুলি সনাক্ত করে কারণ প্রতিটির একটি অনন্য 7-বিট ঠিকানা রয়েছে৷ এই ঠিকানাটি পাঠানো হয় ডেটার বাইটের প্রতিটি ব্লকে যোগ করা হয়। তাত্ত্বিকভাবে, যেকোনো ঘড়ির গতি এবং/অথবা লজিক ভোল্টেজ ব্যবহার করা যেতে পারে, যতক্ষণ না নিয়ামক এবং পেরিফেরাল এটি গ্রহণ করে।
এবং সেখানে আমার প্রথম এবং, আমি ভেবেছিলাম, শুধুমাত্র সমস্যা ছিল: যে মাইক্রোকন্ট্রোলারগুলি সার্কিটপাইথন চালাত এবং আমার প্রয়োজনের জন্য যথেষ্ট কম্পিউটেশনাল ছিল 3.3 ভোল্টে চলে, যখন আরডুইনো মেগা LCD-কে পাওয়ার জন্য প্রয়োজনীয় 5 V পাঠাতে ব্যবহার করে। একটি সহজ সমাধান: আমি শুধুমাত্র একটি US$4 স্ট্যান্ডার্ড লজিক লেভেল শিফটার ব্যবহার করব, যদিও I এর সাথে একটি বিশেষ ধরনের সামঞ্জস্যপূর্ণ2সি এর খোলা ড্রেন সেটআপ.
আমি আমার কেন্দ্রীয় নিয়ন্ত্রক হিসাবে একটি $40 অ্যাডাফ্রুট গ্র্যান্ড সেন্ট্রাল বোর্ড ব্যবহার করেছি, এটিকে লেভেল শিফটারের মাধ্যমে মেগাতে সংযুক্ত করেছি এবং উভয় মাইক্রোকন্ট্রোলারে কিছু পরীক্ষা কোড রেখেছি। সবচেয়ে মৌলিক আই2একটি সম্ভাব্য লেনদেন হল কন্ট্রোলার বাসের উপর একটি পেরিফেরাল ঠিকানা পাঠাতে এবং একটি স্বীকৃতি ফেরত পেতে।
উত্তর নেই. আমার কোড এবং ওয়্যারিং চেক করার পরে, আমি বাসের সাথে একটি লজিক বিশ্লেষক সংযুক্ত করেছি। একটি চমৎকার পালস ট্রেন বেরিয়ে এসেছে, যা বিশ্লেষক সফ্টওয়্যারটি গ্র্যান্ড সেন্ট্রাল কন্ট্রোলার দ্বারা সম্প্রচারিত সঠিকভাবে গঠিত ঠিকানাগুলির একটি স্ট্রীম হিসাবে ডিকোড করেছে কারণ এটি পেরিফেরালগুলির জন্য স্ক্যান করেছে, কিন্তু মেগা থেকে কোনও স্বীকৃতি ছাড়াই।
আমি2সি একটি অপেক্ষাকৃত কম গতির বাস যা একটি নিয়ামক এবং (তত্ত্বগতভাবে) একশোরও বেশি পেরিফেরালের মধ্যে দ্বি-দিকনির্দেশক যোগাযোগ প্রদান করে। একটি ডেটা এবং ক্লক লাইনকে পুলআপ প্রতিরোধক দ্বারা একটি উচ্চ ভোল্টেজে রাখা হয়৷ একটি ঘড়ির রেখার ফ্রিকোয়েন্সি নিয়ামক দ্বারা নিয়ন্ত্রিত হয়, যখন নিয়ন্ত্রণ এবং পেরিফেরাল ডিভাইস উভয়ই ডেটা লাইনটিকে স্থলের সাথে সংযুক্ত করে প্রভাবিত করতে পারে৷ একটি পেরিফেরাল ডিভাইস যোগাযোগের সংঘর্ষ এড়াতে নিয়ন্ত্রক দ্বারা এটি করার নির্দেশ দেওয়ার পরে শুধুমাত্র ডেটা লাইনের নিয়ন্ত্রণ নেয়। জেমস প্রভোস্ট
আমি ডায়াগনস্টিক ব্যর্থতার পরের কয়েক ঘন্টা এড়িয়ে যাব, প্রচুর দাঁত পিষে যাওয়া এবং গ্র্যান্ড সেন্ট্রাল কন্ট্রোলারের (এবং আরও অনেকের) হৃদয়ে SAMD চিপ কীভাবে একটি হার্ডওয়্যার-এক্সিলারেটেড আই।
2C ইন্টারফেস কথিত যেতে পারে না
ধীর 100 কিলোহার্টজ ঘড়ির গতির চেয়ে। অবশেষে আমি লজিক বিশ্লেষকটি আবার প্লাগ ইন করলাম এবং ডিকোড করা ডালগুলির মাধ্যমে উপরে এবং নীচে স্ক্রোল করার সাথে সাথে আমি অবশেষে লক্ষ্য করলাম যে বাস স্ক্যানটি 0 বা 1 ঠিকানায় নয়, 16 এ শুরু হয়েছিল। এখন, যখন আমি মেগা ইনের জন্য একটি ঠিকানা বেছে নিয়েছিলাম আমার পরীক্ষার কোড, আমি অনেক বর্ণনা দেখেছি2টিউটোরিয়ালগুলিতে সি যে ঠিকানাগুলির সম্ভাব্য পরিসীমা 0 থেকে 127 পর্যন্ত ছিল। যখন আমি তাকালাম তখন টেক্সাস ইন্সট্রুমেন্টস দ্বারা একটি চমত্কার বিস্তৃত বর্ণনার মতো মনে হয়েছিল কিভাবে আমি2সি-বাস বৈদ্যুতিক স্তরে কাজ করে, ঠিকানাগুলিকে কেবল 7 বিট হিসাবে বর্ণনা করা হয়েছিল, অর্থাৎ 0 থেকে 127। তাই আমি 4টি বেছে নিয়েছিলাম, কমবেশি এলোমেলোভাবে।
কিন্তু আমার লজিক স্ক্যানের ফলাফল হাতে নিয়ে, আমি আবিষ্কার করেছি যে,
ওহো কথা প্রসঙ্গে, ঠিকানা 0 থেকে 7 আসলে অকেজো কারণ সেগুলি বিভিন্ন বাস পরিচালনার জন্য সংরক্ষিত। তাই আমি আমার আসল হার্ডওয়্যার সেটআপে ফিরে গিয়েছিলাম, একটি সুন্দর দুই-সংখ্যার ঠিকানা প্লাগ ইন করেছি এবং বিঙ্গো! সবকিছু ঠিকঠাক কাজ করেছে।
স্বীকার্য যে, এই মাথাব্যথাটি আমার নিজের বোঝার অভাবের কারণে হয়েছিল আমি কীভাবে
2সি কাজ করে। সতর্কতা যে সংরক্ষিত ঠিকানা বিদ্যমান
করতে পারা কিছু টিউটোরিয়ালে পাওয়া যাবে, সেইসাথে টেক্সাস ইন্সট্রুমেন্টের মত লোকেদের কাছ থেকে আরও বিস্তারিত ডকুমেন্টেশন। কিন্তু আমার প্রতিরক্ষায়, এমনকি সেরা টিউটোরিয়ালগুলিতেও এটি সাধারণত বেশ সমাহিত এবং মিস করা সহজ। (আই এর বিশাল সংখ্যাগরিষ্ঠ2সি-নির্দেশ অনেক বেশি সাধারণ পরিস্থিতি নিয়ে উদ্বেগ প্রকাশ করে যেখানে একজন প্রাপ্তবয়স্ক পেরিফেরাল তৈরি করে এবং এটি একটি বুদ্ধিমান ঠিকানা দিয়ে সংযুক্ত করে।) এবং তারপরেও, কিছুই আমাকে বলে না যে সার্কিটপাইথনের হার্ট রেট স্ক্যান বিকাল 4 টায় শুরু হবে।
ওহ, আপগ্রেডের সাথে এগিয়ে যাওয়ার সময়। বাকি যদিও বেশ সহজ হওয়া উচিত!
আপনার সাইটের নিবন্ধ থেকে
ইন্টারনেটে সম্পর্কিত নিবন্ধ