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

Կարդալու անջատիչներ ATtiny2313: 9 քայլով
Կարդալու անջատիչներ ATtiny2313: 9 քայլով

Video: Կարդալու անջատիչներ ATtiny2313: 9 քայլով

Video: Կարդալու անջատիչներ ATtiny2313: 9 քայլով
Video: 2021-ի նՈՐ ԳՐՔԵՐՍ 2024, Հուլիսի
Anonim
Կարդալու անջատիչներ ATtiny2313- ով
Կարդալու անջատիչներ ATtiny2313- ով

Եղել են մի քանի հրահանգներ, որոնք զբաղվում են ATtiny2313- ի և նմանատիպ AVR սարքերի ելքերով: Օրինակ ՝ https://www.instructables.com/id/Ghetto-Programming%3a-Getting-started-with-AVR-micro/, https://www.instructables.com/id/Drive-a-Stepper- Շարժիչ-ան-AVR- միկրոպրոցեսորով/: Աշխատելով The Real Elliot- ի վերջինի վրա, որը ցույց տվեց, թե ինչպես կարելի է կառավարել սլաքային շարժիչները, ես գտա, որ իսկապես օգտակար կլինի նույն ծրագրում այլընտրանքային ծածկագրերի բաժիններ գործարկելը, այնպես որ ես կարիք չունեմ յուրաքանչյուրը ATtiny2313 ծրագրավորել: ժամանակ ես ուզում էի փորձել ծածկագրի մի փոքր տատանում (օրինակ ՝ կիսաքայլ կամ քայլը հակառակ ուղղությամբ): Թեև հեշտ է կոդ գրել անջատիչ/դեպքի հայտարարության միջոցով `այլընտրանքային տատանումների ընտրություն թույլ տալու համար, անհրաժեշտ է գործի ընտրության որոշակի եղանակ: Դա նշանակում է, որ գործը կառավարելու համար պետք է կարդալ ինչ -որ մուտքագրման սարք: Բարեբախտաբար, ATtiny2313- ն ունի բազմաթիվ I/O կապիչներ և լավ նախագծված է անջատիչներից մուտքեր կարդալու համար: Այս հրահանգը ցույց կտա, թե ինչպես կարդալ մուտքերը և որոշումներ կայացնել ՝ ելնելով դրանց վիճակից: Քանի որ միայն դա բավականին ձանձրալի կդարձներ ուսանելի, ես կբացատրեմ ATtiny2313- ի ժամաչափի/հաշվիչի ունակության օգտագործման մի պարզ միջոց ՝ փոքր բարձրախոսը որպես ազդանշանային ազդանշան վարելու համար: Կլինի նաև փոքր շեղում կարգաբերման պարզ տեխնիկայի վերաբերյալ:

Քայլ 1: Ներածման սարք

Ներածման սարք
Ներածման սարք
Ներածման սարք
Ներածման սարք

Այս Instructable- ը հիմնված է The Real Elliot- ի գերազանց աշխատանքի վրա և օգտագործում է իր նկարագրած ATtiny2313 գետտոյի զարգացման համակարգը: ATtiny2313 տվյալների թերթիկը Atmel- ից վերջնական տեղեկանք է բոլոր գործառույթների համար, բայց պարտադիր չէ, որ այն կարդալ հեշտ լինի: https://www.atmel.com/dyn/products/datasheets.asp?family_id=607 (Հղումն ունի բոլոր AVR տվյալների թերթերը, գտեք 2313 -ը): Նկարը ցույց է տալիս մուտքային անջատիչների մի պարզ հավաքածու: Սա պարզապես միացման/անջատման չորս անջատիչների փաթեթ է. հայտնի է նաև որպես մեկ բևեռ, մեկ նետման անջատիչներ (SPST): Սովորաբար, յուրաքանչյուր անջատիչի մեկ միացում կամ բևեռ կապված է գետնին, իսկ մյուս կապը բարձր է քաշվում ընթացիկ սահմանափակող դիմադրության միջոցով (10 Կ և ավելի): Միկրոկոնտրոլերի մուտքը միացված է բևեռին ռեզիստորի հետ: Եթե անջատիչը բաց է, միկրոկառավարիչը մուտքը կկարդա որպես HI: Եթե անջատիչը փակ է, միկրոկոնտրոլերը կկարդա մուտքային LO- ն: Մանրամասների համար դիմեք սխեմատիկային: ATtiny2313- ը պարզեցնում է իրերը `ապահովելով ծրագրավորվող ձգվող դիմադրիչներ I/O կապում, երբ դրանք կազմաձևվում են որպես մուտքագրումներ: Սա նշանակում է, որ անջատիչներին կարող է պարզապես մի բևեռ կապված լինել գետնին (LO), իսկ մյուս բևեռը `միացված պրոցեսորի մուտքին: Առաջին օրինակը ցույց է տալիս ընդամենը երկու անջատիչ: Անջատիչները կարդացվում և կազմաձևվում են հետևյալ ծածկագրով: Կարգավորեք անջատիչները որպես մուտքագրումներ. (Կոդ չի պահանջվում. Սա կանխադրված է:) Միացրեք ձգվող ռեզիստորները. PORTB = _BV (PB0) | _BV (PB1); Կարդացեք մուտքերը. But1 = ~ PINB & 0x03; Նշեք շրջադարձի և դիմակավորման օգտագործումը `ճիշտ արժեք ստանալու համար:

Քայլ 2. Ազդանշանի առկայծող լուսարձակներ

Մենք կօգտագործենք այս երկու անջատիչները `մի քանի անգամ ծրագրավորվող LED- ն թարթելու համար: LED- ները, որոնք մենք կօգտագործենք, լինելու են այն իսկական լուսարձակները, որոնք The Real Elliot- ը հայտնի դարձրեց: 1 և 2 անջատիչները կդիտարկվեն որպես երկու երկուական թվանշան, այնպես որ համադրությունը կարող է ներկայացնել 0, 1, 2 և 3. թվերը: Մեր ծրագիրը կկարդա երկու անջատիչը և կթարթեց LED- ն համապատասխան քանակությամբ անգամ, բայց միայն այն դեպքում, երբ անջատիչը պարամետրերը փոխվել են: Անջատիչները հանվում են 500 միլիվայրկյանով (օպտիմալացված չեն): Հեռացման ալգորիթմը բավականին պարզ է: Անջատիչները կարդացվում են, և ընթերցումը նշվում է: Եթե այն տարբերվում է oldBut արժեքից (վերջին պահպանված արժեքը), ապա ծրագիրը հետաձգվում է 500 միլիվայրկյանով և անջատիչները նորից կարդացվում են: Եթե արժեքը նույնն է, ինչ նախկինում կարդացվել էր, ապա հին արժեքը, սակայն կթարմացվի, և LED- ը կթարթի երկու անջատիչների երկուական արժեքով ենթադրվող թվերի քանակը: Նշեք արժեքի հակադարձումը, քանի որ «միացված» անջատիչը կարդում է LO: Անջատիչները շարունակաբար սկանավորվելու են ՝ հետագա փոփոխությունների համար: Փակող լուսարձակների մասին ավելին իմանալու համար դիմեք The Real Elliot- ի ավելի վաղ հրահանգներին: Դիտեք այս https://www.ganssle.com/debouncing.pdf անջատիչների անջատման մասին ավելին իմանալու համար: Ահա այս օրինակի ATtiny2313 կոդը: Գործարկման ընթացքում այս ծրագիրը երկու անգամ թարթում է PB4 (ֆիզիկական կապ 8) լուսադիոդը ՝ ցույց տալու, որ այն նախաստորագրված է: Այնուհետև այն կկարդա մեկ և երկու անջատիչները և կփակվի մեկից երեք անգամ `կախված անջատիչի կարգավորումից, երբ դրանք փոխվեն: Երբ անջատիչները չեն փոխվում, LED- ն դանդաղ կթարթվի: Այս կոդը գործարկելու համար ստեղծեք նոր գրացուցակ (ցանկության դեպքում այն անվանեք «Հիմնական») և ներբեռնեք հետևյալ C կոդի ֆայլը և կազմաձևեք դրա մեջ: Անվանափոխեք Makefile1.txt- ը `պարզապես Makefile: WinAVR- ի միջոցով կազմեք ծրագիրը և տեղադրեք այն ձեր ATtiny2313- ում:

Քայլ 3. Փոքր շեղում կարգաբերման վերաբերյալ:

Եթե դուք ինձ նման եք (և աշխարհի յուրաքանչյուր այլ ծրագրավորող), ապա հավանաբար ապրել եք այնպիսի ժամանակներ, երբ ձեր կողմից խնամքով մուտքագրված և կազմված «անթերի» ծածկագիրը չի կատարում այն, ինչ ակնկալում եք: Գուցե դա պարզապես ոչինչ չի անում! Ուրեմն ո՞րն է խնդիրը: Ինչպե՞ս եք պատրաստվում պարզել: Բարեբախտաբար, բաները գործի բերելու մի քանի մոտեցում կա: (Ձեռք բերեք այս գիրքը վրիպազերծման թեմայի գերազանց վերաբերմունքի համար: https://www.debuggingrules.com/) Ես կցանկանայի մի քանի պարզ առաջարկություն անել, որոնք վերաբերում են միկրոկոնտրոլերների ծրագրերի վրիպազերծման թեմային: Առաջին քայլը `հիմնվելն է ինչ գիտես: Եթե մեկ անգամ աչքի լույս եք ստացել աշխատանքի, ապա կրկին օգտագործեք այն ՝ տեսնելու, թե որտեղ եք գտնվում ձեր ծրագրում: Ինձ դուր է գալիս, որ LED- ը երկու անգամ թարթում է `ազդանշան տալով ծրագրի մեկնարկին: Դուք կարող եք տեղադրել կոդը, որպեսզի դա անեք ի սկզբանե ձեր ծրագրի սկզբում: Երբ իմանաք, որ ձեր սարքաշարի մեջ ոչինչ սխալ չէ, ստեղծեք թարթումներն անելու գործառույթ: Ահա այն գործառույթը, որը ես օգտագործում եմ:/********** ------------------------------ ** blinkEm-PD4- ի միջոցով LED թարթելու գործառույթը ** PD4- ը պետք է կազմաձևվի որպես ելք: ** ---------------------------------------------------- ---------------------*/void blinkEm (uint8_t count) {while (count> 0) {PORTD = _BV (PD4); _ ուշացում (1000); PORTD = ~ _BV (PD4); _ ուշացում (1000); հաշվել-; }} Այժմ հնարավոր է օգտագործել այս գործառույթը ձեր ծածկագրի տարբեր կետերում `որպես ազդանշան, որ կոդը մինչ այժմ կատարել է: Կոդն իմանալը նշանակում է, որ սխալներ գտնելու համար կարող եք ուշադիր ուսումնասիրել գործարկված, բայց չկատարված յուրաքանչյուր հատվածը: Միանգամից մեկ բան փոխելը նույնպես կարգաբերման հիմնական տեխնիկան է (նկարագրված է վերը նշված հղման մեջ): Այս դասական մեթոդը գործում է «բաժանիր և նվաճիր» -ի հետ մեկտեղ ՝ քայլ առ քայլ ձեռնարկելով ֆունկցիոնալությունը աստիճանաբար ավելացնելու համար: Սա կարող է թվալ դանդաղ մոտեցում, բայց դա այնքան էլ դանդաղ չէ, որքան միանգամից չաշխատող կոդի մեծ հատվածի վրիպազերծման փորձերը:

Քայլ 4: Ավելի վրիպազերծում

Շատ են լինում դեպքերը, երբ մենք ցանկանում ենք ստուգել ծածկագրի մի հատված ՝ բաց թողնելով դրա մեջ գտնվող տողերի մեծ մասը, այնուհետև հնարավորություն տալով դրանք մեկ առ մեկ, երբ ստուգում ենք, որ յուրաքանչյուրն աշխատում է: Սովորաբար, մենք դա անում ենք «մեկնաբանելով» տողերը, որոնք ցանկանում ենք բաց թողնել: Այս տեխնիկայի ընդլայնումն է ՝ կոդի բլոկ կտրելը և տեղադրելը, բնօրինակը մեկնաբանելը (այնպես, որ այն չկորցնենք) և պատճենը կոտրելը: C- ն տողերը մեկնաբանելու չորս հեշտ եղանակ ունի: «//» - ը տողի դիմաց դնելը մեկնաբանում է այդ տողը: «/*» - ում և «*/» - ում մեկ կամ մի քանի տող փակելով ՝ կմեկնաբանվի մի ամբողջ հատված: Այս մեթոդի արդյունավետ գործելու համար կոդի բլոկում չպետք է լինի այլ «*/» (բացի վերջավորից): Այսպիսով, արդյունավետ կարգապահություն է // օգտագործել կոդի բլոկների մեկնաբանությունների համար, իսկ / * * / կոնստրուկտորը վերապահել մեկնաբանությունների բլոկների և ծածկագրի հատվածների մեկնաբանման համար: Մեկնաբանության համար բլոկի սկզբում տեղադրեք «#if 0»: և հատվածն ավարտելով «#endif» - ով: Ավելի ընտրովի հսկողություն հնարավոր է ՝ օգտագործելով##ifdef (նույնացուցիչ) բլոկի սկզբում և «#endif» - ի վերջում: Եթե ցանկանում եք, որ բլոկը կազմվի, ծրագրի սկզբում օգտագործեք «#define (նույնացուցիչ)»: Նկատի ունեցեք, որ մեջբերման նշանները միայն շեշտադրման համար են և չպետք է ներառվեն: Այս տեխնիկայի համատեղումը պետք է օգտակար մոտեցում ապահովի ձեր ATtiny2313 ծրագրերի կարգաբերման համար: Դուք կարող եք օգտակար համարել այս գործիքները, երբ մենք անցնում ենք այս Ուղեցույցի միջոցով:

Քայլ 5. Timամաչափի/հաշվիչի օգտագործումը ազդանշանների համար

Timամաչափի/հաշվիչի օգտագործումը ազդանշանների համար
Timամաչափի/հաշվիչի օգտագործումը ազդանշանների համար

ATtiny2313- ն ունի երկու հզոր ժմչփ/հաշվիչ ռեսուրս `մեկը 8 բիթ և մեկը 16 բիթ: Դրանք կարող են կազմաձևվել որպես հաճախությունների գեներատորներ, զարկերակի լայնության մոդուլյացիայի փոփոխական կարգավորիչներ և ելքային համեմատական գրանցիչներ: Դրանց ամբողջական գործառույթը նկարագրված է տվյալների թերթիկի 49 էջերում: Այնուամենայնիվ, մենք կօգտագործենք մի պարզ դեպք: Կօգտագործվի միայն erամաչափ/հաշվիչ 0 (8-բիթանոց) և այն կօգտագործվի պարզապես որպես հաճախությունների գեներատոր: Հաճախականությունը կուղարկվի դեպի փոքր բարձրախոս `ձայնային ազդանշան արձակելու համար: Timամաչափը/հաշվիչը 0 ամբողջությամբ նկարագրված է ATtiny2313 տվյալների թերթի 66-83 -րդ էջերում: Այս նյութի ուշադիր ընթերցումը կապահովի մեկին Timeամանակի/հաշվիչի ամբողջական ընկալումը: Բարեբախտաբար, բավականին պարզ ռեժիմը ՝ Clear Timer on Compare (CTC), այն ամենն է, ինչ պահանջվում է մեր ուզած ազդանշանի հնչերանգը ստեղծելու համար:

Այն ռեժիմի համար, որը մենք կօգտագործենք, erամաչափի/հաշվիչի աշխատանքը պարզ է: Երբ ընտրվում է ժամացույցի ազդանշան, հաշվիչը սկսվում է զրոյից և ավելացնում ժամացույցի յուրաքանչյուր զարկերակը: Երբ հաշվիչի արժեքը հասնում է արդյունքի համադրման գրանցամատյանում (TOP) արժեքին, հաշվիչը վերակայվում է զրոյի և հաշվարկը նորից սկսվում է: Outputամաչափի/հաշվիչի հետ կապված ելքային բիթը միացված է քառակուսի ալիքի ելք ստանալու համար: Սա ուղղակիորեն ձայնային փոխարկիչին մղում է ձայնային ազդանշան տալու: Մի փոքր TDK Audio Transducer- ը տալիս է ազդանշան: Հարմար միավոր է Digikey 445-2530-ND, TDK SD1209T3-A1 (ես օգտագործել եմ դրա վաղ տարբերակը): Սա 3 վոլտ տարբերակ է; 5 վոլտ տարբերակը նույնպես կաշխատի, ինչպես ակնկալում եմ: Ես սա ուղղակիորեն դուրս եմ մղում Attiny2313- ի ելքային պորտից և, կարծես, լավ է աշխատում: Sparkfun- ը նման սարք ունի:

Քայլ 6: Timամաչափի/հաշվիչ 0 -ի կարգավորում

CTC ռեժիմը կարող է օգտագործվել OC0A ելքը միացնելու համար ՝ Pin 2, Port B (ֆիզիկական փին 14): Այս փինում ելքը միացնելու համար DDRB- ը պետք է պատշաճ կերպով սահմանվի: Դրա C ծածկագիրը նույնն է, ինչ blinkenlight- ի համար ելք դնելը: DDRB = _BV (PB2); // Պորտ B2- ը ելք է: Հաջորդ քայլը ժամացույցի ազդանշանի մատակարարումն է և ելքային համադրման ռեգիստրի բեռնումը `ալիքի ձև հաճախականություն ստանալու համար: Ստացված հաճախականության հավասարումը տրված է տվյալների թերթիկում (էջ 72): Հավասարման պայմանները կներկայացվեն ստորև: Ահա հավասարումը. FOC0A = fclk_I/O/2*N*(1+OCR0A) Որտեղ fOC0A: = ելքային հաճախականությունը fclk_I/O: = ժամացույցի աղբյուրի հաճախականությունը N: = ժամացույցի նախնական չափման գործոն OCR0A. Հաշվիչ 0A. Lockամացույցի աղբյուրի հաճախականություն, fclk_I/O Սա համակարգի ժամացույցի հաճախականությունն է: Կանխադրված արժեքը 1 ՄՀց է: TCCR0B- ի CS00, CS01 և CS02 բիթերը վերահսկում են այս ընտրությունը: Քանի որ այս բիթերը նույնպես ընտրում են N- ի արժեքը, այն նկարագրվում է հաջորդիվ: Precaler Value, NN- ը այն արժեքն է, որն օգտագործվում է համակարգի ժամացույցը բաժանելու կամ նախնական չափելու համար: TCCR0B- ի CS00, CS01 և CS02 բիթերը վերահսկում են այս ընտրությունը: ATtiny2313 տվյալների թերթի 81 -րդ էջի 41 -րդ աղյուսակը նկարագրում է համադրությունները: Քանի որ 1kHz- ի մոտ հաճախականությունը ցանկալի է, կտեղադրվեն TCCR0B- ի CS00 և CS01 բիթերը: Նկատի ունեցեք, որ երեք բիթերը 0 -ի սահմանելը, այդպիսով ժամացույցի աղբյուր չընտրելը, արդյունավետորեն դադարեցնում է ելքը: Սա այն մեթոդն է, որը կօգտագործվի ազդանշանը սկսելու և դադարեցնելու համար: TOP արժեքը, OCR0 Այս արժեքը հաշվիչի TOP արժեքն է, որը բեռնված է erամաչափի/հաշվիչի 0A հաշվիչի ելքային համադրման գրանցամատյանում: Երբ այս արժեքը հասնի, հաշվիչը կվերականգնվի զրոյի, և հաշվարկը նորից կսկսվի, մինչև TOP- ի հասնելը և ցիկլի կրկնությունը: TOP- ը հեշտությամբ փոփոխվում է, ուստի ազդանշանային ազդանշանի հաճախականությունը հեշտությամբ փոխվում է: Քանի որ ցանկալի է 1 կՀց հաճախականություն, TOP- ը 7 է: in: fOC0A = 1, 000, 000 /2 * 64 * (1+7) fOC0A = 977 Հց Բավականաչափ փակեք: Ահա արդյունքի համադրման գրանցամատյանը և Bամաչափի հաշվիչ հսկիչ գրանցամատյանը 0B բեռնելու կոդը: Խնդրում ենք տեսնել ծրագրի իրական ծածկագիրը `հասկանալու համար, թե ինչպես են դրանք օգտագործվում: OCR0A = 7; // Timeամանակի արժեքը TCCR0B = _BV (CS01) | _BV (CS00); // Ընտրեք ներքին ժամացույց & prescale = 8 TCCR0B = 0; // ժամացույցի ոչ մի աղբյուր չի անջատում հնչերանգը etամանակի/հաշվիչի ռեժիմի կարգավորում Որպես վերջին մանրամասնություն, մենք կսահմանենք մեր ցանկալի erամաչափի/հաշվիչի ռեժիմը `համապատասխան բիթեր սահմանելով erամաչափի/հաշվիչի կառավարման ռեգիստրում 0A: CTC ռեժիմն ընտրվում է ՝ տեղադրելով WGM01 բիթը, ինչպես նկարագրված է աղյուսակ 40 -ում, տվյալների թերթիկի 79 -րդ էջում: Քանի որ մենք ցանկանում ենք, որ ելքը փոխի յուրաքանչյուր ցիկլ, բիթ COM0A0- ն նույնպես պետք է սահմանվի, ինչպես նկարագրված է Աղյուսակ 34 -ում 77 -րդ էջում: Ահա կոդը ՝ TCCR0A = _BV (COM0A0) | _BV (WGM01); // CTC միացման ռեժիմ

Քայլ 7: Չորս անջատիչների օգտագործումը

Երբ մենք գործարկում ենք ազդանշանային ազդանշանը, եկեք ընդլայնենք մեր սարքավորումներն ու ծրագրակազմը `չորս անջատիչ կարգավորելու համար: Քանի որ Timer Counter 0A- ի ելքը գտնվում է B նավահանգստում, փին 2 -ում, մենք չենք կարող պարզապես հաջորդաբար ավելի շատ անջատիչներ միացնել B նավահանգստին: Հեշտ լուծում կլինի օգտագործել D նավահանգիստը, բայց եկեք այդ նավահանգիստը հասանելի դարձնենք այլ գործառույթների համար (գուցե քայլող շարժիչ): Այսպիսով, եկեք միացնենք լրացուցիչ անջատիչները PB3- ին և PB4- ին: Անջատիչների ընթերցումը հիմնականում անփոփոխ է: Դիմակի արժեքը փոխվում է 0x1B (00011011 երկուական) `դիմակ բիտ 2-ի հետ միասին 5, 6 և 7. Մեկ այլ հնարք օգտագործվում է 4 բիթանոց երկուական համար ստեղծելու համար: 3 և 4 բիթերը տեղափոխեք աջ մեկ բիթ և դրանք միացրեք 0 և 1 բիթերով 4 բիթանոց երկու համարի մեջ: Սա ստանդարտ C շարահյուսություն է ՝ բիթերը տեղափոխելու և համադրելու համար, բայց կարող է այնքան էլ հայտնի լինել սկսնակին: but1a = (but1 & 0x03) | ((բայց 1 & 0x18) >> 1); // but1- ն ունի անջատիչի ընթերցում Գործողության ընթացքում ծրագիրը երկու անգամ թարթում է և երկու անգամ ազդանշան տալիս ազդանշանի սկզբնավորման համար: Ytանկացած անգամ, երբ անջատիչները փոխվում են, նրանց ներկայացրած թիվը ազդանշան է հնչում: Երբ անջատիչները չեն փոխվում, LED- ը կթարթվի: Այս կոդը գործարկելու համար ստեղծեք նոր գրացուցակ (եթե ցանկանում եք զանգահարեք այն Beep) և ներբեռնեք հետևյալ C կոդի ֆայլը և կազմաձևեք դրա մեջ: Անվանափոխեք Makefile2.txt- ը `պարզապես Makefile: WinAVR- ի միջոցով կազմեք ծրագիրը և տեղադրեք այն ձեր Attiny2313- ում:

Քայլ 8. Օգտագործելով Switch/case Construct- ը

Վերջնական քայլը «պարզապես ծրագրային ապահովումն է». Ինչպես և խոստացել էինք, մենք կիրականացնենք անջատիչ/պատյան կառուցվածքը: Չնայած այս օրինակը ցույց է տալիս միայն երկու այլընտրանքային գործողություն, պետք է շատ պարզ լինի, թե ինչպես օգտագործել այս կոնստրուկցիան ՝ մի քանի այլընտրանքային կոդերի հատվածներից մեկը ընտրելու համար: Գործողության ընթացքում այս ծրագիրը վերահսկում է անջատիչները, և եթե փոփոխություն լինի, ապա այն կհնչի համապատասխան թվին, եթե այն կենտ է. այն թարթելու է, եթե թիվը զույգ է: Այն ոչինչ չի անում, եթե անջատիչը չի փոխվում:

Այս ծածկագիրը գործարկելու համար ստեղծեք նոր գրացուցակ (ցանկության դեպքում անվանեք այն Փոխել) և ներբեռնեք հետևյալ C կոդի ֆայլը և կազմաձևեք դրան: Անվանափոխեք Makefile3.txt- ը `պարզապես Makefile: WinAVR- ի միջոցով կազմեք ծրագիրը և տեղադրեք այն ձեր Attiny2313- ում:

Քայլ 9: Եզրակացություն

Եզրակացություն
Եզրակացություն

Ուրեմն վերջ! Այժմ դուք գիտեք, թե ինչպես օգտագործել անջատիչները `ձեր ծրագրի կատարումը վերահսկելու համար` դրանք կարդալով և անջատիչ կարգավորումների հիման վրա գործողություն ընտրելով: Դուք նաև գիտեք, թե ինչպես ստեղծել ազդանշանային ազդանշան և սովորել եք կարգաբերման որոշ ռազմավարություն:

Եթե ցանկանում եք ստուգել ձեր ըմբռնումը, փորձեք փոփոխել վերջին ծրագիրը ՝ բարձր ձայնով ազդանշան տալու համար, եթե կենտ է, ցածր ձայնի ազդանշան հնչեցրեք, և անընդհատ թարթեք LED- ը, եթե անջատիչների փոփոխություն չկա: վերադառնալ օգնության կարգաբերման մասին բաժին:

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