สารบัญ:

เปิดตาของคุณ! ตัววิเคราะห์เชิงตรรกะ: 21 ขั้นตอน
เปิดตาของคุณ! ตัววิเคราะห์เชิงตรรกะ: 21 ขั้นตอน

วีดีโอ: เปิดตาของคุณ! ตัววิเคราะห์เชิงตรรกะ: 21 ขั้นตอน

วีดีโอ: เปิดตาของคุณ! ตัววิเคราะห์เชิงตรรกะ: 21 ขั้นตอน
วีดีโอ: การคิดเชิงตรรกะ Logical Thinking 【Competency Conceptual】 2024, กรกฎาคม
Anonim
Image
Image
การประกอบ
การประกอบ

ตัววิเคราะห์ลอจิกช่วยอำนวยความสะดวกในการแสดงภาพพัลส์เทรน ซึ่งเป็นชิ้นส่วนที่เดินทางในสายการสื่อสาร ดังนั้นจึงเปิดตาของคุณเพื่อระบุปัญหาที่อาจเกิดขึ้น ทำไมสิ่งนี้จึงสำคัญ? เป็นเครื่องมือในการพัฒนาและตรวจจับข้อผิดพลาดที่มีประสิทธิภาพมากซึ่งช่วยให้คุณประหยัดเวลาได้ ในวิดีโอนี้วันนี้ เราจะประเมินความสำคัญของตัววิเคราะห์เชิงตรรกะ สังเกตโปรโตคอลของแนวทางปฏิบัติทั่วไปบางอย่างขณะใช้อุปกรณ์นี้ และยกตัวอย่างความล้มเหลวในการตรวจจับโดยไม่ต้องใช้ตัววิเคราะห์ลอจิก

ในวิดีโอนี้ ฉันใช้โมเดลที่มีประสิทธิภาพและราคาไม่แพง (ประมาณ 35 เหรียญสหรัฐ) โดยมีอินเทอร์เฟซแบบกราฟิกและซอฟต์แวร์ฟรี

ขั้นตอนที่ 1: การประกอบ

ขั้นตอนที่ 2: คุณสมบัติที่ใช้ - เซิร์ฟเวอร์

คุณสมบัติที่ใช้ - เซิร์ฟเวอร์
คุณสมบัติที่ใช้ - เซิร์ฟเวอร์

• จัมเปอร์สำหรับการเชื่อมต่อ

• 2 Arduinos (เราใช้ 2 Mega Arduinos 2560)

• Logical Analyzer (เราใช้ Saleae)

• สายเชื่อมต่อ USB สำหรับ Arduino และตัววิเคราะห์

• ออสซิลโลสโคป (อุปกรณ์เสริม)

• โปรโตบอร์ด

ขั้นตอนที่ 3: วงจรที่ใช้

วงจรที่ใช้
วงจรที่ใช้

ที่นี่เรามีแผนผังซึ่งแสดงการตรวจสอบพินสามตัว: TX0, SDA และ SCL เรามี Arduinos สองตัว: ต้นแบบและทาส

ขั้นตอนที่ 4: รหัสที่มา: Master

ในการตั้งค่า เราจะรวมไลบรารีสำหรับการสื่อสาร i2c เราเข้าสู่เครือข่ายในฐานะมาสเตอร์และเริ่มต้นอนุกรม 0 ในลูป เราขอไบต์ข้อมูลทาสเพื่อสื่อสารกับ Arduino หมายเลข 8 ตามที่เรากำหนดไว้ในตัวอย่าง เราพิมพ์แบบอนุกรมซึ่งจะถูกประเมินด้วยตัววิเคราะห์ลอจิก ไบต์ที่ได้รับ

#include // รวม biblioteca para comunicação I2C การตั้งค่าเป็นโมฆะ () { Wire.begin (); // เข้าสู่ como Mestre (endereço é opcional para o mestre) Serial.begin(115200); // inicia a serial 0 } void loop() { Wire.requestFrom(8, 6);// requisita 6 bytes de dados do escravo de endereço 8 while (Wire.available()) { // enquanto houver bytes para receber… ถ่าน c = Wire.read(); // รับ cada ไบต์ e armazena como caracter Serial.print (c); // envia o caracter pela serial (na verdade vai para o buffer) } ล่าช้า (500); //aguarda meio เซกุนโด }

ขั้นตอนที่ 5: รหัสที่มา: Slave

ในรหัสทาสนี้ ฉันรวมไลบรารีสำหรับการสื่อสาร i2c อีกครั้ง ฉันเข้าสู่เครือข่ายในฐานะทาสด้วยที่อยู่ 8 เราลงทะเบียนเหตุการณ์คำขอและเชื่อมโยงกับฟังก์ชัน "คำขอ" คุณไม่จำเป็นต้องดำเนินการใดๆ ในลูป เพียงแค่ให้การหน่วงเวลา 0.1 วินาที

สุดท้าย เรามีฟังก์ชันคำขอที่จะดำเนินการเมื่อเกิดเหตุการณ์คำขอโดย Master ซึ่งลงทะเบียนไว้ในการตั้งค่า ในที่สุดเราก็ตอบกลับด้วยข้อความขนาด 6 ไบต์

#include // รวม biblioteca para comunicação I2C void setup() { Wire.begin(8); // เข้าสู่หน้าใหม่ como escravo com endereço 8 Wire.onRequest(requestEvent); // registra o evento de requisiçao // e associa à função requestEvent } วงเป็นโมฆะ () { ล่าช้า (100); //não faz nada no loop, apenas aguarda 0, 1 segundo } // função que será executada quando ocorrer o event de requisição pelo mestre // foi registrada como evento ไม่มีการตั้งค่า โมฆะ requestEvent () { Wire.write ("teste "); // ตอบกลับ com uma mensagem ขนาด 6 ไบต์ }

ขั้นตอนที่ 6: ตัววิเคราะห์: ฮาร์ดแวร์

เครื่องวิเคราะห์: ฮาร์ดแวร์
เครื่องวิเคราะห์: ฮาร์ดแวร์

อัตราสุ่มสูงสุด: 24 MHz

ลอจิก: 5 V ถึง 5.25 V

เกณฑ์ระดับต่ำ 0.8 V

เกณฑ์ระดับสูง 2.0 V

อิมพีแดนซ์อินพุตประมาณ 1 Mohm หรือมากกว่า

ขั้นตอนที่ 7: การติดตั้งซอฟต์แวร์ Saleae

การติดตั้งซอฟต์แวร์ Saleae
การติดตั้งซอฟต์แวร์ Saleae

โปรแกรมที่รับข้อมูลที่จับโดย Logic Analyzer และถอดรหัสบิตสามารถดาวน์โหลดได้ที่ลิงค์ต่อไปนี้:

ขั้นตอนที่ 8: การกำหนดค่าสภาพแวดล้อมสำหรับการทดสอบของเรา

การกำหนดค่าสภาพแวดล้อมสำหรับการทดสอบของเรา
การกำหนดค่าสภาพแวดล้อมสำหรับการทดสอบของเรา

ฉันแสดงอินเทอร์เฟซที่นี่ ซึ่งฉันชอบเป็นพิเศษเพราะมันสะอาด

ขั้นตอนที่ 9: การกำหนดค่าสภาพแวดล้อมสำหรับการทดสอบของเรา

การกำหนดค่าสภาพแวดล้อมสำหรับการทดสอบของเรา
การกำหนดค่าสภาพแวดล้อมสำหรับการทดสอบของเรา

นี่คือตัวเลือกการกำหนดค่าบางส่วน:

• โดยคลิกที่ชื่อช่อง เราสามารถเปลี่ยนแปลงได้

• เราสามารถกำหนดได้ว่าช่องใดช่องหนึ่งจะทำหน้าที่เป็นตัวกระตุ้นการจับและรูปแบบการตรวจจับ

• เมื่อคลิกหมายเลขช่องค้างไว้ คุณจะเปลี่ยนตำแหน่งในรายการได้

• เมื่อคลิกที่เฟือง เราสามารถกำหนดค่าการสร้างภาพช่อง ขยาย …

• … หรือซ่อนช่อง เราจะซ่อนช่องทั้งหมดที่เราจะไม่ใช้

ขั้นตอนที่ 10: การกำหนดค่าสภาพแวดล้อมสำหรับการทดสอบของเรา

การกำหนดค่าสภาพแวดล้อมสำหรับการทดสอบของเรา
การกำหนดค่าสภาพแวดล้อมสำหรับการทดสอบของเรา

คลิกที่ลูกศรของปุ่ม "เริ่ม" จะมีตัวเลือกของอัตราการสุ่มตัวอย่างและระยะเวลาของการบันทึก

ด้วยเหตุผลบางประการ หากซอฟต์แวร์ตรวจพบว่าไม่สามารถรักษาอัตราได้ จะมีข้อความปรากฏขึ้นและอัตราจะลดลงโดยอัตโนมัติจนกว่าจะถึงค่าการทำงาน

ขั้นตอนที่ 11: การกำหนดค่าสภาพแวดล้อมสำหรับการทดสอบของเรา

การกำหนดค่าสภาพแวดล้อมสำหรับการทดสอบของเรา
การกำหนดค่าสภาพแวดล้อมสำหรับการทดสอบของเรา

เราจะรวมตัววิเคราะห์โปรโตคอลด้วย อย่างแรกคือ I2C ตามคำจำกัดความของไลบรารี WIRE และเชื่อมโยงช่องต่างๆ อย่างถูกต้อง สุดท้าย เราจะแนะนำเครื่องวิเคราะห์ให้กับอนุกรมแบบอะซิงโครนัส เราต้องระวังในการกำหนดค่าพารามิเตอร์อย่างถูกต้องตามแอสเซมบลี

ขั้นตอนที่ 12: การกำหนดค่าสภาพแวดล้อมสำหรับการทดสอบของเรา

การกำหนดค่าสภาพแวดล้อมสำหรับการทดสอบของเรา
การกำหนดค่าสภาพแวดล้อมสำหรับการทดสอบของเรา

ในแท็บ "โปรโตคอลที่ถอดรหัส" เราควรตรวจสอบว่าตัววิเคราะห์โปรโตคอลใดเปิดใช้งานอยู่ ที่นั่นข้อมูลจะปรากฏขึ้น ในแท็บ "คำอธิบายประกอบ" เราสามารถเพิ่มผลลัพธ์บางส่วนเพื่อให้เห็นภาพได้ดีขึ้น เพียงคลิกที่ไอคอน "เพิ่มการวัด"

ขั้นตอนที่ 13: จับภาพ: ภาพรวม

จับภาพ: ภาพรวม
จับภาพ: ภาพรวม

ในหน้าจอการจับภาพ โปรแกรมจะแสดง data pulse train ของ SDA, SCL และ TX0

ขั้นตอนที่ 14: จับภาพ: ผลลัพธ์ของการวิเคราะห์โปรโตคอล

จับภาพ: ผลลัพธ์ของการวิเคราะห์โปรโตคอล
จับภาพ: ผลลัพธ์ของการวิเคราะห์โปรโตคอล

ที่นี่เราเห็นผลของการจับภาพ ในแท็บ "โปรโตคอลถอดรหัส" เรามี:

• เซิร์ฟเวอร์ร้องขอทาสที่มี id 8

• การตอบสนองของสเลฟ อักขระหกตัว: "t", "e", "s", "t", "e" และช่องว่าง

• แต่ละอันตามด้วยบิต ACK (Acknowledge) ที่ระบุการรับไบต์ที่ถูกต้อง ยกเว้นอักขระช่องว่าง NACK (ไม่รับทราบ)

• ต่อไป เราจะเห็นผลการถอดรหัสของอนุกรม TX0 ซึ่งระบุอักขระที่ได้รับและส่งไปยังเทอร์มินัลอนุกรม Arduino IDE

ขั้นตอนที่ 15: จับภาพ: ช่อง 0 และ Data (SDA)

จับภาพ: ช่อง 0 และข้อมูล (SDA)
จับภาพ: ช่อง 0 และข้อมูล (SDA)

ในภาพนี้ เรามีพัลส์เทรนของเส้น SDA โปรดทราบว่าแต่ละไบต์ที่ส่งสามารถดูได้

ขั้นตอนที่ 16: จับภาพ: ช่อง 1 และนาฬิกา (SCL)

จับภาพ: ช่อง 1 และนาฬิกา (SCL)
จับภาพ: ช่อง 1 และนาฬิกา (SCL)

ตอนนี้ เรามีพัลส์เทรนของสาย SCL แล้ว คุณสามารถตรวจสอบรายละเอียดเพิ่มเติมได้ง่ายๆ โดยวางเมาส์ไว้เหนือสัญญาณ ดังที่คุณเห็นในภาพ จะเห็นว่าความถี่สัญญาณนาฬิกาอยู่ที่ 100 kHz

ขั้นตอนที่ 17: จับภาพ: ช่อง 2 และซีเรียล (TX0)

จับภาพ: ช่อง 2 และ Serial (TX0)
จับภาพ: ช่อง 2 และ Serial (TX0)

สำหรับพัลส์เทรนของสาย TX0 เราจะเห็นจุดเริ่มต้นและจุดเฟรมของแต่ละบิต เรามีไบต์แทนอักขระ "e"

ขั้นตอนที่ 18: การกำหนดค่าสภาพแวดล้อมสำหรับการทดสอบของเรา

การกำหนดค่าสภาพแวดล้อมสำหรับการทดสอบของเรา
การกำหนดค่าสภาพแวดล้อมสำหรับการทดสอบของเรา

ที่นี่เรามีตัวเลือกมากมายสำหรับการอ่านข้อมูล

ขั้นตอนที่ 19: จับภาพ: ออสซิลโลสโคปและตัววิเคราะห์

จับภาพ: ออสซิลโลสโคปและเครื่องวิเคราะห์
จับภาพ: ออสซิลโลสโคปและเครื่องวิเคราะห์

ดูที่นี่ที่หน้าจอที่ฉันถ่ายจากออสซิลโลสโคปของฉัน สัญญาณตัววิเคราะห์ลอจิกแสดงเฉพาะการตรวจจับสูงและต่ำ แต่ไม่ได้แสดงถึงคุณภาพของสัญญาณ สิ่งนี้สามารถสังเกตได้ดีที่สุดบนออสซิลโลสโคป

ขั้นตอนที่ 20: การจับภาพ: การสังเกตความล้มเหลว (ตัวอย่างความล้มเหลวแบบอนุกรม)

จับภาพ: การสังเกตความล้มเหลว (ตัวอย่างความล้มเหลวแบบอนุกรม)
จับภาพ: การสังเกตความล้มเหลว (ตัวอย่างความล้มเหลวแบบอนุกรม)

ตอนนี้ ฉันจะแสดงตัวอย่างของความล้มเหลวต่อเนื่อง ซึ่งเกิดขึ้นกับฉันจริงๆ ฉันใช้โมเด็ม GPRS ชนิดที่ใช้กับโทรศัพท์มือถือ ซิมการ์ด พยายามเชื่อมต่อกับ ESP32 แต่มันก็ไม่ได้เชื่อมต่อ ฉันจึงตรวจสอบแหล่งจ่ายไฟ การเดินสายไฟ และเปลี่ยนบอร์ด ฉันทำทุกอย่างแล้ว แต่ไม่มีอะไรแก้ไข ฉันตัดสินใจทำการวิเคราะห์เชิงตรรกะ: ฉันพบว่าสัญญาณ ESP บน UART 115200 เริ่มไม่ตรงกัน นั่นคือ ESP32 กำลังเล่นสิ่งที่ควรเป็น 115, 200 ด้วยความเร็วที่ต่างไปจากนี้

ข้อผิดพลาดนี้ ซึ่งระบุโดย parser แสดงด้วย X เป็นสีแดง ตามความเข้าใจของฉัน โปรแกรมบอกว่าจุดที่มีบิตดังกล่าวถูกแทนที่ในเวลาครึ่งหนึ่ง เมื่อการเปลี่ยนแปลงนี้เพิ่มขึ้น อาจมีบางครั้งที่ทุกอย่างไม่ตรงกัน เพื่อไม่ให้ข้อมูลไปถึงอีกด้านหนึ่ง โดยปกติแล้วจะมาถึง แต่ SIM800 นั้นละเอียดอ่อนและหากไม่ถูกต้อง ข้อมูลจะไม่ไปถึงปลายอีกด้าน

ฉันไม่รู้ว่าสิ่งนี้เกิดขึ้นบ่อยหรือไม่ แต่มันเกิดขึ้นกับฉัน ดังนั้นฉันจึงตัดสินใจพูดถึงเรื่องนี้ที่นี่ แล้วฉันทำอะไรลงไป? ฉันชะลอตัวลง ถ้าคุณใส่ 9, 600, 19, 200 ถึง 38, 400 ก็ใช้ได้ ซึ่งไม่เกิดกับ 115, 200

ขั้นตอนที่ 21: ดาวน์โหลดไฟล์

ไฟล์ PDF

ฉันไม่

แนะนำ: