Ta yaya kuma me yasa ake karanta bayanan bayanan idan microcontrollers abin sha'awa ne

Ta yaya kuma me yasa ake karanta bayanan bayanan idan microcontrollers abin sha'awa ne

Microelectronics abin sha'awa ne na gaye a cikin 'yan shekarun nan godiya ga sihirin Arduino. Amma ga matsalar: tare da isasshen sha'awa, za ku iya sauri girma DigitalWrite(), amma abin da za ku yi na gaba bai bayyana gaba ɗaya ba. Masu haɓakawa na Arduino sun yi ƙoƙari sosai don rage shingen shiga cikin yanayin yanayin su, amma a waje da shi har yanzu akwai wani daji mai duhu na daɗaɗɗen kewayawa wanda ba zai iya isa ga mai son ba.

Misali, datasheets. Da alama suna da komai, ɗauka ku yi amfani da shi. Amma marubutan su a fili ba sa sanya kansu aikin yaɗa microcontrollers; Wani lokaci da alamacewa da gangan suna cin zarafin kalmomin da ba za a iya fahimta ba yayin da suke kwatanta abubuwa masu sauƙi don rikitar da waɗanda ba su sani ba kamar yadda zai yiwu. Amma ba komai yayi muni ba; idan ana so, akwatin yana buɗewa.

A cikin wannan labarin zan raba ƙwarewar ƙwararren ɗan adam wanda ke sadarwa tare da takaddun bayanai don dalilai na sha'awa. An yi nufin rubutun ga masu son da suka girma daga Arduino wando; yana ɗaukar wasu fahimtar ka'idodin aiki na microcontrollers.

Zan fara da na gargajiya

Fitilar LED akan Arduino

Kuma nan da nan code:

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

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

"Mene ne wannan? – Nagartaccen mai karatu zai tambaya. - Me yasa kuke rubuta wani abu zuwa rajistar shigar da PINB? Don karatu kawai!" Hakika, Dokokin Arduino, kamar yawancin labaran ilimi a Intanet, sun bayyana cewa wannan rajistar ta karanta kawai. Ni kaina na yi tunani har na sake karantawa takardar bayanai zuwa Atmega328p, shirya wannan labarin. Kuma akwai:

Ta yaya kuma me yasa ake karanta bayanan bayanan idan microcontrollers abin sha'awa ne

Wannan sabon aiki ne, ba a kan Atmega8 ba, ba kowa ya san game da shi ba ko kuma ba a ambace shi ba saboda dalilai na dacewa da baya. Amma ya dace sosai don nuna ra'ayin cewa bayanan bayanan sun cancanci karantawa don amfani da duk damar guntu, gami da waɗanda ba a san su ba. Kuma ba wannan ne kawai dalili ba.

Me yasa kuma karanta takaddun bayanai?

Yawancin lokaci, injiniyoyin Arduino, sun yi wasa sosai tare da LEDs da AnalogWrites, sun fara haɗa kowane nau'ikan kayayyaki da kwakwalwan kwamfuta zuwa allon, waɗanda tuni an rubuta ɗakunan karatu. Ba dade ko ba jima, ɗakin karatu ya bayyana wanda baya aiki kamar yadda ya kamata. Sai mai son ya fara zabgawa ya gyara, sannan...

Kuma wani abu da ba a fahimta ba ya faru a can, don haka dole ne ku je Google, karanta darussan da yawa, cire sassan lambar da ta dace da wani kuma a ƙarshe cimma burin ku. Wannan yana ba da ma'anar nasara mai ƙarfi, amma a zahiri tsarin yana kama da sake ƙirƙira dabaran ta hanyar juyar da babur. Bugu da ƙari, fahimtar yadda wannan keken ke aiki ba ya karuwa. Na sani, domin na yi wannan da kaina na dogon lokaci.

Idan maimakon wannan aikin mai ban sha'awa na shafe kwanaki biyu ina nazarin takaddun Atmega328, da na adana lokaci mai yawa. Bayan haka, wannan microcontroller ne mai sauƙin sauƙi.

Don haka, kuna buƙatar karanta takaddun bayanai aƙalla don tunanin yadda microcontroller gabaɗaya ke aiki da abin da zai iya yi. Sannan kuma:

  • don dubawa da inganta ɗakunan karatu na wasu. Sau da yawa ’yan wasa iri ɗaya ne ke rubuta su da sake ƙirƙira dabaran; ko kuma, akasin haka, da gangan marubutan suka sa su zama marar hankali. Bari ya zama mai girma sau uku da hankali, amma tabbas zai yi aiki;

  • don samun damar yin amfani da kwakwalwan kwamfuta a cikin aikin da babu wanda ya rubuta ɗakin karatu don shi;

  • don sauƙaƙa wa kanka ƙaura daga wannan layin MK zuwa wancan;

  • don a ƙarshe inganta tsohon lambar ku, wanda bai dace da Arduino ba;

  • don koyon yadda ake sarrafa kowane guntu kai tsaye ta hanyar rajistar sa, ba tare da damu da nazarin tsarin ɗakunan karatu ba, idan akwai.

Me yasa rubuta zuwa rajista kai tsaye lokacin da akwai HAL da LL?

Amus
HAL, High Abstraction Layer - ɗakin karatu don sarrafa microcontroller tare da babban matakin abstraction. Idan kuna buƙatar amfani da haɗin SPI1, kawai kuna saita kuma kunna SPI1 ba tare da tunanin wane rajista ke da alhakin menene ba.
LL, API ɗin Ƙananan Matsayi - ɗakin karatu mai ɗauke da macros ko tsarin tare da adiresoshin rajista, yana ba ku damar samun damar su da suna. DDRx, PORTx, PINx akan Atmega sune LL.

Takaddama kan batun "HAL, LL ko rajista" na faruwa akai-akai a cikin sharhi kan Habré. Ba tare da neman damar samun ilimin taurari ba, kawai zan raba gwaninta da tunani na mai son.

Da yake na gano ko žasa da Atmega kuma na karanta labarin game da ban mamaki na STM32, na sayi allunan rabin dozin iri-iri - Ganowa, da Blue Pills, har ma da kwakwalwan kwamfuta don samfuran gida na. Duk sun tara ƙura a cikin akwati tsawon shekaru biyu. Wani lokaci na ce wa kaina: "Shi ke nan, Ina ƙware STM wannan karshen mako," ƙaddamar da CubeMX, ya haifar da saiti don SPI, na kalli bangon rubutun da ya haifar, da karimci mai ɗanɗano tare da haƙƙin mallaka na STM, kuma na yanke shawarar cewa wannan ya yi yawa sosai. .

Ta yaya kuma me yasa ake karanta bayanan bayanan idan microcontrollers abin sha'awa ne

Tabbas, zaku iya gano abin da CubeMX ya rubuta anan. Amma a lokaci guda ya bayyana a fili cewa tunawa da dukan kalmomin da kuma rubuta su da hannu ba gaskiya ba ne. Kuma don gyara wannan, idan na manta da gangan duba akwati a cikin Cube, hakan yayi kyau.

Shekara biyu sun wuce, har yanzu ina lasar baki na Mai Neman ST MCU ga kowane irin dadi, amma fiye da fahimtata, kwakwalwan kwamfuta, da bazata sun ci karo labari mai ban mamaki, ko da yake game da STM8. KUMA ba zato ba tsammani Na gane cewa duk wannan lokacin na kasance ina buga ƙofar buɗewa: an tsara rajistar STM kamar yadda na kowane MK, kuma Cube ba lallai ba ne don yin aiki tare da su. Ya ma yiyuwa?..

HAL kuma musamman STM32CubeMX kayan aiki ne don ƙwararrun injiniyoyi waɗanda ke aiki tare da kwakwalwan kwamfuta na STM32. Babban fasalin shine babban matakin abstraction, ikon yin ƙaura da sauri daga MCU ɗaya zuwa wani har ma daga wannan cibiya zuwa wani, yayin da yake cikin layin STM32. Masu sha'awar sha'awa ba sa fuskantar irin waɗannan matsalolin - zaɓin namu na microcontrollers, a matsayin mai mulkin, yana iyakance ga tsarin AliExpress, kuma galibi muna yin ƙaura tsakanin kwakwalwan kwamfuta daban-daban - muna ƙaura daga Atmega zuwa STM, daga STM zuwa ESP, ko kowane sabon abu abokanmu na Sinawa. jefa mana. HAL ba zai taimaka a nan ba, kuma nazarinsa zai ci lokaci mai yawa.

LL ya rage - amma daga gare ta zuwa masu rijista akwai rabin mataki. Da kaina, na ga rubuta macro na tare da adiresoshin rajista suna da amfani: Ina nazarin bayanan bayanan a hankali, ina tunanin abin da zan buƙata a nan gaba da abin da ba shakka ba zan yi ba, na tsara shirye-shirye na mafi kyau, kuma gaba ɗaya, cin nasara yana taimakawa wajen haddace. .

Bugu da kari, akwai nuance tare da sanannen STM32F103 - akwai nau'ikan LL guda biyu da ba su dace da shi ba, jami'i ɗaya daga STM, na biyu daga Leaf Labs, wanda aka yi amfani da shi a cikin aikin STM32duino. Idan kun rubuta ɗakin karatu mai buɗewa (kuma ina da daidai irin wannan aiki), dole ne ku yi nau'i biyu, ko kuma ku sami damar yin rajista kai tsaye.

A ƙarshe, kawar da LL, a ganina, yana sa ƙaura cikin sauƙi, musamman idan kun tsara shi tun farkon aikin. Ƙarfafa misali: bari mu rubuta Arduino kiftawa a cikin Atmel Studio ba tare da LL ba:

#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++);
    } 
}

Domin wannan lambar ta lumshe LED a kan allon Sinawa tare da STM8 (daga ST Visual Desktop), ya isa ya canza adireshi biyu a ciki:

#define DDR_B 0x5007
#define OUT_B 0x5005

Ee, Ina amfani da fasalin haɗin LED akan takamaiman allo, zai lumshe hankali a hankali, amma zai faru!

Wadanne nau'ikan takaddun bayanai ne akwai?

A cikin labarai da kan forums, duka Rashanci da Ingilishi, "datasheets" na nufin duk wani takaddun fasaha don kwakwalwan kwamfuta, kuma ina yin haka a cikin wannan rubutu. A bisa ka'ida, nau'ikan irin waɗannan takaddun ne kawai:

Takardar bayanai - Halayen ayyuka, dabara da halayen fasaha. Wajibi ga kowane bangaren lantarki. Bayanan bayanan baya yana da amfani don kiyayewa a hannu, amma babu da yawa da za a karanta a ciki cikin tunani. Koyaya, mafi sauƙin kwakwalwan kwamfuta galibi ana iyakance su zuwa takaddar bayanai don kar a samar da takaddun da ba dole ba; a wannan yanayin Littafin Magana an hada da nan.

Littafin Magana - umarnin kansu, littafi mai lafiya na shafuka 1000+. An kwatanta aikin duk abin da aka cushe a cikin guntu dalla-dalla. Babban daftarin aiki don sarrafa microcontroller. Sabanin takardar bayanai, An rubuta umarni don ɗimbin kewayon MKs; sun ƙunshi bayanai da yawa game da abubuwan da ba su samuwa a cikin takamaiman samfurin ku.

Littafin shiryawa ko Saitin Umarni – umarni don takamaiman umarnin microcontroller. An ƙirƙira don waɗanda suke shirye-shirye cikin yaren Majalisar. Mawallafa masu tarawa suna amfani da shi sosai don haɓaka lamba, don haka a cikin yanayin gabaɗaya ba za mu buƙaci ta ba. Amma kallon nan yana da amfani ga fahimtar gabaɗaya, ga wasu takamaiman umarni kamar ficewa daga katsewa, da kuma yin amfani da mai gyara kuskure.

Bayanin Aikace-aikace - shawarwari masu amfani don magance takamaiman matsaloli, galibi tare da misalan lamba.

Errata Sheet - bayanin shari'o'in halayen guntu marasa daidaituwa tare da zaɓuɓɓukan aiki, idan akwai.

Me ke cikin bayanan

Kai tsaye zuwa Takardar bayanai muna iya buƙatar sassan masu zuwa:

Takaitacciyar Na'urar – shafi na farko na daftarin bayanai a takaice ya bayyana na'urar. Yana da amfani sosai a cikin yanayi lokacin da kuka sami guntu a wani wuri (ganin shi a cikin kantin sayar da shi, sayar da shi, ya ci karo da ambaton) kuma kuna son fahimtar menene.

Janar Description - ƙarin cikakkun bayanai na iyawar kwakwalwan kwamfuta daga layi.

Pinouts - zane-zane don duk fakitin guntu mai yuwuwa (wanda fil ke kan wane ƙafa).

Bayanin fil - bayanin manufa da damar kowane fil.

Taswirar Memwaorywalwar ajiya - Ba za mu iya buƙatar taswirar adireshin a ƙwaƙwalwar ajiya ba, amma wani lokacin kuma ya haɗa da tebur na adiresoshin rajista.

Rajista taswira - tebur na adiresoshin tubalan rajista, a matsayin mai mulkin, yana cikin takaddun bayanai, kuma a ciki Ref Manual - canje-canje kawai (adireshi biya).

Hanyoyin Hanya - a cikin wannan sashe muna da sha'awar farko cikakken matsakaicin ratings, jera matsakaicin nauyin kowane guntu. Ba kamar Atmega328p mara lalacewa ba, yawancin MKs ba sa ƙyale ku haɗa manyan kaya zuwa fil ɗin, wanda ya zama abin mamaki ga Arduinists.

Bayanin Kunshin - zane-zane na lokuta masu samuwa, masu amfani lokacin zayyana allon ku.

Littafin Magana a tsari ya ƙunshi sassan da aka keɓe ga takamaiman abubuwan da aka nuna a cikin takensu. Ana iya raba kowace babi zuwa sassa uku:

Overview, Gabatarwa, Features - bayyani na iyawar gefe;

Bayanin Aiki, Jagorar Amfani ko kuma kawai babban toshe na sashin - cikakken bayanin rubutu na ka'idodin na'urar da kuma yadda ake amfani da shi;

Rajista - bayanin kula da rajista. A lokuta masu sauƙi kamar GPIO ko SPI, wannan na iya isa sosai don fara amfani da abubuwan da ke kewaye, amma sau da yawa har yanzu kuna karanta sassan da suka gabata.

Yadda ake karanta takaddun bayanai

Takaddun bayanai, saboda al'ada, suna tsoratar da ku da ƙarar su da yawan kalmomin da ba za a iya fahimta ba. A gaskiya ma, duk abin ba haka ba ne mai ban tsoro idan kun san wasu hacks na rayuwa.

Saiti mai kyau PDF reader. An rubuta takaddun bayanai a cikin al'adar ɗaukaka ta umarnin takarda; suna da kyau a buga su, saka su da alamun filastik da ɗinki. Ana lura da hypertext a cikin su a cikin adadi mai yawa. Abin farin ciki, aƙalla tsarin daftarin aiki an tsara shi tare da alamun shafi, don haka mai karatu mai dacewa tare da kewayawa mai sauƙi yana da matukar muhimmanci.

Takardar bayanan ba littafin Stroustrup ba ne; ya ƙunshi babu bukatar karanta komai. Idan kun yi amfani da shawarar da ta gabata, kawai nemo sashin da ake so a mashaya alamun shafi.

Datasheets, musamman Littafin Magana, na iya kwatanta iyawar ba takamaiman guntu ba, amma layin duka. Wannan yana nufin cewa rabin, ko ma kashi biyu bisa uku na bayanin bai dace da guntuwar ku ba. Kafin yin karatun rajistar TIM7, shiga Janar Description, kuna da shi?

Sani Turanci isa ga matakin asali. Fayilolin bayanai sun ƙunshi rabin kalmomin da ba a sani ba ga matsakaita mai magana, da rabin tsarin haɗin kai mai sauƙi. Har ila yau, akwai kyawawan takaddun bayanan Sinanci a cikin Ingilishi na Sinanci, inda rabi kuma kalmomi ne, kuma rabi na biyu jerin kalmomi ne na bazuwar.

Idan kun hadu kalmar da ba a sani ba, kar a yi ƙoƙarin fassara shi ta amfani da ƙamus na Turanci-Rasha. Idan kun rikice mafitsara, to fassarar "hysteresis" ba zai sa ku dumi ba. Yi amfani da Google, Stack Overflow, Wikipedia, forums, inda manufar da ake buƙata zata kasance bayyana a cikin sauki kalmomi tare da misalai.

Hanya mafi kyau don fahimtar abin da kuke karanta ita ce duba cikin aiki. Don haka, ci gaba da riƙe allon cirewa wanda kuke sanin kanku da su, ko mafi kyau duka biyu, idan har yanzu kuna kuskuren fahimtar wani abu kuma kuka ga hayaƙin sihiri.

Yana da kyau ɗabi'a don kiyaye takaddun bayananku da amfani lokacin da kuke karanta koyaswar wani ko nazarin ɗakin karatu na wani. Abu ne mai yuwuwa zaku sami mafi kyawun maganin matsalar ku a ciki. Kuma akasin haka - idan ba za ku iya fahimta daga bayanan bayanan yadda rajistar ke aiki a zahiri ba, google shi: wataƙila, wani ya riga ya bayyana komai a cikin kalmomi masu sauƙi ko kuma ya bar bayyanannen lamba akan GitHub.

Amus

Wasu kalmomi masu amfani da alamomi don taimaka muku saurin saba da takaddun bayanai. Abin da na tuna a cikin kwanaki biyun da suka gabata, ana maraba da ƙari da gyare-gyare.

Wutar lantarki
VDC, vdd - "da", abinci
Vss, Vee - "rasa", duniya
yanzu - halin yanzu
irin ƙarfin lantarki - ƙarfin lantarki
don nutsar da halin yanzu - aiki a matsayin "ƙasa" don nauyin waje
zuwa tushen halin yanzu – ikon waje lodi
babban nutse / tushen fil – fil tare da ƙarin “haƙuri” don ɗauka

IO
H, Babban - a kan Vcc fil
L, Kasa - a kan Vss fil
Babban Imani, Hi-Z, iyo - babu wani abu a kan fil, "babban juriya", yana da kusan marar ganuwa ga duniyar waje.
mai rauni ja sama, rauni ja ƙasa – ginanniyar juye-up/juye-saukar resistor, kusan daidai da 50 kOhm (duba bayanan bayanai). Ana amfani da shi, alal misali, don hana fil ɗin shigarwa daga rataye a cikin iska, yana haifar da sakamako na ƙarya. rauni - saboda yana da sauƙi don "katse" shi.
tura ja – Yanayin fitarwa na fil, wanda yake canzawa tsakanin high и low - FITOWA ta yau da kullun daga Arduino.
bude magudanar ruwa – nadi yanayin fitarwa wanda fil zai iya zama ko dai low, ko Babban Tsanani/Mai iyo. Bugu da ƙari, kusan ko da yaushe wannan ba "ainihin" magudanar ruwa ba ne; akwai diodes masu kariya, masu tsayayya, da abin da ba haka ba. Wannan shine kawai nadi don yanayin ƙasa/babu.
gaskiya bude magudana - amma wannan magudanar ruwa ce ta gaske: fil ɗin yana kaiwa ga ƙasa kai tsaye idan yana buɗewa, ko kuma ya kasance a cikin limbo idan an rufe shi. Wannan yana nufin cewa, idan ya cancanta, za'a iya wuce wutar lantarki mafi girma fiye da Vcc ta cikinsa, amma har yanzu ana ƙayyade matsakaicin a cikin bayanan da ke cikin sashin. Cikakkar Matsakaicin Matsakaicin Ƙimar / Wutar Lantarki.

Musaya
a cikin jerin – haɗa cikin jerin
zuwa sarkar - haɗa kwakwalwan kwamfuta a cikin sarkar ta amfani da hanyar haɗin kai, ƙara yawan abubuwan da aka fitar.
shift - motsi, yawanci yana nuna ɗan motsi. Bi da bi, don matsawa и don motsawa – karba da kuma watsa bayanai bit by bit.
sakata – latch wanda ke rufe majinya yayin da ake jujjuya ragowa ta cikinsa. Lokacin da aka kammala canja wuri, bawul ɗin yana buɗewa kuma raƙuman suna fara aiki.
da agogon ciki – Yi canja wurin bit-by-bit, matsar da duk ragi zuwa wuraren da suka dace.
buffer biyu, inuwa rajista, preload rajista - tarihin tarihi, lokacin da rajista dole ne ya sami damar karɓar sabbin bayanai, amma riƙe shi har zuwa wani lokaci. Misali, don PWM yayi aiki daidai, sigoginsa (zagayowar aiki, mitar) bai kamata su canza ba har sai lokacin sake zagayowar ya ƙare, amma ana iya canza sabbin sigogi. Saboda haka, ana ajiye na yanzu a inuwa rajista, kuma sababbi sun fada cikin preload rajista, ana rubutawa zuwa daidaitaccen rijistar guntu.

Duk nau'ikan abubuwa
prescaler – mita prescaler
don saita kadan - saita bit zuwa 1
don share/sake saita kadan - sake saita bit zuwa 0 (sake saita - STM datasheet fasalin)

Menene gaba

Gabaɗaya, an shirya wani ɓangaren aiki anan tare da nunin ayyuka guda uku akan STM32 da STM8, waɗanda aka yi musamman don wannan labarin ta amfani da takaddun bayanai, tare da kwararan fitila, SPI, masu ƙidayar lokaci, PWM da katsewa:

Ta yaya kuma me yasa ake karanta bayanan bayanan idan microcontrollers abin sha'awa ne

Amma akwai rubutu da yawa, don haka ana aika ayyukan zuwa kashi na biyu.

Kwarewar karatun bayanan bayanan za ta taimaka muku da sha'awar ku, amma da wuya a maye gurbin sadarwar kai tsaye tare da abokan sha'awar sha'awa akan dandalin tattaunawa da taɗi. Don wannan dalili, har yanzu kuna buƙatar haɓaka Ingilishi da farko. Don haka, waɗanda suka gama karatun za su sami kyauta ta musamman: darussan kyauta guda biyu a Skyeng tare da biyan farko ta amfani da lambar HABR2.

source: www.habr.com

Add a comment