Sisukord:

Ava oma silmad! Loogiline analüsaator: 21 sammu
Ava oma silmad! Loogiline analüsaator: 21 sammu

Video: Ava oma silmad! Loogiline analüsaator: 21 sammu

Video: Ava oma silmad! Loogiline analüsaator: 21 sammu
Video: Новый год в реальной жизни. Страшные истории про Рождество. Ужасы. Мистика 2024, November
Anonim
Image
Image
Kokkupanek
Kokkupanek

Loogikaanalüsaator hõlbustab teie visualiseerimist impulssrongist, mis on sideühenduses liikuvad bitid. Seega avab see teie silmad võimaliku probleemi tuvastamiseks. Miks see oluline on? See on väga tõhus arendus- ja tõrkeotsingu tööriist, mis võib säästa teie aega. Selles videos hindame täna loogilise analüsaatori tähtsust, jälgime selle seadme kasutamisel mõningaid tavapäraste tavade protokolle ja näitame avastamisviga ilma loogilise analüsaatorita.

Selles videos kasutasin suhteliselt odavat (umbes 35 dollarit) ja tõhusat mudelit, millel oli graafiline liides ja tasuta tarkvara.

Samm: kokkupanek

2. samm: kasutatud funktsioonid - server

Kasutatud funktsioonid - server
Kasutatud funktsioonid - server

• Ühenduste džemprid

• 2 Arduinot (kasutasime 2 Mega Arduinos 2560)

• Loogiline analüsaator (kasutame Saleae)

• USB -ühenduskaablid Arduino ja analüsaatori jaoks.

• Ostsilloskoop (valikuline)

• Protoboard

3. samm: kasutatud vooluahel

Kasutatud ahel
Kasutatud ahel

Siin on meil skeem, mis näitab kolme tihvti jälgimist: TX0, SDA ja SCL. Meil on kaks Arduinot: peremees ja ori.

4. samm: lähtekood: kapten

Seadistusse kaasame i2c -suhtluse kogu. Sisestasime võrku Masterina ja lähtestasime seeria 0. Loopis palusime orja andmebaite meie Arduino numbriga 8 suhtlemiseks, nagu näites määratlesime. Trükime seerias, mida loogikaanalüsaatoriga hinnatakse, saadud baite.

#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); // käivitage seeria 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… 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. samm: lähtekood: ori

Sellesse alamkoodi lisan taas i2c -side raamatukogu. Sisenen võrku orjana aadressiga 8. Registreerime päringu sündmuse ja seostame selle funktsiooniga "päring". Te ei pea silmusel midagi tegema, vaid andke 0,1 -sekundiline viivitus.

Lõpuks on meil päringufunktsioon, mis käivitatakse siis, kui kapteni päringusündmus toimub, mis registreeriti seadistuses. Lõpuks vastame 6 -baitise sõnumiga.

#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á executab quando ocorrer o evento de requisição pelo mestre // registreerimine como evento no setup void requestEvent () {Wire.write ("teste"); // vastake com uma mensagem de 6 bytes}

6. samm: analüsaator: riistvara

Analüsaator: riistvara
Analüsaator: riistvara

Proovi sagedus kuni: 24 MHz

Loogika: 5 V kuni 5,25 V.

Madala taseme künnis 0,8 V

Kõrgetasemeline künnis 2,0 V

Sisendtakistus on umbes 1 Mohm või rohkem

Samm 7: Saleae tarkvara installimine

Saleae tarkvara installimine
Saleae tarkvara installimine

Programmi, mis võtab vastu loogikaanalüsaatori kogutud andmed ja dekodeerib bitid, saab alla laadida järgmiselt lingilt:

8. samm: meie testide jaoks keskkonna konfigureerimine

Meie testide jaoks keskkonna konfigureerimine
Meie testide jaoks keskkonna konfigureerimine

Näitan siin liidest, mis mulle eriti meeldis, kuna see oli puhas.

9. samm: meie testide jaoks keskkonna konfigureerimine

Meie testide jaoks keskkonna konfigureerimine
Meie testide jaoks keskkonna konfigureerimine

Siin on mõned konfiguratsioonivalikud:

• Kanali nimel klõpsates saame seda muuta.

• Saame kindlaks teha, kas üks kanalitest käivitab püüdmise ja tuvastamise vormi.

• Kanali numbrit klõpsates ja all hoides saate oma positsiooni loendis muuta.

• Hammasrattale klõpsates saame konfigureerida kanali visualiseerimise, laiendades seda…

•… või kanali peitmine. Peidame kõik kanalid, mida me ei kasuta.

10. samm: meie testide jaoks keskkonna konfigureerimine

Meie testide jaoks keskkonna konfigureerimine
Meie testide jaoks keskkonna konfigureerimine

Nupu "Start" nooltel klõpsates on valikud Sampling Rate ja salvestuse kestus.

Mingil põhjusel, kui tarkvara tuvastab, et kiirust ei saa säilitada, kuvatakse teade ja automaatselt vähendatakse kiirust kuni funktsionaalse väärtuse saavutamiseni.

11. samm: meie testide jaoks keskkonna konfigureerimine

Meie testide jaoks keskkonna konfigureerimine
Meie testide jaoks keskkonna konfigureerimine

Lisame ka protokollianalüsaatorid. Esiteks on see I2C, järgides WIRE raamatukogu määratlusi ja seostades kanalid õigesti. Lõpuks tutvustame analüsaatorile asünkroonset seeriat. Peame olema ettevaatlikud, et parameetreid vastavalt koostele õigesti konfigureerida.

12. samm: meie testide jaoks keskkonna konfigureerimine

Meie testide jaoks keskkonna konfigureerimine
Meie testide jaoks keskkonna konfigureerimine

Vahekaardil "Dekodeeritud protokollid" peaksime kontrollima, millised protokollianalüsaatorid on lubatud. Seal ilmuvad andmed. Vahekaardil "Märkused" saame parema visualiseerimise jaoks lisada mõned tulemused. Lihtsalt klõpsake ikooni "lisa mõõtmine".

13. samm: jäädvustamine: ülevaade

Jäädvustamine: ülevaade
Jäädvustamine: ülevaade

Pildistusekraanil kuvab programm SDA, SCL ja TX0 andmeimpulssirongi.

14. samm: jäädvustamine: protokolli analüüsi tulemus

Jäädvustamine: protokolli analüüsi tulemus
Jäädvustamine: protokolli analüüsi tulemus

Siin näeme püüdmise tulemust. Vahekaardil "Dekodeeritud protokollid" on meil:

• Serveri taotlus alam -ID -ga 8.

• Alamvastus, kuus tähemärki: "t", "e", "s", "t", "e" ja tühik.

• Igale järgneb ACK -bit (Acknowledge), mis näitab õiget baitide vastuvõttu, välja arvatud tühimärk NACK (Not Acknowledge).

• Järgmisena näeme TX0 seeria dekodeerimise tulemust, mis näitab Arduino IDE jadaterminali vastuvõetud ja saadetud märke.

15. samm: jäädvustamine: kanal 0 ja andmed (SDA)

Jäädvustamine: kanal 0 ja andmed (SDA)
Jäädvustamine: kanal 0 ja andmed (SDA)

Sellel pildil on meil SDA liini impulss. Pange tähele, et iga edastatud baiti saab vaadata.

16. samm: jäädvustage: kanal 1 ja kell (SCL)

Jäädvustamine: kanal 1 ja kell (SCL)
Jäädvustamine: kanal 1 ja kell (SCL)

Nüüd on meil siin SCL -liini impulssrong. Lisateavet saate vaadata, kui asetate hiire signaali kohale, nagu näete pildil. Näeme, et taktsagedus oli 100 kHz.

17. samm: jäädvustamine: kanal 2 ja jada (TX0)

Jäädvustamine: kanal 2 ja jada (TX0)
Jäädvustamine: kanal 2 ja jada (TX0)

Mis puutub TX0 liini impulssrongi, siis näeme stardibitti ja iga biti kadreerimispunkte. Meil on bait, mis tähistab märki "e".

18. samm: meie testide jaoks keskkonna konfigureerimine

Meie testide jaoks keskkonna konfigureerimine
Meie testide jaoks keskkonna konfigureerimine

Siin on meil andmete lugemiseks mitu võimalust.

19. samm: jäädvustage: ostsilloskoop ja analüsaator

Pildistamine: ostsilloskoop ja analüsaator
Pildistamine: ostsilloskoop ja analüsaator

Vaadake siin ekraani, mille ostsilloskoobist pildistasin. Loogikaanalüsaatori signaal tähistab ainult kõrgeid ja madalaid tuvastusi, kuid ei esinda signaali kvaliteeti. Seda saab kõige paremini jälgida ostsilloskoobi abil.

20. samm: jäädvustamine: tõrke vaatlemine (jadahäire näide)

Jäädvustamine: ebaõnnestumise jälgimine (näide seeriahäirest)
Jäädvustamine: ebaõnnestumise jälgimine (näide seeriahäirest)

Nüüd näitan näidet seeriavigast, mis minuga tegelikult juhtus. Olin GPRS -modemiga, mida kasutati mobiiltelefonis, SIM -kaardil, ja üritasin luua ühenduse ESP32 -ga. Aga see lihtsalt ei ühendanud. Seejärel kontrollisin toiteallikat, juhtmeid ja vahetasin plaati. Ma tegin kõike, kuid midagi ei parandanud. Otsustasin teha loogilise analüüsi: avastasin, et UART 115200 ESP signaal hakkas vastuolus olema. See tähendab, et ESP32 mängis 115, 200 erineva kiirusega kui see.

See viga, mille tuvastas parser, kuvati punase X -ga. Minu arusaamist mööda ütleb programm, et punkt, millel on selline natuke, on aja jooksul pooleldi nihutatud. Selle nihke kasvades võib tulla aeg, mil kõik ei sobi, nii et teave ei jõua teisele poole. Tavaliselt jõuab see kohale, kuid SIM800 on tundlik ja kui see pole täpne, ei jõua teave teise otsa.

Ma ei tea, kas seda juhtub sageli või mitte, aga minuga juhtus nii ja seetõttu otsustasin seda teemat siin käsitleda. Mida ma siis tegin? Aeglustasin kiirust. Kui panete 9, 600, 19, 200, kuni 38, 400, siis see toimib, mida 115, 200 puhul ei esine.

Samm: laadige failid alla

PDF

INO

Soovitan: