Სარჩევი:

Გაახილე თვალები! ლოგიკური ანალიზატორი: 21 ნაბიჯი
Გაახილე თვალები! ლოგიკური ანალიზატორი: 21 ნაბიჯი

ვიდეო: Გაახილე თვალები! ლოგიკური ანალიზატორი: 21 ნაბიჯი

ვიდეო: Გაახილე თვალები! ლოგიკური ანალიზატორი: 21 ნაბიჯი
ვიდეო: პაპანუსი - თვალები გაახილე / Papanusi - Tvalebi gaakhile 2024, ივლისი
Anonim
Image
Image
შეკრება
შეკრება

ლოგიკური ანალიზატორი აადვილებს პულსის მატარებლის ვიზუალიზაციას, რომელიც არის ბიტი, რომელიც მოძრაობს საკომუნიკაციო ხაზში. ამრიგად, ის გახსნის თვალებს შესაძლო პრობლემის იდენტიფიცირებისთვის. რატომ არის ეს მნიშვნელოვანი? ეს არის ძალიან ეფექტური განვითარება და ხარვეზის გამოვლენის საშუალება, რომელსაც შეუძლია დაზოგოს თქვენი დრო. დღეს ამ ვიდეოში ჩვენ შევაფასებთ ლოგიკური ანალიზატორის მნიშვნელობას, დავაკვირდებით ამ მოწყობილობის გამოყენებისას ჩვეულებრივი პრაქტიკის ზოგიერთ პროტოკოლს და გამოვყოფთ აღმოჩენის წარუმატებლობას ლოგიკური ანალიზატორის დახმარების გარეშე.

ამ ვიდეოში გამოვიყენე შედარებით იაფი (დაახლოებით $ 35) და ეფექტური მოდელი, გრაფიკული ინტერფეისით და უფასო პროგრამული უზრუნველყოფით.

ნაბიჯი 1: შეკრება

ნაბიჯი 2: გამოყენებული მახასიათებლები - სერვერი

გამოყენებული მახასიათებლები - სერვერი
გამოყენებული მახასიათებლები - სერვერი

• მხტუნავები კავშირებისათვის

• 2 არდუინო (ჩვენ გამოვიყენეთ 2 მეგა არდუინოს 2560)

• ლოგიკური ანალიზატორი (ჩვენ ვიყენებთ Saleae- ს)

• USB კავშირის კაბელები Arduino და ანალიზატორი.

• ოსცილოსკოპი (სურვილისამებრ)

• პროტობორდი

ნაბიჯი 3: წრე გამოიყენება

წრე გამოიყენება
წრე გამოიყენება

აქ ჩვენ გვაქვს სქემა, რომელიც აჩვენებს სამი ქინძისთავის მონიტორინგს: TX0, SDA და SCL. ჩვენ გვყავს ორი არდუინო: ბატონი და მონა.

ნაბიჯი 4: კოდის კოდი: ოსტატი

Setup– ში ჩვენ ჩავრთავთ ბიბლიოთეკას i2c კომუნიკაციისთვის. ჩვენ შევედით ქსელში როგორც Master და დავიწყეთ სერიული 0. მარყუჟში, ჩვენ მოვითხოვეთ მონა მონაცემების ბაიტი ჩვენს Arduino ნომერ 8 -თან კომუნიკაციისთვის, როგორც ეს განვიხილეთ მაგალითში. ჩვენ ვბეჭდავთ სერიალში, რომელიც შეფასდება ლოგიკური ანალიზატორით, მიღებული ბაიტებით.

#მოიცავს // მოიცავს ბიბლიოთეკას კომუნიკაციისთვის I2C void setup () {Wire.begin (); // Entra na rede 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 houver 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 წამი დაგვიანებით.

დაბოლოს, ჩვენ გვაქვს მოთხოვნის ფუნქცია, რომელიც შესრულდება მასტერის მიერ მოთხოვნის მოვლენის დადგომისას, რომელიც დარეგისტრირებულია Setup– ში. ჩვენ ვპასუხობთ, საბოლოოდ, შეტყობინებით 6 ბაიტი.

#მოიცავს // მოიცავს ბიბლიოთეკას კომუნიკაციისთვის I2C void setup () {Wire.begin (8); // entra na rede como escravo com endereço 8 Wire.onRequest (requestEvent); // რეგისტრაცია მოვლენის მოთხოვნით // ელ ასოციაცია à função requestEvent} ბათილი მარყუჟი () {დაგვიანებით (100); // არ არის დაგეგმილი მარყუჟის გარეშე, აცხადებს, რომ ეს არის 0, 1 ჯერ} // ფუნქცია, რომელიც შეიძლება განხორციელდეს როგორც ოკორერი, ასევე საჭიროებისამებრ.; // რეაგირება com uma mensagem de 6 ბაიტი}

