আমি কত বেশি বাড রেট (ত্রুটি ছাড়াই) যেতে পারি?


40

মান 9600 বাউড। এটাই তো মানআরডুইনো ইউনো এসএমডি আর 2 ব্যবহার করে, আমি সর্বোচ্চ ব্যবহারিক বাড রেটটি কী অর্জন করতে পারি?

দুর্বৃত্তদের জন্য বোনাস পয়েন্ট: উচ্চ স্থানান্তর হার পাওয়ার জন্য আপনি কীভাবে ত্রুটি পরীক্ষা করার ব্যবস্থা তৈরি করার এবং বাউডের হারকে হাস্যকর উচ্চতা বাড়িয়ে তুলবেন?


1
এটি লক্ষণীয় যে এফটিডিআইআই ইউএসবি-সিরিয়াল আইসি ব্যবহার করে এমন আরডুইনো বোর্ডগুলি খুব দ্রুত যেতে পারে। সাধারণ এফটি 232 ইস্যু ছাড়াই 3 মেগাবাড (এটি 3,000,000 বাউড) যেতে পারে। একটি এটিমেগ 16 ইউ 2 এর ব্যবহার সীমাবদ্ধ ফ্যাক্টর।
কনার ওল্ফ

আমার ক্লোন আরডুইনো ন্যানো যা আমি ইবে থেকে পেয়েছি সেটি সর্বাধিক ১,০৯৯,৯৯৯ পেয়েছে। সিরিয়াসলি। ইহা কর. এটি একবারে 1,100,000 এ পৌঁছে গেলে আউটপুটটি গার্ফ হয়ে যায়। laqq`na`fca`fga`fga`bcngaah````iin`ha`a`a`bga`fga`bcqpahhqfq```fh`oopa`bca`fca। এটি ইউএসবি কমগুলির জন্য একটি CH340 চিপ ব্যবহার করে।
পিএনডিএ

উত্তর:


59

এখানে বেশ কয়েকটি কারণ রয়েছে:

  • এটিমেগা 328 পি এমসিইউ কতটা উচ্চ স্তরের অর্জন করতে পারে?
  • ইউএসবি-সিরিয়াল ইন্টারফেসটি কতটা উচ্চ স্তরে অর্জন করতে পারে?
  • এটিমেগ 328 পি-তে দোলকের ফ্রিকোয়েন্সি কত?
  • ইউএসবি-সিরিয়াল ইন্টারফেসে দোলকের ফ্রিকোয়েন্সিটি কী (যদি এটি থাকে)?
  • বাউড-রেট মিলের ইউএসবি-সিরিয়াল ইন্টারফেসটি কতটা সহনশীল?

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

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

সাধারণ সিরিয়াল ইন্টারফেসগুলি ~ 5% বাউড-রেটের ত্রুটি সহনীয়। তবে, যেহেতু প্রতিটি প্রান্তটি বন্ধ হতে পারে, তাই আরও একটি সাধারণ বৈশিষ্ট্যটি + -2.5%। এইভাবে, যদি এক প্রান্তটি 2.5% দ্রুত হয় এবং অন্যটি 2.5% ধীর গতিতে থাকে তবে আপনার সামগ্রিক ত্রুটি এখনও কেবল 5%।


যাইহোক। ইউনো একটি এমটিইউ প্রাথমিক এমসিইউ হিসাবে একটি এটিমেগ 328 পি এবং ইউএসবি-সিরিয়াল ইন্টারফেস হিসাবে একটি এটিমেগ 16 ইউ 2 ব্যবহার করে। আমরা এখানেও ভাগ্যবান যে এই দু'টি এমসিইউই একই রকম হার্ওয়ার ইউএসআর্ট এবং সেইসাথে 16 মেগাহার্জ ঘড়ি ব্যবহার করে।

যেহেতু উভয় এমসইউরই একই হারওয়ার এবং ক্লক-রেট রয়েছে, তাই উভয়ের একই ধরণের একই বাউড-রেট ত্রুটি থাকবে, তাই আমরা বাউড ত্রুটি সম্পর্কিত সমস্যাটিকে কার্যত উপেক্ষা করতে পারি।

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

এটিমেগা 328 পি ডেটাশিটে তাত্ক্ষণিকভাবে এক নজরে নিম্নলিখিত সারণী তৈরি করা হয়েছে:
এখানে চিত্র বর্ণনা লিখুন

সুতরাং 2 এমবিপিএসের সর্বাধিক বর্ণিত বাড-রেট দেওয়া, আমি একটি দ্রুত পরীক্ষার প্রোগ্রাম লিখেছি:

void setup(){};

void loop()
{

  delay(1000);
  Serial.begin(57600);
  Serial.println("\r\rBaud-rate = 57600");
  delay(1000);
  Serial.begin(76800);
  Serial.println("\r\rBaud-rate = 76800");
  delay(1000);
  Serial.begin(115200);
  Serial.println("\r\rBaud-rate = 115200");
  delay(1000);
  Serial.begin(230400);
  Serial.println("\r\rBaud-rate = 230400");
  delay(1000);
  Serial.begin(250000);
  Serial.println("\r\rBaud-rate = 250000");
  delay(1000);
  Serial.begin(500000);
  Serial.println("\r\rBaud-rate = 500000");
  delay(1000);
  Serial.begin(1000000);
  Serial.println("\r\rBaud-rate = 1000000");
  delay(1000);
  Serial.begin(2000000);
  Serial.println("\r\rBaud-rate = 2000000");
};

এবং তারপরে সিরিয়াল টার্মিনাল সহ প্রাসঙ্গিক সিরিয়াল বন্দরটির দিকে তাকাতে:

এখানে চিত্র বর্ণনা লিখুন

সুতরাং এটি প্রদর্শিত হচ্ছে যে হার্ডওয়্যারটি সমস্যা ছাড়াই 2,000,000 বাডে চালাতে পারে।

নোট করুন যে এই বাড রেটটি কেবলমাত্র বাইট প্রতি এমসইউ 64 80০ ক্লক-সাইকেল দেয় , তাই সিরিয়াল ইন্টারফেসকে ব্যস্ত রাখা খুব চ্যালেঞ্জ হবে। পৃথক বাইটগুলি খুব দ্রুত স্থানান্তরিত হতে পারে, তবে ইন্টারফেসটি কেবল অলস থাকলে খুব বেশি সময় আসার সম্ভাবনা থাকে।


সম্পাদনা: আসল পরীক্ষা!

2 এমবিপিএস আসল:
এখানে চিত্র বর্ণনা লিখুন
প্রতিটি বিট-টাইম 500 এনএস হয়, যা প্রত্যাশার সাথে ঠিক মেলে।

পারফরম্যান্স ইস্যু! সামগ্রিক প্যাকেটের দৈর্ঘ্য:
500 কাবাউড: এখানে চিত্র বর্ণনা লিখুন

1 এমবাউড: এখানে চিত্র বর্ণনা লিখুন

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

আপনি দেখতে পাচ্ছেন, সামগ্রিক সংক্রমণ দৈর্ঘ্য 0.5, 1 এবং 2 এমবাউডের জন্য একই same এটি কারণ যে কোডটি সিরিয়াল বাফারে বাইটগুলি রাখছে তা অসম্পূর্ণভাবে অনুকূলিত হয়েছে। যেমন আপনি নিজের ক্রিয়াকলাপের লাইব্রেরিগুলি না লিখে আপনি কোনও কার্যকর 500 কেবাউডের চেয়ে ভাল আর কখনই অর্জন করতে পারবেন না। যাও Arduino লাইব্রেরি খুব দুর্বল, অপ্টিমাইজ করা হয়, তাই এটি সম্ভবত হবে না খুব কঠিন একটি সঠিক 2 Mbaud পেতে, অন্তত ফেটে সম্প্রচার, যদি আপনি এটি সময় একটি বিট অতিবাহিত।


4
থ্রুপুট সীমাবদ্ধতার চমৎকার চিত্রণ!
জিপ্পি

1
@ অন্নোনমাস পার্সন - আপনি যদি 20 মেগাহার্জ ঘড়িতে স্যুইচ করেন তবে আপনি 2.5 এমবিপিএস করতে পারেন।
কনার উলফ

1
@ অন্নোনমাস পার্সন - আপনার উভয়কেই অদলবদল করতে হবে বা 20 মেগাহার্জ এটিএমগা 328 পি অসিলেটর সহ একটি এফটিডিআই ইউএস-সিরিয়াল ইন্টারফেস ব্যবহার করতে হবে। এটিমেগা 328 পি 20 মেগাহার্জ স্ফটিক / অনুরণনকারী ছাড়া 2.5 এমবিপিএস করতে পারে না। কোনও এটিএমগা 16 ইউ 2 ইন্টারফেসের ক্ষেত্রেও এটি একই।
কনার ওল্ফ

1
দুর্দান্ত উত্তর! কেবলমাত্র একটি ছোট সংশোধন: 2 এমবি / সেকেন্ডে, প্রতিটি বাইট ট্রান্সমিশনের জন্য 64 সিপিইউ চক্র লাগে, 64 নয় This কারণ সময় অনুসারে প্রতিটি বাইটের মূল্য 10 বিট (1 স্টার্ট, 8 ডেটা, 1 স্টপ) হয়।
এডগার বোনেট

1
@ linhartr22 - পুতুল শুধুমাত্র সত্যিই খেলার মধ্যে আসা যদি তারা করছি দীর্ঘ । 12, "+ যেমন, আমি মনে করি এটি সম্ভবত অসম্ভাব্য যে অনেক মানুষ 100 ফুট দীর্ঘ তারের ব্যবহার করছেন অত্যধিক এছাড়া প্রশ্ন ছিল কিভাবে উচ্চ। Arduino / এটিমেগা বাউড রেট যেতে পারে, একটি স্বেচ্ছাসেবক তারের সমাবেশ কত উঁচুতে যেতে পারে তা নয়
কনার ওল্ফ

7

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

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

মনে রাখবেন যে এটি আপনার ঘড়ির গতির উপরও নির্ভর করে।

কী কী সম্ভব তা গণনা করতে আপনাকে সহায়তা করার জন্য এখানে একটি ক্যালকুলেটর রয়েছে


আপনি দ্রুত এবং দ্রুত যেতে শুরু করার সাথে সাথে সীমাবদ্ধতাটি সিরিয়াল লাইব্রেরিতে পরিণত হয় - এটি বাস্তবায়ন খুব কার্যকর নয়।
সাইবার্বিবনস

লিঙ্কের ওয়েবসাইটটি মারা গেছে
কোডবিট

3

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

আইও পিনগুলিতে / থেকে সিরিয়াল ডেটা / আউট / আউট করার জন্য মাইক্রোকন্ট্রোলারের কিছু প্রাথমিক হার্ডওয়্যার রয়েছে তা মনে রাখবেন তবে নিখুঁত সর্বোচ্চ হার 16MHz ঘড়ির মধ্যে সীমাবদ্ধ (এভিআরগুলির জন্য)। একবার বাইট সিরিয়াল বাফারে স্থানান্তরিত হয়ে গেলে, ইউআআআআটি হার্ডওয়ারটি নিজের হাতে বিটগুলিতে নিয়ে যাবে এবং টান দেবে। সেরাভাবে একটি এভিআর প্রতি সেকেন্ডে 16 এম নির্দেশিকায় পৌঁছে যায় এবং সিরিয়াল বাফারটি পূরণ করতে ব্যবহৃত ব্যবস্থাগুলির কিছু ওভারহেড থাকে (বাধা হ্যান্ডলিংয়ের জন্য কমপক্ষে 8 টি ক্লক টিক্স + বর্তমান অবস্থা বাঁচানোর জন্য নির্দেশাবলী + আসলে বাফারটি পূরণের জন্য বেশ কয়েকটি নির্দেশাবলী)। প্রদত্ত বিটরেটে, প্রোটোকলটি প্রতি সেকেন্ডে একটি বৃহত্ এন বিটগুলিতে চলবে, তবে আপনার নিয়ামকটি সিরিয়াল বাফারটি পূরণ করতে আরও বেশি সময় প্রয়োজন ডেটা প্রকৃতপক্ষে আউটপুট করার প্রয়োজন হয়, ফলস্বরূপ আপনার প্রত্যাশার চেয়ে কম গড় থ্রুপুট এবং ইউআরটি নিষ্ক্রিয় হয় তুলনামূলকভাবে দীর্ঘ সময়ের জন্য

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

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


1
আমি সত্যিই সন্দেহ করি যে, যে কোনও বোর্ডের 2 মেগাহার্জ সিগন্যালকে জরিমানা কাজ করা থেকে বিরত রাখতে যথেষ্ট লেআউটের সমস্যা রয়েছে doubt 2 মেগাহার্টজ হুবহু উচ্চ ফ্রিকোয়েন্সি নয়।
কনার ওল্ফ

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

দুষ্টুমি করসি না! হাহ। আমি আশ্চর্য হয়েছি যে লেআউটটি এতটা খারাপ হতে হবে? যদিও আমি সন্দেহ করি যে এটি দুর্বল-সহনশীলতা অনুরণনকারী / স্ফটিকের মতো লেআউট নয় not
কনার ওল্ফ

1
উচ্চ বাউড-হারগুলি, বিশেষত যদি U2Xn = 1ইউএসআর্টে থাকে তবে মেলানো সম্পর্কে খুব কটূক্তি পেতে থাকে।
কনার ওল্ফ

@ ফেকনাম আমি ডাইনোসর, আমি যে সমস্ত ভুল উত্তরাধিকারের কথা ভাবতে পারি তার জন্য "9600 8N1" পছন্দ করি; ও)
জিপি

2

ত্রুটি পরীক্ষা করা আসলে খুব সহজ এবং একটি লাইনের মধ্যে এটি করে এমন একটি এভিআর লাইব রয়েছে।

পড়ুন এবং util/crc16.hঅন্তর্ভুক্ত উদাহরণগুলির সাথে আপনার কোনও সময় না যাওয়া ভাল।

সাধারণ অ্যাপ্লিকেশনগুলির জন্য সিআরসি বেশ মজবুত এবং দ্রুত।

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