Բովանդակություն:
- Քայլ 1. Գրեք ծրագիր և կազմեք Hex ֆայլը ՝ օգտագործելով Atmel Studio- ն
- Քայլ 2. Միկրոհսկիչի ապահովիչների բիթերի կանխադրված կազմաձևի փոփոխություն
- Քայլ 3. Bրագիրը այրելը ATMega328P միկրոկառավարիչի հիշողության մեջ
- Քայլ 4. Ստուգեք, թե ինչպես է միկրոկառավարիչը աշխատում մեր ծրագրի ցուցումներին համապատասխան
- Քայլ 5: Եզրակացություն
Video: AVR միկրոկառավարիչի ապահովիչների բիտերի կազմաձևում: Միկրոկոնտրոլերի ֆլեշ հիշողության մեջ LED թարթման ծրագրի ստեղծում և բեռնում. 5 քայլ
2024 Հեղինակ: John Day | [email protected]. Վերջին փոփոխված: 2024-01-30 09:49
Այս դեպքում մենք կստեղծենք պարզ ծրագիր C կոդով և կայրենք այն միկրոկոնտրոլերի հիշողության մեջ: Մենք կգրենք մեր սեփական ծրագիրը և կկազմենք վեցանկյուն ֆայլ ՝ օգտագործելով Atmel Studio- ն որպես ինտեգրված զարգացման հարթակ: Մենք կկարգավորենք ապահովիչների բիթերը և վեցանկյուն ֆայլ կբեռնենք AVR ATMega328P միկրոկառավարիչի հիշողության մեջ ՝ օգտագործելով մեր սեփական ծրագրավորողը և ծրագրաշարը ՝ AVRDUDE:
AVRDUDE - դա ծրագիր է Atmel- ի AVR միկրոկոնտրոլերների չիպային հիշողությունները ներբեռնելու և վերբեռնելու համար: Այն կարող է ծրագրավորել Flash- ը և EEPROM- ը, իսկ սերիական ծրագրավորման արձանագրությամբ ապահովված վայրերում կարող է ծրագրավորել ապահովիչների և կողպման բիթեր:
Քայլ 1. Գրեք ծրագիր և կազմեք Hex ֆայլը ՝ օգտագործելով Atmel Studio- ն
Եթե դուք չունեք Atmel Studio, դուք պետք է ներբեռնեք և տեղադրեք այն ՝
Այս նախագիծը կօգտագործի C- ն, ուստի ընտրեք GCC C Executable Project տարբերակը կաղապարների ցանկից ՝ մերկ ոսկորների կատարելիք նախագիծ ստեղծելու համար:
Հաջորդը, անհրաժեշտ է նշել, թե որ սարքի համար է նախագիծը մշակվելու: Այս նախագիծը մշակվելու է AVR ATMega328P միկրոկառավարիչի համար:
Մուտքագրեք ծրագրի ծածկագիրը Atmel Studio- ի հիմնական աղբյուրի խմբագրի տարածքում: Հիմնական աղբյուրի խմբագիր - Այս պատուհանը ընթացիկ նախագծի հիմնական ֆայլերի հիմնական խմբագիրն է: Խմբագիրն ունի ուղղագրության ստուգում և ավտոմատ լրացման հնարավորություններ:
1. Մենք պետք է կազմողին ասենք, թե ինչ արագությամբ է աշխատում մեր չիպը, որ կարող է ճիշտ հաշվարկել ուշացումները:
#ifndef F_CPU
#սահմանել F_CPU 16000000UL // պատմող վերահսկիչ բյուրեղային հաճախականություն (16 ՄՀց AVR ATMega328P) #endif
2. Մենք ներառում ենք նախաբանը, որտեղ մենք տեղադրում ենք մեր ներառած տեղեկատվությունը այլ ֆայլերից, որը սահմանում է գլոբալ փոփոխականներն ու գործառույթները:
#include // վերնագիր ՝ կապերի վրա տվյալների հոսքի վերահսկումը միացնելու համար: Սահմանում է կապում, նավահանգիստներ և այլն:
#include // header ծրագրում հետաձգման գործառույթը միացնելու համար
3. Նախաբանից հետո գալիս է հիմնական () գործառույթը:
int հիմնական (անվավեր) {
Հիմնական () գործառույթը եզակի է և առանձնացված է մյուս բոլոր գործառույթներից: Յուրաքանչյուր C ծրագիր պետք է ունենա մեկ հիմնական () գործառույթ: Main () - ն այն վայրն է, որտեղ AVR- ն սկսում է կատարել ձեր կոդը, երբ առաջին անգամ միանում է հոսանքին, ուստի դա ծրագրի մուտքի կետն է:
4. Տեղադրեք PORTB- ի 0 -ի կապը որպես ելք:
DDRB = 0b00000001; // Որպես ելք սահմանեք PORTB1- ը
Մենք դա անում ենք ՝ տվյալների ուղղման գրանցամատյանում երկուական թիվ գրելով: Տվյալների ուղղության գրանցամատյանը B- ն մեզ թույլ է տալիս մուտքագրել կամ ելնել գրանցամատյան B- ի բիթերը: 1 -ը գրելը դրանք դարձնում է ելքային, իսկ 0 -ը `մուտքային: Քանի որ մենք LED- ն ամրացնում ենք որպես ելք, մենք գրում ենք երկուական թիվ ՝ դարձնելով PORT B- ի 0 -ի քորոցը որպես ելք:
5. Օղակ:
մինչդեռ (1) {
Այս հայտարարությունը հանգույց է, որը հաճախ կոչվում է հիմնական հանգույց կամ իրադարձության օղակ: Այս ծածկագիրը միշտ ճշմարիտ է. հետևաբար, այն անընդհատ կատարում է անսահման օղակում: Այն երբեք չի դադարում: Հետևաբար, LED- ն թարթում է անսահմանության մեջ, եթե միկրոկառավարիչից հոսանքը անջատված չէ կամ ծածկագիրը ջնջված չէ ծրագրի հիշողությունից:
6. Միացրեք PB0 նավահանգստին ամրացված LED- ը
PORTB = 0b00000001; // միացնում է PB0 նավահանգստին ամրացված LED- ը
Այս գիծը, տալիս է 1 -ը PortB- ի PB0- ին: PORTB- ը սարքավորումների գրանցամատյան է AVR չիպի վրա, որը պարունակում է 8 կապ, PB7-PB0, ձախից աջ: 1 -ը վերջում դնելը 1 -ին է տալիս PB0- ին; սա սահմանում է PB0 բարձր, ինչը միացնում է այն: Հետեւաբար, PB0 կապում ամրացված LED- ը կմիանա եւ կլուսավորվի:
7. Հետաձգում
_ ուշացում (1000); // ստեղծում է 1 վայրկյան ուշացում
Այս հայտարարությունը ստեղծում է 1 վայրկյան ուշացում, այնպես որ LED- ն միանում և մնում է ուղիղ 1 վայրկյան:
8. Անջատեք բոլոր B կապերը, ներառյալ PB0- ն
PORTB = 0b00000000; // Անջատում է բոլոր B կապերը, ներառյալ PB0- ն
Այս գիծն անջատում է Port B- ի բոլոր 8 կապումներն այնպես, որ նույնիսկ PB0- ն անջատված է, ուստի LED- ն անջատվում է:
9. Հերթական ուշացում
_ ուշացում (1000); // ստեղծում է ևս 1 վայրկյան ուշացում
Այն անջատվում է ուղիղ 1 վայրկյան առաջ, նախքան օղակը նորից սկսելն ու հանդիպել գծին, որը այն նորից միացնում է ՝ կրկնելով գործընթացը ամբողջ ընթացքում: Դա տեղի է ունենում անսահման, այնպես որ LED- ն անընդհատ թարթում և անջատում է:
10. Վերադարձի քաղվածք
}
վերադարձ (0); // այս գիծը իրականում երբեք չի հասնում}
Մեր ծածկագրի վերջին տողը վերադարձի (0) հայտարարությունն է: Չնայած այս կոդը երբեք չի կատարվում, քանի որ կա անսահման մի հանգույց, որը երբեք չի ավարտվում, բայց այն ծրագրերի համար, որոնք աշխատում են աշխատասեղան համակարգիչներով, օպերացիոն համակարգի համար կարևոր է իմանալ ՝ դրանք ճիշտ են աշխատում, թե ոչ: Այդ իսկ պատճառով, GCC- ն ՝ մեր կազմողը, ցանկանում է, որ յուրաքանչյուր հիմնական () ավարտվի վերադարձի կոդով: Վերադարձի կոդերն ավելորդ են AVR կոդի համար, որն աշխատում է ցանկացած օժանդակ օպերացիոն համակարգի անկախ գործունեության վրա. այնուամենայնիվ, կազմողը նախազգուշացում կանի, եթե հիմնականը չվերջացնեք վերադարձով ():
Վերջնական քայլը նախագծի կառուցումն է: Դա նշանակում է հավաքել և վերջապես կապել բոլոր օբյեկտային ֆայլերը `գործարկվող ֆայլ (.hex) ֆայլ ստեղծելու համար: Այս վեցանկյուն ֆայլը գեներացվում է Debug պանակի ներսում, որը գտնվում է Project պանակի ներսում: Այս վեցանկյուն ֆայլը պատրաստ է բեռնվել միկրոկառավարիչի չիպի մեջ:
Քայլ 2. Միկրոհսկիչի ապահովիչների բիթերի կանխադրված կազմաձևի փոփոխություն
Կարևոր է հիշել, որ ապահովիչների որոշ հատվածներ կարող են օգտագործվել չիպի որոշ կողմերի կողպման համար և կարող են պոտենցիալ աղյուսավորել այն (դարձնել այն անօգտագործելի):
Ընդհանուր առմամբ կա 19 ապահովիչի բիթ, որոնք օգտագործվում են ATmega328P- ում, և դրանք բաժանված են երեք տարբեր ապահովիչների բայթերի: Ապահովիչի բիթերից երեքը պարունակվում են «Երկարաձգված ապահովիչների բայթում», ութը `« ապահովիչների բարձր բայթերում », և ևս ութը` «ապահովիչների ցածր բայթերում»: Կա նաև չորրորդ բայթ, որն օգտագործվում է կողպեքի բիթերը ծրագրավորելու համար:
Յուրաքանչյուր բայթ 8 բիթ է, և յուրաքանչյուր բիթ առանձին պարամետր կամ դրոշակ է: Երբ խոսում ենք տեղադրման, այլ ոչ թե կարգավորման, ծրագրավորված, ոչ ծրագրավորված ապահովիչների մասին, մենք իրականում օգտագործում ենք երկուական: 1 նշանակում է ոչ սահմանված, ոչ ծրագրավորված և զրո նշանակում է սահմանված, ծրագրավորված: Ապահովիչների ծրագրավորման ժամանակ կարող եք օգտագործել երկուական նշումներ կամ ավելի հաճախ վեցանկյուն նշումներ:
ATmega 328P չիպսերն ունեն ներկառուցված RC տատանում, որն ունի 8 ՄՀց հաճախականություն: Այս չիպով առաքվում են նոր չիպսեր ՝ որպես ժամացույցի աղբյուր և CKDIV8 ապահովիչը ակտիվ, որի արդյունքում ստացվում է 1 ՄՀց համակարգի ժամացույց: Գործարկման ժամանակը սահմանվում է առավելագույնի և ընդմիջման ժամանակահատվածը միացված է:
Նոր ATMega 328P չիպերը հիմնականում ունեն ապահովիչների հետևյալ կարգավորումները
Lowածր ապահովիչ = 0x62 (0b01100010)
Բարձր ապահովիչ = 0xD9 (0b11011001)
Ընդլայնված ապահովիչ = 0xFF (0b11111111)
Մենք կօգտագործենք ATmega 328 չիպ ՝ 16 ՄՀց արտաքին բյուրեղով: Հետևաբար, մենք պետք է համապատասխանաբար ծրագրավորենք «Ապահովիչի ցածր բայթ» բիթերը:
1. 3-0 բիթերը վերահսկում են տատանումների ընտրությունը, իսկ 0010-ի կանխադրված կարգավորումն այն է, որ մենք օգտագործում ենք չափագրված ներքին RC տատանում, որը մենք չենք ցանկանում: Մենք ցանկանում ենք, որ ցածր էներգիայի բյուրեղային տատանումների աշխատանքը սկսի 8.0-ից մինչև 16.0 ՄՀց, այնպես որ 3-1 բիթերը (CKSEL [3: 1]) պետք է սահմանվեն 111-ի:
2. 5-րդ և 4-րդ բիթերը վերահսկում են գործարկման ժամանակը, իսկ 10-ի կանխադրված պարամետրը նախատեսված է էներգիայի անջատումից և էներգախնայողությունից վեց ժամացույցի մեկնարկի հետաձգման համար, գումարած լրացուցիչ 14 ժամացույցի ցիկլի գործարկման հետաձգումը գումարած վերակայումից 65 միլիվայրկյան:
Powerածր էներգիայի բյուրեղային տատանումների համար ապահով լինելու համար մենք ցանկանում ենք, որ հնարավոր առավելագույն ձգձգումը լինի էներգիայի անջատումից և էներգախնայողությունից 16 000 ժամացույցի ցիկլ, այնպես որ SUT [1]-ը պետք է սահմանվի 1-ի, գումարած գործարկման լրացուցիչ հետաձգում: 14 ժամացույցի ցիկլ գումարած 65 միլիվայրկյան վերակայումից, այնպես որ SUT [0] - ը պետք է սահմանվի 1. Բացի այդ, CKSEL [0] - ը պետք է սահմանվի 1:
3. Bit 6 -ը վերահսկում է ժամացույցի ելքը դեպի PORTB0, ինչը մեզ չի հետաքրքրում: Այսպիսով, 6 -րդ բիթը կարելի է թողնել 1 -ի վրա:
4. Bit 7-ը վերահսկում է բաժանում -8-ի աշխատանքը և 0-ի կանխադրված պարամետրը միացված է գործառույթը, որը մենք չենք ցանկանում: Այսպիսով, 7 -րդ բիթը պետք է փոխվի 0 -ից 1 -ի:
Հետևաբար, ապահովիչի ցածր բայթը պետք է լինի 11111111, որը տասնվեցական նշումով 0xFF է:
«Ապահովիչի ցածր բայթ» -ի բիթերը ծրագրավորելու համար մենք կարող ենք օգտագործել մեր ծրագրավորողը (https://www.instructables.com/id/ISP-Programmer-fo…) և AVRDUDE ծրագրակազմը: AVRDUDE- ը հրամանի տող է, որն օգտագործվում է Atmel միկրոկառավարիչներից ներբեռնելու և դրանք վերբեռնելու համար:
Ներբեռնեք AVRDUDE ՝
Նախ, մենք պետք է նկարագրենք մեր ծրագրավորողին AVRDUDE- ի կազմաձևման ֆայլին: Windows- ում կազմաձևման ֆայլը սովորաբար նույն տեղում է, ինչ AVRDUDE- ի գործարկվող ֆայլը:
Տեղադրեք տեքստը կազմաձևման ֆայլում avrdude.conf:
# ISPProgv1
ծրագրավորող id = "ISPProgv1"; desc = "սերիական նավահանգիստի հարված, վերականգնում = dtr sck = rts mosi = txd miso = cts"; տիպ = "սերբ"; կապի_տիպ = սերիա; վերականգնել = 4; պարկ = 7; mosi = 3; miso = 8;;
Նախքան AVRDUDE- ը գործարկելը, մենք պետք է միացնենք միկրոկառավարիչը ծրագրավորողին, ըստ սխեմայի:
Բացեք DOS հուշման պատուհանը:
1. avrdude- ի աջակցվող ծրագրավորողի ցանկը դիտելու համար մուտքագրեք հրամանը avrdude -c c. Եթե ամեն ինչ կարգին է, ցանկում պետք է լինի ծրագրավորողի id «ISPProgv1»
2. Avdude աջակցվող Atmel սարքերի ցանկը դիտելու համար մուտքագրեք հրամանը avrdude -c ISPProgv1: Theանկում պետք է լինի m328p սարք Atmel ATMega 328P- ի համար:
Հաջորդը, մուտքագրեք avrdude -c ISPProgv1 –p m328p, հրամանը avrdude- ին ասեք, թե ինչ ծրագրավորող է օգտագործվում և ինչ Atmel միկրոկոնտրոլերը կցված է: Այն ներկայացնում է ATmega328P ստորագրությունը տասնվեցական նշումով ՝ 0x1e950f: Այն ներկայացնում է ապահովագրության բիթերի ծրագրավորում ներկայումս ATmega328P- ում, ինչպես նաև տասնվեցական նշումով; այս դեպքում ապահովիչների բայթերը ծրագրավորվում են ըստ գործարանի լռելյայն:
Հաջորդը, մուտքագրեք avrdude -c ISPProgv1 –p m328p –U lfuse: w: 0xFF: m, դա հրաման է ՝ avrdude- ին պատմել, թե ինչ ծրագրավորող է օգտագործվում և ինչ Atmel միկրոկոնտրոլերը կցված է, և ապահովիչների ցածր բայթը փոխել 0xFF- ի:
Այժմ ժամացույցի ազդանշանը պետք է գա ցածր հզորության բյուրեղային տատանումից:
Քայլ 3. Bրագիրը այրելը ATMega328P միկրոկառավարիչի հիշողության մեջ
Նախ, պատճենեք ծրագրի վեցանկյուն ֆայլը, որը մենք պատրաստել էինք հրահանգի սկզբում AVRDUDE գրացուցակում:
Այնուհետև մուտքագրեք DOS հուշման պատուհանում avrdude –c ISPProgv1 –p m328p –u –U flash: w: [ձեր վեցանկյուն ֆայլի անունը]
Հրամանը գրում է վեցանկյուն ֆայլ միկրոկառավարիչի հիշողության մեջ: Այժմ, միկրոկառավարիչը աշխատում է մեր ծրագրի ցուցումներին համապատասխան: Եկեք ստուգենք այն:
Քայլ 4. Ստուգեք, թե ինչպես է միկրոկառավարիչը աշխատում մեր ծրագրի ցուցումներին համապատասխան
Միացրեք բաղադրիչները `AVR Blinking LED սխեմայի սխեմատիկ սխեմայի համաձայն:
Նախ, մենք էներգիայի կարիք ունենք, ինչպես դա անում են բոլոր AVR սխեմաները: Մոտ 5 վոլտ հզորությունը բավարար է AVR չիպի շահագործման համար: Դուք կարող եք դա ստանալ կամ մարտկոցներից, կամ DC հոսանքի աղբյուրից: Մենք կապում ենք +5V հզորություն 7 -ի կապակցին և 8 -րդ կապը միացնում ենք գրատախտակին գետնին: Երկու կապանքների միջև մենք տեղադրում ենք 0.1μF կերամիկական կոնդենսատոր `էլեկտրամատակարարման հզորությունը հարթելու համար, որպեսզի AVR չիպը ստանա հարթ հոսանքի գիծ:
10KΩ ռեզիստորն օգտագործվում է սարքին Power On Reset (POR) ապահովելու համար: Երբ հոսանքը միացված է, կոնդենսատորի լարումը կլինի զրոյական, ուստի սարքը վերակայվում է (քանի որ վերականգնումը ցածր է), ապա կոնդենսատորը լիցքավորվում է VCC- ով, և վերականգնումն անջատված կլինի:
Մենք միացնում ենք մեր LED- ի անոդը AVR pin PB0- ին: Սա ATMega328P- ի 14 -րդ կապն է: Քանի որ դա LED է, մենք ցանկանում ենք սահմանափակել հոսանքը դեպի LED, որպեսզի այն չայրվի: Սա է պատճառը, որ մենք տեղադրում ենք 330Ω ռեզիստոր ՝ LED- ով շարքով: LED- ի կաթոդը միանում է գետնին:
16 ՄՀց բյուրեղը օգտագործվում է Atmega328 միկրոկառավարիչի ժամացույց ապահովելու համար, իսկ 22pF կոնդենսատորները `բյուրեղի աշխատանքը կայունացնելու համար:
Սրանք բոլոր միացումներն են, որոնք անհրաժեշտ են LED լուսավորելու համար: Սնուցման աղբյուր:
Լավ. LED- ը թարթում է մեկ վայրկյան ուշացումով: Միկրոհսկիչի աշխատանքը համապատասխանում է մեր առաջադրանքներին:
Քայլ 5: Եզրակացություն
Adիշտ է, դա երկար գործընթաց էր միայն LED լուսավորելու համար, բայց ճշմարտությունն այն է, որ դուք հաջողությամբ ջնջել եք հիմնական խոչընդոտները. Ստեղծել AVR միկրոկառավարիչի ծրագրավորման ապարատային հարթակ, Atmel Studio- ի օգտագործումը որպես ինտեգրված զարգացման հարթակ, AVRDUDE- ի օգտագործումը որպես ծրագրային ապահովում: AVR միկրոկառավարիչի կազմաձևում և ծրագրավորում:
Եթե ցանկանում եք տեղեկացված լինել իմ հիմնական միկրոկառավարիչների նախագծերին, բաժանորդագրվեք իմ YouTube- ին: Տեսանյութերիս դիտումը և տարածումը իմ գործին աջակցելու միջոց է:
Բաժանորդագրվեք YouTube FOG ալիքին
Խորհուրդ ենք տալիս:
Ներքին գլանաձև ապահովիչների սեփականատեր (միակցիչներ). 15 քայլ (նկարներով)
Ներքին գլանաձև ապահովիչների սեփականատեր (միակցիչներ). Այս հրահանգը նախատեսված է TinkerCAD- ի վրա ստեղծված գլանաձև ապակյա ապահովիչների համար: Այս նախագիծը սկսվեց հունիսին և մասնակցեց TinkerCAD նախագծման մրցույթին: Գոյություն ունեն ապահովիչների երկու տեսակ ՝ մեկը սովորական 5x20 մմ -ի համար, իսկ մյուսը ՝
Ավելի քիչ տարածության մեջ հազարի աճեցում կամ Տարածության մեջ գազար աճեցնելը, (քիչ թե շատ). 10 քայլ
Քիչ տարածության մեջ ավելի շատ գազար աճեցնելը կամ … Տարածության մեջ գազար աճեցնելը, (քիչ թե շատ). Սա մասնագիտական ներկայացում է Երկրից աճող, ստեղծող մրցույթին, որը ներկայացվում է Instructables- ի միջոցով: Ես չէի կարող ավելի ոգևորվել ՝ նախագծելով տիեզերական մշակաբույսերի արտադրության համար և տեղադրելով իմ առաջին Instructable- ը: Սկսելու համար մրցույթը մեզ խնդրեց
Օգտագործելով ծայրահեղ այրիչ AVR միկրոկառավարիչի ծրագրավորման համար. 8 քայլ
Օգտագործելով ծայրահեղ այրիչ AVR միկրոկառավարիչների ծրագրավորման համար. AVR- ի օգտվողների եղբայրություն, բոլորը, ովքեր հոսում են, ձեզանից ոմանք սկսել են PIC միկրոկոնտրոլերներից, իսկ ոմանք սկսել են ATMEL AVR- ներով, սա ձեզ համար է գրված: Այսպիսով, դուք գնել եք USBASP, քանի որ այն էժան է և արդյունավետ
AR օբյեկտների տեղադրում GPS- ի կոորդինատների մեջ `ընդլայնված իրականության մեջ. 8 քայլ (նկարներով)
AR օբյեկտների տեղադրում GPS կոորդինատների մեջ `ընդլայնված իրականության մեջ. Այս հրահանգավորումը կանցնի բջջային հավելվածի ստեղծման վրա` AR օբյեկտների և ARCore- ի հետ GPS- ի կոորդինատներում AR օբյեկտների տեղադրման համար `օգտագործելով Unity3D: Ես ձեզ կներկայացնեմ Mapbox- ի միջոցով իմ պատրաստած նախագիծը ստեղծելու միջոցով, որը թույլ է տալիս մեզ հաղորդագրություններ նշել հատուկ G
Visual Basic- ում ծրագրի ստեղծում. Վեբ դիտարկիչ `9 քայլ
Visual Basic ծրագրում ստեղծում. Վեբ զննարկիչ. Այս Instructable- ը բացատրում է VB.NET- ում պարզ վեբ դիտարկիչի ստեղծման գործընթացը: Այն նախագծված է որպես իմ առաջին VB.NET Instructable- ի շարունակություն. Ստեղծեք ձեր առաջին ծրագիրը Visual Basic- ում: Խորհուրդ է տրվում կարդալ այդ տեղեկատվությունը