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

Սկսնակ գործունեություն Bascom AVR- ով. 5 քայլ
Սկսնակ գործունեություն Bascom AVR- ով. 5 քայլ

Video: Սկսնակ գործունեություն Bascom AVR- ով. 5 քայլ

Video: Սկսնակ գործունեություն Bascom AVR- ով. 5 քայլ
Video: Ինչ է սպասվում սկսնակ բիզնեսին, երբ վերջիններս իրենց գործունեությունը սկսել են հունվարից 2024, Հուլիսի
Anonim
Սկսնակ գործունեություն Bascom AVR- ի հետ
Սկսնակ գործունեություն Bascom AVR- ի հետ

Սա սկիզբն է մի շարքի, որը կսովորեցնի ձեզ ծրագրավորել ձեր AVR միկրոկառավարիչը Bascom AVR- ով:

Ինչու եմ դա անում:

Այս շարքի ծրագրային նմուշների մեծ մասը կարող եք պատրաստել Arduino- ի միջոցով:

Ոմանք ավելի հեշտ և ոմանք ավելի դժվար, բայց վերջում երկուսն էլ կաշխատեն միևնույն վերահսկիչով:

Բայց ծրագրավորման եղանակը տարբեր է յուրաքանչյուր զարգացման միջավայրում: Arduino- ին անհրաժեշտ է գրադարան ամեն ինչի համար, բացի հիմնական գործառույթներից: Bascom- ն աշխատում է նաև գրադարանների հետ, բայց ես հազվադեպ եմ ստիպված լինում դրանք ներառել: Arduino- ի հետ բոլոր սարքավորումների համար հատուկ կարգավորումները կատարվում են գրադարանների միջոցով: դուք շատ փոքր ազդեցություն ունեք միկրոկառավարիչի իրական հզորության վրա: Սկսած այն ժամանակաչափերից, որոնք ունի վերահսկիչը: arduino- ի հետ նորից գրադարան է պետք: եթե ունեք ժամաչափը մինչև այն աշխատի, դա կարող է լինել այլ գրադարանի բախում ձեր կարգավորումների հետ: Bascom- ում դուք անվճար մուտք ունեք ամբողջական սարքավորում, ներառյալ բեռնախցիկը, որը զբաղեցնում է arduino- ն: օրինակ, bascom- ի որոշ գրադարաններ ձեզ հարցնում են, թե որ ժամաչափն եք ցանկանում օգտագործել: Մյուս կողմից, քանի որ arduino- ն շատ հեշտացնում է ինքնուրույն գրադարան ստեղծելը, բնականաբար այն դարձնում է հարթակ, որտեղ նոր սարքավորումները և տվիչները սովորաբար ուղղակիորեն ունեն գրադարան: այն, ինչը հաճախ կապված է բազոմի բազմաթիվ հետազոտությունների և այն գործառույթների հետ, որոնք գրադարանը սովորաբար կստանձներ, այնուհետև պետք է ջանասիրաբար ներառվեն ծրագրի ծածկագրում: բայց լավ նորություն bascom համայնքը նույնպես շատ մեծ է, դրա համար էլ կա լուծում յուրաքանչյուր գաղափարի համար:

Այսպիսով, մասամբ նախագծից է կախված, թե ինչն է օգտագործվում զարգացման միջավայրի համար և մասամբ `ծրագրավորող անձի նոու-հաուից:

բայց ինչու եմ ես անում այս շարքը: մի կողմից դա շատ գումար է խնայում: Պետք չէ յուրաքանչյուր նախագծի համար գնել arduino տախտակ: Օրինակ. Անանուն Arduino uno- ն արժե մոտ 12 €, դրա վրա գտնվող վերահսկիչն արժե ընդամենը 2,5 € `կայուն գործառույթի համար պահանջվող նվազագույն սխեմաներով, այն արժե մոտ 4 €: Մյուս կողմից, դուք ունեք avr չիպերի ամբողջական ընտրանի, որոնք հասանելի են: atmegas 8 -ից 256 և attiny 8 -ից 2313 և շատ xmega տեսակներ, որոնց մասին ես փորձ չունեմ: Եթե դուք պարզապես ցանկանում եք օգտագործել servo և ուլտրաձայնային տվիչ, որը կարող է ճանաչել ձեռքը, օրինակ, այնուհետև բացել աղբարկղի կափարիչը, կարող եք օգտագործել հնարավոր ամենափոքր չիպը: Այսպիսով, երկրորդ լեզու սովորելու բազմաթիվ պատճառներ կան:

Այսպիսով, եկեք սկսենք

