ইউআর্টে রহস্যজনক আরএক্স ডাল ওএস এক্স আরডুইনো ডিউয়ের সাথে সংযুক্ত


14

আরডুইনো আইডিই 1.6.8, আরডুইনো ডিউ, ম্যাক ওএস 10.11.3

আমি যখন একাধিক ক্লায়েন্ট লাইব্রেরি (পাইথন, জাভাস্ক্রিপ্ট পাশাপাশি আইডিই-র অন্তর্নির্মিত সিরিয়াল মনিটর) ব্যবহার করে সিরিয়াল বন্দরটিতে সংযোগ করি তখন আমি আরএক্স লাইনে আটটি রহস্যময় ডাল দেখছি। প্রায় 78-79us প্রায়, একটি লজিক প্রো 16 এর সাথে 1MS / s এ নমুনাযুক্ত।

রহস্যের ডাল

এই আটটি ডাল যখন 57600 বাউডে ব্যাখ্যা করা হয় তখন ফিরমাতা ফার্মওয়্যারটি জ্যাম হয়ে যায়। এবং তারা প্রতিটি সংযোগে ঘটে।

এটি আরডুইনো 1.6.8 আইডিইর একটি নতুন ইনস্টল এবং একাধিক স্কেচ ব্যবহার করছে (সাধারণ "ব্লিঙ্ক" স্কেচ এটি পুনরুত্পাদন করবে)।

আমার মেশিনে পদক্ষেপগুলি তিরস্কার করুন:

  1. যে কোনও স্কেচ ইনস্টল করুন
  2. আপনি যদি এটি ধরতে চান তবে লজিক বিশ্লেষকটি শুরু করুন
  3. সিরিয়াল মনিটরে যান। আমি 57600 বাউডের জন্য খনিটি কনফিগার করেছি, নিউলাইন লাইনটি শেষ হচ্ছে, তবে তাতে কিছু আসে যায় না
  4. আপনি যদি চান, বন্ধ করুন এবং 3 ধাপ পুনরাবৃত্তি করুন
  5. প্রতিবার সিরিয়াল পোর্টের সাথে সংযোগ স্থাপনের সময় নোটগুলি নোট করুন

এটি নির্ণয়ের জন্য কোনও পরামর্শ? মনে হচ্ছে এটি কোনওভাবে সিরিয়াল ড্রাইভার-স্তরের।


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

1
উত্সটি অনুসরণ করার শর্তে, আরও একটি সিরিয়াল ক্লায়েন্ট প্রোগ্রাম, অন্য একটি কম্পিউটার / অপারেটিং সিস্টেম, অন্য একটি ইউএসবি-সিরিয়াল ডিভাইস ইত্যাদি চেষ্টা করা সহায়ক হবে ...
ক্রিস স্ট্রাটন

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

2
আপনি সংযোগ বিচ্ছিন্ন করার পরে আপনি একটি পেতে। সংযোগ বাউডের হারটি নাড়ির দৈর্ঘ্যে কোনও প্রভাব ফেলবে না। আমার সন্দেহ হ'ল এটিএমটিগা 16 ইউ 2 এর ফার্মওয়্যার যা এটি করছে (বা যা কিছু সংস্করণই হোক না কেন)
মাজনকো

1
আপনি যখন সিরিয়াল মনিটরটি শুরু করেন, সফ্টওয়্যারটি আরডুইনো মডিউলটি পুনরায় সেট করে। যদি আরডুইনো মডিউলে এতে বুটলোডার থাকে তবে আমি মনে করি এগুলি এসটিকে 500 প্রোটোকল সংকেত।
Mert Gülsoy

উত্তর:


1

ছোটগল্প ঃ

এটিএমইজিএ 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 ই এর আরএক্স লাইনে টান আপ সক্ষম করুন।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.