INHOUDSOPGAWE:

Maak oop jou oë! Logiese ontleder: 21 stappe
Maak oop jou oë! Logiese ontleder: 21 stappe

Video: Maak oop jou oë! Logiese ontleder: 21 stappe

Video: Maak oop jou oë! Logiese ontleder: 21 stappe
Video: Die Antwoord - Baita Jou Sabela feat. Slagysta (Official Video) 2024, November
Anonim
Image
Image
Vergadering
Vergadering

Die logika -ontleder vergemaklik u visualisering van die polstrein, wat die stukkies is wat in 'n kommunikasielyn beweeg. Dit maak u oë oop om 'n moontlike probleem te identifiseer. Waarom is dit belangrik? Dit is 'n baie doeltreffende ontwikkelings- en foutopsporingsinstrument wat u tyd kan bespaar. In hierdie video sal ons vandag die belangrikheid van die logiese ontleder evalueer, 'n paar protokolle van algemene praktyke waarneem tydens die gebruik van hierdie toestel, en 'n voorbeeld van 'n opsporingsfout sonder die hulp van 'n logiese ontleder.

In hierdie video gebruik ek 'n relatief goedkoop (ongeveer $ 35) en doeltreffende model, met 'n grafiese koppelvlak en gratis sagteware.

Stap 1: Montering

Stap 2: Gebruikte funksies - bediener

Gebruikte funksies - bediener
Gebruikte funksies - bediener

• Springers vir verbindings

• 2 Arduinos (ons het 2 Mega Arduinos 2560 gebruik)

• Logiese ontleder (ons gebruik Saleae)

• USB -aansluitkabels vir Arduino en ontleder.

• Oscilloskoop (opsioneel)

• Protoboard

Stap 3: Kring gebruik

Kring gebruik
Kring gebruik

Hier het ons die skema, wat die monitering van drie penne toon: TX0, SDA en SCL. Ons het twee Arduino's: 'n meester en 'n slaaf.

Stap 4: Bronkode: Meester

In die opstelling bevat ons die biblioteek vir i2c -kommunikasie. Ons het die netwerk as Master aangegaan en seriële 0. geïnisialiseer. In die lus het ons slawe -data -grepe aangevra vir kommunikasie met ons Arduino -nommer 8, soos ons in die voorbeeld omskryf het. Ons druk die grepe in die reeks, wat met die logiese ontleder geëvalueer sal word.

#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); // 'n reeks 0} leemte -lus () {Wire.requestFrom (8, 6);.. 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}

Stap 5: Bronkode: Slave

In hierdie slaafkode sluit ek weer die biblioteek in vir i2c -kommunikasie. Ek betree die netwerk as 'n slaaf met die adres 8. Ons registreer die versoekgebeurtenis en assosieer dit met die 'versoek' -funksie. U hoef niks op die lus te doen nie, gee slegs 'n vertraging van 0,1 sekonde.

Laastens het ons die versoekfunksie wat uitgevoer sal word wanneer die versoekgebeurtenis deur die meester plaasvind, wat in Setup geregistreer is. Ons antwoord uiteindelik met 'n boodskap van 6 grepe.

#include // inclui a biblioteca para comunicação I2C void setup () {Wire.begin (8); // omskakel na 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á executada quando ocorrer o evento de requisição pelo mestre // foi registrada como evento no setup void requestEvent () {Wire.write ("teste"); // reageer op 'n menslike aantal 6 grepe}

Stap 6: Ontleder: hardeware

Ontleder: hardeware
Ontleder: hardeware

Monstertempo tot: 24 MHz

Logika: 5 V tot 5,25 V

Lae vlak drempel 0,8 V

Drempel op hoë vlak 2.0 V

Invoerimpedansie van ongeveer 1 Mohm of meer

Stap 7: Saleae sagteware -installasie

Saleae sagteware installasie
Saleae sagteware installasie

Die program wat die data wat deur die logiese ontleder vasgelê is, ontvang en die stukkies dekodeer, kan afgelaai word op die volgende skakel:

Stap 8: Die omgewing instel vir ons toetse

Die omgewing instel vir ons toetse
Die omgewing instel vir ons toetse

Ek wys die koppelvlak hier, waarvan ek veral gehou het omdat dit skoon was.

Stap 9: Die omgewing instel vir ons toetse

Die omgewing instel vir ons toetse
Die omgewing instel vir ons toetse

Hier is 'n paar konfigurasie -opsies:

• Deur op die kanaalnaam te klik, kan ons dit verander.

• Ons kan bepaal of een van die kanale 'n sneller vir opname en die vorm van opsporing sal wees.

• Deur die kanaalnommer in te hou, kan u u posisie in die lys verander.

• Deur op die rat te klik, kan ons die kanaalvisualisering konfigureer en uitbrei …

• … of die kanaal verberg. Ons verberg al die kanale wat ons nie sal gebruik nie.

Stap 10: Die omgewing instel vir ons toetse

Die omgewing instel vir ons toetse
Die omgewing instel vir ons toetse

As u op die pyle van die "Start" -knoppie klik, is daar die opsies vir bemonsteringstempo en duur van die opname.

As die sagteware om een of ander rede agterkom dat die koers nie gehandhaaf kan word nie, sal 'n boodskap vertoon word en die koers sal outomaties verlaag word totdat 'n funksionele waarde bereik is.

Stap 11: Die omgewing instel vir ons toetse

