جدول المحتويات:

افتح عينيك! محلل منطقي: 21 خطوة
افتح عينيك! محلل منطقي: 21 خطوة

فيديو: افتح عينيك! محلل منطقي: 21 خطوة

فيديو: افتح عينيك! محلل منطقي: 21 خطوة
فيديو: السؤال اللي حير المغاربة | شنو سر الستيل و التبوقيصة ديال العاهل الملكي محمد السادس في آخر ظهوره؟ 2024, يوليو
Anonim
Image
Image
المجسم
المجسم

يسهل محلل المنطق تخيلك لقطار النبض ، وهو البتات التي تنتقل في خط اتصال. وبالتالي ، فإنه يفتح عينيك لتحديد مشكلة محتملة. لماذا هذا مهم؟ إنها أداة تطوير واكتشاف الأخطاء فعالة للغاية يمكنها توفير الوقت. في هذا الفيديو اليوم ، سنقيم أهمية المحلل المنطقي ، ونلاحظ بعض بروتوكولات الممارسات الشائعة أثناء استخدام هذا الجهاز ، ونقدم مثالاً على فشل الاكتشاف دون مساعدة محلل منطقي.

في هذا الفيديو ، استخدمت نموذجًا غير مكلف نسبيًا (حوالي 35 دولارًا) وفعالًا ، مع واجهة رسومية وبرامج مجانية.

الخطوة 1: التجميع

الخطوة 2: الميزات المستخدمة - الخادم

الميزات المستخدمة - الخادم
الميزات المستخدمة - الخادم

• صداري للوصلات

• 2 Arduinos (استخدمنا 2 Mega Arduinos 2560)

• محلل منطقي (نستخدم Saleae)

• كبلات توصيل USB لاردوينو ومحلل.

• راسم الذبذبات (اختياري)

• Protoboard

الخطوة 3: الدائرة المستخدمة

الدائرة المستخدمة
الدائرة المستخدمة

هنا لدينا التخطيطي ، الذي يوضح مراقبة ثلاثة دبابيس: TX0 و SDA و SCL. لدينا نوعان من اردوينوس: سيد وعبد.

الخطوة 4: كود المصدر: Master

في الإعداد ، سنقوم بتضمين المكتبة لاتصالات i2c. لقد أدخلنا الشبكة على أنها رئيسية وبدءنا التسلسل 0. في الحلقة ، طلبنا وحدات بايت من البيانات التابعة للتواصل مع رقم Arduino الخاص بنا 8 ، كما حددنا في المثال. نطبع في المسلسل ، والذي سيتم تقييمه باستخدام محلل المنطق ، البايتات المستلمة.

#include // inclui a biblioteca para comunicação I2C void setup () {Wire.begin ()؛ // Entra na rede como Mestre (endereço é opcional para o mestre) Serial.begin (115200) ؛ // inicia a serial 0} حلقة باطلة () {Wire.requestFrom (8، 6)؛ // Requisita 6 bytes de dados do escravo de endereço 8 while (Wire.available ()) {// enquanto hoses bytes para Receber… char c = Wire.read () ؛ // recebe cada byte e armazena como caracter Serial.print (c) ؛ // envia o caracter pela serial (na verdade vai para o buffer)} delay (500) ؛ // aguarda meio segundo}

الخطوة 5: كود المصدر: Slave

في رمز الرقيق هذا ، أقوم مرة أخرى بتضمين مكتبة اتصالات i2c. أدخل الشبكة كعبد بالعنوان 8. نسجل حدث الطلب ونربطه بوظيفة "الطلب". لا تحتاج إلى القيام بأي شيء في الحلقة ، فقط أعط 0.1 ثانية تأخير.

أخيرًا ، لدينا وظيفة الطلب التي سيتم تنفيذها عند حدوث حدث الطلب بواسطة السيد ، والذي تم تسجيله في الإعداد. نجيب أخيرًا برسالة حجمها 6 بايت.

#include // inclui a biblioteca para comunicação I2C void setup () {Wire.begin (8)؛ // entra na rede como escravo com endereço 8 Wire.onRequest (requestEvent) ؛ // registra o evento de Requisiçao // e associa à função requestEvent} void loop () {delay (100)؛ // não faz nada no loop، apenas aguarda 0، 1 segundo} // função que será Executiveada quando ocorrer o evento de Requisição pelo mestre // foi registrada como evento no setup void requestEvent () {Wire.write ("teste") ؛ // responsee com uma mensagem de 6 bytes}

الخطوة 6: المحلل: الأجهزة

محلل: جهاز
محلل: جهاز

معدل العينة يصل إلى: 24 ميجا هرتز

المنطق: 5 فولت إلى 5.25 فولت

عتبة المستوى المنخفض 0.8 فولت

عتبة عالية المستوى 2.0 فولت

مقاومة إدخال تبلغ حوالي 1 موهم أو أكثر

الخطوة 7: تثبيت برنامج Saleae

تثبيت برنامج Saleae
تثبيت برنامج Saleae

يمكن تنزيل البرنامج الذي يستقبل البيانات التي تم التقاطها بواسطة محلل المنطق ويقوم بفك تشفير البتات على الرابط التالي:

الخطوة 8: تكوين البيئة لاختباراتنا

تكوين البيئة لاختباراتنا
تكوين البيئة لاختباراتنا

أعرض الواجهة هنا ، والتي أحببتها بشكل خاص لأنها كانت نظيفة.

الخطوة 9: تهيئة البيئة لاختباراتنا

تكوين البيئة لاختباراتنا
تكوين البيئة لاختباراتنا

فيما يلي بعض خيارات التكوين:

• بالضغط على اسم القناة يمكننا تغييره.

• يمكننا تحديد ما إذا كانت إحدى القنوات ستعمل كمحفز للالتقاط وشكل الاكتشاف.

• بالضغط مع الاستمرار على رقم القناة ، يمكنك تغيير موقعك في القائمة.

• من خلال النقر على الترس ، يمكننا تكوين تصور القناة وتوسيع …

•… أو إخفاء القناة. سنخفي كل القنوات التي لن نستخدمها.

الخطوة 10: تكوين البيئة لاختباراتنا

تكوين البيئة لاختباراتنا
تكوين البيئة لاختباراتنا

بالنقر على أسهم زر "ابدأ" ، هناك خيارات لمعدل أخذ العينات ومدة التسجيل.

لسبب ما ، إذا اكتشف البرنامج أنه لا يمكن الحفاظ على السعر ، فسيتم عرض رسالة وسيتم تخفيض المعدل تلقائيًا حتى الوصول إلى قيمة وظيفية.

الخطوة 11: تكوين البيئة لاختباراتنا

تكوين البيئة لاختباراتنا
تكوين البيئة لاختباراتنا

سنقوم أيضًا بتضمين محللي البروتوكول. أولاً ، إنها I2C ، باتباع تعريفات مكتبة WIRE ، وربط القنوات بشكل صحيح. أخيرًا ، سنقدم المحلل إلى التسلسل غير المتزامن. نحن بحاجة إلى توخي الحذر لتكوين المعلمات بشكل صحيح وفقًا للتجميع.

الخطوة 12: تكوين البيئة لاختباراتنا

تكوين البيئة لاختباراتنا
تكوين البيئة لاختباراتنا

في علامة التبويب "البروتوكولات التي تم فك ترميزها" ، يجب أن نتحقق من أدوات تحليل البروتوكولات التي تم تمكينها. هناك ، ستظهر البيانات. في علامة التبويب "التعليقات التوضيحية" ، يمكننا إضافة بعض النتائج لتحسين التمثيل البصري. ما عليك سوى النقر على أيقونة "إضافة قياس".

الخطوة 13: الالتقاط: نظرة عامة

الالتقاط: نظرة عامة
الالتقاط: نظرة عامة

في شاشة الالتقاط ، يعرض البرنامج قطار نبض البيانات الخاص بـ SDA و SCL و TX0.

الخطوة 14: الالتقاط: نتيجة تحليل البروتوكول

الالتقاط: نتيجة تحليل البروتوكول
الالتقاط: نتيجة تحليل البروتوكول

هنا ، نرى نتيجة الالتقاط. في علامة التبويب "البروتوكولات التي تم فك ترميزها" لدينا:

• طلب الخادم للعبد برقم 8.

• استجابة الرقيق ، ستة أحرف: "t" ، "e" ، "s" ، "t" ، "e" ومسافة.

• يتبع كل منها بت ACK (إقرار) يشير إلى استقبال البايت الصحيح ، باستثناء حرف المسافة NACK (عدم الإقرار).

• بعد ذلك ، نرى نتيجة فك التشفير للمسلسل TX0 ، مما يشير إلى الأحرف المستلمة والمرسلة إلى المحطة التسلسلية Arduino IDE.

الخطوة 15: الالتقاط: القناة 0 والبيانات (SDA)

الالتقاط: القناة 0 والبيانات (SDA)
الالتقاط: القناة 0 والبيانات (SDA)

في هذه الصورة ، لدينا قطار النبض لخط SDA. لاحظ أنه يمكن عرض كل بايت تم إرساله.

الخطوة 16: الالتقاط: القناة 1 والساعة (SCL)

الالتقاط: القناة 1 والساعة (SCL)
الالتقاط: القناة 1 والساعة (SCL)

الآن ، لدينا هنا قطار النبض لخط SCL. يمكنك التحقق من مزيد من التفاصيل ببساطة عن طريق وضع الماوس فوق الإشارة ، كما ترى في الصورة. يمكننا أن نرى أن تردد الساعة كان عند 100 كيلو هرتز.

الخطوة 17: الالتقاط: القناة 2 والمسلسل (TX0)

الالتقاط: القناة 2 والمسلسل (TX0)
الالتقاط: القناة 2 والمسلسل (TX0)

بالنسبة إلى قطار النبض لخط TX0 ، يمكننا رؤية بت البداية ونقاط الإطار لكل بت. لدينا بايت يمثل الحرف "e".

الخطوة 18: تكوين البيئة لاختباراتنا

تكوين البيئة لاختباراتنا
تكوين البيئة لاختباراتنا

هنا لدينا عدة خيارات لقراءة البيانات.

الخطوة 19: الالتقاط: راسم الذبذبات والمحلل

الالتقاط: راسم الذبذبات والمحلل
الالتقاط: راسم الذبذبات والمحلل

انظر هنا إلى الشاشة التي التقطتها من راسم الذبذبات الخاص بي. تمثل إشارة المحلل المنطقي فقط عمليات الكشف العالية والمنخفضة ، ولكنها لا تمثل جودة الإشارة. يمكن ملاحظة هذا بشكل أفضل على الذبذبات.

الخطوة 20: الالتقاط: ملاحظة الفشل (مثال على الفشل التسلسلي)

الالتقاط: مراقبة الفشل (مثال على الفشل التسلسلي)
الالتقاط: مراقبة الفشل (مثال على الفشل التسلسلي)

الآن ، سأعرض مثالاً على فشل متسلسل حدث لي بالفعل. كنت مع مودم GPRS ، النوع المستخدم في الهاتف الخلوي ، بطاقة SIM ، أحاول الاتصال بـ ESP32. لكنها فقط لم تتصل. ثم راجعت مزود الطاقة والأسلاك وقمت بتغيير اللوحة. لقد فعلت كل شيء ، لكن لم يتم إصلاحه. قررت إجراء تحليل منطقي: اكتشفت أن إشارة ESP على UART 115200 بدأت في عدم التطابق. أي أن ESP32 كان يلعب ما يجب أن يكون 115 ، 200 بسرعة مختلفة عن هذه.

تم عرض هذا الخطأ ، الذي تم تحديده بواسطة المحلل اللغوي ، بعلامة X باللون الأحمر. حسب فهمي ، يقول البرنامج أن النقطة التي تحتوي على مثل هذا القليل هي نصف إزاحة في الوقت المناسب. مع زيادة هذا التحول ، قد يأتي وقت يكون فيه كل شيء غير متطابق ، بحيث لا تصل المعلومات إلى الجانب الآخر. عادة ما تصل ، لكن بطاقة SIM800 حساسة وإذا لم تكن دقيقة ، فلن تصل المعلومات إلى الطرف الآخر.

لا أعرف ما إذا كان هذا شيئًا يحدث كثيرًا أم لا ، لكنه حدث لي ، ولذا قررت أن أتناول هذا الموضوع هنا. إذا ماذا فعلت؟ تباطأت. إذا وضعت 9 ، 600 ، 19 ، 200 ، حتى 38 ، 400 ، فإنها تعمل ، وهذا لا يحدث مع 115 ، 200.

الخطوة 21: قم بتنزيل الملفات

بي دي إف

انا لا

موصى به: