Სარჩევი:

ATtiny84/85 SPI ინტერფეისი Pin ხელახალი გამოყენება: 6 ნაბიჯი
ATtiny84/85 SPI ინტერფეისი Pin ხელახალი გამოყენება: 6 ნაბიჯი

ვიდეო: ATtiny84/85 SPI ინტერფეისი Pin ხელახალი გამოყენება: 6 ნაბიჯი

ვიდეო: ATtiny84/85 SPI ინტერფეისი Pin ხელახალი გამოყენება: 6 ნაბიჯი
ვიდეო: Programming Attiny85 IC Directly Through USB || Attiny Programming Without Arduino 2024, ნოემბერი
Anonim
ATtiny84/85 SPI ინტერფეისი Pin Reuse
ATtiny84/85 SPI ინტერფეისი Pin Reuse

ეს ინსტრუქცია არის "ATtiny84/85 In-circuit Debugging with Serial Output" ინსტრუქციური და ავრცელებს ამ აპარატურისა და პროგრამული უზრუნველყოფის კონფიგურაციას პროგრამული უზრუნველყოფის ჩამოტვირთვის ქინძისთავების ხელახალი გამოყენების საკითხის გადასაჭრელად. საერთო ჯამში, ამ და ნაწილს შორის სასწავლო, განიხილება/დემონსტრირდება შემდეგი თემები:

Თემა ATtiny84 ATtiny85
სერიული კომუნიკაცია SoftwareSerial კლასის გამოყენებით X X
მოწყობილობის ქინძისთავების გაზიარება აპლიკაციასა და ჩამოტვირთვას შორის X X
Pin შეცვლის შეწყვეტა X
გარეგანი შეფერხება X
ძილი POWER_DOWN რეჟიმში; გაღვიძება შეფერხებისას X
მუშაობა გარშემო "გამრავლებული განსაზღვრული" შეწყვეტის ვექტორული ბმულის შეცდომის გამო, რომელიც დაკავშირებულია SoftwareSerial- თან X
მიკროსქემის შეცვლა, ჩამოტვირთვა, გამართვა,… განვითარების ციკლი ATtiny მოწყობილობებისთვის X X

აპარატურის I/O კომპონენტის დამატება SPI პროგრამირების ინტერფეისისთვის მიძღვნილ ერთ ქინძისთავზე ზოგჯერ კარგია, ზოგჯერ არა. მაგალითად, LED- ის დამატება MISO– ში იწვევს LED– ის ციმციმს გადმოტვირთვის დროს და შემდეგ ის ხელმისაწვდომია აპლიკაციისთვის. თუმცა, MISO- ს პიეზო ზუზუნის დამატება გამოიწვევს საშინელ ყიჟინას, რასაც მოყვება ჩამოტვირთვის წარუმატებლობა.

ეს ინსტრუქცია განმარტავს, თუ როგორ გამოვიყენოთ 4x2: 1 მულტიპლექსერი SPI ინტერფეისის MISO, MOSI და SCK სიგნალებზე მინიჭებული ქინძისთავების "აღსადგენად" მათი გადმოტვირთვისას დაცვის გზით. RESET პინის ხელახლა გამოყენება მოითხოვს დაუკრავენ შეცვლას და არ არის გათვალისწინებული ამ მიდგომით. ქინძისთავების ორმაგი მინიჭება ხორციელდება მულტიპლექსერის გამოყენებით, რათა გადართოთ აპლიკაციასა და პროგრამირების შეყვანებს შორის იმისდა მიხედვით, მიმდინარეობს თუ არა გადმოტვირთვა. კოდი და სქემა ჩართულია როგორც ATtiny84- ისთვის, ასევე ATtiny85- ისთვის. ATiny84 კონფიგურაცია მიმართულია პირველ რიგში, რადგან მას აქვს ორი I/O პორტი და მისი გამოყენება შესაძლებელია დამატებითი პრობლემების/გადაწყვეტილებების საილუსტრაციოდ. მცირე დისკუსიის შემდეგ, იგივე სცენარები განიხილება ATtiny85– ისთვის.

ნაბიჯი 1: საჭირო აპარატურა

გამოსახულება
გამოსახულება

საჭირო ტექნიკის უმეტესი ნაწილი ჩამოთვლილია 1 ნაწილში სასწავლო, ასე რომ მხოლოდ ახალი აპარატურაა ჩამოთვლილი ქვემოთ.

სახელი შესაძლო წყარო როგორ გამოიყენება
4x2: 1 მულტიპლექსერი მაუზერი შეიცავს ოთხ 2-შეყვანის; 1-გამომავალ კონცენტრატორს, რომლებიც არის SPI ინტერფეისის სიგნალებისა და აპლიკაციის I/O გაზიარების მექანიზმი.
SPST გადამრთველი ნებისმიერი ტიპის გადამრთველი (მომენტალური ან ჩაკეტილი) იმუშავებს. გადამრთველი გამოიყენება აპლიკაციის შეყვანისთვის პინის გაზიარების საილუსტრაციოდ.
10K რეზისტორი ჩამოსაშლელი რეზისტორი SPST გადამრთველისთვის, რათა თავიდან აიცილოთ მცურავი შეყვანა
გამოსახულება
გამოსახულება
გამოსახულება
გამოსახულება

მულტიპლექსერი არის გასაღები პროგრამის გამოყენებისგან პინების გადმოტვირთვის გამოსაყენებლად. 4x2: 1 მულტიპლექსერის საერთო ფუნქციონირება საკმაოდ სწორია, რომელიც შედგება 2 საკონტროლო სიგნალისა და 4 იდენტურად მოქმედი კონცენტრატორისგან. თითოეული მულტიპლექსერის პინის ქცევა განხილულია ქვემოთ:

ჩამაგრება სახელი ფუნქცია
15 როგორც სიმართლის ცხრილშია მითითებული, მულტიპლექსერი ფუნქციონირებს მხოლოდ მაშინ, როდესაც G ჩართვის პინი დაბალია. ვინაიდან ჩვენ არასოდეს გვსურს მულტიპლექსერის მთლიანად გამორთვა, პინი 15 პირდაპირ მიწასთან იქნება დაკავშირებული.
2-4; 5-7; 9-11;12-14 A (შეყვანა), B (შეყვანა), Y (გამომავალი) არის ოთხი 2 შესასვლელი; 1-გამომავალი გადამრთველი თითოეულ ჯგუფში 3 ქინძისთავით დანომრილია თანმიმდევრობით A (შეყვანის), B (შეყვანის), Y (გამომავალი) თანმიმდევრობით მაგ. გადართვისთვის 1; pin 2 = 1A; pin 3 = 1B; pin 4 = 1Y
1 აირჩიეთ როდესაც Select დაბალია, გადართვა შეყვანის A უკავშირდება დაკავშირებულ გადამრთველს გამომავალ პინს, Y. როდესაც შერჩევა მაღალია, შეცვლის შეყვანის B უკავშირდება გამოსავალს. კონცენტრატორები კონტროლდება ერთდროულად Select სიგნალით და იდენტურად ფუნქციონირებს.
8 GND მულტიპლექსერული IC საფუძველი
16 VCC მულტიპლექსერული IC ძალა

ნაბიჯი 2: ტესტირების შემთხვევების მიმოხილვა

გამოსახულება
გამოსახულება
გამოსახულება
გამოსახულება

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

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

  1. გამომავალი შემთხვევა: LED გამომავალი ATtiny84 პინიდან 4 (SCK) იზოლირებულია მულტიპლექსერული გადამრთველის გამოყენებით 2

    • შეაერთეთ მულტიპლექსერის პინი 2A მიწასთან
    • შეაერთეთ მულტიპლექსერის პინი 2B ATtiny85 პინ 4 -თან
    • დააკავშირეთ გამომავალი 2Y LED ანოდთან

      • Მოსალოდნელი შედეგები:

        • LED გამორთულია გადმოტვირთვის დროს, რადგან დაკავშირებულია 2A, მიწასთან
        • LED მიმაგრებულია აპლიკაციის გამომავალ პინ 4 -ზე გადმოწერის შემდეგ 2B და იწყებს ციმციმებას
  2. შეყვანის საქმე: SPST გადამრთველი ATtiny84 pin 6 (MOSI) - ით იზოლირებულია მულტიპლექსერული გადამრთველის 3 გამოყენებით

    • MOSI ტყვიის მავთული AVR პროგრამისტის სათაურიდან გადადის 3A- ზე
    • გადართვის შეყვანა 3B უკავშირდება SPST გამომავალს
    • გამომავალი 3Y უკავშირდება ATtiny84 პინ 6 -ს

      • 3A, MOSI, დაკავშირებულია პინ 6 -თან გადმოტვირთვის დროს
      • 3B, SPST გამომავალი, გადმოტვირთვის შემდეგ უკავშირდება პინ 6 -ს

შემთხვევა 1 წარმატებულია, თუ LED არ ციმციმებს პროგრამის გადმოტვირთვის დროს და შემდეგ აციმციმდება გადმოწერის შემდეგ ყოველ ორ წამში, როგორც მოსალოდნელია პროგრამის კონტროლის ქვეშ. იზოლაციის გარეშე, LED აციმციმდება გადმოტვირთვის დროს, რადგან ის უშუალოდ უკავშირდება SCK სიგნალს, რომელიც ცვლის მონაცემების მიღების/გადაცემის საათის მდგომარეობას.

მე –2 შემთხვევა წარმატებულია, თუ MOSI სიგნალი გადმოგზავნილია ATtiny84– ზე გადმოტვირთვის დროს, ანუ გადმოტვირთვა არ ხდება და LED პასუხობს SPST– ის ჩართვას/გამორთვას გადმოტვირთვის შემდეგ. შემთხვევა 2 ხელს უშლის გადმოტვირთვის ერთ -ერთ სავარაუდო წარუმატებლობას. იზოლაციის გარეშე, SPST გადამრთველი გამოიწვევს უკმარისობას, თუ 1) გამოიყენება ჩამკეტი გადამრთველი და 2) გადამრთველი დარჩება ჩართულ მდგომარეობაში გადმოტვირთვის დროს. მულტიპლექსერის მიერ იზოლირებისას, გადამრთველმა არავითარ შემთხვევაში არ შეიძლება გამოიწვიოს ჩავარდნა. ცოტა რთული, მაგრამ დამამშვიდებელი ჩვენთვის ძველი ხალხი.

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

ნაბიჯი 3: ATtiny84 საქმე 1 - განაცხადის გამოყვანის იზოლირება

გამოსახულება
გამოსახულება

ეს ნაბიჯი აღწერს დაყენებას პროგრამის გამომავალი პინის გადმოტვირთვის სიგნალით. მაგალითი არის LED, რომელიც მიმაგრებულია პინ 4 -ზე (SCK). მაგალითისთვის არსებული LED- ის გამოყენება საშუალებას გაძლევთ ხაზი გაუსვათ მულტიპლექსერის დამატებას 1 -ლი ნაწილის აპარატურასა და პროგრამულ უზრუნველყოფაზე.

  • ტექნიკა

    • დაამატეთ მულტიპლექსერი პურის დაფაზე იმ ფარდობით ადგილას, რომელიც ნაჩვენებია ზემოთ მოციმციმე დიაგრამაში. მულტიპლექსერი განლაგებულია ცენტრისკენ, რათა ადგილი დაეთმოს SPST გადამრთველს, რომელიც საჭიროა მე –2 შემთხვევაში.
    • გააგრძელეთ RESET სიგნალი მულტიპლექსერზე ტყვიის მავთულის დამატებით (მიუთითეთ ყვითელი) ATtiny84 პინიდან 11 მულტიპლექსერულ პინზე 1.
    • დანარჩენი აპარატურის დაყენება მოცემულია ნაბიჯ 2 -ში

      • შეაერთეთ მულტიპლექსერის პინი 2A პირდაპირ მიწასთან
      • დააკავშირეთ pin 2B ATtiny84 pin 4 -თან
      • დააკავშირეთ გამომავალი 2Y LED ანოდთან

        • Მოსალოდნელი შედეგები:

          • გადმოტვირთვის დროს 2Y უკავშირდება მიწას (2A), ასე რომ LED რჩება გამორთული
          • გადმოტვირთვის შემდეგ 2Y უკავშირდება ATtiny84 pin 4 - განაცხადის LED კონტროლს
  • პროგრამული უზრუნველყოფა

    • ნაწილის კოდი ხელახლა გამოიყენება; ხელმისაწვდომია 1 -ლი ნაწილიდან გასაგები ვიდრე აქ დუბლირებული
    • ჩატვირთეთ და შეადგინეთ ნაწილი 1 პროგრამა Arduino IDE– ში
    • შეაერთეთ Tiny AVR პროგრამისტი კომპიუტერის USB პორტში
    • შეაერთეთ Adafruit USB სერიული კაბელი მეორე USB პორტში

      • იქმნება COM პორტი და ავტომატურად ხელმისაწვდომი ხდება IDE პორტების სიაში
      • გაუშვით COM ფანჯარა
    • ჩამოტვირთეთ შედგენილი კოდი ATtiny84– ში

განაცხადის პროგრამის შედეგები იგივეა, რაც 1 -ლი ნაწილისთვის, ვინაიდან ერთადერთი ცვლილება იყო LED- ის გადატანა "დაცულ" ადგილას: LED -ი აციმციმდება 2 წამიანი ინტერვალით; სერიული გამომავალი იგივეა. ერთი განსხვავება, რაც უნდა მოხდეს არის ის, რომ LED აღარ ციმციმებს გადმოტვირთვის დროს, რადგან ამ დროის განმავლობაში ის მიწასთან არის დაკავშირებული მულტიპლექსერული pin 2A საშუალებით.

გამოსახულება
გამოსახულება

ნაბიჯი 4: ATtiny84 საქმე 2 - განაცხადის შეყვანის იზოლირება

გამოსახულება
გამოსახულება

ეს ნაბიჯი ემყარება წინა გამომავალი იზოლაციის შემთხვევის დაყენებას. აპარატურის ცვლილებები შედგება მულტიპლექსერის საშუალებით SPST გადამრთველის ATtiny84 პინ 6 -ზე (MOSI) მიმაგრებით. ასე რომ, აპარატურის ცვლილებები მინიმალურია, მაგრამ არის რამოდენიმე პროგრამული ცვლილება, რომელიც SPST გადამრთველს საშუალებას მისცემს გააკონტროლოს LED პინის შეცვლის შეფერხების გამოყენებით. განახლებული კოდი შედის ამ განყოფილების ბოლოში. კოდი უნდა იყოს კოპირებული Arduino IDE– ში; გირჩევთ შეინახოთ სახელი Multiplexer_Input. (ბოდიშს ვიხდი ამ მონაკვეთის სიგრძისთვის, მაგრამ ეს არის სასწავლო მიზნის გული და ვფიქრობ, რომ ის უკეთესად იკითხება, როგორც მონოლითი, ვიდრე ხელოვნური შესვენებების ჩასმა.)

განახლება მდებარეობა მიზანი
მოიცავს "გატეხილი" SoftwareSerial კლასს მოიცავს განყოფილებას LED ახლა კონტროლდება SPST გადამრთველით პინის შეცვლის წყვეტის საშუალებით. SoftwareSerial კლასი უნდა შეიცვალოს, რადგან წინააღმდეგ შემთხვევაში იგი გამოყოფს ყველა pin შეცვლის შეწყვეტის ვექტორს. ეს იწვევს "მრავალჯერადი განსაზღვრის" ბმულის შეცდომას SPST გადამრთველზე მინიჭებული (პორტი 0) ვექტორისთვის. გატეხილი SoftwareSerial ვერსია უნდა განთავსდეს იმავე დირექტორიაში, როგორც პროგრამა, რათა ის იმოქმედოს მხოლოდ ამ აპლიკაციაზე.
SPST შეყვანის pin განსაზღვრა მოიცავს/განსაზღვრის განყოფილებას მოწყობილობის პინზე SPST შეყვანის მინიჭება. პინი არის მოწყობილობის სპეციფიკური, ასე რომ მას ემატება #ifdef ATtiny8x განყოფილება (ები).
SPST შეყვანის pin რეჟიმი დაყენების ფუნქცია SPST pin არის კონფიგურირებული როგორც INPUT
დააკონფიგურირეთ SPST pin interrupt დაყენების ფუნქცია შეწყვეტის ვექტორი ენიჭება SPST შეყვანის პინს, რომ გადართვის მდგომარეობის ცვლილება იწვევს შეწყვეტას. კონფიგურაციის რეგისტრები და შეფერხების ტიპი სპეციფიკურია მოწყობილობისთვის. იმისათვის, რომ კოდი იყოს რაც შეიძლება მარტივი, განსხვავებები დამუშავებულია #თუ განსაზღვრული ნაწილია
დააყენეთ სრული სერიული შეტყობინება დაყენების ფუნქცია დაყენების სრული სერიული გამომავალი შეტყობინება იცვლება ასახავს მულტიპლექსერის შეყვანის პროგრამას
დაამატეთ SPST გადამრთველი ISR ფუნქცია კოდის განყოფილება დამატებულია ISST SPST პინის შეცვლის შეწყვეტისთვის. კოდი საერთოა, მაგრამ გამოყენებული ვექტორი არის მოწყობილობის სპეციფიკური და განისაზღვრება პროგრამის ზედა ნაწილში მოწყობილობაზე დამოკიდებულ განყოფილებებში. იმისათვის, რომ შეამოწმოთ ISR გააქტიურებულია, LED მდგომარეობა იცვლება. მიუხედავად იმისა, რომ რეალურ პროგრამაში არა-არა, სერიული გამომავალი შეტყობინება იქმნება ახალი LED მდგომარეობის ამსახველი.
შეცვალეთ მარყუჟის დამუშავება მარყუჟის ფუნქცია ISR ახლა აკონტროლებს LED- ის ჩართვას და გამორთვას ისე, რომ ფუნქციონირება ამოღებულია მარყუჟის რუტინიდან. ძილის რეჟიმზე ზარი ემატება ATtiny84– ს, როგორც ერთგვარი „დამატებითი“. ამ პროგრამისთვის ATtiny85 ძილი არ მუშაობს; შესაძლოა პროგრამული უზრუნველყოფის სერიული კლასის ჩარევის გამო, რადგან ის მუშაობს SoftwareSerial– თან, ამოღებულია.
დაამატეთ ძილის რეჟიმი კოდის განყოფილება ძილის ფუნქციონირება არ არის აუცილებელი მულტიპლექსერის გამოყენების საჩვენებლად. უბრალოდ დაემატა იმიტომ, რომ ჩვეულებრივ მინდა დაველოდოთ POWER_DOWN რეჟიმში შეყვანას ენერგიის დაზოგვის ნაცვლად, ვიდრე გავაგრძელოთ პროგრამის მარყუჟის გავლა არაფრის გაკეთებამდე, სანამ შეყვანა არ მოხდება.

შეცვალეთ SoftwareSerial კლასის კოდი

პროგრამული უზრუნველყოფის სერია უნდა შეიცვალოს ისე, რომ არ შეაფერხოს ყველა შეცვლის შეწყვეტის პორტი. SoftwareSerial კლასის კოდი მდებარეობს მისამართზე:

C: / პროგრამის ფაილები (x86) Arduino / აპარატურა / arduino / avr / ბიბლიოთეკები / SoftwareSerial / src

მოიძიეთ PCINT0_vect– ში SoftwareSerial.cpp– ში, რათა იპოვოთ საწყისი ცვლილების კოდი. დაამატეთ შემდეგი კოდი უშუალოდ არსებული #if განსაზღვრული (PCINT0_vect) განცხადების წინ.

#განსაზღვრული (_ AVR_ATtiny84_)

#განსაზღვრეთ MYPORT PCINT1_vect #elif განსაზღვრული (_ AVR_ATtiny85_) #განსაზღვრეთ MYPORT PCINT0_vect #endif ISR (MYPORT) {SoftwareSerial:: handle_interrupt (); }

ახლა დაწერეთ კომენტარი არსებული კოდის ბლოკზე, რომელიც გამოყოფს პორტის შეწყვეტის ვექტორებს, როგორც ქვემოთ არის მითითებული (უბრალოდ დაამატეთ საწყისი და ბოლო ბლოკის კომენტარების სიმბოლოები / * და * /):

/*

#if განსაზღვრული (PCINT0_vect) ISR (PCINT0_vect) {SoftwareSerial:: handle_interrupt (); } #endif #თუ განსაზღვრულია (PCINT1_vect) ISR (PCINT1_vect) {// SoftwareSerial:: handle_interrupt (); ISR (PCINT1_vect, ISR_ALIASOF (PCINT0_vect)); } #endif #თუ განსაზღვრულია (PCINT2_vect) ISR (PCINT2_vect, ISR_ALIASOF (PCINT0_vect)); #endif #თუ განსაზღვრულია (PCINT3_vect) ISR (PCINT3_vect, ISR_ALIASOF (PCINT0_vect)); #დაასრულე თუ */

აპარატურის კონფიგურაცია

SPST გადამრთველი მიმაგრებულია ATtiny84 პინ 6 -ზე (MOSI), როგორც ეს მოცემულია ნაბიჯ 2 -ში. პროცედურა მოხდება მოხერხებულობისთვის.

  • შეაერთეთ გადამრთველის შეყვანა 3A Tiny AVR პროგრამისტის სათაურში MOSI ტყვიით
  • დაუკავშირეთ 3B SPST გადამრთველს ON გამომავალ პინთან
  • დააკავშირეთ 3Y ATtiny84 პინ 6 -თან

    • შედეგები:

      • 3A, MOSI, გადმოწერილი იქნება ATtiny84 პინ 6 -ით
      • 3B, SPST გამომავალი, გადმოწერილი იქნება დამჭერი 6 -მდე

გაუშვით პროგრამა

გაშვებამდე, განათავსეთ SPST გადამრთველი გამორთულ მდგომარეობაში. წინააღმდეგ შემთხვევაში, LED ჩაირთვება როდესაც გადამრთველი გამორთულია და პირიქით. მიჰყევით მე –3 საფეხურის პროცედურას პროგრამის ჩატვირთვა, შედგენა და ჩამოტვირთვა Arduino IDE– ს გამოყენებით. როგორც ადრე, LED არ უნდა ციმციმდეს გადმოტვირთვის დროს, ასე რომ ერთადერთი მითითება იმისა, რომ პროგრამა მუშაობს და იქნება სერიული შეტყობინება დაყენების რუტინის ბოლოს: SETUP Complete - შეყვანის მაგალითი

ამ დროს პროგრამა ელოდება SPST გადამრთველის შეყვანას. ჩამრთველის ჩართვა ჩართულ მდგომარეობაში გამოიწვევს LED- ის ჩართვას; გამორთულ მდგომარეობაში დაბრუნება ანათებს LED- ს. გამომავალი შეტყობინებები ადასტურებს, რომ ISR იქნა გამოძახებული (ISR: Led HIGH, ISR: Led LOW). ყურადღება მიაქციეთ სერიული შეტყობინებების თანმიმდევრობას GO TO SLEEP პირველი ელოდება გადართვის მდგომარეობის შეცვლას; როდესაც ჩამრთველი შეყვანის ISR არის გამოძახებული, ჩართავს LED- ს და აფიქსირებს ცვლილებას; შემდეგ დამუშავება იწყებს ძილის ზარის შემდეგ მას შემდეგ, რაც შეფერხება იღვიძებს პროცესორს.

გამოსახულება
გამოსახულება

პროგრამა ამ ინსტრუქციისთვის:

//************************************************************************

// ნაწილი 2: აპლიკაციის/ჩამოტვირთეთ მოწყობილობის პინის გაზიარება //. ცვლის 1 -ლი ნაწილის კოდს, რათა მხარი დაუჭიროს პროგრამის ხელახლა გამოყენებას ქინძისთავები // მინიჭებული SPI პროგრამირების ინტერფეისზე //. "კომონის" კოდი ATtiny85 და ATtiny84 // ************************************** ****************************** # #მოიცავს "SoftwareSerial.h" // მოდიფიცირებული Arduino SoftwareSerial კლასი #მოიცავს // მაშინ დამუშავების კოდი საერთოა, ქინძისთავები გამოიყენება მოწყობილობისთვის #განსაზღვრული (_ AVR_ATtiny84_) || განსაზღვრული (_ AVR_ATtiny84A_) #განსაზღვრეთ ledPin 4 // ჩართული ჩართვის ჩართვა/გამორთვა #განსაზღვრეთ rxPin 9 // სერიული მიღებისათვის გამოყენებული პინი #განსაზღვრეთ txPin 10 // სერიული გადაცემისათვის გამოიყენება პინი #განსაზღვრეთ SpstPin 6 // შეყვანა SPST გადამრთველიდან (MOSI) #განსაზღვრეთ ISR_VECT PCINT0_vect // SPST გადართვა Pin შეცვლის შეწყვეტის ვექტორი #elif განსაზღვრულია (_ AVR_ATtiny85_) #განსაზღვრეთ ledPin 1 #განსაზღვრეთ rxPin 4 #განსაზღვრეთ txPin 3 #განსაზღვრეთ SpstPin 2 // შეიყვანეთ SPSTECT (INT0_ctfT) INT // SPST გადართვა Pin შეცვლის შეწყვეტის ვექტორი #სხვა #შეცდომა მხოლოდ ATiny84 და ATtiny85 მხარს უჭერს ამ პროექტს #endif // პროგრამული უზრუნველყოფის სერიული კლასის მაგალითის შექმნა, რომელიც განსაზღვრავს რომელი მოწყობილობა // ქინძისთავები უნდა იქნას გამოყენებული SoftwareSerial mySerial (rxPin, txPin); // ---------------------------------------------------- ------------------------ // დამუშავების რესურსების ინიციალიზაცია // ------------------- ------------------------------------------------------ --- void setup () {mySerial.begin (9600); // სერიული დამუშავების დაყოვნება (2000); // მიეცით სერიალ კომ პორტის დრო დაწყების დასასრულებლად. // წინააღმდეგ შემთხვევაში, პირველი გამომავალი სავარაუდოდ აკლია ან გაფუჭებულია pinMode (ledPin, OUTPUT); // led pin– ის კონფიგურაცია OUTPUT pinMode– სთვის (SpstPin, INPUT); // SPST გადართვის პინის კონფიგურაცია, როგორც INPUT #განსაზღვრული (_ AVR_ATtiny84_) || (_AVR_ATtiny84A_) // დააყენეთ პინის შეცვლის შეწყვეტა პინ 6 -ზე (MOSI) GIMSK | = 1 (G

ნაბიჯი 5: ATtiny85 საქმე 1 - განაცხადის გამოყვანის იზოლირება

გამოსახულება
გამოსახულება

იმის ნაცვლად, რომ ავაშენოთ აპარატურის დუბლიკატი ATtiny85– ისთვის, ალბათ ადვილია დავიწყოთ ATtiny84– ის მზა კონფიგურაციით მე –4 ნაბიჯიდან და ჩავანაცვლოთ tiny84 ჩიპი tiny85– ით. ყველა საჭირო ტექნიკა უკვე ხელმისაწვდომია. თუ იყენებთ ამ მიდგომას, იპოვნეთ tiny85 ისე, რომ 3 და 4 ქინძისთავები იყოს სერიული კაბელით tx და მიიღოთ მავთულები. შემდეგ საქმე ეხება მხოლოდ SPI ინტერფეისის მავთულის გადაადგილებას, რათა შეესაბამებოდეს მათ საჭირო ადგილებს ATtiny85– ისთვის.

თუ ნულიდან იწყებთ, უბრალოდ მიყევით მე –3 ნაბიჯის ზოგად ნაბიჯებს და ზემოთ მოყვანილ დიაგრამას. კოდი იგივეა, რაც ATtiny84– ისთვის მე –3 საფეხურზე, იგივე შედეგია მოსალოდნელი - გადმოტვირთვისას არ ციმციმებს; როდესაც LED მუშაობს 2 წამში ინტერვალით და სერიული გამომავალი შეტყობინებები მიჰყვება LED მდგომარეობას.

გამოსახულება
გამოსახულება

ნაბიჯი 6: ATtiny85 საქმე 2 - განაცხადის შეყვანის იზოლირება

გამოსახულება
გამოსახულება

ტექნიკის დასაყენებლად, დაიწყეთ კონფიგურაციით მე –5 საფეხურიდან და დაამატეთ SPST გადამრთველი, როგორც ეს მითითებულია ზემოთ მოყვანილ დიაგრამაში. მე რეალურად გამოვიყენე მომენტალური გადამრთველი tiny85 ვერსიისთვის და ეს გადამოწმებას ოდნავ ამარტივებს. გაითვალისწინეთ, რომ გადამრთველის გამომავალი ბრუნავს ATtiny84 კონფიგურაციიდან 180 გრადუსით. ეს ცვლილება აადვილებს შემაერთებელი მავთულის მარშრუტს, ვინაიდან სამივე SPI სიგნალი არის ATtiny85– ის ერთსა და იმავე მხარეს.

გამოიყენეთ იგივე პროგრამა, როგორც ATtiny84 ნაბიჯი 4. მოსალოდნელია იგივე ზოგადი შედეგები - LED ცვლის მდგომარეობას, როდესაც SPST გადამრთველი ჩართულია/გამორთულია და სერიული გამომავალი შეტყობინებები აფიქსირებს ცვლილებებს. გადასვლა ძილის შეტყობინებები აკლია, რადგან ძილის ფუნქციონირება არ არის გამოყენებული ATtiny85– ისთვის. მიუხედავად იმისა, რომ ერთი და იგივე პროგრამა გამოიყენება, განხორციელებაში მნიშვნელოვანი განსხვავებებია იმის გათვალისწინებით, რომ ATtiny85– ს აქვს მხოლოდ ერთი პორტის რეგისტრი (პორტი 0):

  1. SoftwareSerial ახლა გამოყოფს პორტის 0 პინის შეცვლის წყვეტს სერიული კომუნიკაციისთვის (შეგახსენებთ, რომ ჩვენ შევძელით პორტის 1 გამოყენება ATtiny84– ისთვის.)
  2. SPST გადამრთველის შეწყვეტა უნდა განხორციელდეს გარე წყვეტით 0 (INT0), ვინაიდან ერთი და მხოლოდ პინის შეცვლის შეწყვეტა გამოყოფილია SoftwareSerial– ის მიერ. ეს ასახავს იმ აზრს, რომ pin ცვლილების შეფერხებები და გარე შეფერხებები ლოგიკურად დამოუკიდებელია და მათი გამოყენება შესაძლებელია იმავე პორტის რეესტრში.
  3. შეცვლილი პროგრამული უზრუნველყოფის სერიული ვერსიის გამოყენებით არაფერი მოიპოვება - არის მხოლოდ ერთი პორტი და პროგრამული უზრუნველყოფის კლასი აითვისებს მას. თუმცა, შეცვლილი კლასი მაინც გამოიყენებოდა მხოლოდ იმისათვის, რომ თავიდან აეცილებინა ცვლილება, რომელიც უშუალოდ არ უკავშირდებოდა ამ ნაბიჯის მიზანს.

გირჩევთ: