Ինչպես և ինչու կարդալ տվյալների թերթիկները, եթե միկրոկոնտրոլերները ձեր հոբբին են

Ինչպես և ինչու կարդալ տվյալների թերթիկները, եթե միկրոկոնտրոլերները ձեր հոբբին են

Միկրոէլեկտրոնիկան վերջին տարիներին նորաձև հոբբի է կախարդական Arduino-ի շնորհիվ։ Բայց ահա խնդիրն այն է. բավականաչափ հետաքրքրությամբ դուք կարող եք արագորեն գերազանցել DigitalWrite(-ը), բայց թե ինչ անել հետո, այնքան էլ պարզ չէ: Arduino-ի մշակողները մեծ ջանքեր են գործադրել իրենց էկոհամակարգ մուտք գործելու արգելքն իջեցնելու համար, բայց դրանից դուրս դեռևս կա կոշտ միացումների մութ անտառ, որն անհասանելի է սիրողականի համար:

Օրինակ, տվյալների թերթիկները: Կարծես ամեն ինչ ունեն, վերցրու ու օգտագործիր։ Բայց դրանց հեղինակներն ակնհայտորեն իրենց առջեւ խնդիր չեն դնում հանրահռչակել միկրոկոնտրոլերները. Երբեմն կարծեսոր պարզ բաներ նկարագրելիս միտումնավոր չարաշահում են անհասկանալի տերմիններն ու հապավումները, որպեսզի հնարավորինս շփոթության մեջ գցեն անգիտակիցներին։ Բայց ամեն ինչ այնքան էլ վատ չէ, ցանկության դեպքում դագաղը բացվում է:

Այս հոդվածում ես կկիսվեմ հումանիտար գիտությունների մասնագետի փորձով, որը շփվում է տվյալների թերթիկների հետ հոբբի նպատակներով: Տեքստը նախատեսված է սիրողականների համար, ովքեր մեծացել են Arduino շալվարից, այն ենթադրում է որոշակի ըմբռնում միկրոկառավարիչների շահագործման սկզբունքների վերաբերյալ:

Սկսեմ ավանդականից

LED-ի թարթում Arduino-ում

Եվ անմիջապես ծածկագիրը.

void setup() {
DDRB |= (1<<5);
}

void loop() {
PINB = (1<<5);
for (volatile uint32_t k=0; k<100000; k++);
}

"Ինչ է սա? – կհարցնի հմուտ ընթերցողը: – Ինչո՞ւ եք ինչ-որ բան գրում PINB մուտքագրման ռեգիստրում: Դա միայն կարդալու համար է»: Իսկապես, Arduino փաստաթղթերԻնչպես համացանցում առկա կրթական հոդվածների մեծ մասը, նշվում է, որ այս գրանցամատյանը միայն կարդալու է: Ես ինքս այդպես էի մտածում մինչև վերընթերցեցի այն տվյալների թերթիկ Atmega328p-ին՝ պատրաստելով այս հոդվածը: Եւ այնտեղ:

Ինչպես և ինչու կարդալ տվյալների թերթիկները, եթե միկրոկոնտրոլերները ձեր հոբբին են

Սա համեմատաբար նոր ֆունկցիոնալություն է, այն չկար Atmega8-ում, ոչ բոլորը գիտեն դրա մասին կամ չի նշվում հետամնաց համատեղելիության պատճառով: Բայց դա միանգամայն հարմար է այն գաղափարի ցուցադրման համար, որ տվյալների թերթիկները արժե կարդալ, որպեսզի օգտագործվեն չիպի բոլոր հնարավորությունները, ներառյալ քիչ հայտնիները: Եվ սա միակ պատճառը չէ։

Էլ ինչո՞ւ կարդալ տվյալների աղյուսակները:

Սովորաբար, Arduino-ի ինժեներները, բավականաչափ խաղալով LED-ներով և AnalogWrites-ով, սկսում են միացնել բոլոր տեսակի մոդուլներն ու չիպերը տախտակին, որոնց համար արդեն գրված գրադարաններ կան: Վաղ թե ուշ հայտնվում է գրադարան, որը չի աշխատում այնպես, ինչպես պետք է: Հետո սիրողականը սկսում է ջոկել այն շտկելու համար, իսկ հետո...

