Ahoana ary nahoana no mamaky angon-drakitra raha fialamboly anao ny microcontrollers

Ahoana ary nahoana no mamaky angon-drakitra raha fialamboly anao ny microcontrollers

Ny microelectronics dia fialamboly lamaody tato anatin'ny taona vitsivitsy noho ny Arduino mahagaga. Fa izao no olana: miaraka amin'ny fahalianana ampy, azonao atao ny mampitombo haingana ny DigitalWrite (), saingy tsy mazava tsara ny tokony hatao manaraka. Ny mpamorona Arduino dia nanao ezaka mafy mba hampidina ny sakana hidirana ao amin'ny tontolo iainan'izy ireo, saingy any ivelan'izany dia mbola misy ala maizin'ny circuitry mafy izay tsy azon'ny mpankafy.

Ohatra, datasheets. Toa manana ny zava-drehetra izy ireo, raiso ary ampiasao. Saingy ny mpanoratra azy dia mazava ho azy fa tsy mametraka ny tenany amin'ny fampiroboroboana ny microcontrollers; indraindray toafa minia mampiasa teny sy fanafohezana tsy takatry ny saina izy ireo rehefa milaza zavatra tsotra mba hanakorontanana ny tsy fantatra araka izay tratra. Saingy tsy ny zava-drehetra dia ratsy loatra; raha tianao, dia misokatra ny vata.

Ato amin'ity lahatsoratra ity dia hizara ny traikefan'ny manam-pahaizana manokana momba ny maha-olombelona aho mifandray amin'ny datasheets ho an'ny fialamboly. Ny lahatsoratra dia natao ho an'ny mpankafy izay nihalehibe avy amin'ny pataloha Arduino; Izy io dia mihevitra ny fahatakarana ny fitsipiky ny fiasan'ny microcontrollers.

Hatomboko amin'ny nentim-paharazana

Mandrehitra LED amin'ny Arduino

Ary avy hatrany ny code:

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

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

"Inona ity? – Mpamaky be pitsiny no hanontany. – Nahoana ianao no manoratra zavatra amin'ny rejisitra fampidirana PINB? Natao ho vakiana ihany!” tena, Arduino documentation, toy ny ankamaroan'ny lahatsoratra momba ny fanabeazana ao amin'ny Internet, dia milaza fa vakiana fotsiny ity rejisitra ity. Nieritreritra izany aho mandra-pamakiako azy indray Takela-daza mankany amin'ny Atmega328p, manomana ity lahatsoratra ity. Ary misy:

Ahoana ary nahoana no mamaky angon-drakitra raha fialamboly anao ny microcontrollers

Fampiasa somary vaovao ihany ity, tsy tao amin'ny Atmega8, tsy fantatry ny rehetra na tsy voatonona noho ny fifanarahana mihemotra. Saingy mety tsara amin'ny fanehoana ny hevitra fa mendrika ny hamaky ny datasheets mba hampiasana ny fahaiza-manaon'ny chip rehetra, anisan'izany ireo tsy dia fantatra loatra. Ary tsy izany ihany no antony.

Fa maninona no mamaky angon-drakitra hafa?

Matetika ny injeniera Arduino, izay nilalao ampy tamin'ny LED sy AnalogWrites, dia manomboka mampifandray ireo karazana modules sy chips amin'ny solaitrabe, izay efa misy tranomboky voasoratra. Na ho ela na ho haingana, misy tranomboky tsy mandeha araka ny tokony ho izy. Avy eo ny amateur dia manomboka mitsimpona azy mba hanamboatra azy, ary avy eo ...

Ary misy zavatra tsy takatry ny saina mitranga ao, ka tsy maintsy mandeha any amin'ny Google ianao, mamaky fampianarana maro, manaisotra ampahany amin'ny kaody mety ho an'ny olona iray ary farany hahatratra ny tanjonao. Izany dia manome fahatsapana mahery vaika amin'ny zava-bita, fa raha ny marina, ny dingana dia toy ny fanavaozana ny kodia amin'ny alàlan'ny fanodinana moto. Ankoatra izany, tsy mitombo ny fahatakarana ny fomba fiasan'ity bisikileta ity. Fantatro, satria nanao izany ny tenako nandritra ny fotoana ela.

Raha tokony ho tamin'ity hetsika mampientam-po ity aho no nandany andro roa nianarana ny antontan-taratasy Atmega328, dia ho namonjy fotoana be aho. Raha ny marina, ity dia microcontroller tsotra.

Noho izany, mila mamaky angon-drakitra farafaharatsiny ianao mba haka sary an-tsaina ny fomba fiasan'ny microcontroller amin'ny ankapobeny sy ny zavatra azony atao. Ary ankoatra izany:

  • hanamarina sy hanatsara ny tranombokin'ny hafa. Matetika izy ireo no nosoratan'ireo mpankafy izay namorona indray ny kodiarana; na, mifanohitra amin'izany, ny mpanoratra dia minia manao azy ireo ho tsy misy dikany loatra. Avelao ho avo telo heny sy miadana kokoa izy io, fa hahomby tokoa;

  • fahafahana mampiasa puce amin'ny tetikasa izay tsy nisy nanoratra tranomboky;

  • mba hanamora ny fifindra-monina avy amin'ny andalana MK iray mankany amin'ny iray hafa;

  • mba hanamafisana ny code taloha anao, izay tsy mifanaraka amin'ny Arduino;

  • mba hianatra ny fomba hifehezana ny chip mivantana amin'ny alàlan'ny rejisitra, tsy manelingelina ny fandalinana ny firafitry ny tranomboky, raha misy.

Nahoana no manoratra mivantana amin'ny fisoratana anarana raha misy HAL sy LL?

Rakibolana
HAL, Soso-kevitra avo lenta - trano famakiam-boky hifehezana microcontroller manana haavo avo lenta. Raha mila mampiasa ny interface SPI1 ianao dia amboary tsotra izao sy avelao ny SPI1 nefa tsy mieritreritra hoe iza no tompon'andraikitra amin'ny rejisitra.
LL, Low Level API – tranomboky misy macro na rafitra misy adiresy rejisitra, ahafahanao miditra amin'ny anarana. DDRx, PORTx, PINx amin'ny Atmega dia LL.

Miseho tsy tapaka amin'ny fanehoan-kevitra momba ny Habré ny fifandirana momba ny lohahevitra "HAL, LL na rejistra". Raha tsy milaza ny fahazoana fahalalana astral aho dia hizara fotsiny ny traikefako sy ny eritreritro.

Rehefa nahafantatra bebe kokoa na latsaka ny Atmega aho ary namaky lahatsoratra momba ny hatsaran'ny STM32, dia nividy takelaka antsasa-polo isan-karazany aho - Discovery, ary Blue Pills, ary na dia chips fotsiny aza ho an'ny vokatra vita an-trano. Samy nanangona vovoka tao anaty baoritra nandritra ny roa taona izy ireo. Indraindray aho dia niteny anakampo hoe: "Izany no izy, manomboka amin'ity faran'ny herinandro ity dia mahafehy ny STM aho," navoakan'ny CubeMX, namorona setup ho an'ny SPI, nijery ny rindrin'ny lahatsoratra, nalaina am-pitiavana tamin'ny zon'ny mpamorona STM, ary nanapa-kevitra fa toy izany koa. betsaka.

Ahoana ary nahoana no mamaky angon-drakitra raha fialamboly anao ny microcontrollers

Mazava ho azy fa azonao fantarina ny nosoratan'i CubeMX eto. Saingy amin'ny fotoana iray ihany dia mazava fa ny fitadidiana ny teny rehetra ary avy eo manoratra azy amin'ny tanana dia tsy mitombina. Ary mba hanesorana an'io, raha adinoko tsy nahy ny nanamarika boaty tao amin'ny Cube, dia tsara izany.

Roa taona no lasa, mbola milelaka molotra aho ST MCU Finder ho an'ny karazan-tsiro isan-karazany, fa tsy azoko, ny chips, ary sendra sendra lahatsoratra mahafinaritra, na dia eo aza ny STM8. SY tampoka Tsapako fa nandondòna teo am-baravarana misokatra aho: ny rejisitra an'ny STM dia nalamina mitovy amin'ny an'ny MK hafa, ary tsy ilaina ny Cube hiara-miasa aminy. Mety ve izany?..

HAL ary indrindra indrindra STM32CubeMX dia fitaovana ho an'ny injeniera matihanina izay miasa akaiky amin'ny chips STM32. Ny endri-javatra lehibe dia ny abstraction avo lenta, ny fahafahana mifindra haingana avy amin'ny MCU iray mankany amin'ny iray hafa ary na avy amin'ny fototra iray mankany amin'ny iray hafa, raha mijanona ao anatin'ny tsipika STM32. Zara raha sendra olana toy izany ny mpankafy mpankafy - ny safidintsika microcontrollers, amin'ny ankapobeny, dia voafetra amin'ny karazana AliExpress, ary matetika isika mifindra monina eo anelanelan'ny chips tena samy hafa - miala amin'ny Atmega mankany STM, avy amin'ny STM mankany ESP, na inona na inona zava-baovao sinoa namantsika. atsipy aminay. Tsy hanampy eto ny HAL, ary mandany fotoana be ny fianarana azy.

LL mijanona - fa avy eo amin'ny rejisitra misy antsasaky ny dingana. Amiko manokana dia hitako fa mahasoa ny fanoratana ny macros misy ny adiresin'ny rejisitra: Mandalina tsara kokoa ny datasheet aho, mieritreritra izay hilaiko amin'ny ho avy ary izay tsy ho azoko, manamboatra tsara kokoa ny fandaharan'asako aho, ary amin'ny ankapobeny, manampy amin'ny fitadidiana ny fandresena. .

Ankoatr'izay, misy ny nuance amin'ny STM32F103 malaza - misy dikan-teny LL roa tsy mifanaraka aminy, ofisialy iray avy amin'ny STM, ny faharoa avy amin'ny Leaf Labs, ampiasaina amin'ny tetikasa STM32duino. Raha manoratra tranomboky open source ianao (ary nananako asa toy izany), tsy maintsy manao dikan-teny roa ianao, na miditra mivantana amin'ny rejisitra.

Farany, ny fanafoanana ny LL, araka ny hevitro, dia manamora ny fifindra-monina, indrindra raha mikasa azy io hatrany am-piandohan'ny tetikasa ianao. Ohatra mihoapampana: andao hanoratra Arduino blink ao amin'ny Atmel Studio tsy misy 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++);
    } 
}

Mba hahafahan'ity kaody ity manjelatra ny LED amin'ny solaitrabe sinoa miaraka amin'ny STM8 (avy amin'ny ST Visual Desktop), dia ampy ny manova adiresy roa ao anatiny:

#define DDR_B 0x5007
#define OUT_B 0x5005

Eny, mampiasa endri-javatra fampifandraisana ny LED amin'ny solaitra iray manokana aho, dia hikoropaka tsikelikely, fa hitranga izany!

Inona no karazana datasheets misy?

Ao amin'ny lahatsoratra sy amin'ny forums, na amin'ny teny Rosiana na amin'ny teny Anglisy, ny "datasheets" dia midika hoe antontan-taratasy ara-teknika momba ny chips, ary manao toy izany koa aho amin'ity lahatsoratra ity. Amin'ny fomba ofisialy, karazana antontan-taratasy iray ihany izy ireo:

Takela-daza - Toetran'ny fampisehoana, toetran'ny taktika ary teknika. Mandatory ho an'ny singa elektronika rehetra. Mahasoa ny mitazona ny mombamomba azy, saingy tsy dia misy dikany loatra ny mamaky azy io amim-pitandremana. Na izany aza, ny chips tsotra dia matetika voafetra amin'ny datasheet mba tsy hamokarana antontan-taratasy tsy ilaina; raha izany dia Boky torolàlana dia tafiditra eto.

Boky torolàlana – ny toromarika mihitsy, boky ara-pahasalamana misy pejy 1000+. Lazalazaina amin'ny an-tsipiriany ny asan'ny zavatra rehetra mipetaka ao anaty puce. Ny antontan-taratasy fototra amin'ny fifehezana ny microcontroller. Tsy toy ny Takela-daza, ny toromarika dia nosoratana ho an'ny MK isan-karazany; misy fampahalalana be dia be momba ny periferika tsy hita ao amin'ny maodely manokana.

Boky Torolàlana momba ny programa na Torolàlana ho an'ny Set - torolàlana momba ny baiko microcontroller tokana. Natao ho an'ireo izay manao fandaharana amin'ny fiteny fivoriambe. Mampiasa azy io ny mpanoratra compiler mba hanatsarana ny kaody, ka amin'ny ankapobeny dia tsy mila izany isika. Fa ny fijerena eto dia ilaina amin'ny fahatakarana ankapobeny, ho an'ny baiko manokana toy ny fivoahana amin'ny fiatoana, ary koa amin'ny fampiasana mavitrika ny debugger.

Application fanamarihana - toro-hevitra mahasoa amin'ny famahana olana manokana, matetika miaraka amin'ny ohatra kaody.

Errata Sheet - famaritana ireo tranganà fihetsika tsy manara-penitra miaraka amin'ny safidy vahaolana, raha misy.

Inona no ao amin'ny datasheets

Mivantana amin'ny Takela-daza mety mila ireto fizarana manaraka ireto isika:

Famintinana ny fitaovana – ny pejy voalohany amin'ny angon-drakitra dia mamaritra fohifohy ny fitaovana. Tena ilaina amin'ny toe-javatra rehefa nahita puce tany ho any ianao (nahita azy tao amin'ny fivarotana iray, nanamboatra azy io, nahita firesahana) ary te-hahatakatra hoe inona izany.

Famaritana ankapobeny - famaritana amin'ny antsipiriany kokoa ny fahaizan'ny chips avy amin'ny tsipika.

Pinouts - sarin'ny pinout ho an'ny fonosana chip rehetra azo atao (izay pin eo amin'ny tongotra).

Famaritana Pin - famaritana ny tanjona sy ny fahaizan'ny pin tsirairay.

Sarintany fahatsiarovana – mety tsy mila sarintany adiresy ho fitadidiana isika, fa indraindray dia misy tabilao misy ny adiresin'ny sakana.

Register Map – Ny latabatra ny adiresin'ny blocs rejistra, amin'ny ankapobeny, dia hita ao amin'ny datasheet, ary in Ref Manual -miova ihany (adiresy offset).

Karazana herinaratra – amin'ity fizarana ity no tena mahaliana anay naoty ambony indrindra, mitanisa ny entana ambony indrindra isaky ny chip. Tsy toy ny Atmega328p tsy mety levona, ny ankamaroan'ny MK dia tsy mamela anao hampifandray enta-mavesatra amin'ny tsimatra, izay lasa tsy ampoizina ho an'ny Arduinists.

Fampahalalana momba ny fonosana - sarin'ny tranga misy, ilaina amin'ny famolavolana ny takelakao.

Boky torolàlana ara-drafitra dia ahitana fizarana natokana ho an'ny periferika manokana voalaza ao amin'ny lohateny. Ny toko tsirairay dia azo zaraina ho fizarana telo:

Overview, Fampidirana, Toetoetra - topimaso ny fahaiza-manao periferika;

Famaritana asa, Torolàlana fampiasana na tsotra fotsiny ny singa fototra amin'ny fizarana - famaritana lahatsoratra amin'ny antsipiriany momba ny fitsipiky ny fitaovana periferika sy ny fomba fampiasana azy;

firaketana - famaritana ny rejisitra fanaraha-maso. Amin'ny tranga tsotra toy ny GPIO na SPI, mety ho ampy izany hanombohana mampiasa ny periferika, fa matetika ianao dia mbola mila mamaky ny ampahany teo aloha.

Ahoana ny famakiana datasheets

Ny takelaka data, tsy mahazatra, dia mampatahotra anao amin'ny habeny sy ny teny tsy takatry ny saina. Raha ny marina, tsy dia mampatahotra loatra ny zava-drehetra raha fantatrao ny hacks vitsivitsy momba ny fiainana.

hametraka mpamaky PDF tsara. Ny takelaka data dia nosoratana tamin'ny fomban-drazana be voninahitra amin'ny torolalana amin'ny taratasy; mahafinaritra ny manonta, mampiditra tsoratadidy plastika ary manjaitra. Ny hypertext amin'izy ireo dia hita ao anaty habe. Soa ihany, farafaharatsiny ny firafitry ny antontan-taratasy dia natao tamin'ny tsoratadidy, noho izany dia ilaina ny mpamaky mety amin'ny fitetezana mora.

Ny datasheet dia tsy bokin'i Stroustrup fa misy tsy mila mamaky ny zava-drehetra. Raha nampiasa ny torohevitra teo aloha ianao, dia tadiavo fotsiny ny fizarana tianao ao amin'ny bara tsoratadidy.

Datasheet, indrindra Boky torolalana, dia afaka mamaritra ny fahaizan'ny tsy chip manokana, fa ny andalana manontolo. Midika izany fa ny antsasany, na ny roa ampahatelon'ny fampahalalana dia tsy mifandray amin'ny chip anao. Alohan'ny handalinana ny rejisitra TIM7 dia midira Famaritana ankapobeny, manana izany ve ianao?

Aoka ho fantatrao anglisy ampy ho ambaratonga fototra. Ny takelaka angona dia ahitana ny antsasaky ny teny tsy mahazatra amin'ny salan'isa mpiteny teratany, ary ny antsasaky ny rafitra mampifandray tsotra. Misy ihany koa ny angona sinoa tsara indrindra amin'ny teny anglisy sinoa, izay ny antsasany dia voambolana, ary ny tapany faharoa dia andian-teny kisendrasendra.

Raha mifankahita ianao teny tsy mahazatra, aza manandrana mandika izany amin'ny fampiasana rakibolana anglisy-rosiana. Raha very hevitra ianao hysteresis, amin'izay fotoana izay, ny dikanteny hoe "hysteresis" dia tsy hahatonga anao ho mafana kokoa. Ampiasao ny Google, Stack Overflow, Wikipedia, forums, izay hisy ny hevitra ilaina hazavaina amin’ny teny tsotra misy ohatra.

Ny fomba tsara indrindra hahazoana izay vakinao dia fisavana hetsika. Noho izany, tohizo hatrany ny birao debug izay efa mahazatra anao, na tsara kokoa aza, raha mbola diso hevitra ianao ka nahita setroka majika.

Fahazarana tsara ny mitazona ny angon-drakitrao mora foana rehefa ianao mamaky fampianarana olona iray na mianatra ny tranombokin'olon-kafa. Azo atao tsara fa hahita vahaolana tsara kokoa amin'ny olanao ianao ao. Ary ny mifamadika amin'izany - raha tsy azonao avy amin'ny datasheet ny fomba fiasan'ny rejisitra dia google: azo inoana fa nisy olona efa nilaza ny zava-drehetra tamin'ny teny tsotra na namela kaody mazava ao amin'ny GitHub.

Rakibolana

Teny sy tandindona mahasoa sasany hanampy anao hizatra haingana amin'ny angona. Ny zavatra tadidiko tato anatin'ny roa andro, dia azo atao ny manampy sy manitsy.

herinaratra
VDC, Marina – “plus”, sakafo
and, Vee – “minus”, tany
amin'izao fotoana izao – ankehitriny
Zintin'aratra - Zintin'aratra
hilentika ny courant - miasa ho "tany" ho an'ny entana ivelany
ho loharanon'izao fotoana izao – hery entana ivelany
Pin / loharano avo - pin misy "fandeferana" mitombo amin'ny entana

IO
H, Avo - amin'ny pin Vcc
L, Ambany - amin'ny pin Vss
Impedance avo, Hi-Z, mitsinkafona - tsy misy na inona na inona amin'ny pin, "avo fanoherana", saika tsy hita maso amin'ny tontolo ivelany.
malemy misintona, malemy misintona midina - resistor misintona / misintona midina ao anatiny, mitovy amin'ny 50 kOhm (jereo ny datasheet). Ampiasaina, ohatra, izy io mba hisorohana ny tsipìka fidirana tsy hihantona eny amin'ny rivotra, ka miteraka vokatra diso. malemy Ara-panahy - satria mora ny "manapaka" azy.
manosika misintona - fomba famoahana pin, izay mifamadika eo High и Low - OUTPUT mahazatra avy amin'ny Arduino.
tatatra misokatra - fanondroana ny fomba famoahana izay mety ho ny pin Low, na Avo Impedance/Mitsinkafona. Ankoatr'izay, saika tsy "tena" misokatra foana izany, misy diodes fiarovana, resistors, sy ny sisa. Ity dia fanendrena tsotra ho an'ny fomba tany/tsy misy.
tena misokatra tatatra - fa tena tatatra mivelatra tokoa ity: mitodika mivantana amin'ny tany ny pin raha misokatra, na mijanona ao anaty limbo raha mihidy. Midika izany fa, raha ilaina, dia azo ampitaina amin'izany ny voltase mihoatra ny Vcc, fa ny ambony indrindra dia mbola voafaritra ao amin'ny datasheet amin'ny fizarana. Naoty/Voltage faratampony tanteraka.

interface
amin'ny andiany - mifandray amin'ny andiany
ho rojo - manangona puce ho rojo amin'ny fampiasana fifandraisana serial, mampitombo ny isan'ny vokatra.
fiovàna - fiovàna, matetika midika hoe fiovàna kely. tsirairay avy, hifindra ao и hifindra - mandray sy mampita data tsikelikely.
famehezana - famehezana manarona ny buffer raha afindra ao aminy ny bits. Rehefa vita ny famindrana dia misokatra ny valva ary manomboka miasa ny bits.
ny famantaranandro – manaova famindràna kely, afindrao amin'ny toerana mety ny bitika rehetra.
double buffer, rejisitra aloka, rejisitra mialoha - fanendrena tantara, rehefa tsy maintsy afaka manaiky angona vaovao ny rejisitra, fa mitazona izany mandra-pahatongan'ny fotoana iray. Ohatra, mba hiasa araka ny tokony ho izy ny PWM dia tsy tokony hiova ny masontsivana azy (tsingerin'ny adidy, matetika) mandra-pahatapitry ny tsingerina amin'izao fotoana izao, fa efa azo afindra ny mari-pamantarana vaovao. Araka izany dia tazonina amin’ny rejisitra aloka, ary misy vaovao latsaka ao rejisitra mialoha, voasoratra ao amin'ny rejisitra chip mifanaraka amin'izany.

Ny karazan-javatra rehetra
prescaler - prescaler matetika
hametraka kely - mametraka bit ho 1
hamafa / reset kely - avereno kely amin'ny 0 (mamerina - Takelaka data STM)

Inona no manaraka?

Amin'ny ankapobeny, ampahany azo ampiharina no nomanina teto miaraka amin'ny fampisehoana tetikasa telo amin'ny STM32 sy STM8, natao manokana ho an'ity lahatsoratra ity amin'ny fampiasana datasheets, miaraka amin'ny takamoa, SPI, timer, PWM ary interrupts:

Ahoana ary nahoana no mamaky angon-drakitra raha fialamboly anao ny microcontrollers

Betsaka anefa ny lahatsoratra, ka alefa any amin’ny tapany faharoa ny tetikasa.

Ny fahaizana mamaky angon-drakitra dia hanampy anao amin'ny fialambolinao, saingy tsy azo atao ny manolo ny fifandraisana mivantana amin'ireo mpankafy mpankafy amin'ny forum sy chat. Ho an'ity tanjona ity dia mbola mila manatsara ny teny anglisy aloha ianao. Noho izany, ireo izay nahavita namaky dia hahazo loka manokana: lesona roa maimaim-poana ao Skyeng miaraka amin'ny fandoavam-bola voalohany amin'ny fampiasana ny code. HABR2.

Source: www.habr.com

Add a comment