Պարագաներ

Սա չիպի կայուն աշխատանքի և ծրագրավորման համար անհրաժեշտ նվազագույն պահանջվող մասերի ցանկն է:

Փորձարկման համար գրատախտակ

Atmega 8-16PU (ավելի լավ է գնել 2 կամ 3, եթե դրանք սխալմամբ սպանեք)

7805 5V լարման կարգավորիչ

10 Կոմ դիմադրություն

100nF ֆիլմի կոնդենսատոր

10μF էլեկտրոլիտիկ կոնդենսատոր

100μF էլեկտրոլիտիկ կոնդենսատոր

որոշ մետաղալարեր տախտակի համար

Windows PC 7/8/8.1/10

ISP ծրագրավորող (ես այստեղ կօգտագործեմ USBsp- ն, որը կարող եք գնել Amazon- ում ՝ փոքր գումարով)

Bascom AVR (այստեղ կարող եք ներբեռնել DEMO. Բոլոր գործառույթներն ապակողպված են, բայց կարող եք գրել կոդը միայն մինչև 4Kb չափ, որը բավական է բազմաթիվ կոդերի համար):

Ընտրովի մասեր.

LED- ները `ռեզիստորներով

սեղմիչ անջատիչներ

նախագծին հատուկ մասեր

Քայլ 1: Bascom- ի և տեղադրման տեղադրում

Bascom- ի և Setup- ի տեղադրում
Bascom- ի և Setup- ի տեղադրում
Bascom- ի և Setup- ի տեղադրում
Bascom- ի և Setup- ի տեղադրում
Bascom- ի և Setup- ի տեղադրում
Bascom- ի և Setup- ի տեղադրում

Ներբեռնեք ֆայլը և տեղադրեք Bascom AVR- ը: Տեղադրեք դրա բոլոր մասերը, ներառյալ տեղադրման ավարտից հետո վերջին վանդակը:

Դրանից հետո վերագործարկեք ձեր համակարգիչը, հակառակ դեպքում bascom- ը չի սկսվի:

Վերագործարկումից հետո սկսեք bascom- ը:

Գնացեք Ընտրանքներ -> merրագրավորող և ընտրեք USBasp ցուցակից, պահպանեք կարգավորումները և փակեք Bascom- ը:

Օգտագործեք այս ծրագիրը `usbasp- ը տեղադրելու համար: Դրանից հետո կրկին վերագործարկեք ձեր համակարգիչը: Այժմ միացրեք USBasp- ը ձեր համակարգչի հետ և գործարկեք սարքի կառավարիչը: USBasp- ը պետք է հայտնվի libusb սարքերում:

Կրկին Stat Bascom և ստեղծեք նոր ֆայլ: Պահեք այն ձեր համակարգչում և սեղմեք ստեղնաշարի F7 կոճակը:

Կազմողը սկսում և հավաքում է դատարկ ծրագիրը: Այժմ կարող եք ստուգել ծրագրավորողի ֆունկցիոնալությունը:

Hitրագրավորողի պատուհանը սկսելու համար սեղմեք ստեղնաշարի F4 կոճակը: Այժմ գնացեք chip -> Identify ՝ փոխազդեցություն սկսելու համար: USBasp- ի LED- ները այժմ պետք է կարճ թարթեն: Դուք պետք է այնպիսի հաղորդագրություն ստանաք, ինչպիսին է չիպի ID- ն, որը FFFFFF- ը չի կարող կարդալ սարքը: Դա լավ նշան է, որ merրագրավորողը աշխատում է, բայց չիպ չի գտել:

Այժմ մենք կարող ենք սկսել կառուցել առաջին սխեման:

Քայլ 2: Եկեք ավելի սերտ նայենք չիպին

Եկեք ավելի սերտ նայենք չիպին
Եկեք ավելի սերտ նայենք չիպին

Եթե նայեք չիպի պինուտին, թվում է, որ չիպը նմանություն չունի arduino տախտակին: Իհարկե, մենք օգտագործում ենք Atmega8 և Arduino uno- ում Atmega328 է: Բայց Pinout- ը գրեթե նույնն է, բայց Arduino Uno տախտակի չիպը ավելի շատ գործառույթներ ունի: Ահա քորոցների անունները: VCC- ն և GND- ը սնուցման աղբյուրներն են:

AREF- ը և AVCC- ն անալոգային թվային փոխարկիչի համար լարման և սնուցման աղբյուր են:

PB 0-7 PC 0-6 PD 0-7 ընդհանուր նշանակության ելքային կապեր են ՝ բազմաբնակարան:

reset pin- ն այն է, ինչ ասում է անունը: Չիպը վերագործարկելու համար: Վերակայված անվան վերևում գտնվող տողը նշանակում է ժխտում: Դա նշանակում է, որ չիպը վերականգնելու համար պետք է այն իջեցնել 0 Վ -ի:

Հետևյալ կապերի համար շուտով առանձին հրահանգներ կգան:

RXD TXD- ը UART սերիական հաղորդակցության ապարատային կապում են:

INT0 INT1- ը Hardware Interrupt կապում են

XCK /T0 UART ockամացույցի աղբյուր /erամաչափ /Counter0 Clամացույցի աղբյուր

XTAL /TOSC կապումներն օգտագործվում են մինչև 16 ՄՀց արտաքին բյուրեղի համար (տարբեր մոդելներ մինչև 20 ՄՀց) /Բյուրեղյա կապում ՝ ներքին RTC- ի համար

T1- ը նման է T0- ին

AIN կապումներն անալոգային համեմատիչի համար են

ICP1- ը նման է T0/T1- ին

OC1A- ն pwm timer1 ալիքի A- ի ապարատային ելքային փին է

SS / OC2 չիպի ընտրիչ քորոց SPI- ի համար / ինչպես OC1B- ն, բայց B ալիքը

MOSI MISO SCK / OC2- ը ապարատային SPI կապումներն են և ծրագրավորման / PWM ելքային ժմչփի ծրագրակազմը 2:

ADC0- ից ADC5- ը անալոգային մուտքերն են

SDA SCL- ն ապարատային I2C- ի կապում են

Սովորական չիպը կարող է աշխատել 4, 5 Վ -ից մինչև 5, 5 Վ, Atmega 8L- ը կարող է աշխատել շատ ավելի ցածր Լարման հետ:

Դուք տեսնում եք, որ նույնիսկ այս չիպը կարող է անել ավելին, քան Arduino Uno- ն, կարծես, չի կարող անել: Բայց Arduino- ն կարող է նաև դա անել, միայն պետք է ծրագրավորել այն:

Քայլ 3: Առաջին շրջան

Առաջին շրջան
Առաջին շրջան
Առաջին շրջան
Առաջին շրջան

Այժմ ժամանակն է կառուցել ձեր առաջին շրջանը:

Ո՞րն է սովորաբար առաջին միացումը: Ճիշտ! Թարթենք LED- ը:

LED- ը միացված է PB0- ին: Չիպի կողքին գտնվող ռեզիստորը ունի 10k Օմ:

LED- ի կողքին գտնվող ռեզիստորը ունի 470 Օմ:

Այժմ դուք կարող եք USBasp- ը միացնել Atmega- ի հետ, ինչպես ցույց է տրված նկարում:

Բայց նախքան հոսանքը միացնելը, եկեք գրենք ծրագիրը:

Քայլ 4: Գրեք առաջին ծրագիրը

Գրեք Առաջին ծրագիրը
Գրեք Առաջին ծրագիրը

Ստեղծեք նոր ֆայլ Bascom- ում և մուտքագրեք հետևյալ տեքստը:

$ regfile "m8def.dat"

$ crystal = 1000000 config portb.0 = ելքը do portb.0 = 1 սպասել 1 portb.0 = 0 սպասել 1 հանգույց

Դրանից հետո կազմեք այն ՝ ձեր ստեղնաշարի վրա սեղմելով F7:

Այժմ մենք կարող ենք ծրագրավորել չիպը ՝ սեղմելով F4: Հայտնվում է ծրագրավորողի պատուհանը: Հիմա ժամանակն է հոսանքը միացնել սեղանի սեղանից: Դուք պետք է ինչ -որ բան կիրառեք 6 -ից 12 Վոլտ -ի միջև:

Այժմ անցեք chip -> autoprogram: Եթե ծրագրավորողի պատուհանը ինքնաբերաբար փակվի, ծրագրավորումը հաջողված էր:

LED- ը պետք է լուսավորվի մեկ վայրկյան հաճախականությամբ:

Այժմ ավելի մոտիկից նայեք ծրագրին ՝ շարահյուսությունը հասկանալու համար:

$ regfile "m8def.dat"

բյուրեղյա $ = 1000000

$ regfile- ով մենք կոմպիլյատորին ասում ենք օգտագործված չիպի տեսակը, Arduino չիպի անունը կլինի «m328pdef.dat»

$ բյուրեղով մենք նրան ասում ենք պրոցեսորի արագությունը մոտ 1 ՄՀց:

config portb.0 = Ելք

դա նշանակում է, որ PB0- ը պետք է գործի որպես ելք:

Ի դեպ, PB0 հապավումը նշանակում է նավահանգիստ B bit 0. Չիպը բաժանված է մի քանի նավահանգստի: Յուրաքանչյուր նավահանգիստ տրվում է նամակ `հստակ նույնականացման համար: և յուրաքանչյուր պորտպին մի քիչ 0 -ից մինչև 7. Օրինակ, ես կարող եմ ամբողջական բայթ գրել պորտի ելքային գրանցամատյանում, որը կարտադրվի առանձին նավահանգստի կապում:

անել

հանգույց

Ահա թե ինչ է նշանակում Arduino- ում void loop հայտարարությունը: Այդ երկու հրամանների միջև ընդմիշտ կկրկնվի: (որոշ բացառություններով, բայց ավելի ուշ դրա մասին)

Պորտբ.0 = 1

սպասել 1 portb.0 = 0 սպասել 1

Այստեղ մենք արտահայտում ենք led- ի թարթումը:

Portb.0 = 1 -ը չիպին ասում է, որ ելքային PB0- ը փոխի 5 Վ -ի

սպասել 1 հրամանը թող չիպը սպասի մեկ վայրկյան: Եթե ցանկանում եք ավելի արագ փոխել led- ը, ապա պետք է սպասման հրամանը փոխարինեք սպասող սարքերով, այժմ կարող եք որոշ ժամանակ մտնել միլիվայրկյաններով, օրինակ. սպասում է 500. (waitus նշանակում է սպասել նանո վայրկյաններում)

Portb.0 = 0 -ը չիպին ասում է, որ ելքային PB0- ն փոխի 0V- ի:

Քայլ 5: Ավելացրեք կոճակ `մուտքերն օգտագործելու համար

Ավելացրեք կոճակ ՝ մուտքերն օգտագործելու համար
Ավելացրեք կոճակ ՝ մուտքերն օգտագործելու համար

Այժմ մենք ավելացնում ենք մի կոճակ ՝ լուսավորելու համար led- ը, եթե կոճակը սեղմված է:

Տեղադրեք կոճակը, ինչպես ցույց է տրված նկարում:

այժմ մուտքագրեք հաջորդ ծրագիրը:

$ regfile "m8def.dat"

$ crystal = 1000000 config portb.0 = ելքային կազմաձևում portd.7 = մուտքագրում Portd.7 = 1 անել, եթե pind.7 = 0 ապա portb.0 = 1 այլ portb.0 = 0 հանգույց

Եթե դուք վերբեռնում եք այդ ծրագիրը չիպի վրա, led- ը լուսավորվում է միայն կոճակը սեղմելիս: Բայց ինչու?

ծրագիրը սկսվում է նույնը, ինչ նախորդը

config portd.7 = մուտքագրում: Դա նշանակում է, որ կոճակին միացած PD7- ի քորոցը գործում է որպես մուտք:

Portd.7 = 1 -ը չի փոխում քորոցը բարձր, բայց այն ակտիվացնում է Atmega- ի ներքին ձգման դիմադրությունը:

Եթե statemend- ը մի փոքր անհեթեթ տեսք ունի, եթե սովոր եք arduino- ին:

եթե օգտագործում եք if հայտարարությունը, ապա պետք է օգտագործեք «ապա» հայտարարությունը: Այս նմուշում if հայտարարությունը օգտագործվում է մեկ հրամանատարական գործողությունների համար: Եթե ցանկանում եք ավելի շատ հրամաններ օգտագործել, ապա պետք է գրեք այսպես.

եթե pind.7 = 0 ապա

portb.0 = 1 ինչ -որ կոդ որոշ կոդ ինչ -որ այլ ծածկագիր portb.0 = 0 վերջ, եթե

if հայտարարության այս օգտագործման համար պետք է վերջում օգտագործել «end if» արտահայտությունը:

ինչը դեռ կարևոր է: Միգուցե արդեն տեսե՞լ եք: մուտքերը հարցված չեն portx.x- ով, այլ pinx.x- ով: Դուք կարող եք հեշտությամբ հիշել դա: Բառի մեջ ելքերն ունեն «o» (պորտ), իսկ մուտքերը ՝ «i» (քորոց):

Հիմա ձեր հերթն է մի փոքր խաղալու:

Իմ հաջորդ հրահանգը շուտով կգա (ստանդարտ հայտարարություններ, ինչպիսիք են while, select case, for և variables):

Եթե ձեզ դուր է գալիս իմ հրահանգը և ավելին եք ուզում, ասեք ինձ մեկնաբանություններում:

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