আপনি কি বর্তমান সিরিয়াল বন্দরের গতি সম্পর্কে জিজ্ঞাসা করতে পারবেন?


9

নির্বাচিত সিরিয়াল বন্দরটির গতি কী চলছে তা জানতে আমি কি কিছু কোড ব্যবহার করতে পারি?


1
ভেরিয়েবলের গতি সংজ্ঞায়িত করা সহজতর হতে পারে :)
বেনামে পেঙ্গুইন

আপনার অর্থ কি পিসি বা অন্য কোনও ডিভাইস সিরিয়ালের গতি সেট করেছে, এবং আরডুইনো নিজেকে ম্যাচের জন্য সামঞ্জস্য করতে?
ডেভপ

উত্তর:


7

কোনও শীর্ষ স্তর নেই, সহজে ব্যবহারের উপায়। দুঃখিত। আপনি যখন সিরিয়াল বন্দরটি সেটআপ করবেন তখন আপনার পছন্দসই বাড রেটটি একটি ভেরিয়েবলের মধ্যে সঞ্চিত করা সহজ।

যাইহোক, আপনি এভিআর-ভিত্তিক, হার্ডওয়ার ইউআআআরটিসগুলির জন্য যা করতে চেষ্টা করতে পারেন তা Serial.beginকোনও বিশেষ বাউড রেট সেটআপ করার জন্য পূর্বাবস্থায় ফিরে আসে তবে এটি কিছুটা ব্যথা করে। বাউড রেট নির্ধারণের জন্য এটি কোড:

  // Try u2x mode first
  uint16_t baud_setting = (F_CPU / 4 / baud - 1) / 2;
  *_ucsra = 1 << U2X0;

  // hardcoded exception for 57600 for compatibility with the bootloader
  // shipped with the Duemilanove and previous boards and the firmware
  // on the 8U2 on the Uno and Mega 2560. Also, The baud_setting cannot
  // be > 4095, so switch back to non-u2x mode if the baud rate is too
  // low.
  if (((F_CPU == 16000000UL) && (baud == 57600)) || (baud_setting >4095))
  {
    *_ucsra = 0;
    baud_setting = (F_CPU / 8 / baud - 1) / 2;
  }

  // assign the baud_setting, a.k.a. ubrr (USART Baud Rate Register)
  *_ubrrh = baud_setting >> 8;
  *_ubrrl = baud_setting;

আপনি ডান ইউসিএসআরএ, ইউবিআরআরএইচ এবং ইউবিআরএল রেজিস্টারগুলি পড়ে এর ফলাফলগুলি সন্ধান করতে পারেন। আনোতে সেগুলি হ'ল সঠিক নিবন্ধের নাম, একটি মেগায় এটির ইউসিএসআর0 এ, ইউবিআরআর0 এইচ, সিরিয়ালটির জন্য ইউবিআরআর0 এল, সিরিয়াল 1 এবং আরও জন্য। নন-অভির বোর্ড (এবং Serialএকটি লিওনার্দোতে) সম্পূর্ণ আলাদা হবে।

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

উদাহরণস্বরূপ, আমার মেগায় ইউবিবিআর0 এইচ, ইউবিবিআর0 এল এবং ইউসিএসআর0 এ 0,207, 2 এ 9600 বাউডে রয়েছে তবে তারা 0, 51, 2 38400 বাউডে এবং 0, 16, 0 এ 57600 বাউডে রয়েছে।


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