Faitau fa'amaumauga 2: SPI ile STM32; PWM, taimi ma fa'alavelave ile STM8
В le vaega muamua Sa ou taumafai e taʻu atu i le au inisinia faʻaeletonika fiafia na ola aʻe mai le ofuvae Arduino pe faʻafefea ma pe aisea e tatau ai ona latou faitau faʻamaumauga ma isi faʻamaumauga mo microcontrollers. O le tusitusiga na foliga mai e lapopoa, o lea na ou folafola atu ai e faʻaalia ni faʻataʻitaʻiga aoga i se isi tala. Ia, na ia taʻua o ia o se susu susu ...
O le asō o le a ou faʻaali atu ia te oe pe faʻapefea ona faʻaogaina faʻamaumauga e foia faigofie, ae manaʻomia mo le tele o galuega faatino, galuega ile STM32 (Blue Pill) ma le STM8 controllers. O faʻataʻitaʻiga faʻataʻitaʻiga uma e tuʻufaʻatasia i laʻu LED e sili ona ou fiafia i ai, matou te faʻamalamalamaina i latou i le tele, lea e tatau ona matou faʻaogaina ai ituaiga uma o mea manaia.
O le tusitusiga na toe liliu mai e tele, o lea mo le faʻaogaina o loʻo ou faia le anotusi:
Disclaimer: E le o aʻu o se inisinia, ou te le faafoliga o loʻo i ai se malamalama loloto i mea tau eletise, o le tusiga e faʻamoemoe mo amateurs pei o aʻu. O le mea moni, na ou manatu ia te aʻu lava i le lua tausaga talu ai o le au faʻasalalau. Afai na taʻu mai e se tasi ia te aʻu o faʻamaumauga i luga o se vaʻa e le masani ai e le faʻafefe e faitau, semanu ou te le faʻaaluina le tele o le taimi e suʻe ai ni fasi code i luga o le Initaneti ma fatuina tootoo i seleulu ma faʻapipiʻi lipine.
O le taulaiga o lenei tusiga o loʻo i luga o faʻamaumauga, ae le o galuega faatino, o le mea lea atonu e le lelei tele le code ma masani ona vaʻaia. O poloketi lava ia e matua faigofie lava, e ui lava e talafeagai mo se masani muamua ma le pu fou.
Ou te faʻamoemoe o laʻu tusiga o le a fesoasoani i se tasi i se tulaga tutusa o le faatofuina i le fiafia.
STM32
16 LEDs ma DM634 ma SPI
O se poloketi laʻititi e faʻaaoga ai Blue Pill (STM32F103C8T6) ma le DM634 LED avetaʻavale. I le faʻaaogaina o faʻamaumauga, o le a matou iloa ai le avetaavale, STM IO ports ma faʻapipiʻi SPI.
DM634
Taiwanese chip ma 16 16-bit PWM gaioiga, e mafai ona fesoʻotaʻi i filifili. Ole fa'ata'ita'iga 12-bit pito maualalo e iloa mai se galuega fa'apitonu'u Taga moli. I se tasi taimi, filifili i le va o le DM63x ma le lauiloa TLC5940, na ou filifilia le DM mo ni mafuaaga se tele: 1) TLC i luga o Aliexpress e mautinoa lava e pepelo, ae e le o lenei; 2) O le DM o lo'o i ai se PWM tuto'atasi ma lana lava fa'atupu fa'avevela; 3) e mafai ona faʻatau taugofie i Moscow, nai lo le faʻatali mo se pusa mai Ali. Ma, ioe, sa manaia le aʻoaʻo pe faʻafefea ona pulea le pu ia oe lava, nai lo le faʻaaogaina o se faletusi ua saunia. O chips o loʻo tuʻuina atu nei i le SSOP24 afifi; e faigofie ona faʻapipiʻi i se mea faʻapipiʻi.
Talu ai o le gaosiga o Taiwanese, fa'amatalaga ua tusia le pu i le gagana Peretania Saina, o lona uiga o le a malie. Muamua tatou te tilotilo i le pinout (Pin So'oga) ia malamalama po'o fea vae e fa'afeso'ota'i le mea, ma se fa'amatalaga o pine (Pin Faʻamatalaga). 16 pine:
DC Sink Punavai (Tatala Alavai)
Sini / Fa'amama fa'alava – alavai; puna o le tafe mai; o le gaosiga e fesoʻotaʻi i le eleele i le tulaga malosi - o loʻo fesoʻotaʻi le LED i le avetaavale e cathodes. Ile eletise, o le mea moni, e le o se "vaivai tatala" (alavai tatala), ae i fa'amaumauga e masani ona maua lenei fa'ailoga mo pine ile ala alavai.
Fa'asagaga i fafo i le va o REXT ma le GND e seti ai le tau o lo'o iai nei
O lo'o fa'apipi'i se mea fa'asino i le va o le pine REXT ma le eleele, lea e fa'atonutonu ai le tete'e i totonu o fa'atinoga, va'ai le kalafi i le itulau 9 o fa'amaumauga. I le DM634, o lenei tetee e mafai foi ona pulea e le polokalama, seti le malamalama atoa (susulu o le lalolagi); O le a ou le alu i auiliiliga i lenei tusiga, o le a ou tuʻuina se 2.2 - 3 kOhm resistor iinei.
Ina ia malamalama pe faʻafefea ona pulea le pu, seʻi o tatou vaʻavaʻai i le faʻamatalaga o le atinaʻe masini:
Ioe, o lea, Saina Igilisi i lona mamalu uma. O le fa'aliliuina o lenei mea o se fa'afitauli, e mafai ona e malamalama i ai pe a e mana'o ai, ae o lo'o i ai se isi auala - va'ai pe fa'apefea ona fa'amatalaina le feso'ota'iga i le TLC5940 fa'atusa tutusa i le fa'amaumauga:
... E na o le tolu pine e manaʻomia e faʻapipiʻi ai faʻamatalaga i totonu o le masini. O le pito i luga ole faailo o le SCLK e suia ai faʻamatalaga mai le pine SIN i le resitala i totonu. A mae'a ona uta uma fa'amaumauga, ose fa'ailoga XLAT maualuga pu'upu'u e fa'apipi'i fa'asologa fa'asologa o fa'amaumauga i totonu o tusi resitala i totonu. O resitala i totonu o faitoto'a na fa'aosoina e le XLAT fa'ailoga maualuga. O fa'amatalaga uma e tu'uina atu muamua le pito sili ona taua.
Lisi – fa'amau/fa'amau/loka. Tulaga a'e – pito muamua o le fatu MSB muamua – pito sili ona taua (sili ona agavale) siisi agai i luma. e fa'amaumauga uati – fa'asalalau fa'amaumauga fa'asolosolo fa'atasi (siisii ma sina mea).
Le upu fono e masani ona maua i totonu o faʻamaumauga mo tupe meataalo ma faʻaliliu i auala eseese, o lea mo le malamalama o le a ou faʻatagaina aʻu lava
se polokalame fa'aa'oa'oga la'ititiO le aveta'avale LED o se tusi resitala sifi. "Sifi" (fesuiaiga) i le igoa - fa'agaoioia fa'amatalaga i totonu o le masini: o mea fou ta'itasi e tulei i totonu e tuleia ai le filifili atoa i luma i luma. Talu ai e leai se tasi e manaʻo e vaʻaia le emo le mautonu o LED i le taimi o le suiga, o le faagasologa e faia i totonu o tusi resitala e vavae ese mai tusi resitala faigaluega e se damper (fono) o se ituaiga potu faʻatali e faʻatulaga ai vaega i le faʻasologa e manaʻomia. A sauni mea uma, ona tatala lea o le tapuni ma alu ai le vaega, sui le vaega muamua. Upu fono i totonu o faʻamaumauga mo microcircuits e toetoe lava o taimi uma e faʻaalia ai se faʻamaʻi, e tusa lava po o le a le tuʻufaʻatasiga e faʻaaogaina.
O lea la, o le faʻaliliuina o faʻamatalaga i le DM634 o loʻo faʻatinoina e pei o lenei: seti le DAI faʻaoga i le tau o le pito sili ona taua o le LED mamao, toso le DCK i luga ma lalo; seti le DAI input i le tau o le isi bit, toso DCK; ma faapena ai lava seia uma ona auina atu vaega uma (uati i totonu), a maeʻa ona matou tosoina LAT. E mafai ona fai ma le lima (bit-pa), ae sili atu le faʻaogaina o se SPI faʻapitoa faʻapitoa mo lenei mea, talu ai o loʻo tuʻuina atu i luga o la matou STM32 i kopi e lua.
Pill Blue STM32F103
Folasaga: STM32 controllers e sili atu ona lavelave nai lo Atmega328 nai lo latou foliga taufaafefe. E le gata i lea, mo mafuaʻaga o le faʻaolaina o le malosi, toetoe lava o peripherals uma e tape i le amataga, ma o le taimi o le uati o le 8 MHz mai le puna i totonu. O le mea e lelei ai, na tusia e le au fai polokalame a le STM le code lea e aumaia ai le pu i luga o le 72 MHz, ma o tusitala o IDE uma ou te iloa na aofia ai i le faiga o le amataga, o lea tatou te le manaʻomia ai le uati (ae. e te mafaia pe a e mana'o moni lava). Ae e tatau ona e kiina peripheral.
Faʻamaumauga: Blue Pill ua faʻapipiʻiina ma le lauiloa STM32F103C8T6 pu, e lua pepa aoga mo ia:
Pinouts - chip pinouts - i le tulaga tatou te filifili e fai laupapa i tatou lava;
Fa'afanua Fa'amanatu – fa'afanua manatua mo se pu fa'apitoa. O le Reference Manual o loʻo i ai se faʻafanua mo le laina atoa, ma o loʻo taʻua ai tusi resitala e le o maua e matou.
Pin Definitions table – lisi ai galuega autu ma isi galuega a pine; mo le "blue pill" e mafai ona e mauaina ni ata sili atu ona faigofie ile Initaneti ma se lisi o pine ma a latou galuega. O le mea lea, matou te vave google Blue Pill pinout ma taofi lenei ata i lima:
NB: sa i ai se mea sese i le ata mai le Initaneti, lea sa maitauina i faʻamatalaga, faʻafetai mo lena mea. Ua suia le ata, ae o se lesona lenei - e sili atu le siakiina o faʻamatalaga ae le o faʻamaumauga.
Matou te aveese fa'amaumauga, tatala le Reference Manual, ma mai le taimi nei matou te fa'aaogaina na'o.
Taualumaga: matou te feagai ma faʻaoga masani / gaioiga, faʻapipiʻi le SPI, faʻapipiʻi mea e manaʻomia.
Ulufale Ulufale
I luga o le Atmega328, I / O e faʻatinoina faigofie lava, o le mea lea e mafai ai ona fenumiai le tele o filifiliga STM32. Ole taimi nei e na'o ni fa'ai'uga e mana'omia, ae e o'o fo'i i nei mea e fa filifiliga:
"Toso-tu'i" (tulei-toso) o le gaioiga masani mai le Arduino, e mafai e le pine ona ave le tau maualuga pe maualalo. Ae fa'atasi ai ma le "vaivai tatala" e iai faigata, e ui o le mea moni e faigofie mea uma iinei:
Fa'atonuga o mea e fai / pe'ā tu'uina atu le uafu e fa'atino ai galuega: / fa'aagaoioi le fa'alava o galuega: / – alavai tatala: “0” i le resitara o galuega e mafai ai e le N-MOS, “1” i le resitara galuega e tu'u ai le uafu i le mode Hi-Z ( E le o fa'agaoioia le P-MOS ) / - fa'aoso-toso: "0" i le tusi resitala o galuega e fa'aagaoioia ai le N-MOS, "1" i le tusi resitala o galuega e fa'agaoioia ai le P-MOS.
O le eseesega uma i le va o alavai tatala (alavai tatala) mai le “tu’i-toso” (tulei-toso) o le mea lea i le pine muamua e le mafai ona talia le tulaga HIGH: pe a tusia se tasi i le tusi resitala o galuega, e alu i le tulaga maualuga maualuga (maualuga impedance, Talofa-Z). Pe a tusia le zero, o le pine e amio tutusa i auala uma e lua, e le gata i le talafeagai ma le eletise.
I le tulaga masani o galuega faatino, e na'o le fa'asalalauina e le pine mea o lo'o i totonu o le tusi resitala o galuega. I le "suiga" o loʻo faʻatonutonuina e fesoʻotaʻiga tutusa (silasila i le 9.1.4):
Afai e fa'atulaga se pusi uafu e fai ma pine fa'atino, e fa'aletonu le resitara pine ma fa'afeso'ota'i le pine i le pine pito.
O isi galuega faatino o pine taitasi o loo faamatalaina i Uiga Uiga O lo'o iai le fa'amaumauga i luga o le ata na siiina mai. I le fesili pe o le a le mea e fai pe afai o se pine e tele isi galuega, o le tali e tuʻuina mai e se vaefaʻamatalaga i le faʻamatalaga:
Afai e tele peripheral e fa'aogaina le pine e tasi, e aloese ai mai fete'ena'iga i le va o isi galuega, e na'o le tasi le peripheral e tatau ona fa'aoga i le taimi, toggle i le fa'aogaina o le uati lautele e mafai ai (i le tusi resitala RCC talafeagai).
Ma le mea mulimuli, o pine i le tulaga fa'aulufale e iai fo'i le saoasaoa o le uati. O le isi lea mea e faʻasaoina ai le malosi; i la matou tulaga, matou te setiina i le maualuga ma galo ai.
O lea la: o loʻo matou faʻaogaina le SPI, o lona uiga e lua pine (faʻatasi ai ma faʻamaumauga ma faʻatasi ai ma se faʻailoga uati) e tatau ona avea ma "suiga faʻaoga-toso", ma le isi tasi (LAT) e tatau ona "toso masani". Ae a'o le'i tofia i latou, se'i o tatou feagai ma le SPI.
SPI
O le isi polokalame faʻaleaʻoaʻoga laiti
SPI poʻo le Serial Peripheral Interface (serial peripheral interface) o se faʻaoga faigofie ma sili ona aoga mo le faʻafesoʻotaʻi o se MK ma isi MKs ma le lalolagi i fafo i le lautele. O le mataupu faavae o lona faagaoioiga ua uma ona faamatalaina i luga, lea e uiga i le avetaavale LED Saina (i le tusi lesona, vaai vaega 25). E mafai e le SPI ona galue i le matai (“matai”) ma le pologa (“pologa”) faiga. SPI e fa auala autu, lea e le mafai ona faʻaaogaina uma:
MOSI, Master Output / Slave Input: o lenei pine e tuʻuina atu faʻamatalaga i le tulaga matai, ma maua faʻamatalaga i le tulaga pologa;
MISO, Master Input / Slave Output: i se isi itu, e maua i le matai, ma faʻasalalau i le pologa;
SCK, Uati Fa'asologa: fa'atulaga le tele o fa'asalalauga fa'amatalaga i le matai po'o le mauaina o se fa'ailoga uati i le pologa. E tatau ona taia pa'u;
SS, Slave Select: faatasi ai ma le fesoasoani a lenei auala, ua iloa e le pologa o loʻo manaʻomia se mea mai ia te ia. I luga o le STM32 ua taʻua o le NSS, lea N = leaga, i.e. e avea le pule ma pologa pe a iai le eleele i totonu o lenei alavai. E tu'ufa'atasia lelei ma le Open Drain Output mode, ae o le isi tala lena.
E pei o isi mea uma, SPI i luga ole STM32 e mauoa i galuega, lea e fai si faigata ona malamalama. Mo se faʻataʻitaʻiga, e mafai ona galue e le gata i le SPI, ae faʻapea foʻi ma le I2S interface, ma i totonu o faʻamaumauga o loʻo faʻafefiloi a latou faʻamatalaga, e tatau ona vavae ese le sili atu i se taimi talafeagai. O la matou galuega e matua faigofie lava: matou te manaʻomia le lafoina o faʻamatalaga e faʻaaoga ai naʻo le MOSI ma le SCK. Matou te o atu i le vaega 25.3.4 (faʻafesoʻotaʻi afa-duplex, fesoʻotaʻiga afa-duplex), lea matou te maua ai. 1 uati ma le 1 uaea fa'amaumauga e tasi (1 le uati fa'ailo ma le 1 tasi fa'amatalaga fa'amaumauga):
I lenei faiga, o loʻo faʻaogaina e le talosaga le SPI ile faʻasalalauga-naʻo pe naʻo le mauaina. / Transmit-only mode e tutusa ma le duplex mode: o faʻamatalaga e tuʻuina atu i luga o le pine transmit (MOSI i le master mode poʻo le MISO i le pologa mode), ma le pine maua (MISO poʻo le MOSI) e mafai ona faʻaaogaina e fai ma pine masani I / O . I lenei tulaga, e naʻo le talosaga e manaʻomia le le amanaʻiaina o le Rx buffer (afai e faitau, o le a leai se faʻamatalaga faʻafeiloaʻi iina).
Manaia, ole pine MISO e leai se totogi, tatou fa'afeso'ota'i le faailo LAT i ai. Seʻi o tatou vaʻavaʻai i le Slave Select, lea i luga o le STM32 e mafai ona faʻatautaia polokalame, lea e matua faigofie lava. Matou te faitau i le parakalafa o le igoa lava e tasi i le vaega 25.3.1 SPI Faʻamatalaga Lautele:
Polokalama fa'atonu NSS (SSM = 1) / Fa'amatalaga filifiliga a pologa o lo'o iai i le SSI bit o le resitala SPI_CR1. O le pine NSS fafo e tumau pea le saoloto mo isi mana'oga.
Ua o'o i le taimi e tusi ai i tusi resitala. Na ou filifili e faʻaaoga le SPI2, vaʻavaʻai mo lona tuatusi faʻavae i le faʻamaumauga - i le vaega 3.3 Faʻafanua Faʻamanatu:
Tatala le vaega 25.3.3 faʻatasi ai ma le faʻamatalaga faʻamalamalamaga "Faʻatonu SPI i le Master Mode":
1. Seti le fa'asologa fa'asologa o le uati i bit BR[2:0] i le resitala SPI_CR1.
O tusi resitala o loʻo aoina i le vaega tusi faʻamatalaga o le igoa lava e tasi. Sifi tuatusi (Fa'asa'o le tuatusi) mo CR1 - 0x00, e ala i le le mafai ona faʻamama uma vaega (Toe setiina le tau 0x0000):
E setiina e le BR bits le vaeluaga o le uati pule, ma fuafua ai le taimi e faʻaogaina ai le SPI. O la matou STM32 o le a avea ma 72 MHz, o le avetaʻavale LED, e tusa ai ma ana faʻamaumauga, e faʻagaoioia i le tele o taimi e oʻo atu i le 25 MHz, o lea e manaʻomia ai ona matou vaevaeina i le fa (BR [2: 0] = 001).
2. Seti le CPOL ma le CPHA bits e fa'amatala ai le sootaga i le va o le fa'aliliuina o fa'amatalaga ma le fa'asologa o le taimi o le uati (silasila i le ata i le itulau 240)
Talu ai o loʻo matou faitauina se faʻamatalaga iinei ae le o vaʻavaʻai i faʻataʻitaʻiga, seʻi o tatou vaʻavaʻai totoʻa i le faʻamatalaga o le CPOL ma le CPHA bits i le itulau 704 (SPI General Description):
Vaega o le Uati ma le polarity
I le fa'aogaina o le CPOL ma le CPHA bits o le SPI_CR1 resitara, e mafai ona e fa'apolokalameina le filifilia o feso'ota'iga fa taimi. O le CPOL (clock polarity) bit e pulea le tulaga o le faailo o le uati pe a leai se faʻamatalaga o loʻo lafoina. O lenei bit e pulea le matai ma le pologa. Afai e toe setiina le CPOL, e maualalo le pine SCK ile faiga malolo. Afai e seti le CPOL bit, ole SCK pine e maualuga ile taimi malolo.
Pe a seti le CPHA (vaega o le uati), o le strobe mailei maualuga o le pito lona lua o le faailo SCK (pa'ū pe a manino le CPOL, oso aʻe pe a seti CPOL). O faʻamaumauga e puʻeina e le suiga lona lua i le faailo o le uati. Afai e manino le CPHA bit, o le pito maualuga o le mailei strobe o le pito maualuga lea o le faailo SCK (mata pa'ū pe a seti CPOL, pito maualuga pe a kilia CPOL). E maua fa'amaumauga i le suiga muamua i le fa'ailo o le uati.
I le faʻaaogaina o lenei malamalama, matou te oʻo mai i le faaiuga e tatau ona tumau uma ia mea e lua, aua Matou te mananaʻo ia tumau pea le faʻailoga SCK pe a le faʻaaogaina, ma faʻamatalaga e tuʻuina atu i luga o le pito maualuga o le pulupulu (silasila i le Ata. Rising Edge i le DM634 fa'amaumauga).
I le ala, o iinei na matou feiloai muamua ai i se vaega o upu i le ST datasheets: i totonu ia i latou o le fuaitau "toe setiina le bit i le zero" ua tusia. e toe setiina teisiae leai ia kilia teisi, pei, mo se faʻataʻitaʻiga, Atmega.
3. Seti le DFF bit e iloa ai pe o le poloka faʻamaumauga o le 8-bit poʻo le 16-bit format
Na ou ave faʻapitoa se 16-bit DM634 ina ia aua neʻi faʻalavelave i le tuʻuina atu o faʻamatalaga 12-bit PWM, pei o le DM633. E talafeagai le seti DFF i le tasi:
4. Fa'atulaga le LSBFIRST bit i le SPI_CR1 resitala e fuafua ai le poloka poloka
LSBFIRST, e pei ona taʻu mai e lona igoa, faʻapipiʻi le faʻasalalauga ma le mea sili ona taua muamua. Ae e manaʻo le DM634 e maua faʻamatalaga e amata mai i le pito sili ona taua. O le mea lea, matou te tuʻuina atu e toe setiina.
5. I le faiga o meafaigaluega, afai e manaʻomia le faʻaogaina mai le pine NSS, faʻaoga se faailo maualuga i le pine NSS i le taimi atoa o le faʻasologa o le fesiitaiga. I le NSS software mode, seti le SSM ma SSI bits i le SPI_CR1 resitala. Afai o le pine NSS e tatau ona faʻaaogaina e fai ma gaioiga, naʻo le SSOE bit e manaʻomia ona seti.
Faʻapipiʻi le SSM ma le SSI e faʻagalo ai le NSS hardware mode:
#define SSI 0x0100
#define SSM 0x0200
_SPI2_ (_SPI_CR1) |= SSM | SSI; //enable software control of SS, SS high
6. E tatau ona seti le MSTR ma le SPE bits (na'o le setiina lava pe a maualuga le faailo NSS)
O le mea moni, faʻatasi ai ma nei vaega matou te faʻaigoaina le matou SPI o se matai ma faʻaalia:
SPI ua faʻatulagaina, seʻi o tatou tusi vave galuega e auina atu bytes i le avetaavale. Fa'aauau le faitau 25.3.3 "Fa'atulagaina le SPI i le fa'aoga matai":
Fa'atonuga o fa'amatalaga
E amata le felauaiga pe a tusi se byte i le Tx buffer.
O le byte fa'amaumauga o lo'o fa'apipi'iina i totonu o le resitara sifi i tutusa mode (mai le pasi i totonu) i le taimi o le tuʻuina atu o le bit muamua, a maeʻa ona tuʻuina atu i fa'asologa MOSI pine mode, muamua po'o le pito mulimuli i luma e fuafua i le seti o le LSBFIRST bit i le CPI_CR1 resitala. O le fuʻa TXE e faʻatulagaina pe a uma le tuʻuina atu o faʻamatalaga mai le Tx buffer i le resitala sifi, ma fa'atupu ai fo'i se fa'alavelave pe a fa'atulaga le TXEIE bit i le CPI_CR1 resitala.
Na ou faamamafaina ni nai upu i le faaliliuga e tosina atu ai le mafaufau i se tasi o vaega o le SPI faʻatinoina i le STM controllers. I luga ole Atmega le fu'a TXE (Tx Gaogao, Tx e gaogao ma sauni e maua faʻamatalaga) e naʻo le maeʻa ona tuʻuina atu le byte atoa i fafo. Ma o iinei o le fuʻa lea e setiina pe a uma ona faʻaofi le byte i totonu o le resitala o suiga i totonu. Talu ai o loʻo tuleia iina ma mea uma i le taimi e tasi (faʻatasi), ona faʻasolosolo faʻasolosolo faʻamaumauga, ua seti le TXE aʻo leʻi tuʻuina atoa le byte. E taua lenei mea aua i le tulaga o le tatou avetaavale LED, e tatau ona tatou tosoina le pine LAT pe a uma ona lafo всех fa'amaumauga, i.e. O le fu'a TXE na'o le a le lava mo i tatou.
O lona uiga e mana'omia se isi fu'a. Sei o tatou tilotilo i le 25.3.7 - "Tulaga Fu'a":
<…>
fu'a pisi
O le fu'a BSY ua seti ma fa'amama e meafaigaluega (tusi i ai e leai se aoga). O le fuʻa BSY o loʻo faʻaalia ai le tulaga o le SPI fesoʻotaʻiga layer.
E toe setiina:
pe a maeʻa le fesiitaiga (sei vagana ai i le master mode pe a faʻaauau le fesiitaiga)
pe a le atoatoa le SPI
pe a tula'i mai se fa'alavelave mata'utia (MODF=1)
Afai e le faʻaauau le faʻafeiloaʻiga, e kilia le fuʻa BSY i le va o faʻamatalaga taʻitasi
Lelei, o le a aoga lenei mea. Se'i tatou su'e po'o fea o iai le Tx buffer. Ina ia faia lenei mea, faitau le "SPI Data Register":
Bits 15:0 DR[15:0] Fa'amaumauga Fa'amaumauga
Fa'amatalaga maua po'o fa'amatalaga e tu'uina atu.
O le tusi resitala o faʻamaumauga ua vaevaeina i ni paʻu e lua - tasi mo le tusitusi (transmit buffer) ma le tasi mo le faitau (receive buffer). O le tusitusi i le tusi resitala o faʻamatalaga e tusi i le Tx buffer, ma le faitau mai le resitala faʻamaumauga o le a toe faʻafoʻi ai le tau o loʻo i totonu o le Rx buffer.
Ia, ma le tulaga resitala, lea e maua ai le TXE ma le BSY fuʻa:
Ia, talu ai tatou te manaʻomia le faʻasalalauina 16 taimi lua paita, e tusa ai ma le aofaʻi o gaioiga avetaʻavale LED, e pei o lenei:
void sendLEDdata()
{
LAT_low();
uint8_t k = 16;
do
{ k--;
dm_shift16(leds[k]);
} while (k);
while (_SPI2_(_SPI_SR) & BSY); // finish transmission
LAT_pulse();
}
Ae matou te le iloa pe faapefea ona toso le pine LAT, o lea matou te toe foʻi i le I/O.
Tofia pine
I le STM32F1, o tusi resitala e nafa ma le tulaga o pine e matua ese lava. E manino lava e sili atu i latou nai lo Atmega, ae e ese foi mai isi STM chips. Vaega 9.1 Fa'amatalaga Lautele ole GPIO:
Ta'itasi o fa'amoemoega lautele I/O ports (GPIO) e lua 32-bit resitara fa'atulagaina (GPIOx_CRL ma GPIOx_CRH), lua 32-bit fa'amaumauga (GPIOx_IDR ma GPIOx_ODR), se 32-bit seti/seti resitala (GPIOx_BSRR), 16-bit resitara toe setiina (GPIOx_BRR) ma se 32- resitara poloka poloka (GPIOx_LCKR).
O tusi resitala muamua e lua e le masani ai, ma e fai lava si le talafeagai, ona o le 16 port pine o loʻo salalau solo i luga o latou i se "fa bits per brother" format. O na. pine selo i le fitu o lo'o i le CRL, ae o isi o lo'o i le CRH. I le taimi lava e tasi, o isi tusi resitala o loʻo i ai ma le manuia vaega o pine uma o le taulaga - e masani ona totoe le afa "faʻaagaga".
Mo le faigofie, tatou amata mai le pito o le lisi.
Matou te le mana'omia se tusi resitala poloka.
O le seti ma le toe setiina o tusi resitala e matua malie lava ona latou te faaluaina le tasi i le isi: e mafai ona e tusia mea uma i le BSRR, lea o le maualuga 16 bits o le a toe setiina le pine i le zero, ma le pito i lalo o le a seti i le 1, pe mafai foi ona e faia. faʻaaoga le BRR, o le pito i lalo ole 16 bits e naʻo le toe setiina o le pine. Ou te fiafia i le filifiliga lona lua. O nei tusi resitala e taua aua latou te maua ai le avanoa atomic i pine:
Atomic Set po'o Toe Seti
E leai se mana'oga e fa'amalo fa'alavelave pe a fa'apolokalame GPIOx_ODR i le si'isi'i tulaga: tasi pe sili atu pusi e mafai ona suia i se fa'agaio'iga tusitusi atomika e tasi APB2. E maua lenei mea e ala i le tusia o se "1" i le seti / toe setiina le resitala (GPIOx_BSRR poʻo, mo naʻo le toe setiina, GPIOx_BRR) o le mea e manaʻomia ona suia. O isi vaega o le a tumau e le suia.
O fa'amaumauga fa'amaumauga e iai lava igoa fa'amalamalamaga - IDR = faiga Resitala Fa'atonu, tusi resitala fa'aoga; ODR = gaosiga Resitala Fa'atonu, tusi resitala galuega. Matou te le manaʻomia i latou i le poloketi o loʻo iai nei.
Ma le mea mulimuli, pulea resitala. Talu ai matou te fiafia i pine lona lua a le SPI, e taʻua o PB13, PB14 ma PB15, matou te vaʻavaʻai loa i le CRH:
Ma matou vaʻai e manaʻomia ona matou tusia se mea i ni vaega mai le 20 i le 31.
Ua uma ona matou iloa i luga aʻe o mea matou te mananaʻo mai pine, o lea o le a ou faia e aunoa ma se faʻamalama, naʻo loʻu fai atu o le MODE o loʻo faʻamaoti le itu (faʻapipiʻi pe a faʻapipiʻi uma i le 0) ma le saoasaoa o pine (matou te manaʻomia 50MHz, i.e. pine uma e lua i le "1"), ma le CNF e setiina le faiga: masani "push-pull" - 00, "alternative" - 10. I le faaletonu, e pei ona tatou vaʻai i luga, o pine uma e iai le tolu bit mai le pito i lalo (CNF0), na te setiina i latou i le tulaga mea faaopeopea.
Talu ai ou te fuafua e fai se isi mea i lenei vaʻa, mo le faigofie ua ou faʻamalamalamaina uma tulaga taua MODE ma CNF mo le pito i lalo ma le pito i luga.
(LAT_low na'o le inertia, e fa'apea lava, tu'u pea)
O lea ua lelei mea uma, ae e le aoga. Ona o le STM32 lea, latou te faʻasaoina le eletise, o lona uiga e te manaʻomia le faʻaogaina o le faʻaogaina o peripherals manaʻomia.
Ki le uati
O le uati, e ta'ua foi o le Uati, e nafa ma le uati. Ma ua mafai ona tatou matauina le faapuupuuga RCC. Matou te suʻeina i totonu o faʻamaumauga: o le Toe Seti ma le Pulea o le Uati.
E pei ona taʻua i luga, o le mea e lelei ai, o le vaega pito sili ona faigata o le autu autu na faia mo i matou e tagata mai le STM, lea matou te faʻafetai tele ia i latou (o le a ou toe tuʻuina atu se fesoʻotaʻiga i Le upega tafaʻilagi a Di Halt, e fa'amalamalama manino ai le le mautonu). Matou te mana'omia na'o resitara e nafa ma le fa'aagaoioi o le fa'aogaina o le uati (Peripheral Clock Enable Registers). Muamua, seʻi o tatou suʻeina le tuatusi autu o le RCC, o loʻo i le amataga lava o le "Memory Map":
Ona kiliki lea i luga o le sootaga lea e te taumafai ai e suʻe se mea i totonu o le ipu, pe, sili atu, alu i faʻamatalaga o le mafai ona resitala mai vaega e uiga i mafai ona resitala. O fea tatou te maua ai le RCC_APB1ENR ma le RCC_APB2ENR:
Ma o latou, e tusa ai, o loʻo i ai vaega e aofia ai le faʻamalama o le SPI2, IOPB (I / O Port B) ma isi galuega (AFIO).
Afai e te maua le avanoa ma le manaʻo e suʻe, faʻafesoʻotaʻi le DM634 pei o lenei: DAI i le PB15, DCK i le PB13, LAT i le PB14. Matou te faʻamalosia le avetaavale mai le 5 volts, aua nei galo e faʻafesoʻotaʻi le eleele.
STM8 PWM
PWM ile STM8
A o naʻo loʻu fuafuaina o lenei tusiga, na ou filifili, e fai ma faʻataʻitaʻiga, e taumafai e faʻataʻitaʻiina nisi o galuega a se vaʻa e le masani ai e faʻaaoga ai naʻo se faʻamatalaga, ina ia ou le faʻamutaina i se fai seevae e aunoa ma ni seevae. STM8 sa lelei mo lenei matafaioi: muamua, sa i ai ni nai laupapa Saina ma STM8S103, ma lona lua, e le lauiloa tele, ma o le mea lea o le faaosoosoga e faitau ma saili se fofo i luga o le Initaneti e faalagolago i le leai o nei fofo.
Ona o le faaletonu, STM8 galue i le taimi ole 2 MHz, e tatau ona faasaʻo vave.
HSI (High Speed Internal) Uati
O le faailo o le uati o le HSI e maua mai i totonu ole 16 MHz RC oscillator ma se vaeluaga e mafai ona fa'apolokalameina (1 i le 8). O lo'o fa'atulaga i le tusi resitala vaelua o le uati (CLK_CKDIVR).
Manatua: i le amataga, o le HSI RC oscillator ma se vaeluaga o le 8 ua filifilia e avea ma punavai autu o le faailo o le uati.
Matou te mauaina le tuatusi resitala i le faʻamatalaga, le faʻamatalaga i le refman ma vaʻai e manaʻomia ona faʻamama le resitala:
Talu ai o le a tatou faʻatautaia le PWM ma faʻafesoʻotaʻi le LED, seʻi o tatou tilotilo i le pinout:
E laʻititi le pu, e tele galuega e faʻagata i luga o pine tutusa. O le mea o lo'o i totonu o fa'amaufa'ailoga sikuea o le "alternative functionality", e fesuia'i e "option bytes" (filifiliga bytes) - o se mea e pei o Atmega fuses. E mafai ona e suia a latou tau faʻapolokalame, ae e le manaʻomia, aua O le galuega fou e faatoa fa'agaoioia pe a uma le toe fa'afouina. E sili atu ona faigofie le faʻaogaina o le ST Visual Programmer (sii mai i le Visual Develop), lea e mafai ona suia ai nei bytes. O le pinout o loʻo faʻaalia ai o pine CH1 ma CH2 o le taimi muamua o loʻo natia i puipui sikuea; e manaʻomia le setiina o le AFR1 ma le AFR0 bits i le STVP, ma o le lona lua o le a faʻafeiloaʻi ai foi le gaosiga CH1 o le taimi lona lua mai le PD4 i le PC5.
O lea la, 6 pine o le a pulea le LEDs: PC6, PC7 ma PC3 mo le taimi muamua, PC5, PD3 ma PA3 mo le lona lua.
O le setiina o pine I/O i latou lava i luga o le STM8 e sili atu ona faigofie ma sili atu ona talafeagai nai lo le STM32:
masani mai le tusi resitala o faʻamatalaga o Atmega DDR (Fa'amatalaga Fa'atonu Tusi Resitala): 1 = galuega faatino;
o le resitala muamua o le CR1, pe a gaosia, seti le faiga o le tulei-toso (1) poʻo le alavai tatala (0); talu ai ou te faʻafesoʻotaʻi le LED i le pu ma cathodes, ou te tuʻuina zeros iinei;
o le tusi resitala lona lua CR2, pe a gaosia, seti le saoasaoa uati: 1 = 10 MHz
Otometi toe uta, AR - tau o le autoloadable e oʻo atu i le taimi e faitau ai (vaitaimi pusi);
Fa'afou mea na tupu, UEV - o se mea e tupu pe a faitau le taimi i le AR;
PWM Tiute Taamilosaga - PWM fa'asologa o tiute, e masani ona ta'ua o le "tulaga tiute";
Pu'e/Faatusatusa Tau - tau mo le pueina / faʻatusatusa, lea na faitau i ai le taimi o le a faia se mea (i le tulaga o le PWM, e fesuiaʻi le faʻailoga o le gaosiga);
Fuatau muamua – tau uta muamua. Faatusatusa tau e le mafai ona sui a'o tata le taimi, a leai o le a malepe le taamilosaga PWM. O le mea lea, o tau faʻasalalau fou e tuʻuina i totonu o se paʻu ma toso ese pe a oʻo le taimi i le faaiuga o lona countdown ma toe setiina;
Fa'aoga pito и Faiga fa'aogatotonu - faʻaogaina i luga o le tuaoi ma le ogatotonu, tutusa ma Atmel's PWM vave и Vaega-sa'o PWM.
OCiREF, Fa'ailoga Fa'atusa Fa'atusa - fa'asinoga fa'ailoga fa'ailoga, o le mea moni, o mea o lo'o fa'aalia i luga o le pine tutusa i le PWM mode.
E pei ona uma ona manino mai le pinout, e lua taimi e iai le malosi PWM - muamua ma le lua. E lua uma 16-bit, o le muamua e tele mea faʻaopoopo (aemaise lava, e mafai ona faitau uma i luga ma lalo). Matou te manaʻomia uma e galulue tutusa, o lea na ou filifili ai e amata i le mea e sili atu le mativa lona lua, ina ia le faʻafuaseʻi ona faʻaaogaina se mea e le o iai. O nisi faʻafitauli o le faʻamatalaga o le PWM functionality o timers uma i totonu o le tusi faʻamatalaga o loʻo i totonu o le mataupu e uiga i le taimi muamua (17.5.7 PWM Mode), o lea e tatau ai ona e oso i tua ma luma i le pepa atoa i taimi uma.
O le PWM i luga ole STM8 e iai se avanoa taua ile PWM ile Atmega:
PWM Fa'atasi tuaoi
Fa'atonuga fa'amaumauga mai lalo i luga
O lo'o fa'agaoioi le faitauga pito i lalo pe a kilia le bit DIR i le resitara TIM_CR1
Faataitaiga:
O le faʻataʻitaʻiga e faʻaaogaina le muamua PWM mode. Ole fa'ailoga ole PWM ole OCiREF e maualuga ile umi ole TIM1_CNT <TIM1_CCRi. A leai e mana'omia se tulaga maualalo. Afai e sili atu le tau fa'atusatusa i le tusi resitala TIM1_CCRi nai lo le tau o le autoload (TIM1_ARR register), o le fa'ailoga OCiREF e taofia i le 1. Afai o le fa'atusatusaga o le 0, OCiREF o lo'o taofia ile zero....
STM8 taimi i le taimi fa'afouina mea na tupu siaki muamua faatusatusa tau, ona faatoa maua ai lea o se faailoilo faasinomaga. O le taimi muamua a Atmega e faʻafefeteina ona faʻatusatusa lea, ma iʻu ai compare value == 0 o le gaosiga o se nila, lea e tatau ona taulimaina i se auala (mo se faʻataʻitaʻiga, e ala i le faʻaogaina o le faʻaogaina o le manatu).
O le a la le mea matou te mananaʻo e fai: 8-bit PWM (AR == 255), faitau mai le pito i lalo e oo i le pito i luga, faʻaoga i le tuaoi. Talu ai o matauila o lo'o feso'ota'i atu i le pu e ala i cathodes, e tatau i le PWM ona maua le 0 (LED i luga) seia faatusatusa tau ma le 1 mulimuli ane.
Ua uma ona tatou faitau e uiga i nisi Faiga PWM, o lea matou te maua ai le resitala mana'omia o le taimi lona lua e ala i le su'esu'eina i le tusi fa'asino mo lenei fuaitau (18.6.8 - TIMx_CCMR1):
110: Faiga muamua PWM – pe a faitau mai le pito i lalo i le pito i luga, o le alalaupapa muamua o loʻo galue aʻo TIMx_CNT <TIMx_CCR1. A leai, o le auala muamua e le o galue. [o isi i totonu o le pepa o loʻo i ai se kopi-faʻapipiʻi sese mai le taimi 1] 111: Faiga lona lua PWM - pe a faitau mai le pito i lalo i luga, o le alalaupapa muamua e le o galue ae TIMx_CNT <TIMx_CCR1. A leai, o lo'o ola le alalaupapa muamua.
Talu ai o LED e fesoʻotaʻi atu i le MK e cathodes, o le auala lona lua e fetaui ma i matou (o le muamua foi, ae matou te le o iloa lena mea).
Bit 3 OC1PE: Fa'aaga pine 1 mua'i uta
0: O le resitala muamua ile TIMx_CCR1 ua le mafai. E mafai ona e tusi i le TIMx_CCR1 i soo se taimi. O le tau fou e galue vave.
1: Ua mafai le resitala muamua i luga ole TIMx_CCR1. Fa'agaioiga faitau/tusi e maua le tusi resitala muamua. O le TIMx_CCR1 tau fa'amuamua e fa'aulu i totonu o le tusi resitala ata i taimi o fa'afouga ta'itasi.
*Manatua: Mo le faiga o le PWM e galue lelei, e tatau ona fa'agaoioia tusi resitala muamua. E le mana'omia lenei mea ile fa'ailoga se tasi (o le OPM bit o lo'o tu'u ile TIMx_CR1 resitala).
Lelei, ia tatou kiina mea uma tatou te manaʻomia mo alavai e tolu o le taimi lona lua:
O le taimi lona lua e mafai ona faitau mai le pito i lalo i luga, faʻaogaina i luga o le tuaoi, e leai se mea e manaʻomia ona suia. Sei o tatou seti le vaeluaga o taimi, mo se faataitaiga, i le 256. Mo le taimi lona lua, o le vaeluaga e seti i le TIM2_PSCR resitala ma o se malosiaga e lua:
Pau lava le mea o loʻo totoe o le ki lea o faaiuga ma le taimi lona lua lava ia. O le faafitauli muamua e foia e le resitala Pu'e/Faatusatusa mafai ai ona: e lua, tolu alāvai o lo'o fa'ata'ape'apeina i luga a'e o latou asymmetrically. O iinei e mafai ai foi ona tatou iloa e mafai ona suia le polarity o le faailo, i.e. i le mataupu faavae, na mafai ona faʻaogaina le PWM Mode 1. Matou te tusia:
Sei o tatou tusia se analogue faigofie o AnalogWrite (), lea o le a faʻafeiloaʻi ai le tau moni i le taimi mo faʻatusatusaga. O tusi resitala e fa'aigoaina fa'apitoa Pu'e/Faatusatusa tusi resitala, e lua i latou mo alalaupapa ta'itasi: o le 8 bits maualalo i le TIM2_CCRxL ma le maualuga i le TIM2_CCRxH. Talu ai ua matou fatuina se 8-bit PWM, ua lava lea e tusi ai naʻo nai mea sili ona taua:
O le a maitauina e le tagata faitau faʻalogo o loʻo i ai se PWM laʻititi laʻititi, e le mafai ona maua le 100% faʻatumu (i le maualuga o le tau o le 255, o le faailo e fesuiaʻi mo le taamilosaga e tasi). Mo LEDs e le afaina, ma e mafai e le tagata faitau faʻalogo ona mateina pe faʻafefea ona faʻaleleia.
O le PWM i le taimi lona lua e galue, seʻi o tatou agai i luma i le muamua.
O le taimi muamua e tutusa lelei lava pusi i totonu o tusi resitala e tasi (ae na'o na vaega na tumau "fa'apolopolo" i le taimi lona lua o lo'o fa'aaogaina malosi i le muamua mo ituaiga uma o mea sili atu). O le mea lea, ua lava le suʻeina o tuatusi o resitara tutusa i le faʻamaumauga ma kopi le code. Ia, sui le tau o le vaeluaga o taimi, aua... o le taimi muamua e manaʻo e le maua se mana o le lua, ae o se tau saʻo 16-bit i le lua resitala Prescaler Maualuga и maulalo. Matou te faia mea uma ma ... e le aoga le taimi muamua. O le a le mea ua tupu?
O le faʻafitauli e mafai ona foia e ala i le vaʻavaʻai i le vaega atoa e uiga i le resitalaina o le taimi 1, lea tatou te suʻeina ai le mea e le o iai i le taimi lona lua. O le ai ai 17.7.30 Resitala malolo (TIM1_BKR), pe a iai le vaega lenei:
Pau lava le mea e mautinoa i le taimi nei, o le code iina.
STM8 Multiplex
Fa'atele i luga ole STM8
O le la'ititi lona tolu o le fa'afeso'ota'i le valu RGB LEDs i le taimi lona lua i le PWM mode ma fa'aali lanu eseese. E faʻavae i luga o le manatu o le LED multiplexing, o lona uiga afai e te ki ma tape LED i le vave, vave lava, e foliga mai ia i matou o loʻo i ai pea (tumau o le vaai, inertia o le vaaiga vaaia). Sa ou faia i se tasi taimi se mea e pei o lenei i Arduino.
O le algorithm o galuega e pei o lenei:
faʻafesoʻotaʻi le anode o le RGB LED muamua;
tutu i ai, auina atu faailoilo talafeagai i cathodes;
fa'atali seia mae'a le taamilosaga PWM;
faʻafesoʻotaʻi le anode o le lua RGB LED;
tutu i ai...
Ia, ma isi. O le mea moni, mo le faʻaogaina matagofie e manaʻomia le fesoʻotaʻi o le anode ma le LED e "muina" i le taimi e tasi. Ia, pe toetoe lava. I soʻo se tulaga, e manaʻomia ona matou tusia se faʻailoga e maua ai tulaga taua i laina e tolu o le taimi lona lua, suia pe a oʻo i le UEV, ma i le taimi lava e tasi e suia ai le RGB LED o loʻo galue nei.
Talu ai e otometi le fa'aliliuina o le LED, e mana'omia le faia o se "manatua vitio" lea o le a maua ai e le fa'alavelave fa'alavelave fa'amaumauga. O se fa'asologa faigofie lenei:
uint8_t colors[8][3];
Ina ia mafai ona suia le lanu o se LED patino, o le a lava le tusi o tau manaʻomia i totonu o lenei laina. Ma o le fesuiaiga o le a nafa ma le numera o le LED galue
uint8_t cnt;
Demux
Mo le fa'aopoopoina lelei, matou te mana'omia, e ese lava, se CD74HC238 demultiplexer. Demultiplexer - o se pu e faʻaogaina le faʻaogaina i meafaigaluega <<. E ala i pine e tolu (bits 0, 1 ma 2) matou te fafagaina se numera tolu-bit X, ma i le tali e faʻagaoioia ai le numera o galuega (1<<X). O fa'aoga o lo'o totoe o le pu e fa'aaogaina e fua ai le mamanu atoa. Matou te manaʻomia lenei vaʻa e le gata e faʻaitiitia ai le numera o pine o loʻo nofoia o le microcontroller, ae faʻapea foʻi mo le saogalemu - ina ia aua neʻi faʻafuaseʻi ona faʻaalia le tele o LED nai lo le mafai ma aua le mu le MK. E tasi le sene le tau o le chip ma e tatau ona teuina i taimi uma i lau kapoti vaila'au i lou fale.
O la matou CD74HC238 o le a nafa ma le tuʻuina atu o le voltage i le anode o le LED manaʻomia. I totonu o se multiplex atoatoa, o le a tuʻuina atu le voltage i le koluma e ala i le P-MOSFET, ae i lenei faʻataʻitaʻiga e mafai saʻo, aua e toso 20 mA, e tusa ai ma fa'atonuga aupito maualuga i le fa'amaumauga. Mai Pepa fa'amaumauga CD74HC238 matou te manaʻomia pinouts ma lenei pepa faʻataʻitaʻi:
H = tulaga maualuga voltage, L = tulaga maualalo, X - e le popole
Matou te faʻafesoʻotaʻi E2 ma E1 i le eleele, E3, A0, A1 ma A3 i pine PD5, PC3, PC4 ma PC5 o STM8. Talu ai o le laulau o loʻo i luga o loʻo i ai uma tulaga maualalo ma maualuga, matou te faʻapipiʻiina nei pine e fai ma pine toso.
PWM
PWM i le taimi lona lua ua faʻatulagaina i le auala lava e tasi e pei o le tala muamua, ma lua eseesega:
Muamua, tatou te manaʻomia le faʻaogaina o le faʻalavelave Fa'afou mea na tupu (UEV) lea o le a taʻua ai se galuega e sui ai le LED galue. E faia lenei mea e ala i le suia o le bit Fa'afou Fa'alavelave Fa'aaga i se tusi resitala ma se igoa tau
O le eseesega lona lua e fesoʻotaʻi ma le faʻalavelave o le multiplexing, pei ole ghosting – fa'ase'e mumu o diodes. I la matou tulaga, atonu e foliga mai ona o le taimi, na mafua ai le faʻalavelave i luga o le UEV, o loʻo faʻaauau pea ona siaki, ma e leai se taimi o le faʻalavelave faʻalavelave e sui ai le LED aʻo leʻi amata ona tusi se mea i pine. Ina ia foia lenei mea, e tatau ona e fesuiaʻi le manatu (0 = maualuga le susulu, 255 = leai se moli) ma aloese mai le mamafa o le taamilosaga o tiute. O na. fa'amautinoa pe a mae'a le UEV e alu uma le LED mo le ta'amilosaga PWM e tasi.
Aloese mai le seti o le r, g ma le b i le 255 ma manatua e fesuiai pe a faaaogaina.
Fa'alavelave
O le uiga o le faʻalavelave o le i lalo o nisi tulaga e taofi le puʻeina o le polokalama autu ma valaʻau nisi galuega i fafo. E tupu fa'alavelave ona o a'afiaga i fafo po'o totonu, e aofia ai le taimi.
Ina ua matou faia muamua se poloketi i le ST Visual Develop, faʻaopoopo i main.c matou maua se faamalama ma se faila lilo stm8_interrupt_vector.c, otometi ona aofia i totonu o le poloketi. I lenei faila, ua tofia se galuega i faʻalavelave taʻitasi NonHandledInterrupt. E tatau ona fusifusia a tatou galuega i le faʻalavelave manaʻomia.
O lo'o iai le laulau o vete fa'alavelave, lea matou te maua ai mea matou te mana'omia:
13 TIM2 fa'afouga/so'o
14 TIM2 pu'e/fa'atusatusa
Matou te manaʻomia le sui o le LED i le UEV, o lea matou te manaʻomia le faʻalavelave #13.
E tusa ai, muamua, i le faila stm8_interrupt_vector.c Suia le igoa faaletonu o le galuega e nafa ma le fa'alavelave Numera 13 (IRQ13) ia oe:
{0x82, TIM2_Overflow}, /* irq13 */
Lona lua, e tatau ona tatou fatuina se faila main.h fa'atasi ai ma mea nei:
Ma le mea mulimuli, tusi lenei galuega i lau main.c:
@far @interrupt void TIM2_Overflow (void)
{
PD_ODR &= ~(1<<5); // вырубаем демультиплексор
PC_ODR = (cnt<<3); // записываем в демультиплексор новое значение
PD_ODR |= (1<<5); // включаем демультиплексор
TIM2_SR1 = 0; // сбрасываем флаг Update Interrupt Pending
cnt++;
cnt &= 7; // двигаем счетчик LED
TIM2_CCR1L = ~colors[cnt][0]; // передаем в буфер инвертированные значения
TIM2_CCR2L = ~colors[cnt][1]; // для следующего цикла ШИМ
TIM2_CCR3L = ~colors[cnt][2]; //
return;
}
Pau lava le mea o loʻo totoe o le mafai lea ona faʻalavelave. E faia lenei mea i le faʻaaogaina o le assembler command rim - e tatau ona e suʻeina i totonu Tusi Lesona Polokalama:
//enable interrupts
_asm("rim");
O le isi poloaiga assembler o le sim – tape fa'alavelave. E tatau ona tapeina aʻo tusia ni tau fou i le "video memory", ina ia le faʻalavelaveina le faʻalavelave i le taimi sese e le faʻaleagaina ai le laina.
Afai e maua e se tasi e aoga lenei tusiga, ona ou le tusia fua lea. O le a ou fiafia e maua faʻamatalaga ma faʻamatalaga, o le a ou taumafai e tali mea uma.