📡 حاسبة سرعة الاتصال التسلسلي (UART) ونسبة الخطأ
✅ باختصار
في متحكمات AVR تُحسب قيمة المسجّل UBRR من تردد المعالج والسرعة المطلوبة، ويجب ألا تتجاوز نسبة الخطأ ±2%. فمثلاً، يعطي تردد 16 ميغاهرتز على سرعة 115200 خطأً قدره −3.5%، وينخفض إلى 2.1% مع تفعيل السرعة المضاعفة.
🧮 الحاسبة
📐 طريقة الحساب
قيمة المسجّل، ثم السرعة الفعلية الناتجة عنها (يُستبدل 16 بـ 8 في وضع السرعة المضاعفة):
UBRR = F_CPU ÷ (16 × Baud) − 1
Baud_real = F_CPU ÷ (16 × (UBRR + 1))
نسبة الخطأ:
Error = (Baud_real − Baud) ÷ Baud
حتى ±2% يكون الاتصال موثوقاً غالباً، وفوقها قد تظهر أحرف خاطئة. وتعطي كريستالات مثل 14.7456 أو 18.432 ميغاهرتز خطأً صفرياً لجميع السرعات القياسية.
📝 مثال
Arduino Uno بتردد 16 ميغاهرتز على سرعة 115200: قيمة المسجّل 8 ونسبة الخطأ −3.5%، ومع السرعة المضاعفة تصبح القيمة 16 ونسبة الخطأ 2.1%.
❓ أسئلة شائعة
لماذا تظهر رموز غريبة على شاشة الاتصال التسلسلي؟
غالباً لأن سرعة الاتصال غير متطابقة بين الطرفين، أو لأن نسبة الخطأ كبيرة عند السرعات العالية.
هل يعاني ESP32 من المشكلة نفسها؟
بدرجة أقل بكثير؛ فمقسّم الساعة فيه كسري وساعته 80 ميغاهرتز، فيبقى الخطأ صغيراً جداً في معظم السرعات.
ما أعلى سرعة موثوقة لـ Arduino Uno؟
مع تردد 16 ميغاهرتز تعطي السرعات 250000 و 500000 و 1000000 خطأً صفرياً، لأنها تقسم التردد قسمة تامة.
📚 تعلّم أكثر

برمجة الاردوينو روبوتيكس

اساسيات البايثون والذكاء الاصطناعي

انترنت الاشياء والانظمة المدمجة (iot)