ნაბიჯი 6: ანალიზატორი: აპარატურა

ანალიზატორი: აპარატურა
ანალიზატორი: აპარატურა

ნიმუშის სიხშირე: 24 MHz

ლოგიკა: 5 V to 5.25 V

დაბალი დონის ბარიერი 0.8 ვ

მაღალი დონის ბარიერი 2.0 V

შეყვანის წინაღობა დაახლოებით 1 მოჰმ ან მეტი

ნაბიჯი 7: Saleae პროგრამული უზრუნველყოფის ინსტალაცია

Saleae პროგრამული უზრუნველყოფის ინსტალაცია
Saleae პროგრამული უზრუნველყოფის ინსტალაცია

პროგრამა, რომელიც იღებს ლოგიკური ანალიზატორის მიერ დაფიქსირებულ მონაცემებს და ამუშავებს ბიტებს, შეგიძლიათ გადმოწეროთ შემდეგ ბმულზე:

ნაბიჯი 8: გარემოს კონფიგურაცია ჩვენი ტესტებისთვის

გარემოს კონფიგურაცია ჩვენი ტესტებისთვის
გარემოს კონფიგურაცია ჩვენი ტესტებისთვის

მე აქ ვაჩვენებ ინტერფეისს, რომელიც განსაკუთრებით მომეწონა, რადგან ის სუფთა იყო.

ნაბიჯი 9: გარემოს კონფიგურაცია ჩვენი ტესტებისთვის

გარემოს კონფიგურაცია ჩვენი ტესტებისთვის
გარემოს კონფიგურაცია ჩვენი ტესტებისთვის

აქ არის კონფიგურაციის რამდენიმე ვარიანტი:

• არხის სახელზე დაჭერით, ჩვენ შეგვიძლია მისი შეცვლა.

• ჩვენ შეგვიძლია განვსაზღვროთ იქნება თუ არა რომელიმე არხი აღმძვრელი ფაქტორი აღსაკვეთად და გამოვლენის ფორმა.

• არხის ნომრის დაჭერით და დაჭერით შეგიძლიათ შეცვალოთ თქვენი პოზიცია სიაში.

• გადაცემათა კოლოფზე დაწკაპუნებით, ჩვენ შეგვიძლია არხის ვიზუალიზაციის კონფიგურაცია, გაფართოება…

•… ან არხის დამალვა. ჩვენ დავმალავთ ყველა არხს, რომელსაც არ გამოვიყენებთ.

ნაბიჯი 10: გარემოს კონფიგურაცია ჩვენი ტესტებისთვის

გარემოს კონფიგურაცია ჩვენი ტესტებისთვის
გარემოს კონფიგურაცია ჩვენი ტესტებისთვის

ღილაკზე "დაწყება" ღილაკზე დაჭერით არის შერჩევის მაჩვენებელი და ჩაწერის ხანგრძლივობა.

რატომღაც, თუ პროგრამული უზრუნველყოფა აღმოაჩენს, რომ განაკვეთის შენარჩუნება შეუძლებელია, გამოჩნდება შეტყობინება და ავტომატურად განაკვეთი შემცირდება ფუნქციური მნიშვნელობის მიღწევამდე.

ნაბიჯი 11: გარემოს კონფიგურაცია ჩვენი ტესტებისთვის

გარემოს კონფიგურაცია ჩვენი ტესტებისთვის
გარემოს კონფიგურაცია ჩვენი ტესტებისთვის

ჩვენ ასევე შევიტანთ პროტოკოლის ანალიზატორებს. ჯერ ეს არის I2C, WIRE ბიბლიოთეკის განმარტებების შემდეგ და არხების სწორად ასოცირება. დაბოლოს, ჩვენ ანალიზატორს გავაცნობთ ასინქრონული სერიალს. ჩვენ ფრთხილად უნდა ვიყოთ პარამეტრების სწორად კონფიგურაციისთვის ასამბლეის მიხედვით.

ნაბიჯი 12: გარემოს კონფიგურაცია ჩვენი ტესტებისთვის

გარემოს კონფიგურაცია ჩვენი ტესტებისთვის
გარემოს კონფიგურაცია ჩვენი ტესტებისთვის

"დეკოდირებული პროტოკოლების" ჩანართში ჩვენ უნდა შევამოწმოთ რომელი პროტოკოლის ანალიზატორი არის ჩართული. იქ, მონაცემები გამოჩნდება. "ანოტაციების" ჩანართში ჩვენ შეგვიძლია დავამატოთ რამდენიმე შედეგი უკეთესი ვიზუალიზაციისთვის. უბრალოდ დააჭირეთ ღილაკს "გაზომვის დამატება".

ნაბიჯი 13: გადაღება: მიმოხილვა

გადაღება: მიმოხილვა
გადაღება: მიმოხილვა

გადაღების ეკრანზე პროგრამა აჩვენებს SDA, SCL და TX0 მონაცემების პულსის მატარებელს.

ნაბიჯი 14: გადაღება: პროტოკოლის ანალიზის შედეგი

გადაღება: პროტოკოლის ანალიზის შედეგი
გადაღება: პროტოკოლის ანალიზის შედეგი

აქ ჩვენ ვხედავთ დაჭერის შედეგს. "დეკოდირებული პროტოკოლების" ჩანართში ჩვენ გვაქვს:

• სერვერის მოთხოვნა მონაზე id 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 kHz.

ნაბიჯი 17: გადაღება: არხი 2 და სერიული (TX0)

გადაღება: არხი 2 და სერიული (TX0)
გადაღება: არხი 2 და სერიული (TX0)

რაც შეეხება TX0 ხაზის პულსის მატარებელს, ჩვენ შეგვიძლია დავინახოთ საწყისი ბიტი და თითოეული ბიტის ჩარჩოების წერტილები. ჩვენ გვაქვს ბაიტი, რომელიც წარმოადგენს სიმბოლოს "e".

ნაბიჯი 18: გარემოს კონფიგურაცია ჩვენი ტესტებისთვის

გარემოს კონფიგურაცია ჩვენი ტესტებისთვის
გარემოს კონფიგურაცია ჩვენი ტესტებისთვის

აქ ჩვენ გვაქვს მონაცემების წაკითხვის რამდენიმე ვარიანტი.

ნაბიჯი 19: გადაღება: ოსცილოსკოპი და ანალიზატორი

გადაღება: ოსცილოსკოპი და ანალიზატორი
გადაღება: ოსცილოსკოპი და ანალიზატორი

შეხედეთ აქ ეკრანს, რომელიც გადავიღე ჩემი ოსცილოსკოპიდან. ლოგიკური ანალიზატორის სიგნალი წარმოადგენს მხოლოდ მაღალ და დაბალ გამოვლენას, მაგრამ ის არ წარმოადგენს სიგნალის ხარისხს. ეს საუკეთესოდ შეიძლება შეინიშნოს ოსცილოსკოპზე.

ნაბიჯი 20: გადაღება: წარუმატებლობის დაკვირვება (სერიული წარუმატებლობის მაგალითი)

გადაღება: წარუმატებლობის დაკვირვება (სერიული წარუმატებლობის მაგალითი)
გადაღება: წარუმატებლობის დაკვირვება (სერიული წარუმატებლობის მაგალითი)

ახლა, მე ვაჩვენებ სერიული წარუმატებლობის მაგალითს, რაც რეალურად მომივიდა. მე ვიყავი GPRS მოდემით, რომელიც გამოიყენება მობილურ ტელეფონში, SIM ბარათზე და ვცდილობდი დაკავშირება ESP32– თან. მაგრამ ის უბრალოდ არ დაუკავშირდა. შემდეგ შევამოწმე კვების ბლოკი, გაყვანილობა და შევცვალე დაფა. მე ყველაფერი გავაკეთე, მაგრამ არაფერი გამოასწორა. მე გადავწყვიტე ლოგიკური ანალიზი ჩამეტარებინა: აღმოვაჩინე, რომ UART 115200– ზე ESP სიგნალმა შეუსაბამობა დაიწყო. ანუ, ESP32 თამაშობდა იმას, რაც უნდა იყოს 115, 200 განსხვავებული სიჩქარით, ვიდრე ეს.

ეს შეცდომა, რომელიც გამოვლენილი იყო ანალიზატორის მიერ, გამოსახული იყო X წითელი ფერით. ჩემი გაგებით, პროგრამა ამბობს, რომ წერტილი, რომელსაც აქვს ასეთი ცოტა, ნახევრად გადაადგილებულია დროში. როდესაც ეს ცვლა იზრდება, შეიძლება დადგეს დრო, როდესაც ყველაფერი შეუსაბამოა, ისე რომ ინფორმაცია არ მიაღწევს მეორე მხარეს. ის ჩვეულებრივ ჩამოდის, მაგრამ SIM800 მგრძნობიარეა და თუ ის ზუსტი არ არის, ინფორმაცია არ აღწევს მეორე ბოლომდე.

არ ვიცი ეს ხშირად ხდება თუ არა, მაგრამ ეს მოხდა ჩემთან და ამიტომ გადავწყვიტე ამ საკითხის აქ განხილვა. მაშ რა გავაკეთე? მე შენელებული ვარ. თუ თქვენ დააყენებთ 9, 600, 19, 200, 38 -მდე 400 -მდე, ის მუშაობს, რაც არ ხდება 115, 200 -ით.

ნაბიჯი 21: ჩამოტვირთეთ ფაილები

PDF

ინო

გირჩევთ: