Բովանդակություն:

Բացիր աչքերդ! Տրամաբանական անալիզատոր `21 քայլ
Բացիր աչքերդ! Տրամաբանական անալիզատոր `21 քայլ

Video: Բացիր աչքերդ! Տրամաբանական անալիզատոր `21 քայլ

Video: Բացիր աչքերդ! Տրամաբանական անալիզատոր `21 քայլ
Video: Nemra - Բացիր աչքերդ (Official Audio) 2024, Նոյեմբեր
Anonim
Image
Image
Ժողով
Ժողով

Տրամաբանական անալիզատորը հեշտացնում է զարկերակային գնացքի ձեր պատկերացումը, որոնք բիթերն են, որոնք շարժվում են կապի գծում: Այսպիսով, այն բացում է ձեր աչքերը `հնարավոր խնդիրը բացահայտելու համար: Ինչու՞ է սա կարևոր: Դա զարգացման և անսարքությունների հայտնաբերման շատ արդյունավետ գործիք է, որը կարող է խնայել ձեր ժամանակը: Այս տեսանյութում մենք այսօր կգնահատենք տրամաբանական անալիզատորի կարևորությունը, կդիտարկենք այս սարքը օգտագործելիս սովորական պրակտիկայի որոշ արձանագրություններ և կնախատեսենք հայտնաբերման ձախողումը ՝ առանց տրամաբանական անալիզատորի օգնության:

Այս տեսանյութում ես օգտագործեցի համեմատաբար էժան (մոտ $ 35) և արդյունավետ մոդել ՝ գրաֆիկական ինտերֆեյսով և անվճար ծրագրակազմով:

Քայլ 1: Հավաքում

Քայլ 2: Օգտագործված հնարավորություններ - սերվեր

Օգտագործված առանձնահատկություններ - սերվեր
Օգտագործված առանձնահատկություններ - սերվեր

• Թռիչքներ միացումների համար

• 2 Arduinos (մենք օգտագործել ենք 2 Mega Arduinos 2560)

• Տրամաբանական անալիզատոր (մենք օգտագործում ենք Saleae)

• USB միացման մալուխներ Arduino- ի և անալիզատորի համար:

• Օսլիլոսկոպ (ըստ ցանկության)

• Protoboard

Քայլ 3: Օգտագործված միացում

Շղթա Օգտագործված
Շղթա Օգտագործված

Այստեղ մենք ունենք սխեմատիկ, որը ցույց է տալիս երեք կապի մոնիտորինգը `TX0, SDA և SCL: Մենք ունենք երկու Արդուինոս ՝ տեր և ստրուկ:

Քայլ 4: Աղբյուրի կոդը ՝ Վարպետ

Setup- ում մենք կներառենք գրադարանը i2c հաղորդակցության համար: Մենք մուտք գործեցինք ցանց որպես Master և նախաստորագրեցինք սերիան 0. Loop- ում մենք պահանջեցինք ստրուկ տվյալների բայթեր մեր Arduino 8 համարի հետ հաղորդակցության համար, ինչպես դա սահմանել ենք օրինակում: Մենք տպում ենք սերիալում, որը կգնահատվի տրամաբանական անալիզատորով, ստացված բայթերը:

#ներառել // ներառել biblioteca para comunicação I2C void setup () {Wire.begin (); // Entra na redde como Mestre (endereço é opcional para o mestre) Serial.begin (115200); // inicia մի սերիական 0} void loop () {Wire.requestFrom (8, 6); // requisita 6 bytes de dados do escravo de endereço 8 while (Wire.available ()) {// enquanto hourver bytes para receber… char c = Wire.read (); // Recebe cada byte e armazena como caracter Serial.print (c); // envia o caracter pela սերիալ (na verdade vai para o buffer)} ուշացում (500); // ագուարդա մեյո սեգունդո}

Քայլ 5: Աղբյուրի կոդը ՝ ստրուկ

Այս ստրուկի ծածկագրում ես կրկին ընդգրկում եմ i2c հաղորդակցության գրադարանը: Ես մտնում եմ ցանց ՝ որպես ստրուկ ՝ հասցեով 8. Մենք գրանցում ենք հարցման իրադարձությունը և այն կապում «խնդրանք» գործառույթի հետ: Անհրաժեշտ չէ որևէ բան անել հանգույցի վրա, պարզապես տվեք 0.1 վայրկյան ուշացում:

Վերջապես, մենք ունենք հարցման գործառույթ, որը կկատարվի, երբ տեղի ունենա Master- ի կողմից հարցման իրադարձությունը, որը գրանցված է Setup- ում: Ի վերջո, մենք պատասխանում ենք 6 բայթ հաղորդագրությամբ:

#ներառել // ներառել 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á exeada quando ocorrer o evento de requisição pelo mestre // foi registrada como evento no setup void requestEvent () {Wire.write ("teste"); // responde com uma mensagem de 6 բայթ}

Քայլ 6: Վերլուծիչ. Սարքավորումներ

Վերլուծիչ. Սարքավորումներ
Վերլուծիչ. Սարքավորումներ

Նմուշի արագություն `մինչև 24 ՄՀց

Տրամաբանություն ՝ 5 Վ -ից 5.25 Վ

Lowածր մակարդակի շեմ 0,8 Վ

Բարձր մակարդակի շեմ 2.0 Վ

Մուտքի դիմադրողականությունը ՝ մոտ 1 Մոհմ կամ ավելի

Քայլ 7: Saleae ծրագրաշարի տեղադրում

Saleae ծրագրաշարի տեղադրում
Saleae ծրագրաշարի տեղադրում

Theրագիրը, որը ստանում է տրամաբանական անալիզատորի կողմից գրավված տվյալները և վերծանում է բիթերը, կարելի է ներբեռնել հետևյալ հղումով ՝

Քայլ 8. Մեր թեստերի համար միջավայրի կազմաձևում

Մեր թեստերի համար միջավայրի կազմաձևում
Մեր թեստերի համար միջավայրի կազմաձևում

Ես այստեղ ցույց եմ տալիս ինտերֆեյսը, որն ինձ հատկապես դուր եկավ, քանի որ այն մաքուր էր:

Քայլ 9. Մեր թեստերի համար միջավայրի կազմաձևում

Մեր թեստերի համար միջավայրի կազմաձևում
Մեր թեստերի համար միջավայրի կազմաձևում

Ահա կազմաձևման մի քանի տարբերակ.

• Սեղմելով ալիքի անվան վրա ՝ մենք կարող ենք փոխել այն:

• Մենք կարող ենք որոշել, թե արդյոք ալիքներից մեկը կծառայի որպես գրավման և հայտնաբերման ձև:

• Սեղմելով և պահելով ալիքի համարը, կարող եք փոխել ձեր դիրքը ցուցակում:

• Սեղմելով հանդերձի վրա, մենք կարող ենք կարգավորել ալիքի վիզուալիզացիան ՝ ընդլայնելով…

•… կամ ալիքը թաքցնելը: Մենք թաքցնելու ենք բոլոր այն ալիքները, որոնք չենք օգտագործելու:

Քայլ 10. Մեր թեստերի համար միջավայրի կազմաձևում

Մեր թեստերի համար միջավայրի կազմաձևում
Մեր թեստերի համար միջավայրի կազմաձևում

Սեղմելով «Սկսել» կոճակի սլաքների վրա ՝ կան ընտրանքային տոկոսադրույքի և ձայնագրման տևողությունը:

Ինչ -ինչ պատճառներով, եթե ծրագրաշարը հայտնաբերում է, որ դրույքաչափը չի կարող պահպանվել, հաղորդագրություն կցուցադրվի և ինքնաբերաբար տոկոսադրույքը կկրճատվի մինչև ֆունկցիոնալ արժեքի հասնելը:

Քայլ 11. Մեր թեստերի համար միջավայրի կազմաձևում

Մեր թեստերի համար միջավայրի կազմաձևում
Մեր թեստերի համար միջավայրի կազմաձևում

Մենք նաև կներառենք արձանագրության անալիզատորներ: Նախ դա I2C- ն է ՝ հետևելով WIRE գրադարանի սահմանումներին և ճիշտ կապելով ալիքները: Վերջապես, մենք անալիզատորին կներկայացնենք ասինխրոն սերիալ: Մենք պետք է զգույշ լինենք պարամետրերը ճիշտ կազմաձևել ըստ հավաքման:

Քայլ 12. Մեր թեստերի համար միջավայրի կազմաձևում

Մեր թեստերի համար միջավայրի կազմաձևում
Մեր թեստերի համար միջավայրի կազմաձևում

«Վերծանված արձանագրություններ» ներդիրում մենք պետք է ստուգենք, թե որ արձանագրության անալիզատորներն են միացված: Այնտեղ տվյալները կհայտնվեն: «Անոտացիաներ» ներդիրում մենք կարող ենք ավելացնել որոշ արդյունքներ `ավելի լավ պատկերացման համար: Պարզապես կտտացրեք «ավելացնել չափում» պատկերակին:

Քայլ 13: Նկարահանում. Ակնարկ