Die omgewing instel vir ons toetse
Die omgewing instel vir ons toetse

Ons sal ook die protokolontleders insluit. Eerstens is dit die I2C, wat die definisies van die WIRE -biblioteek volg en die kanale korrek assosieer. Ten slotte stel ons die ontleder bekend aan asynchrone reeks. Ons moet versigtig wees om die parameters volgens die vergadering korrek op te stel.

Stap 12: Die omgewing instel vir ons toetse

Die omgewing instel vir ons toetse
Die omgewing instel vir ons toetse

Op die oortjie "Gedekodeerde protokolle" moet ons kyk watter protokolontleders aangeskakel is. Daar sal die data verskyn. Op die oortjie 'Annotasies' kan ons 'n paar resultate byvoeg vir 'n beter visualisering. Klik net op die ikoon "voeg meting by".

Stap 13: Opneem: Oorsig

Vang: Oorsig
Vang: Oorsig

In die opnameskerm vertoon die program die data -pulstrein van die SDA, SCL en TX0.

Stap 14: Opneem: resultaat van protokolanalise

Vang: resultaat van protokolanalise
Vang: resultaat van protokolanalise

Hier sien ons die resultaat van die vaslegging. Op die oortjie "Gedekodeerde protokolle" het ons:

• Die bedienerversoek vir die slaaf met ID 8.

• Die slawe -reaksie, ses karakters: "t", "e", "s", "t", "e" en 'n spasie.

• Elkeen word gevolg deur 'n ACK -bit (Erkenning) wat die korrekte byte -ontvangs aandui, behalwe die NACK (Nie -erkenning) spasie karakter.

• Vervolgens sien ons die dekoderingsresultaat van die TX0 -reeks, wat die karakters aandui wat na die Arduino IDE -seriële terminale gestuur is.

Stap 15: Vang: Kanaal 0 en data (SDA)

Vang: Kanaal 0 en data (SDA)
Vang: Kanaal 0 en data (SDA)

In hierdie beeld het ons die polstrein van die SDA -lyn. Let daarop dat elke gestuurde greep besigtig kan word.

Stap 16: Capture: Channel 1 en Clock (SCL)

Vang: Kanaal 1 en Klok (SCL)
Vang: Kanaal 1 en Klok (SCL)

Nou het ons hier die polstrein van die SCL -lyn. U kan meer besonderhede nagaan deur die muis oor die sein te plaas, soos u in die prentjie sien. Ons kan sien dat die klokfrekwensie 100 kHz was.

Stap 17: Capture: Channel 2 en Serial (TX0)

Opname: kanaal 2 en reekse (TX0)
Opname: kanaal 2 en reekse (TX0)

Wat die polstrein van die TX0 -lyn betref, kan ons die Start -bit en die raampunte van elke bit sien. Ons het 'n greep wat die karakter "e" voorstel.

Stap 18: Die omgewing instel vir ons toetse

Die omgewing instel vir ons toetse
Die omgewing instel vir ons toetse

Hier het ons verskeie opsies om die data te lees.

Stap 19: Opneem: Ossilloskoop en ontleder

Opname: Ossilloskoop en ontleder
Opname: Ossilloskoop en ontleder

Kyk hier na die skerm wat ek met my ossilloskoop vasgevang het. Die logiese ontleder seine verteenwoordig slegs die hoë en lae opsporing, maar dit verteenwoordig nie die seinkwaliteit nie. Dit kan die beste op 'n ossilloskoop waargeneem word.

Stap 20: Opneem: 'n mislukking waarneem (voorbeeld van reeksmislukking)

Vang: 'n mislukking waarneem (voorbeeld van reeksmislukking)
Vang: 'n mislukking waarneem (voorbeeld van reeksmislukking)

Nou sal ek 'n voorbeeld toon van 'n reeksmislukking, wat eintlik met my gebeur het. Ek het met 'n GPRS -modem, die soort wat op 'n selfoon gebruik is, die SIM -kaart probeer om aan te sluit op die ESP32. Maar dit het net nie verbind nie. Ek het toe die kragtoevoer, die bedrading nagegaan en die bord verander. Ek het alles gedoen, maar niks het dit reggemaak nie. Ek het besluit om 'n logiese analise in te stel: ek het ontdek dat die ESP -sein op UART 115200 nie ooreenstem nie. Dit wil sê, die ESP32 het gespeel wat 115, 200 teen 'n ander snelheid as dit moes wees.

Hierdie fout, wat deur die ontleder geïdentifiseer is, word met 'n X in rooi vertoon. Na my mening sê die program dat die punt wat so 'n bietjie het, mettertyd half verplaas word. Namate hierdie verskuiwing toeneem, kan daar 'n tyd kom dat alles nie ooreenstem nie, sodat inligting nie die ander kant bereik nie. Dit kom gewoonlik aan, maar die SIM800 is sensitief, en as dit nie presies is nie, bereik die inligting nie die ander kant nie.

Ek weet nie of dit iets is wat gereeld gebeur of nie, maar dit het met my gebeur, en daarom het ek besluit om hierdie onderwerp hier aan te spreek. So, wat het ek gedoen? Ek vertraag. As u 9, 600, 19, 200, tot 38, 400 sit, werk dit, wat nie met die 115, 200 voorkom nie.

Stap 21: Laai die lêers af

PDF

EK NEE

Aanbeveel: