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

ATtiny84/85 SPI ինտերֆեյսի կապի կրկնակի օգտագործում. 6 քայլ
ATtiny84/85 SPI ինտերֆեյսի կապի կրկնակի օգտագործում. 6 քայլ

Video: ATtiny84/85 SPI ինտերֆեյսի կապի կրկնակի օգտագործում. 6 քայլ

Video: ATtiny84/85 SPI ինտերֆեյսի կապի կրկնակի օգտագործում. 6 քայլ
Video: Programming Attiny85 IC Directly Through USB || Attiny Programming Without Arduino 2024, Նոյեմբեր
Anonim
ATtiny84/85 SPI ինտերֆեյսի Pin օգտագործումը
ATtiny84/85 SPI ինտերֆեյսի Pin օգտագործումը

Այս հրահանգը հետևում է «ATtiny84/85 In-Circuit Debugging with Serial Output» հրահանգավորմանը և ընդլայնում է այդ ապարատային և ծրագրային կազմաձևերը `դիմումային ծրագրով ծրագրավորման ներլցման կապերի վերագործարկման խնդրի լուծման համար: Ընդհանուր առմամբ, ուսանելի և 1 -ին մասի միջև քննարկվում/ցուցադրվում են հետևյալ թեմաները.

Թեմա ATtiny84 ATtiny85
Սերիական հաղորդակցություն `օգտագործելով SoftwareSerial դասը X X
Deviceրագրի և ներբեռնման միջև սարքի կապում տարածելը X X
Pin Change ընդհատում X
Արտաքին ընդհատում X
Քնել POWER_DOWN ռեժիմում; արթնանալ ընդհատման ժամանակ X
Աշխատանքային ծրագիր «SoftwareSerial»-ի հետ կապված «բազմապատկված» ընդհատման վեկտորային կապի սխալի համար X
In-circuit- ում ATtiny սարքերի համար փոփոխել, ներբեռնել, կարգաբերել,… մշակել ցիկլը X X

Սարքավորման մուտքի/ելքի բաղադրիչ ավելացնելը SPI ծրագրավորման ինտերֆեյսին նվիրված կապումներից մեկին երբեմն նորմալ է, երբեմն ՝ ոչ: Օրինակ, LED- ի MISO- ին ավելացնելը պարզապես առաջացնում է LED- ի բոցավառումը ներբեռնման ընթացքում, այնուհետև այն հասանելի է հավելվածի համար: Այնուամենայնիվ, MISO- ին պիեզո -ազդանշանի ավելացումը կհանգեցնի սարսափելի աղմուկի, որին կհաջորդի ներբեռնումը:

Այս հրահանգը բացատրում է, թե ինչպես օգտագործել 4x2: 1 մուլտիպլեքսեր ՝ «վերականգնելու» SPI ինտերֆեյսի MISO, MOSI և SCK ազդանշաններին հատկացված քորոցների օգտագործումը ՝ պաշտպանելով դրանք ներբեռնման ընթացքում: RESET քորոցի վերաօգտագործումը պահանջում է ապահովիչի փոփոխություն և չի լուսաբանվում այս մոտեցմամբ: Կապերի կրկնակի նշանակումը կատարվում է մուլտիպլեքսերի միջոցով `դիմումի և ծրագրավորման մուտքերի միջև անցում կատարելու համար` կախված ներլցման ընթացքի ընթացքից: Կոդն ու սխեմաները ներառված են ինչպես ATtiny84- ի, այնպես էլ ATtiny85- ի համար: ATiny84 կոնֆիգուրացիան առաջին հերթին հասցեագրված է, քանի որ այն ունի երկու մուտք/ելք և կարող է օգտագործվել որոշ լրացուցիչ խնդիրներ/լուծումներ պատկերելու համար: Փոքր 84 -ի քննարկումից հետո նույն սցենարները քննարկվում են ATtiny85- ի համար:

Քայլ 1: Պահանջվող սարքավորում

Պատկեր
Պատկեր

Պահանջվող սարքավորումների մեծ մասը թվարկված էր ուսանելի 1 -ին մասում, այնպես որ միայն նոր սարքավորումները թվարկված են ստորև:

Անուն Հնարավոր աղբյուր Ինչպես է օգտագործվում
4x2: 1 մուլտիպլեքսեր Մաուզեր Պարունակում է չորս 2 մուտքային, 1 ելքային անջատիչներ, որոնք այն մեխանիզմն են, որով SPI ինտերֆեյսի ազդանշանները և կիրառական մուտքային/ելքային ազդանշանները կիսվում են:
SPST անջատիչ Անջատիչի ցանկացած տեսակ (վայրկենական կամ կողպված) կաշխատի: Անջատիչը օգտագործվում է հայտի մուտքի համար քորոցների փոխանակումը պատկերելու համար:
10K դիմադրություն Քաշեք ներքևի ռեզիստորը SPST անջատիչի համար `լողացող մուտքից խուսափելու համար
Պատկեր
Պատկեր
Պատկեր
Պատկեր

Multiplexer- ը բանալիներից ներբեռնման օգտագործումը դիմումի օգտագործումից մեկուսացնելու բանալին է: 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; կապում 2 = 1A; կապում 3 = 1B; կապում 4 = 1Y
1 Ընտրել Երբ Select- ը ցածր է, անջատիչի մուտքը A միացված է համապատասխան անջատիչի ելքային քորոցին, Y. Երբ ընտրությունը բարձր է, անջատիչի մուտքը B միացված է ելքին: Անջատիչները միաժամանակ վերահսկվում են Select ազդանշանի միջոցով և գործում միանման:
8 GND մուլտիպլեքսոր IC հիմք
16 ԵԿԿ մուլտիպլեքսորային IC հզորություն

Քայլ 2. Փորձարկման դեպքերի ակնարկ

Պատկեր
Պատկեր
Պատկեր
Պատկեր

Քորոցների վերաօգտագործման երկու սցենարները հիմնված են այն բանի վրա, թե արդյոք քորոցը հայտի մուտք է, թե ելք: Inputանկացած մուտքի հետ աշխատելու կարգը միշտ նույնն է. նաև կիրառման ելքերի ընթացակարգը նույնական է ՝ անկախ ապարատային բաղադրիչից: Նույնիսկ այդպես, բացատրությունն ավելի հեշտ է, և հուսով եմ ՝ ավելի պարզ, եթե կոնկրետ օրինակներ բերվեն: Երկու դեպքերի համար մինիմալիստական դասավորությունները ներկայացված են վերևում: Մանրամասն կարգավորումների համար հետագայում կապերը մի փոքր սկյուռների բույն են դառնում, ուստի օգտակար կլինի վերադառնալ այս ավելի մաքուր գծապատկերներին:

RESET- ը կատարյալ ընտրություն է Multiplexer Select ազդանշանի համար, քանի որ ներբեռնման ընթացքում այն ցածր է, բայց ներբեռնումն ավարտելուց հետո բարձր է դառնում: Նկատի ունեցեք, որ մուլտիպլեքսերային անջատիչներից որևէ մեկը կարող է օգտագործվել ցանկացած դեպքում, քանի որ բոլոր անջատիչներն իրենց նույնական են պահում: Բացի այդ, օրինակներից ոչ մեկը «իրատեսական» չէ. դրանք փոխարենը ընտրվել են որպես մեկուսացման տեխնիկան լուսաբանելու ամենապարզ միջոցը

  1. Ելքի պատյան. ATtiny84 փին 4 -ից (SCK) LED ելքը մեկուսացված է մուլտիպլեքսերային անջատիչ 2 -ի միջոցով

    • միացրեք մուլտիպլեքսեր պին 2A- ն գետնին
    • միացրեք մուլտիպլեքսերային քորոց 2B ATtiny85 փին 4 -ին
    • միացրեք ելքը 2Y LED անոդին

      • Ակնկալվող արդյունքներ.

        • Ներբեռնման ժամանակ LED- ն անջատված է, քանի որ միացված է 2A, գետնին
        • 2B- ի միջոցով ներբեռնելուց հետո LED- ը կցվում է հավելվածի ելքային 4 -ին և սկսում է թարթել
  2. Մուտքի գործ.

    • 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 Case 1 - Մեկուսացնել կիրառման ելքը

Պատկեր
Պատկեր

Այս քայլը նկարագրում է ներբեռնման ազդանշանի միջոցով ծրագրի ելքային կապի փոխանակման կարգավորումը: Օգտագործված օրինակը 4 -ի (SCK) ամրացված LED- ն է: Որպես օրինակ գոյություն ունեցող LED- ի օգտագործումը թույլ է տալիս շեշտը դնել մուլտիպլեքսեր 1 -ին մասի ապարատային և ծրագրային միջավայրին:

  • Սարքավորումներ

    • Մուլտիպլեքսերը ավելացրեք հացաթխման սեղանին ՝ վերևում ցրտաշունչ գծապատկերում նշված հարաբերական վայրում: Մուլտիպլեքսերը տեղադրված է դեպի կենտրոն, որպեսզի հնարավորություն տա 2 -րդ դեպքում անհրաժեշտ SPST անջատիչին:
    • Երկարացրեք RESET ազդանշանը մուլտիպլեքսորին `ավելացնելով կապարի մետաղալար (առաջարկեք դեղին) ATtiny84 փին 11 -ից դեպի մուլտիպլեքսերային 1 կապ:
    • Մնացած ապարատային կարգավորումը տրված է Քայլ 2 -ում

      • միացրեք մուլտիպլեքսերային քորոց 2A- ն անմիջապես գետնին
      • միացրեք 2B կապը ATtiny84 փին 4 -ին
      • միացրեք ելքը 2Y LED անոդին

        • Ակնկալվող արդյունքներ.

          • ներբեռնման ընթացքում 2Y միացված է գետնին (2A), այնպես որ LED- ն մնում է անջատված
          • Ներբեռնումից հետո 2Y- ն միացված է ATtiny84 փին 4 -ին `կիրառման LED հսկողություն
  • Ծրագրային ապահովում

    • Մաս 1 -ի ծածկագիրը կրկին օգտագործվում է. հասանելի է 1 -ին մասից, որը ուսանելի է, այլ ոչ թե այստեղ կրկնօրինակված
    • Բեռնեք և կազմեք Arduino IDE- ի 1 -ին մասի ծրագիրը
    • Միացրեք Փոքր AVR ծրագրավորողին համակարգչի USB պորտին
    • Միացրեք Adafruit USB սերիական մալուխը երկրորդ USB պորտին

      • Ստեղծվում է COM նավահանգիստ և ինքնաբերաբար հասանելի է դառնում IDE նավահանգստի ցուցակում
      • Գործարկեք COM պատուհանը
    • Ներբեռնեք կազմված կոդը ATtiny84- ում

Կիրառական ծրագրի արդյունքները նույնն են, ինչ 1 -ին մասի համար, քանի որ միակ փոփոխությունը LED- ը «պաշտպանված» վայր տեղափոխելն էր. LED- ը թարթում է 2 վայրկյան ընդմիջումներով; սերիական ելքը նույնն է: Մի տարբերություն, որը պետք է առաջանա, այն է, որ LED- ն այլևս չի թարթում ներբեռնման ընթացքում, քանի որ այդ ընթացքում այն միացված է գետնին մուլտիպլեքսեր 2A կապի միջոցով:

Պատկեր
Պատկեր

Քայլ 4. ATtiny84 Case 2 - Մեկուսացնել հայտի մուտքագրումը

Պատկեր
Պատկեր

Այս քայլը հիմնված է նախորդ ելքային մեկուսացման գործի կարգավորման վրա: Սարքավորման փոփոխությունները բաղկացած են SPST անջատիչի ATtiny84 pin 6 (MOSI) - ին մուլտիպլեքսերի միջոցով կցելուց: Այսպիսով, ապարատային փոփոխությունները նվազագույն են, բայց կան մի քանի ծրագրային փոփոխություններ, որոնք թույլ են տալիս SPST անջատիչին վերահսկել LED- ն ՝ օգտագործելով կապում փոփոխության ընդհատումը: Թարմացված ծածկագիրը ներառված է այս բաժնի ներքևում: Կոդը պետք է պատճենվի Arduino IDE- ում; առաջարկեք պահպանել այն Multiplexer_Input անվան տակ: (Ներողություն եմ խնդրում այս բաժնի երկարության համար, բայց դա ուսանելի ուսուցման նպատակը է և կարծում եմ, որ այն ավելի լավ է ընթերցվում որպես մոնոլիտ, քան արհեստական ընդմիջումներ տեղադրելու):

Թարմացնել Գտնվելու վայրը Նպատակը
ներառել «կոտրված» SoftwareSerial դասը ներառել բաժինը LED- ն այժմ վերահսկվում է SPST անջատիչով `քորոցային փոփոխության ընդհատման միջոցով: SoftwareSerial դասը պետք է փոփոխվի, քանի որ հակառակ դեպքում այն հատկացնում է քորոց փոփոխության ԲՈԼՈՐ վեկտորները: Սա առաջացնում է «բազմակի սահմանում» հղման սխալ SPST անջատիչին վերագրված (նավահանգիստ 0) վեկտորի համար: Hackարդված SoftwareSerial տարբերակը պետք է տեղադրվի ծրագրի նույն գրացուցակում, որպեսզի այն ազդի միայն այս հավելվածի վրա:
SPST մուտքագրման քորոցի սահմանում ներառել/սահմանման բաժինը SPST մուտքի նշանակումը սարքի քորոցին: Քորոցը սարքի համար է, ուստի այն ավելացվում է #ifdef ATtiny8x բաժնին (ներ) ին:
SPST մուտքագրման քորոց ռեժիմ կարգաբերման գործառույթ SPST կապը կազմաձևված է որպես Մուտք
Կարգավորեք SPST կապի ընդհատումը կարգաբերման գործառույթ Ընդհատման վեկտորը նշանակվում է SPST մուտքագրման քորոցին, որպեսզի անջատիչի վիճակի փոփոխությունը առաջացնի ընդհատում: Կազմաձևման գրանցամատյանները և ընդհատումների տեսակը հատուկ են սարքին: Կոդը հնարավորինս պարզ դարձնելու համար տարբերությունները կարգավորվում են #եթե սահմանված հատվածում
Կարգավորեք ամբողջական սերիական հաղորդագրությունը կարգաբերման գործառույթ Տեղադրման ամբողջական սերիական ելքային հաղորդագրությունը փոխվում է ՝ արտացոլելու Multiplexer Input ծրագիրը
Ավելացնել SPST անջատիչ ISR գործառույթը ծածկագրի բաժին Ավելացվում է SPST կապի փոփոխման ընդհատման ISR- ն: Կոդը սովորական է, բայց օգտագործվող վեկտորը հատուկ սարքի համար է և սահմանվում է ծրագրի վերևում գտնվող սարքից կախված բաժիններում: ISR- ի ակտիվացման ստուգման համար լուսադիոդային վիճակը փոխվում է: Չնայած իրական ծրագրում ոչ-ոչ, սերիական ելքային հաղորդագրություն է ստեղծվում `արտացոլելով LED- ի նոր վիճակը:
Փոփոխել հանգույցի մշակումը հանգույցի գործառույթը ISR- ն այժմ վերահսկում է LED- ը միացնելը և անջատելը, որպեսզի ֆունկցիոնալությունը հանվի օղակի ռեժիմից: Քնի ռեժիմին կանչելը ATtiny84- ի համար ավելացվում է որպես «լրացուցիչ»: Այս հավելվածի համար ATtiny85 քունը չի աշխատում; գուցե Software Serial դասի միջամտության պատճառով, քանի որ այն աշխատում է SoftwareSerial- ի հետ, հանված է:
Ավելացրեք քնի ռեժիմ ծածկագրի բաժին Քնի ֆունկցիոնալությունը անհրաժեշտ չէ մուլտիպլեքսերի օգտագործումը ցուցադրելու համար: Պարզապես ավելացվել է, քանի որ սովորաբար կցանկանայի սպասել POWER_DOWN ռեժիմում մուտքագրմանը ՝ էներգիա խնայելու համար, այլ ոչ թե շարունակել աշխատել ծրագրի օղակով ՝ ոչինչ չանելով, մինչև մուտքը տեղի ունենա:

Փոփոխեք SoftwareSerial դասի ծածկագիրը

SoftwareSerial դասը պետք է փոխվի այնպես, որ այն չփակի բոլոր կապի փոփոխման ընդհատման նավահանգիստները: SoftwareSerial դասի ծածկագիրը գտնվում է ՝

C: / Program Files (x86) Arduino / hardware / arduino / avr / libraries / 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_inruptrupt (); }

Այժմ մեկնաբանեք գոյություն ունեցող կոդի բլոկը, որը հատկացնում է նավահանգստի ընդհատման վեկտորները, ինչպես նշված է ստորև (պարզապես ավելացրեք սկզբի և վերջի բլոկի մեկնաբանության նշանները / * և * /):

/*

#if սահմանված (PCINT0_vect) ISR (PCINT0_vect) {SoftwareSerial:: handle_inruptrupt (); } #endif #if սահմանված (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)); #endif */

Կարգավորեք սարքավորումները

SPST անջատիչը կցված է ATtiny84 փին 6 -ին (MOSI), ինչպես նկարագրված է Քայլ 2 -ում: Հարմարության համար ընթացակարգը կրկնօրինակվում է այստեղ:

  • միացրեք անջատիչի մուտքը 3A Tiny AVR Programmer վերնագրի MOSI կապարին
  • միացրեք 3B- ն SPST անջատիչ ON ելքային քորոցին
  • միացրեք 3Y- ը ATtiny84 փին 6 -ին

    • ԱՐԴՅՈՆՔՆԵՐ:

      • 3A, MOSI, ներբեռնման ընթացքում կապակցված կլինի ATtiny84 փին 6 -ի հետ
      • 3B, SPST արտադրանքը, ներբեռնելուց հետո կդառնա 6 -րդ կապի

Գործարկեք ծրագիրը

Վազելուց առաջ SPST անջատիչը դրեք անջատված վիճակում: Հակառակ դեպքում LED- ը կմիանա, երբ անջատիչն անջատված է և հակառակը: Հետևեք 3 -րդ քայլին ՝ Arduino IDE- ի միջոցով դիմումի ներմուծման ծրագիրը բեռնելու, կազմելու և ներբեռնելու համար: Ինչպես նախկինում, ներբեռնման ընթացքում LED- ը չպետք է թարթվի, այնպես որ ծրագիրը գործարկելու միակ ցուցիչը կլինի կարգաբերման ռեժիմի վերջում սերիական հաղորդագրությունը ՝ SETUP Complete - Input Օրինակ

Այս պահին ծրագիրը սպասում է մուտքագրման SPST անջատիչից: Անջատիչը ON դիրքում տեղադրելը կհանգեցնի LED- ի միացմանը. վերադառնալով անջատված դիրքի ՝ LED- ն անջատվում է: Ելքային հաղորդագրությունները հաստատում են, որ ISR- ն կանչվել է (ISR: Led HIGH, ISR: Led LOW): Ուշադրություն դարձրեք, որ սերիական հաղորդագրությունների հերթականությունը հետևյալն է. անջատիչ մուտքագրելիս ISR- ն կանչվում է, միացնում LED- ն և փաստաթղթավորում փոփոխությունը. ապա վերամշակումը սկսվում է քնի կանչից հետո, քանի որ ընդհատումը արթնացնում է պրոցեսորը:

Պատկեր
Պատկեր

Այս հրահանգի ծրագիրը

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

// ՄԱՍ 2. Դիմում/ներբեռնեք սարքի քորոցների փոխանակում //: Փոփոխում է Մաս 1 -ի ծածկագիրը ՝ աջակցելու քորոցների // SPI ծրագրավորման ինտերֆեյսի համար //. «Comon» ծածկագիրը ATtiny85 և ATtiny84 // *************************************** ***************************** # #ներառել «SoftwareSerial.h» // Փոփոխված Arduino SoftwareSerial դասը #ներառել // Մինչ մշակման ծածկագիրը տարածված է, օգտագործվող կապումներն #հատուկ սարքի համար #սահմանված են (_ AVR_ATtiny84_) || սահմանված (_ AVR_ATtiny84A_) #սահմանել ledPin 4 // Միացված/անջատելու համար անջատված/անջատված #սահմանել rxPin 9 // Սերիական ընդունման համար օգտագործվող քորոց (MOSI) #սահմանել ISR_VECT PCINT0_vect // SPST անջատիչ Pin փոփոխության ընդհատման վեկտոր #elif սահմանված (_ AVR_ATtiny85_) #սահմանել ledPin 1 #սահմանել rxPin 4 #սահմանել txPin 3 #սահմանել SpstPin 2 // Մուտք SPST_TECT (INT0_ctfine) // SPST անջատիչ Փին փոխելու ընդհատման վեկտորը #այլ #սխալ Միայն այս նախագծին է աջակցում ATiny84- ը և ATtiny85- ը:, txPin); // ---------------------------------------------------- ------------------------ // Մշակման ռեսուրսների սկզբնականացում // ------------------- ------------------------------------------------------ --- void setup () {mySerial.begin (9600); // Սկսեք սերիական մշակման հետաձգում (2000); // ialամանակ տվեք Serial Com պորտին ՝ գործարկումը ավարտելու համար: // հակառակ դեպքում, 1 -ին ելքը, ամենայն հավանականությամբ, բացակայում է կամ փչացած pinMode (ledPin, OUTPUT); // Կարգավորել led քորոցը OUTPUT pinMode- ի համար (SpstPin, INPUT); // Կարգավորել SPST անջատիչի քորոցը որպես INPUT #եթե սահմանված է (_ AVR_ATtiny84_) || (_AVR_ATtiny84A_) // կարգավորել կապի փոփոխման ընդհատում ՝ 6 -րդ կապում (MOSI) GIMSK- ի անջատիչի մուտքը կարգավորելու համար | = (1 <

Քայլ 5. ATtiny85 Case 1 - Մեկուսացնել կիրառման ելքը

Պատկեր
Պատկեր

ATtiny85- ի համար կրկնակի ապարատային կարգավորում կառուցելու փոխարեն, հավանաբար, ավելի հեշտ է սկսել քայլ 4 -ից ATtiny84- ի ավարտված կազմաձևով և tiny84 չիպը փոխարինել tiny85- ով: Բոլոր անհրաժեշտ սարքավորումներն այնուհետև արդեն հասանելի են: Եթե օգտագործում եք այս մոտեցումը, տեղադրեք tiny85- ն այնպես, որ 3 -րդ և 4 -րդ կապումներն իրար հաջորդեն tx սերիական մալուխի հետ և ստանան լարեր: Այնուհետև մնում է միայն SPI ինտերֆեյսի հաղորդալարերը տեղափոխել ՝ համապատասխանելու ATtiny85- ի իրենց պահանջվող վայրերին:

Եթե զրոյից եք սկսում, պարզապես հետևեք 3 -րդ քայլի ընդհանուր քայլերին և վերը նշված ցնցող գծապատկերին: 3 -րդ քայլում ATtiny84- ի համար օգտագործված ծածկագիրը նույնն է, ինչ ակնկալվող արդյունքները. LED- ն աշխատելիս թարթում է 2 վայրկյան ընդմիջումներով, իսկ հաջորդական ելքային հաղորդագրությունները հետևում են LED վիճակին:

Պատկեր
Պատկեր

Քայլ 6. ATtiny85 Case 2 - Մեկուսացնել հայտի մուտքագրումը

Պատկեր
Պատկեր

Սարքավորումների տեղադրման համար սկսեք 5 -րդ քայլից կազմաձևումից և ավելացրեք SPST անջատիչը, ինչպես նշված է վերևում ցրտաշունչ դիագրամում: Ես իրականում օգտագործել եմ մի փոքր անջատիչ ՝ tiny85 տարբերակի համար, և դա մի փոքր ավելի հեշտ է դարձնում ստուգումը: Ուշադրություն դարձրեք, որ անջատիչի ելքը պտտվում է ATtiny84 կոնֆիգուրացիայից 180 աստիճանով: Այս փոփոխությունը հեշտացնում է միացման լարերի ուղղորդումը, քանի որ բոլոր 3 SPI ազդանշանները ATtiny85- ի համար միևնույն կողմում են:

Օգտագործեք նույն ծրագիրը, ինչպես ATtiny84 Քայլ 4. Սպասվում են նույն ընդհանուր արդյունքները. LED- ն փոխում է վիճակը, երբ SPST անջատիչը միացված/անջատված է, իսկ հաջորդական ելքային հաղորդագրությունները փաստաթղթավորում են փոփոխությունները: GO TO SLEEP- ի հաղորդագրությունները բացակայում են, քանի որ ATtiny85- ի համար քնի գործառույթը չի կիրառվում: Թեև նույն ծրագիրն է օգտագործվում, իրականացման մեջ կան էական տարբերություններ `հաշվի առնելու այն փաստը, որ ATtiny85- ն ունի միայն մեկ նավահանգստի գրանցամատյան (նավահանգիստ 0):

  1. SoftwareSerial- ն այժմ սերիական հաղորդակցության համար հատկացնում է պորտի 0 կապի փոփոխության ընդհատումը (Հիշեցնենք, որ մենք կարողացանք օգտագործել 1 պորտը ATtiny84- ի համար):
  2. SPST անջատիչի ընդհատումը պետք է իրականացվի արտաքին ընդհատմամբ 0 (INT0), քանի որ մեկ և միայն քորոց փոփոխության ընդհատումը հատկացված է SoftwareSerial- ի կողմից: Սա իսկապես ցույց է տալիս այն կետը, որ քորոցների փոփոխման ընդհատումները և արտաքին ընդհատումները տրամաբանորեն անկախ են և կարող են օգտագործվել նույն պորտ գրանցամատյանում:
  3. Փոփոխված SoftwareSerial տարբերակի օգտագործմամբ ոչինչ չի շահվում. Կա միայն մեկ նավահանգիստ, և SoftwareSerial դասը կգրավի այն: Այնուամենայնիվ, փոփոխված դասը դեռ օգտագործվում էր պարզապես այս քայլի նպատակի հետ անմիջականորեն առնչվող փոփոխությունից խուսափելու համար:

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