Եվ այնտեղ տեղի է ունենում միանգամայն անհասկանալի բան, այնպես որ դուք պետք է գնաք Google, կարդաք բազմաթիվ ձեռնարկներ, հանեք որևէ մեկի համապատասխան կոդի մասերը և վերջապես հասնեք ձեր նպատակին: Սա ձեռքբերումների հզոր զգացողություն է տալիս, բայց իրականում գործընթացը նման է անիվը նորից հայտնագործելուն՝ մոտոցիկլետի հակառակ ճարտարագիտությամբ: Ավելին, այս հեծանիվի աշխատանքի ըմբռնումը չի ավելանում: Ես գիտեմ, որովհետև ես ինքս դա անում էի բավականին երկար ժամանակ:

Եթե ​​այս հետաքրքիր գործունեության փոխարեն ես մի քանի օր ծախսեի Atmega328 փաստաթղթերի ուսումնասիրության վրա, ես հսկայական ժամանակ կխնայեի: Ի վերջո, սա բավականին պարզ միկրոկառավարիչ է:

Այսպիսով, դուք պետք է կարդաք տվյալների թերթիկները գոնե պատկերացնելու համար, թե ինչպես է ընդհանուր առմամբ աշխատում միկրոկոնտրոլերը և ինչ կարող է անել: Եվ հետագայում.

  • ստուգել և օպտիմալացնել այլ մարդկանց գրադարանները: Դրանք հաճախ գրվում են նույն սիրողականների կողմից, ովքեր նորից հորինում են անիվը. կամ, ընդհակառակը, հեղինակները դիտավորյալ դարձնում են դրանք չափազանց անխոհեմ։ Թող լինի երեք անգամ ավելի մեծ և դանդաղ, բայց անպայման կաշխատի;

  • կարողանալ չիպսեր օգտագործել նախագծում, որի համար ոչ ոք գրադարան չի գրել.

  • մի MK տողից մյուսը ձեզ համար հեշտացնելու համար.

  • վերջապես օպտիմալացնել ձեր հին կոդը, որը չի տեղավորվում Arduino-ում.

  • սովորել, թե ինչպես կառավարել ցանկացած չիպ ուղղակիորեն իր ռեգիստրների միջոցով, առանց անհանգստանալու նրա գրադարանների կառուցվածքի ուսումնասիրությամբ, եթե այդպիսիք կան:

Ինչու՞ ուղղակիորեն գրել գրանցամատյաններին, երբ կա HAL և LL:

Բառապաշար
HAL, բարձր աբստրակցիոն շերտ – գրադարան՝ աբստրակցիայի բարձր մակարդակով միկրոկոնտրոլերի կառավարման համար: Եթե ​​Ձեզ անհրաժեշտ է օգտագործել SPI1 ինտերֆեյսը, դուք պարզապես կարգավորում և միացնում եք SPI1-ը՝ առանց մտածելու, թե որ ռեգիստրները ինչի համար են պատասխանատու։
LL, ցածր մակարդակի API – գրադարան, որը պարունակում է մակրոներ կամ կառուցվածքներ ռեգիստրի հասցեներով, որոնք թույլ են տալիս մուտք գործել դրանք անունով: DDRx, PORTx, PINx Atmega-ում LL են:

«HAL, LL կամ գրանցումներ» թեմայով վեճերը պարբերաբար տեղի են ունենում Habré-ի մեկնաբանություններում: Առանց աստղային գիտելիքների հասանելիության պահանջի, ես պարզապես կկիսվեմ իմ սիրողական փորձով և մտքերով:

Քիչ թե շատ պարզելով Atmega-ն և կարդալով հոդվածներ STM32-ի հրաշալիության մասին, ես գնեցի կես տասնյակ տարբեր տախտակներ՝ Discovery և Blue Pills, և նույնիսկ պարզապես չիպսեր իմ տնական արտադրանքի համար: Նրանք բոլորը երկու տարի շարունակ փոշի են հավաքել տուփի մեջ։ Երբեմն ես ինքս ինձ ասում էի. «այդպես է, այս շաբաթավերջից սկսած ես տիրապետում եմ STM-ին», գործարկեցի CubeMX-ը, ստեղծեցի SPI-ի կարգավորում, նայեցի արդյունքում ստացված տեքստի պատին, որը առատորեն համեմված էր STM-ի հեղինակային իրավունքներով, և որոշեցի, որ սա ինչ-որ կերպ նույնպես: շատ.

Ինչպես և ինչու կարդալ տվյալների թերթիկները, եթե միկրոկոնտրոլերները ձեր հոբբին են

Իհարկե, դուք կարող եք պարզել, թե ինչ է գրել CubeMX-ը այստեղ: Բայց միևնույն ժամանակ պարզ է, որ բոլոր ձևակերպումները հիշելը և հետո դրանք ձեռքով գրելն իրատեսական չէ։ Եվ սա վրիպազերծելու համար, եթե ես պատահաբար մոռանամ նշել վանդակը Cube-ում, դա միանգամայն լավ է:

Երկու տարի է անցել, ես դեռ լիզում եմ շուրթերս ST MCU որոնիչ բոլոր տեսակի համեղ, բայց իմ հասկացողությունից դուրս չիպսերի համար և պատահաբար հանդիպեցի հրաշալի հոդված, թեև STM8-ի մասին։ ԵՎ հանկարծակի Ես հասկացա, որ այս ամբողջ ընթացքում բաց դուռ էի թակել. STM-ի գրանցամատյանները դասավորված են այնպես, ինչպես ցանկացած այլ MK-ի գրանցամատյանները, և Cube-ը պարտադիր չէ դրանց հետ աշխատելու համար: Հնարավո՞ր էր դա նույնիսկ...

HAL-ը և մասնավորապես STM32CubeMX-ը գործիք է պրոֆեսիոնալ ինժեներների համար, ովքեր սերտորեն աշխատում են STM32 չիպերի հետ: Հիմնական առանձնահատկությունը աբստրակցիայի բարձր մակարդակն է, մի MCU-ից մյուսը և նույնիսկ մի միջուկից մյուսը արագ գաղթելու հնարավորությունը՝ միաժամանակ մնալով STM32 գծում: Հոբբիստները հազվադեպ են հանդիպում նման խնդիրների. միկրոկոնտրոլերների մեր ընտրությունը, որպես կանոն, սահմանափակվում է AliExpress տեսականով, և մենք հաճախ գաղթում ենք արմատապես տարբեր չիպերի միջև. նետել մեզ վրա. ՀԱԼ-ն այստեղ չի օգնի, և այն ուսումնասիրելը շատ ժամանակ կխլի։

ԼԼ-ն մնում է, բայց դրանից մինչև գրանցամատյանները կես քայլ կա: Անձամբ ինձ օգտակար է համարում ռեգիստրի հասցեներով իմ մակրոները գրելը. ես ավելի ուշադիր եմ ուսումնասիրում տվյալների աղյուսակը, մտածում եմ, թե ինչի կարիք կունենամ ապագայում, և ինչը հաստատ չեմ անի, ավելի լավ եմ կառուցում իմ ծրագրերը, և ընդհանրապես, հաղթահարելը օգնում է անգիր անել: .

Բացի այդ, կա մի նրբերանգ հանրաճանաչ STM32F103-ի հետ. դրա համար կա երկու անհամատեղելի LL տարբերակ, մեկը պաշտոնյան STM-ից, երկրորդը Leaf Labs-ից, որն օգտագործվում է STM32duino նախագծում: Եթե ​​դուք գրեք բաց կոդով գրադարան (իսկ ես ունեի հենց նման առաջադրանք), կամ պետք է երկու տարբերակ ստեղծեք, կամ ուղղակիորեն մուտք գործեք ռեգիստրներ։

Վերջապես, LL-ի վերացումը, իմ կարծիքով, հեշտացնում է միգրացիան, հատկապես, եթե դա նախատեսում ես նախագծի հենց սկզբից։ Չափազանցված օրինակ. եկեք գրենք Arduino blink in Atmel Studio առանց LL:

#include <stdint.h>

#define _REG(addr) (*(volatile uint8_t*)(addr))

#define DDR_B 0x24
#define OUT_B 0x25

int main(void)
{
    volatile uint32_t k;

    _REG(DDR_B) |= (1<<5);

    while(1)
    {
        _REG(OUT_B) |= (1<<5);
        for (k=0; k<50000; k++);
        _REG(OUT_B) &= ~(1<<5);
        for (k=0; k<50000; k++);
    } 
}

Որպեսզի այս ծածկագիրը չինական տախտակի վրա LED-ը թարթի STM8-ով (ST Visual Desktop-ից), բավական է դրանում երկու հասցե փոխել.

#define DDR_B 0x5007
#define OUT_B 0x5005

Այո, ես օգտագործում եմ LED-ը կոնկրետ տախտակի վրա միացնելու հնարավորությունը, այն շատ դանդաղ կթարթի, բայց դա տեղի կունենա:

Ինչ տեսակի տվյալների թերթիկներ կան:

Հոդվածներում և ֆորումներում, ինչպես ռուսերեն, այնպես էլ անգլերեն, «տվյալների թերթիկները» նշանակում են չիպերի ցանկացած տեխնիկական փաստաթուղթ, և ես նույնն եմ անում այս տեքստում: Ֆորմալ կերպով դրանք նման փաստաթղթերի միայն մեկ տեսակ են.

Տվյալների թերթիկ - Կատարողական բնութագրեր, մարտավարական և տեխնիկական բնութագրեր: Պարտադիր ցանկացած էլեկտրոնային բաղադրիչի համար: Նախապատմական տեղեկատվությունը օգտակար է ձեռքի տակ պահելու համար, բայց դրա մեջ մտածված կարդալու շատ բան չկա: Այնուամենայնիվ, ավելի պարզ չիպերը հաճախ սահմանափակվում են տվյալների աղյուսակով, որպեսզի ավելորդ փաստաթղթեր չստեղծվեն. այս դեպքում Տեղեկատու ձեռնարկ ներառված է այստեղ:

Տեղեկատու ձեռնարկ – հրահանգներն իրենք՝ 1000+ էջանոց առողջ գիրք: Մանրամասն նկարագրված է այն ամենի աշխատանքը, որը խցկված է չիպի մեջ: Միկրոկարգավորիչին տիրապետելու հիմնական փաստաթուղթը. Ի տարբերություն datasheet, հրահանգները գրված են MK-ների լայն շրջանակի համար, դրանք պարունակում են շատ տեղեկություններ ծայրամասային սարքերի մասին, որոնք հասանելի չեն ձեր կոնկրետ մոդելում:

Mingրագրավորման ձեռնարկ կամ Հրահանգների հավաքածուի ձեռնարկ – միկրոկոնտրոլերի եզակի հրամանների հրահանգներ: Նախատեսված է նրանց համար, ովքեր ծրագրավորում են Assembly լեզվով: Կոմպիլյատորների հեղինակները ակտիվորեն օգտագործում են այն ծածկագիրը օպտիմալացնելու համար, ուստի ընդհանուր դեպքում մեզ դա պետք չի լինի: Բայց այստեղ նայելը օգտակար է ընդհանուր ըմբռնման, որոշ հատուկ հրամանների համար, ինչպիսիք են ընդհատումից դուրս գալը, ինչպես նաև վրիպազերծիչը ակտիվորեն օգտագործելու համար:

Դիմումի նշում – օգտակար խորհուրդներ կոնկրետ խնդիրներ լուծելու համար, հաճախ կոդի օրինակներով:

Սխալ թերթիկ – Չիպերի ոչ ստանդարտ վարքագծի դեպքերի նկարագրություն՝ լուծման տարբերակներով, եթե այդպիսիք կան:

Ինչ կա տվյալների աղյուսակներում

Ուղղակիորեն ներսում Տվյալների թերթիկ մեզ կարող են անհրաժեշտ լինել հետևյալ բաժինները.

Սարքի ամփոփում – տվյալների աղյուսակի առաջին էջը համառոտ նկարագրում է սարքը: Շատ օգտակար է այն իրավիճակներում, երբ ինչ-որ տեղ գտել եք չիպ (տեսել եք այն խանութում, զոդել եք, հանդիպել եք հիշատակման) և ցանկանում եք հասկանալ, թե ինչ է դա:

Ընդհանուր նկարագրությունը – գծից չիպերի հնարավորությունների ավելի մանրամասն նկարագրություն:

Պինաուտներ – բոլոր հնարավոր չիպային փաթեթների գծանշման գծապատկերները (որ ոտքի վրա է գտնվում):

Քորոցի նկարագրություն – յուրաքանչյուր փին-ի նպատակի և հնարավորությունների նկարագրությունը:

Հիշողության քարտեզ – Հազիվ թե մեզ անհրաժեշտ լինի հասցեների քարտեզ հիշողության մեջ, բայց երբեմն այն ներառում է նաև ռեգիստրի բլոկի հասցեների աղյուսակ:

Գրանցվել քարտեզ – գրանցամատյանների բլոկների հասցեների աղյուսակը, որպես կանոն, գտնվում է տվյալների աղյուսակում, իսկ ք Ref ձեռնարկ - միայն հերթափոխով (հասցեի օֆսեթներ).

Էլեկտրական բնութագիր – այս բաժնում մենք առաջին հերթին հետաքրքրված ենք բացարձակ առավելագույն գնահատականներ, թվարկելով մեկ չիպի առավելագույն բեռները: Ի տարբերություն անխորտակելի Atmega328p-ի, MK-ների մեծ մասը թույլ չի տալիս լուրջ բեռներ միացնել կապումներին, ինչը տհաճ անակնկալ է դառնում Arduinists-ի համար։

Տեղեկատվություն փաթեթի մասին – առկա պատյանների գծագրեր, որոնք օգտակար են ձեր տախտակները նախագծելիս:

Տեղեկատու ձեռնարկ կառուցվածքային առումով բաղկացած է բաժիններից, որոնք նվիրված են դրանց վերնագրում նշված հատուկ ծայրամասային սարքերին: Յուրաքանչյուր գլուխ կարելի է բաժանել երեք մասի.

Overview, ներածություն, Հատկություններ - ծայրամասային հնարավորությունների ակնարկ;

Ֆունկցիոնալ Description, Օգտագործման ուղեցույց կամ պարզապես բաժնի հիմնական բլոկը `ծայրամասային սարքի սկզբունքների մանրամասն տեքստային նկարագրությունը և այն օգտագործելու եղանակը.

Գրանցամատյանները – հսկիչ գրանցամատյանների նկարագրությունը. Պարզ դեպքերում, ինչպիսիք են GPIO-ն կամ SPI-ն, սա կարող է բավականաչափ լինել ծայրամասային սարքերն օգտագործելու համար, բայց հաճախ դուք դեռ պետք է կարդացեք նախորդ մասերը:

Ինչպես կարդալ տվյալների թերթիկները

Տվյալների թերթիկները սովորությունից դրդված վախեցնում են ձեզ իրենց ծավալով ու անհասկանալի բառերի առատությամբ։ Իրականում, ամեն ինչ այնքան էլ սարսափելի չէ, եթե դուք գիտեք մի քանի կյանքի հաքեր:

Տեղադրեք լավ PDF ընթերցող. Տվյալների թերթիկները գրված են թղթային հրահանգների փառահեղ ավանդույթով, դրանք հիանալի են տպելու, պլաստիկ էջանիշներով տեղադրելու և կարելու համար: Դրանցում հիպերտեքստը նկատվում է հետքի քանակով։ Բարեբախտաբար, գոնե փաստաթղթի կառուցվածքը նախագծված է էջանիշներով, ուստի շատ անհրաժեշտ է հեշտ նավարկությամբ հարմար ընթերցող:

Տվյալների թերթիկը Stroustrup-ի դասագիրքը չէ, այն պարունակում է կարիք չկա ամեն ինչ կարդալ. Եթե ​​օգտագործել եք նախորդ խորհուրդը, պարզապես էջանիշների տողում գտեք ցանկալի բաժինը:

Տվյալների թերթիկներ, հատկապես Տեղեկատու ձեռնարկներ, կարող է նկարագրել ոչ թե կոնկրետ չիպի հնարավորությունները, այլ ամբողջ գիծը. Սա նշանակում է, որ տեղեկատվության կեսը կամ նույնիսկ երկու երրորդը կապված չէ ձեր չիպի հետ: Նախքան TIM7 գրանցամատյաններն ուսումնասիրելը, գրանցվեք Ընդհանուր նկարագրությունը, դու ունե՞ս

Գիտեք Անգլերեն բավական է հիմնական մակարդակ. Տվյալների աղյուսակները բաղկացած են միջին բնիկին անծանոթ տերմիններից, իսկ կեսը՝ պարզ կապող կառուցվածքներից: Չինական անգլերենում կան նաև հիանալի չինարեն տվյալների աղյուսակներ, որտեղ կեսը նույնպես տերմիններ են, իսկ երկրորդ կեսը՝ բառերի պատահական շարք:

Եթե ​​հանդիպեք անծանոթ բառ, մի փորձեք այն թարգմանել՝ օգտագործելով անգլերեն-ռուսերեն բառարան։ Եթե ​​դուք շփոթված եք հիստերեզ, ապա «հիստերեզ» թարգմանությունը ձեզ ավելի տաք չի տա։ Օգտագործեք Google, Stack Overflow, Wikipedia, ֆորումներ, որտեղ կլինի պահանջվող հայեցակարգը պարզ բառերով բացատրված օրինակներով.

Ձեր կարդացածը հասկանալու լավագույն միջոցը ստուգել գործողության մեջ. Հետևաբար, ձեռքի տակ պահեք վրիպազերծման տախտակը, որին ծանոթ եք, կամ ավելի լավ է երկուսը, եթե դեռ ինչ-որ բան սխալ եք հասկացել և կախարդական ծուխ տեսել:

Լավ սովորություն է ձեր տվյալների թերթիկը ձեռքի տակ պահելը, երբ դուք ինչ-որ մեկի ձեռնարկը կարդալը կամ ուսումնասիրել ուրիշի գրադարանը: Միանգամայն հնարավոր է, որ դրա մեջ գտնեք ձեր խնդրի առավել օպտիմալ լուծումը։ Եվ հակառակը, եթե տվյալների թերթիկից չեք կարողանում հասկանալ, թե իրականում ինչպես է աշխատում ռեգիստրը, google-ով գտեք այն. ամենայն հավանականությամբ, ինչ-որ մեկն արդեն նկարագրել է ամեն ինչ պարզ բառերով կամ հստակ կոդ է թողել GitHub-ում:

Բառապաշար

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

Էլեկտրականություն
VDC, Վդդ – «գումարած», սնունդ
Vss, vee – «մինուս», հող
ընթացիկ - ընթացիկ
վոլտաժ - Լարման
սուզել հոսանքը – աշխատել որպես «հող» արտաքին բեռի համար
հոսանքի աղբյուրի համար - հզորացնել արտաքին բեռը
բարձր լվացարան/աղբյուր քորոց – կապում բեռնվածքի նկատմամբ ավելացած «հանդուրժողականությամբ»:

IO
Հ, բարձր – Vcc քորոցի վրա
L, Ցածր – Vss փինում
Բարձր դիմադրություն, Hi-Z, լողացող – քորոցի վրա ոչինչ չկա, «բարձր դիմադրություն», այն գործնականում անտեսանելի է արտաքին աշխարհի համար:
թույլ ձգում դեպի վեր, թույլ քաշեք ներքեւ – ներկառուցված ձգվող/ներքև ռեզիստոր, մոտավորապես 50 կՕմ-ին համարժեք (տես տվյալների աղյուսակը): Այն օգտագործվում է, օրինակ, կանխելու համար մուտքային քորոցը օդում կախված մնալուց՝ առաջացնելով կեղծ ահազանգեր: Թույլ - քանի որ նրան հեշտ է «ընդհատել»:
հրում քաշել – փին ելքային ռեժիմ, որում այն ​​անցնում է Բարձր и Ցածր – սովորական OUTPUT Arduino-ից:
բաց արտահոսք – ելքային ռեժիմի նշանակում, որում կարող է լինել քորոցը ՑածրԿամ Բարձր դիմադրություն / լողացող. Ավելին, գրեթե միշտ սա «իսկական» բաց արտահոսք չէ, կան պաշտպանիչ դիոդներ, ռեզիստորներ և այլն: Սա ուղղակի նշանակում է գետնին/ոչ մի ռեժիմի համար:
իսկական բաց արտահոսք - բայց սա իսկական բաց արտահոսք է. քորոցը ուղիղ դեպի գետն է տանում, եթե այն բաց է, կամ մնում է անորոշ վիճակում, եթե այն փակ է: Սա նշանակում է, որ անհրաժեշտության դեպքում դրա միջով կարող է փոխանցվել Vcc-ից ավելի լարում, սակայն առավելագույնը դեռ նշված է տվյալ հատվածի տվյալների աղյուսակում։ Բացարձակ առավելագույն գնահատականներ / լարում.

Ինտերֆեյս
շարքերում - միացված է շարքով
շղթայել – հավաքեք չիպերը շղթայի մեջ՝ օգտագործելով սերիական միացում՝ ավելացնելով ելքերի քանակը:
հերթափոխություն – shift, սովորաբար նշանակում է մի քիչ տեղաշարժ: Համապատասխանաբար, ներս անցնել и դուրս շեղվել - ստանալ և փոխանցել տվյալները քիչ առ բիթ:
փակվել – սողնակ, որը ծածկում է բուֆերը, մինչ բիթերը տեղափոխվում են դրա միջով: Երբ փոխանցումն ավարտվում է, փականը բացվում է, և բիտերը սկսում են գործել:
ներս մտնել – կատարեք բիթ առ բիթ փոխանցում, բոլոր բիթերը տեղափոխեք ճիշտ տեղեր:
կրկնակի բուֆեր, ստվերային ռեգիստր, նախաբեռնված ռեգիստր – պատմության նշումներ, երբ ռեգիստրը պետք է կարողանա ընդունել նոր տվյալներ, բայց պահել դրանք մինչև ինչ-որ պահ: Օրինակ, որպեսզի PWM-ը ճիշտ աշխատի, դրա պարամետրերը (աշխատանքային ցիկլ, հաճախականություն) չպետք է փոխվեն մինչև ընթացիկ ցիկլը ավարտվի, բայց նոր պարամետրեր արդեն կարող են փոխանցվել: Համապատասխանաբար ներկայիսները պահպանվում են ստվերային ռեգիստր, և նորերն են ընկնում նախաբեռնված ռեգիստր, գրվելով համապատասխան չիպերի ռեգիստրում։

Բոլոր տեսակի բաներ
prescaler - հաճախականության նախնական չափիչ
մի քիչ սահմանել - բիթը դրեք 1-ի
մի քիչ մաքրել/վերակայել - վերականգնել բիթը 0-ի (տեղավորել - STM տվյալների աղյուսակի հատկություն)

Ինչ է հաջորդը

Ընդհանուր առմամբ, այստեղ նախատեսված էր գործնական մաս՝ STM32-ի և STM8-ի երեք նախագծերի ցուցադրմամբ, որոնք հատուկ պատրաստված են այս հոդվածի համար՝ օգտագործելով տվյալների թերթիկներ, լույսի լամպերով, SPI-ով, ժամանակաչափերով, PWM-ով և ընդհատումներով.

Ինչպես և ինչու կարդալ տվյալների թերթիկները, եթե միկրոկոնտրոլերները ձեր հոբբին են

Բայց տեքստը շատ է, ուստի նախագծերն ուղարկվում են երկրորդ մաս։

Տվյալների թերթիկները կարդալու հմտությունը կօգնի ձեզ ձեր հոբբիի հարցում, բայց դժվար թե այն փոխարինի ուղիղ կապը ֆորումներում և չաթերում ընկերակից հոբբիների հետ: Այդ նպատակով դուք դեռ պետք է կատարելագործեք ձեր անգլերենը առաջին հերթին: Հետևաբար, նրանք, ովքեր ավարտեցին ընթերցանությունը, կստանան հատուկ մրցանակ՝ երկու անվճար դաս Skyeng-ում առաջին վճարմամբ՝ օգտագործելով կոդը: HABR2.

Source: www.habr.com

Добавить комментарий