ছোটগল্প ঃ
এটিএমইজিএ 16 ইউ 2 ফার্মওয়্যারটি ( https://github.com/arduino/ArdinoCore-sam/blob/master/firmwares/atmega16u2/arduino-usbserial/Ardino-usbserial.c ) দেখেছি যে আপনি যখন কনফিগার করেন / সেটিংস পরিবর্তন করেন ইউএসবি এমুলেটেড সিরিয়াল পোর্ট, ইউএসআর্ট পুনরায় সেট করা হয়েছে। আপনি আরডুইনো সিরিয়াল মনিটর খোলার পরেও এটি ঘটে (এটি অবশ্যই সিরিয়াল গতিটি কনফিগার করতে হবে)। এটি আপনার স্পাইক তৈরি করে।
লং:
ফাংশনটি দেখুন:
void EVENT_CDC_Device_LineEncodingChanged(USB_ClassInfo_CDC_Device_t* const CDCInterfaceInfo)
সেখানে আপনি দেখতে পাবেন যে কয়েকটি রেখার পরে, এটি ইউএসআর্টকে পুনরায় সেট করে, এটির নিবন্ধগুলি শূন্য করে:
/* Must turn off USART before reconfiguring it, otherwise incorrect operation may occur */
UCSR1B = 0;
UCSR1A = 0;
UCSR1C = 0;
বর্তমান এটিএমইজিএইউ 16 ইউ 2 ডাটাশিটের 168 পৃষ্ঠায়, আপনি দেখতে পাবেন যে ইউসিএসআর 1 বি'র বিট 3 (টিএক্সএন 1 1) সেট করে আপনি ট্রান্সমিটারটি সক্ষম করে, স্বাভাবিক বন্দর ক্রিয়াকে ওভাররাইড করে (অর্থাত্ এটি আউটপুট হয়ে যায়)। তথ্যপত্রের উদ্ধৃতি:
এই বিটটি একজনকে লেখার ফলে ইউএসআর্ট ট্রান্সমিটার সক্ষম হয়। ট্রান্সমিটার সক্ষম হয়ে গেলে TxDn পিনের জন্য স্বাভাবিক বন্দর ক্রিয়াকে ওভাররাইড করবে। চলমান এবং মুলতুবি ট্রান্সমিশন সম্পন্ন না হওয়া অবধি ট্রান্সমিটারটির অক্ষমকরণ (টিএক্সএনএন শূন্যে লেখা) কার্যকর হবে না, অর্থাত্ যখন ট্রান্সমিট শিফট রেজিস্টার এবং ট্রান্সমিট বাফার রেজিস্টারে সংক্রমণ করার ডেটা থাকে না। অক্ষম করা হলে, ট্রান্সমিটার আর TxDn পোর্টকে ওভাররাইড করে না।
অতএব, লিখে UCSR1B = 0;
আপনাকে আর টিএক্সডি 1 পিনকে ওভাররাইড করবে না, যা ইনপুট হিসাবে কাজ করবে।
এটিএমএজিএ 16 ইউ 2 টিএক্সডি এটিএসএএম 3 এক্স 8 ই এর আরএক্স লাইনের সাথে সংযুক্ত রয়েছে। সাধারণ ক্রিয়াকলাপে, ইউআআআআরটি সক্ষম করে, কোনও ডেটা সংক্রমণ না করা হলে সেই লাইনটি উচ্চ থাকে। আপনি যদি ইউআরটি অক্ষম করে থাকেন তবে সেই নির্দিষ্ট লাইনটি আর ১ এ চালক নয় Since যেহেতু প্রারম্ভিককরণ কোডটি সেই পিনটিতে পুল-আপ সেট করে না (এবং এটি আউটপুট হিসাবে কনফিগার করা হয় না), পিনটি একটি ভাসমান ইনপুট হয়ে যায় এবং এতে কোনও ফাঁস হয় to আপনার তদন্তের GND বা এমনকি ইনপুট প্রতিবন্ধকতা (যা আপনার পিন এবং GND এর মধ্যে রয়েছে) ধীরে ধীরে লজিকের স্তরটিকে 0 এ নিয়ে আসবে।
এটিকে ওভাররাইড করার জন্য, আপনার হয়: 1) এটিএমইজিএ 16 ইউ 2 ফার্মওয়্যারটি সংশোধন করুন, পিনটি OUTPUT হিসাবে সেট করে, মান 1 দিয়ে 2) pin পিনটিতে টানটান সক্ষম করে এটিএমইজিএ 16 ইউ 2 ফার্মওয়্যারটি সংশোধন করুন। 3) (প্রস্তাবিত) এটিএসএএম 3 এক্স 8 ই এর আরএক্স লাইনে টান আপ সক্ষম করুন।