Նկարահանում. Ակնարկ
Նկարահանում. Ակնարկ

Գրավման էկրանին ծրագիրը ցուցադրում է SDA, SCL և TX0 տվյալների զարկերակային գնացքը:

Քայլ 14. Սևեռում. Արձանագրության վերլուծության արդյունք

Գրավում. Արձանագրության վերլուծության արդյունք
Գրավում. Արձանագրության վերլուծության արդյունք

Այստեղ մենք տեսնում ենք գրավման արդյունքը: «Վերծանված արձանագրություններ» ներդիրում մենք ունենք.

• Սերվերի խնդրանքը id 8 -ով ստրուկի համար:

• Ստրուկի պատասխանը ՝ վեց նիշ ՝ «t», «e», «s», «t», «e» և բացատ:

• Յուրաքանչյուրին հաջորդում է ACK բիթ (cknowանաչում), որը ցույց է տալիս բայթերի ճիշտ ընդունումը, բացառությամբ 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 գծի զարկերակային գնացքին, մենք կարող ենք տեսնել Start բիթը և յուրաքանչյուր բիտի շրջանակման կետերը: Մենք ունենք «ե» բնույթը ներկայացնող բայթ:

Քայլ 18. Մեր փորձարկումների համար միջավայրի կազմաձևում

Մեր թեստերի համար միջավայրի կազմաձևում
Մեր թեստերի համար միջավայրի կազմաձևում

Այստեղ մենք ունենք տվյալների ընթերցման մի քանի տարբերակ:

Քայլ 19: Նկարահանում. Օսլիոսկոպ և անալիզատոր

Լուսանկարում. Օսլիլոսկոպ և անալիզատոր
Լուսանկարում. Օսլիլոսկոպ և անալիզատոր

Նայեք այստեղ այն էկրանին, որը ես վերցրել եմ իմ տատանումներից: Տրամաբանական անալիզատորի ազդանշանը ներկայացնում է միայն բարձր և ցածր հայտնաբերումները, բայց դա չի ներկայացնում ազդանշանի որակը: Սա լավագույնս կարելի է դիտել տատանումների վրա:

Քայլ 20: Սևեռում. Անհաջողության դիտում (սերիական ձախողման օրինակ)

Սևեռում. Ձախողման դիտում (սերիական ձախողման օրինակ)
Սևեռում. Ձախողման դիտում (սերիական ձախողման օրինակ)

Այժմ ես ցույց կտամ սերիական ձախողման օրինակ, որն իրականում պատահեց ինձ հետ: Ես GPRS մոդեմով էի, այնպիսին, ինչպիսին օգտագործվում էր բջջային հեռախոսում, SIM քարտում, փորձում էի միանալ ESP32- ին: Բայց դա պարզապես չի կապվել: Այնուհետև ես ստուգեցի էլեկտրամատակարարումը, լարերը և փոխեցի տախտակը: Ես ամեն ինչ արեցի, բայց ոչինչ չշտկեց: Ես որոշեցի տրամաբանական վերլուծություն կատարել. Ես հայտնաբերեցի, որ UART 115200- ի ESP ազդանշանը սկսեց անհամապատասխանել: Այսինքն, ESP32- ը նվագում էր այն, ինչ պետք է լինի 115, 200, այլ արագությունից, քան սա էր:

Այս սխալը, որը նույնացվել է վերլուծիչի կողմից, կարմիր գույնով ցուցադրվել է X- ով: Իմ ընկալմամբ, ծրագիրը ասում է, որ այն կետը, որն ունի այդպիսի քիչ ժամանակ, կիսով չափ տեղաշարժված է: Երբ այս տեղաշարժն ավելանում է, կարող է գալ մի պահ, երբ ամեն ինչ անհամապատասխան է, որպեսզի տեղեկատվությունը չհասնի մյուս կողմին: Այն սովորաբար գալիս է, բայց SIM800- ը զգայուն է, և եթե դա ճշգրիտ չէ, տեղեկատվությունը չի հասնում մյուս ծայրին:

Չգիտեմ, սա հաճախ պատահող բան է, թե ոչ, բայց դա պատահեց ինձ հետ, և ես որոշեցի այս թեմային անդրադառնալ այստեղ: Ուրեմն ինչ արեցի: Ես դանդաղեցրեցի արագությունը: Եթե դուք դնում եք 9, 600, 19, 200, մինչև 38, 400, այն աշխատում է, ինչը չի պատահում 115, 200 -ի հետ:

Քայլ 21: Ներբեռնեք ֆայլերը

PDF

ԻՆՈ

Խորհուրդ ենք տալիս: