নির্বাচিত সিরিয়াল বন্দরটির গতি কী চলছে তা জানতে আমি কি কিছু কোড ব্যবহার করতে পারি?
নির্বাচিত সিরিয়াল বন্দরটির গতি কী চলছে তা জানতে আমি কি কিছু কোড ব্যবহার করতে পারি?
উত্তর:
কোনও শীর্ষ স্তর নেই, সহজে ব্যবহারের উপায়। দুঃখিত। আপনি যখন সিরিয়াল বন্দরটি সেটআপ করবেন তখন আপনার পছন্দসই বাড রেটটি একটি ভেরিয়েবলের মধ্যে সঞ্চিত করা সহজ।
যাইহোক, আপনি এভিআর-ভিত্তিক, হার্ডওয়ার ইউআআআরটিসগুলির জন্য যা করতে চেষ্টা করতে পারেন তা 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 বাউডে রয়েছে।