Si dhe pse të lexoni fletët e të dhënave nëse mikrokontrolluesit janë hobi juaj

Si dhe pse të lexoni fletët e të dhënave nëse mikrokontrolluesit janë hobi juaj

Mikroelektronika është një hobi në modë vitet e fundit falë Arduino-s magjike. Por këtu është problemi: me mjaft interes, ju mund ta tejkaloni shpejt DigitalWrite(), por çfarë të bëni më pas nuk është plotësisht e qartë. Zhvilluesit e Arduino kanë bërë shumë përpjekje për të ulur pengesën për hyrjen në ekosistemin e tyre, por jashtë tij ka ende një pyll të errët me qark të ashpër që është i paarritshëm për amatorin.

Për shembull, fletët e të dhënave. Duket sikur kanë gjithçka, merrni dhe përdorni. Por autorët e tyre në mënyrë të qartë nuk i vendosin vetes detyrën e popullarizimit të mikrokontrolluesve; Ndonjehere duket seqë qëllimisht abuzojnë me terma dhe shkurtesa të pakuptueshme kur përshkruajnë gjëra të thjeshta për të ngatërruar sa më shumë të pa iniciuarit. Por jo gjithçka është aq e keqe; nëse dëshironi, arkivoli hapet.

Në këtë artikull do të ndaj përvojën e një specialisti të shkencave humane që komunikon me fletë të dhënash për qëllime hobi. Teksti është i destinuar për amatorë që janë rritur nga pantallonat Arduino; ai supozon një kuptim të caktuar të parimeve të funksionimit të mikrokontrolluesve.

Do të filloj me tradicionalen

Ndezja e një LED në Arduino

Dhe menjëherë kodi:

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

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

"Çfarë është kjo? – do të pyesë një lexues i sofistikuar. – Pse po shkruani diçka në regjistrin e hyrjes PINB? Është vetëm për lexim!” Vërtet, Dokumentacioni Arduino, si shumica e artikujve edukativë në internet, thotë se ky regjistër është vetëm për lexim. Kështu mendova vetë derisa e rilexova fletën e të dhënave te Atmega328p, duke përgatitur këtë artikull. Dhe aty:

Si dhe pse të lexoni fletët e të dhënave nëse mikrokontrolluesit janë hobi juaj

Ky është një funksionalitet relativisht i ri, nuk ishte në Atmega8, jo të gjithë e dinë ose nuk përmendet për arsye të pajtueshmërisë së prapambetur. Por është mjaft i përshtatshëm për të demonstruar idenë se fletët e të dhënave ia vlen të lexohen për të përdorur të gjitha aftësitë e çipit, përfshirë ato pak të njohura. Dhe kjo nuk është e vetmja arsye.

Pse tjetër të lexoni fletët e të dhënave?

Zakonisht, inxhinierët e Arduino, pasi kanë luajtur mjaftueshëm me LED dhe AnalogWrites, fillojnë të lidhin të gjitha llojet e moduleve dhe çipave në tabelë, për të cilat tashmë ka biblioteka të shkruara. Herët a vonë, shfaqet një bibliotekë që nuk funksionon siç duhet. Pastaj amatori fillon ta zgjedhë atë për ta rregulluar, dhe më pas...

Dhe diçka krejtësisht e pakuptueshme ndodh atje, kështu që ju duhet të shkoni në Google, të lexoni mësime të shumta, të nxirrni pjesë të kodit të përshtatshëm të dikujt dhe në fund të arrini qëllimin tuaj. Kjo jep një ndjenjë të fuqishme arritjeje, por në realitet procesi është si të rishpikësh timonin duke inxhinieruar mbrapsht një motoçikletë. Për më tepër, të kuptuarit se si funksionon kjo biçikletë nuk rritet. E di, sepse këtë e kam bërë vetë për një kohë të gjatë.

Nëse në vend të këtij aktiviteti emocionues do të kisha kaluar disa ditë duke studiuar dokumentacionin Atmega328, do të kisha kursyer një sasi të madhe kohe. Në fund të fundit, ky është një mikrokontrollues mjaft i thjeshtë.

Kështu, ju duhet të lexoni fletët e të dhënave të paktën në mënyrë që të imagjinoni se si funksionon mikrokontrolluesi në përgjithësi dhe çfarë mund të bëjë. Dhe më tej:

  • për të kontrolluar dhe optimizuar bibliotekat e njerëzve të tjerë. Ato janë shkruar shpesh nga të njëjtët amatorë që rishpikin rrotën; ose, përkundrazi, autorët qëllimisht i bëjnë ato tepër të pagabueshme. Lëreni të jetë tre herë më i madh dhe më i ngadalshëm, por patjetër do të funksionojë;

  • të jetë në gjendje të përdorë çipa në një projekt për të cilin askush nuk ka shkruar një bibliotekë;

  • për ta bërë më të lehtë për veten tuaj të migroni nga një linjë MK në tjetrën;

  • për të optimizuar përfundimisht kodin tuaj të vjetër, i cili nuk përshtatej në Arduino;

  • për të mësuar se si të kontrolloni çdo çip drejtpërdrejt përmes regjistrave të tij, pa u shqetësuar për të studiuar strukturën e bibliotekave të tij, nëse ka.

Pse t'u shkruani regjistrave direkt kur ka HAL dhe LL?

Fjalori
HAL, Shtresa e Abstraksionit të Lartë – një bibliotekë për kontrollin e një mikrokontrollues me një nivel të lartë abstraksioni. Nëse keni nevojë të përdorni ndërfaqen SPI1, thjesht konfiguroni dhe aktivizoni SPI1 pa menduar se cilët regjistra janë përgjegjës për çfarë.
LL, API e nivelit të ulët – një bibliotekë që përmban makro ose struktura me adresa regjistrash, duke ju lejuar t'i aksesoni ato me emër. DDRx, PORTx, PINx në Atmega janë LL.

Mosmarrëveshjet mbi temën "HAL, LL ose regjistrat" ​​ndodhin rregullisht në komentet në Habré. Pa pretenduar akses në njohuritë astrale, thjesht do të ndaj përvojën dhe mendimet e mia amatore.

Duke kuptuar pak a shumë Atmega dhe duke lexuar artikuj për mrekullinë e STM32, bleva gjysmë duzine dërrasa të ndryshme - Discovery, dhe Blue Pills, dhe madje vetëm patate të skuqura për produktet e mia shtëpiake. Të gjithë grumbulluan pluhur në një kuti për dy vjet. Ndonjëherë thosha me vete: "Kjo është ajo, duke filluar nga kjo fundjavë unë jam duke zotëruar STM", lansova CubeMX, gjenerova një konfigurim për SPI, shikoja murin e tekstit që rezulton, i aromatizuar bujarisht me të drejtat e autorit STM dhe vendosa që kjo ishte disi gjithashtu. shumë.

Si dhe pse të lexoni fletët e të dhënave nëse mikrokontrolluesit janë hobi juaj

Sigurisht, ju mund të kuptoni se çfarë ka shkruar CubeMX këtu. Por në të njëjtën kohë është e qartë se të kujtosh të gjitha formulimet dhe më pas t'i shkruash ato me dorë është joreale. Dhe për të korrigjuar këtë, nëse aksidentalisht harroj të kontrolloj një kuti në Kub, kjo është krejtësisht në rregull.

Kanë kaluar dy vjet, ende po lëpij buzët Gjetësi i ST MCU për të gjitha llojet e shijshme, por përtej të kuptuarit tim, patate të skuqura, dhe rastësisht hasi artikull i mrekullueshëm, megjithëse për STM8. DHE papritur Kuptova se gjatë gjithë kësaj kohe kisha trokitur në një derë të hapur: regjistrat e STM janë rregulluar në të njëjtën mënyrë si ato të çdo MK-je tjetër, dhe Kubi nuk është i nevojshëm për të punuar me ta. A ishte edhe e mundur?..

HAL dhe konkretisht STM32CubeMX është një mjet për inxhinierët profesionistë që punojnë ngushtë me çipat STM32. Karakteristika kryesore është një nivel i lartë abstraksioni, aftësia për të migruar shpejt nga një MCU në tjetrin dhe madje nga një bërthamë në tjetrën, duke mbetur brenda linjës STM32. Hobistët rrallë hasin probleme të tilla - zgjedhja jonë e mikrokontrolluesve, si rregull, është e kufizuar në asortimentin AliExpress dhe ne shpesh migrojmë midis çipave rrënjësisht të ndryshëm - kalojmë nga Atmega në STM, nga STM në ESP, ose çfarëdo gjëje të re miqtë tanë kinezë. na hedhin. HAL nuk do të ndihmojë këtu, dhe studimi i tij do të hajë shumë kohë.

LL mbetet - por nga ajo në regjistra ka gjysmë hapi. Personalisht, më duket e dobishme shkrimi i makrove të mia me adresa regjistrash: studioj fletën e të dhënave më me kujdes, mendoj për atë që do të më nevojitet në të ardhmen dhe çfarë nuk do të më duhet patjetër, i strukturoj më mirë programet e mia dhe në përgjithësi, tejkalimi ndihmon në memorizimin .

Për më tepër, ekziston një nuancë me STM32F103 popullore - ka dy versione të papajtueshme LL për të, një zyrtar nga STM, i dyti nga Leaf Labs, i përdorur në projektin STM32duino. Nëse shkruani një bibliotekë me burim të hapur (dhe unë kisha saktësisht një detyrë e tillë), ose duhet të bëni dy versione, ose të hyni drejtpërdrejt te regjistrat.

Më në fund, eliminimi i LL, për mendimin tim, thjeshton migrimin, veçanërisht nëse e planifikoni atë që nga fillimi i projektit. Shembull i ekzagjeruar: le të shkruajmë Arduino Blink në Atmel Studio pa 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++);
    } 
}

Në mënyrë që ky kod të pulsojë LED në një tabelë kineze me STM8 (nga ST Visual Desktop), mjafton të ndryshoni dy adresa në të:

#define DDR_B 0x5007
#define OUT_B 0x5005

Po, unë përdor një veçori të lidhjes së LED-it në një tabelë specifike, do të pulsojë shumë ngadalë, por do të ndodhë!

Çfarë lloje të të dhënave ekzistojnë?

Në artikuj dhe në forume, si në rusisht ashtu edhe në anglisht, "fletët e të dhënave" nënkuptojnë çdo dokumentacion teknik për çipat, dhe unë bëj të njëjtën gjë në këtë tekst. Formalisht, ato janë vetëm një lloj dokumentacioni i tillë:

Datasheet – Karakteristikat e performancës, karakteristikat taktike dhe teknike. E detyrueshme për çdo komponent elektronik. Informacioni në sfond është i dobishëm për t'u mbajtur në dorë, por nuk ka shumë për të lexuar në të me mend. Megjithatë, çipat më të thjeshtë shpesh kufizohen në një fletë të dhënash në mënyrë që të mos prodhojnë dokumente të panevojshme; në këtë rast Manual referimi përfshihet këtu.

Manual referimi – vetë udhëzimet, një libër i shëndetshëm prej 1000+ faqesh. Puna e gjithçkaje që është e mbushur në çip përshkruhet në detaje. Dokumenti kryesor për zotërimin e mikrokontrolluesit. Ndryshe nga Datasheet, udhëzimet janë shkruar për një gamë të gjerë MK; ato përmbajnë shumë informacione rreth pajisjeve periferike që nuk janë të disponueshme në modelin tuaj specifik.

Manuali i Programimit ose Manuali i grupit të udhëzimeve – udhëzime për komandat unike të mikrokontrolluesit. Projektuar për ata që programojnë në gjuhën Assembly. Autorët e përpiluesit e përdorin atë në mënyrë aktive për të optimizuar kodin, kështu që në rastin e përgjithshëm nuk do të na nevojitet. Por shikimi këtu është i dobishëm për një kuptim të përgjithshëm, për disa komanda specifike si dalja nga një ndërprerje, si dhe për përdorimin aktiv të korrigjuesit.

Shënim për aplikim – këshilla të dobishme për zgjidhjen e problemeve specifike, shpesh me shembuj kodesh.

Fleta e gabimeve – përshkrimi i rasteve të sjelljes jo standarde të çipit me opsione zgjidhjeje, nëse ka.

Çfarë është në fletët e të dhënave

Direkt te Datasheet mund të na duhen seksionet e mëposhtme:

Përmbledhja e pajisjes – faqja e parë e fletës së të dhënave përshkruan shkurtimisht pajisjen. Shumë i dobishëm në situatat kur keni gjetur një çip diku (e keni parë atë në një dyqan, e keni bashkuar, hasni në një përmendje) dhe dëshironi të kuptoni se çfarë është.

Përshkrim i përgjithshëm – një përshkrim më i detajuar i aftësive të çipave nga linja.

Pikat e pikave – Diagramet e pikave për të gjitha paketat e mundshme të çipave (cila kunj është në cilën këmbë).

Përshkrimi i kunjit – përshkrimi i qëllimit dhe aftësive të çdo pin.

Harta e Kujtesës – nuk ka gjasa të kemi nevojë për një hartë adresash në memorie, por ndonjëherë ajo përfshin edhe një tabelë të adresave të bllokut të regjistrave.

Regjistrohu Harta – tabela e adresave të blloqeve të regjistrave, si rregull, ndodhet në fletën e të dhënave dhe në Manuali Ref - vetëm ndërrime (kompensimet e adresave).

Karakteristikat elektrike - në këtë pjesë ne jemi të interesuar kryesisht vleresime absolute ne maksimum, duke renditur ngarkesat maksimale për çip. Ndryshe nga Atmega328p i pathyeshëm, shumica e MK-ve nuk ju lejojnë të lidhni ngarkesa serioze me kunjat, gjë që bëhet një surprizë e pakëndshme për Arduinistët.

Informacioni i Paketës – vizatime të rasteve të disponueshme, të dobishme kur dizajnoni tabelat tuaja.

Manual referimi strukturorisht përbëhet nga seksione kushtuar pajisjeve periferike specifike të treguara në titullin e tyre. Çdo kapitull mund të ndahet në tre pjesë:

Përmbledhje, Prezantimi, karakteristika – pasqyrë e aftësive periferike;

Përshkrimi funksionale, Udhëzuesi i përdorimit ose thjesht blloku kryesor i seksionit - një përshkrim i detajuar i tekstit të parimeve të pajisjes periferike dhe si ta përdorni atë;

regjistrat – përshkrimi i regjistrave të kontrollit. Në raste të thjeshta si GPIO ose SPI, kjo mund të jetë mjaft e mjaftueshme për të filluar përdorimin e pajisjeve periferike, por shpesh ju ende duhet të lexoni pjesët e mëparshme.

Si të lexoni fletët e të dhënave

Fletët e të dhënave, nga zakoni, të trembin me volumin e tyre dhe me bollëkun e fjalëve të pakuptueshme. Në fakt, gjithçka nuk është aq e frikshme nëse njihni disa mashtrime të jetës.

instaloj lexues i mirë PDF. Fletët e të dhënave janë shkruar në traditën e lavdishme të udhëzimeve në letër; ato janë të shkëlqyera për t'u printuar, futur me faqeshënues plastikë dhe për të qepur. Hiperteksti në to vërehet në sasi gjurmë. Për fat të mirë, të paktën struktura e dokumentit është projektuar me faqeshënues, kështu që një lexues i përshtatshëm me navigim të lehtë është shumë i nevojshëm.

Fleta e të dhënave nuk është teksti shkollor i Stroustrup; ai përmban nuk ka nevojë të lexoni gjithçka. Nëse keni përdorur këshillën e mëparshme, thjesht gjeni seksionin e dëshiruar në shiritin e faqeshënuesve.

Fletët e të dhënave, veçanërisht Manualet e Referencës, mund të përshkruajë aftësitë e jo një çipi specifik, por të gjithë linjën. Kjo do të thotë se gjysma, apo edhe dy të tretat e informacionit nuk janë të rëndësishme për çipin tuaj. Përpara se të studioni regjistrat TIM7, kontrollohu Përshkrim i përgjithshëm, A e ke këtë?

E di Anglisht mjaftueshëm për niveli bazë. Fletët e të dhënave përbëhen nga gjysma e termave të panjohur për folësin mesatar amtare dhe gjysma e strukturave të thjeshta lidhëse. Ekzistojnë gjithashtu fletë të shkëlqyera të të dhënave kineze në anglisht kineze, ku gjysma janë gjithashtu terma dhe gjysma e dytë janë një grup fjalësh të rastësishme.

Nëse takoheni fjalë e panjohur, mos u përpiqni ta përktheni duke përdorur një fjalor anglisht-rusisht. Nëse jeni të hutuar histereza, atëherë përkthimi "histerezë" nuk do t'ju bëjë më të ngrohtë. Përdorni Google, Stack Overflow, Wikipedia, forume, ku do të jetë koncepti i kërkuar shpjegohet me fjalë të thjeshta me shembuj.

Mënyra më e mirë për të kuptuar atë që lexoni është kontrolloni në veprim. Prandaj, mbani në dorë tabelën e korrigjimit me të cilën po njiheni, ose më mirë akoma dy, në rast se ende keni keqkuptuar diçka dhe keni parë një tym magjik.

Është një zakon i mirë ta mbani fletën tuaj të të dhënave në dispozicion kur ju duke lexuar tutorialin e dikujt ose duke studiuar bibliotekën e dikujt tjetër. Është shumë e mundur që ju të gjeni një zgjidhje më optimale për problemin tuaj në të. Dhe anasjelltas - nëse nuk mund të kuptoni nga fleta e të dhënave se si funksionon në të vërtetë regjistri, google: ka shumë të ngjarë, dikush tashmë ka përshkruar gjithçka me fjalë të thjeshta ose ka lënë kod të qartë në GitHub.

Fjalori

Disa fjalë dhe simbole të dobishme për t'ju ndihmuar të mësoheni shpejt me fletët e të dhënave. Ajo që kujtova këto dy ditët e fundit, shtesat dhe korrigjimet janë të mirëseardhura.

elektricitet
KQV-ja, E vërtetë – “plus”, ushqim
Vss, Vee – “minus”, tokë
aktual – aktuale
tension - tension
për të fundosur rrymën – punon si “tokë” për ngarkesë të jashtme
për burimin e rrymës – fuqia e ngarkesës së jashtme
lavaman i lartë / kunj burimi – gjilpërë me “tolerancë” të shtuar ndaj ngarkesës

IO
H, i lartë – në pinin Vcc
L, E ulët – në pinin Vss
Pengesë e lartë, Hi-Z, lundrues - nuk ka asgjë në kunj, "rezistencë e lartë", është praktikisht e padukshme për botën e jashtme.
tërheqje e dobët lart, tërheqje e dobët poshtë – Rezistenca e integruar tërheqëse/ulëse, afërsisht e barabartë me 50 kOhm (shih fletën e të dhënave). Përdoret, për shembull, për të parandaluar që kunja e hyrjes të varet në ajër, duke shkaktuar rezultate false. i dobët - sepse është e lehtë ta “ndërpresh”.
shtytje tërheq – modaliteti i daljes së pinit, në të cilin kalon ndërmjet tyre i lartë и ulët – OUTPUT i rregullt nga Arduino.
kullimi i hapur – përcaktimi i mënyrës së daljes në të cilën kunja mund të jetë ose ulëtOse Rezistencë e lartë/lundruese. Për më tepër, pothuajse gjithmonë ky nuk është një kullues "i vërtetë" i hapur; ka dioda mbrojtëse, rezistorë dhe çfarëdo tjetër. Ky është thjesht një përcaktim për modalitetin tokë/asnjë.
kullim i vërtetë i hapur - por ky është një kullues i vërtetë i hapur: kunja çon drejtpërdrejt në tokë nëse është e hapur, ose mbetet në harresë nëse është e mbyllur. Kjo do të thotë që, nëse është e nevojshme, një tension më i madh se Vcc mund të kalojë përmes tij, por maksimumi është ende i specifikuar në fletën e të dhënave në seksion Vlerësimet/Tensioni maksimal absolut.

Interfaces
në seri – të lidhura në seri
në zinxhir – montoni çipat në një zinxhir duke përdorur një lidhje serike, duke rritur numrin e daljeve.
ndryshim – zhvendosje, zakonisht tregon një zhvendosje të vogël. Përkatësisht, të zhvendoset brenda и të zhvendoset jashtë – merrni dhe transmetoni të dhënat pak nga pak.
shul – një shul që mbulon buferin ndërsa bitet zhvendosen përmes tij. Kur transferimi përfundon, valvula hapet dhe pjesët fillojnë të punojnë.
për të frekuentuar – kryeni një transferim pak nga pak, zhvendosni të gjitha pjesët në vendet e duhura.
tampon i dyfishtë, regjistri hije, regjistri i parangarkesës – emërtimet e historisë, kur regjistri duhet të jetë në gjendje të pranojë të dhëna të reja, por t'i mbajë ato deri në një moment. Për shembull, që PWM të funksionojë siç duhet, parametrat e tij (cikli i punës, frekuenca) nuk duhet të ndryshojnë derisa të përfundojë cikli aktual, por parametrat e rinj tashmë mund të transferohen. Prandaj, ato aktuale mbahen në regjistri hije, dhe të reja bien në regjistri i parangarkesës, duke u shkruar në regjistrin përkatës të çipit.

Të gjitha llojet e gjërave
parashkallëzues – parashkallëzuesi i frekuencës
për të vendosur pak – vendoseni bitin në 1
për të pastruar/rivendosur pak - rivendosni bitin në 0 (rivendosni – Karakteristika e fletës së të dhënave STM)

Ç'pritet më tej

Në përgjithësi, një pjesë praktike ishte planifikuar këtu me një demonstrim të tre projekteve në STM32 dhe STM8, të bëra posaçërisht për këtë artikull duke përdorur fletë të dhënash, me llamba, SPI, kohëmatës, PWM dhe ndërprerje:

Si dhe pse të lexoni fletët e të dhënave nëse mikrokontrolluesit janë hobi juaj

Por teksti ka shumë, kështu që projektet dërgohen në pjesën e dytë.

Shkathtësia e leximit të fletëve të të dhënave do t'ju ndihmojë me hobin tuaj, por nuk ka gjasa të zëvendësojë komunikimin e drejtpërdrejtë me shokët e tij hobistë në forume dhe biseda. Për këtë qëllim, para së gjithash duhet të përmirësoni anglishten tuaj. Prandaj, ata që mbaruan leximin do të marrin një çmim special: dy mësime falas në Skyeng me pagesën e parë duke përdorur kodin HABR2.

Burimi: www.habr.com

Shto një koment