Π tapany voalohany Niezaka nilaza tamin'ny injeniera elektronika fialamboly aho izay nihalehibe tamin'ny pataloha Arduino ny fomba sy ny antony tokony hamakian'izy ireo ny datasheets sy ny antontan-taratasy hafa ho an'ny microcontrollers. Lasa lehibe ilay lahatsoratra, ka nampanantena aho fa hampiseho ohatra azo ampiharina ao aminβny lahatsoratra mitokana. Eny, niantso ny tenany ho holatra ronono izy...
Androany dia hasehoko anao ny fomba fampiasana ny datasheets hamahana tena tsotra, fa ilaina amin'ny tetikasa maro, asa amin'ny STM32 (Blue Pill) sy STM8 controllers. Ny tetikasa demo rehetra dia natokana ho an'ny LED ankafiziko indrindra, hanazava azy ireo be dia be izahay, izay tsy maintsy hampiasantsika ireo karazana periferika mahaliana rehetra.
Ny lahatsoratra indray dia nivadika ho lehibe, noho izany dia nataoko ny votoatiny:
Disclaimer: Tsy injeniera aho, tsy mody manana fahalalana lalina momba ny elektronika, natao ho an'ny mpankafy toa ahy ny lahatsoratra. Raha ny marina, dia nihevitra ny tenako ho mpanatrika lasibatra aho roa taona lasa izay. Raha nisy nilaza tamiko avy eo fa tsy mampatahotra ny mamaky ny angon-drakitra amin'ny puce tsy mahazatra, dia tsy ho nandany fotoana be aho nitadiavana kaody sasany tao amin'ny Internet ary nanamboatra tehina miaraka amin'ny hety sy kasety adhesive.
Ny ifantohan'ity lahatsoratra ity dia amin'ny angon-drakitra fa tsy tetikasa, noho izany dia mety tsy dia milamina loatra ny kaody ary matetika tery. Ny tetikasa dia tena tsotra, na dia mety ho an'ny olom-pantatra voalohany amin'ny chip vaovao.
Manantena aho fa ny lahatsoratro dia hanampy olona iray amin'ny dingana mitovy amin'ny asitrika amin'ny fialamboly.
STM32
LED 16 miaraka amin'ny DM634 sy SPI
Tetikasa kely mampiasa Blue Pill (STM32F103C8T6) sy mpamily LED DM634. Amin'ny fampiasana ny angona, dia hamantatra ny mpamily, seranan-tsambo STM IO ary manamboatra SPI.
DM634
Chip Taiwanese misy 16 16-bit PWM outputs, azo ampifandraisina amin'ny rojo. Ny modely 12-bit ambany dia fantatra amin'ny tetikasa an-trano Lightpack. Tamin'ny fotoana iray, nisafidy ny DM63x sy ny TLC5940 fanta-daza, dia nisafidy DM aho noho ny antony maro: 1) TLC amin'ny Aliexpress dia tena sandoka, fa tsy ity; 2) DM manana PWM autonomous miaraka amin'ny mpamokatra fatrany manokana; 3) azo vidiana amin'ny vidiny mora any Moskoa izy io, fa tsy miandry parcel avy amin'i Ali. Ary, mazava ho azy, dia nahaliana ny mianatra ny fomba hifehy ny chip ny tenanao, fa tsy mampiasa tranomboky efa vonona. Ny chips dia aseho amin'izao fotoana izao ao amin'ny fonosana SSOP24; mora apetraka amin'ny adaptatera izy ireo.
Satria Taiwanese ny mpanamboatra, Takela-daza ny chip dia voasoratra amin'ny teny anglisy sinoa, izay midika fa hahafinaritra. Voalohany dia mijery ny pinout isika (Pin Connection(Famaritana Pin). 16 pts:
Loharanom-pandrefesana DC (Taratasy misokatra)
hilentika / Open-drain Output - tatatra; loharanon'ny komandy miditra; Ny vokatra dia mifandray amin'ny tany ao amin'ny fanjakana mavitrika - ny LED dia mifandray amin'ny mpamily amin'ny cathodes. Amin'ny lafiny elektrΓ΄nika, mazava ho azy fa tsy "faritra misokatra" izany (tatatra misokatra), fa ao amin'ny datasheets dia hita matetika ity fanendrena ho an'ny tsimatra ity.
Ny fanoherana ivelany eo anelanelan'ny REXT sy GND mba hametrahana ny sanda ankehitriny
Misy resistor reference apetraka eo anelanelan'ny PIN sy ny tany REXT, izay mifehy ny fanoherana anatiny amin'ny vokatra, jereo ny tabilao ao amin'ny pejy faha-9 amin'ny datasheet. Ao amin'ny DM634, io fanoherana io dia azo fehezin'ny rindrambaiko ihany koa, mametraka ny famirapiratana ankapobeny (famirapiratana maneran-tany); Tsy hiditra amin'ny antsipiriany amin'ity lahatsoratra ity aho, hametraka resistor 2.2 - 3 kOhm eto fotsiny aho.
Mba hahatakarana ny fomba hifehy ny chip, andeha hojerentsika ny famaritana ny fitaovana interface tsara:
Eny, indro, Anglisy Sinoa amin'ny voninahiny rehetra. Ny fandikana izany dia olana, azonao atao ny mahatakatra izany raha tianao, fa misy fomba iray hafa - jereo ny fomba voalaza ao amin'ny datasheet ny fifandraisana amin'ny TLC5940 mitovy amin'ny fiasa:
... Pins telo ihany no ilaina hampidirana angona ao amin'ilay fitaovana. Ny sisiny miakatra amin'ny famantarana SCLK dia mamindra ny angon-drakitra avy amin'ny pin SIN mankany amin'ny rejisitra anatiny. Rehefa feno ny angon-drakitra rehetra dia misy famantarana XLAT avo lenta fohy mametaka ny angon-drakitra nafindra amin'ny rejisitra anatiny. Ny rejisitra anatiny dia vavahady ateraky ny haavon'ny famantarana XLAT. Ny angon-drakitra rehetra dia ampitaina kely indrindra aloha.
Ny teny famehezana dia hita matetika ao amin'ny antontan-taratasy momba ny chips ary adika amin'ny fomba isan-karazany, noho izany dia hamela ny tenako aho mba hahazoako fahalalana.
programa fanabeazana kelyNy mpamily LED dia rejistra shift amin'ny ankapobeny. "Shift" (fiovΓ na) amin'ny anarana - fihetsehan'ny angon-drakitra ao anatin'ny fitaovana: ny bitika vaovao rehetra atsofoka ao anatiny dia manosika ny rojo manontolo handroso eo anoloany. Koa satria tsy misy olona te-hijery ny fikorontanan'ny jiro LED mandritra ny fiovan'ny toetr'andro, ny dingana dia atao amin'ny rejisitra buffer misaraka amin'ny rejisitra miasa amin'ny alΓ lan'ny damper (famehezana) dia karazana efitra fiandrasana izay andaminana ny bitika araka ny filaharany. Rehefa vonona ny zava-drehetra, dia misokatra ny shutter ary mandeha miasa ny bits, manolo ny andiany teo aloha. teny famehezana Ao amin'ny antontan-taratasy ho an'ny microcircuits dia saika midika hoe damper toy izany, na inona na inona fitambarana ampiasaina.
Noho izany, ny famindrana angon-drakitra mankany amin'ny DM634 dia atao toy izao: mametraka ny fampidirana DAI amin'ny sandan'ny kely indrindra amin'ny LED lavitra, misintona DCK miakatra sy midina; apetraho amin'ny sandan'ny bit manaraka ny fampidirana DAI, sintony ny DCK; ary toy izany hatrany mandra-pamindra ny bits rehetra (miditra ao), ary avy eo dia misintona ny LAT. Azo atao amin'ny tanana izany (bit-bang), fa tsara kokoa ny mampiasa interface tsara SPI namboarina manokana ho an'ity, satria aseho amin'ny STM32 amin'ny dika roa.
Blue Pill STM32F103
Fampidirana: Ny mpanara-maso STM32 dia sarotra kokoa noho ny Atmega328 noho ny toa mampatahotra azy ireo. Ankoatra izany, noho ny antony fitsitsiana angovo, saika ny periferika rehetra dia tapaka eo am-piandohana, ary ny famantaran'ny famantaranandro dia 8 MHz avy amin'ny loharano anatiny. Soa ihany fa ny STM programmer dia nanoratra kaody izay mitondra ny chip mankany amin'ny "kajy" 72 MHz, ary ny mpanoratra ny IDE rehetra fantatro dia nampiditra izany tao amin'ny dingana fanombohana, ka tsy mila famantaranandro isika (fa azonao atao raha tena tianao). Saingy tsy maintsy averinao ny periferika.
Documentation: Blue Pill dia miaraka amin'ny chip STM32F103C8T6 malaza, misy antontan-taratasy roa ilaina amin'izany:
Takela-daza ho an'ny microcontrollers STM32F103x8 sy STM32F103xB;
Ao amin'ny datasheet isika dia mety ho liana amin'ny:
Pinouts - chip pinouts - raha toa ka manapa-kevitra ny hanao ny boards ny tenantsika;
Sarintany fitadidiana - sarintany fitadidiana ho an'ny puce manokana. Ny Boky TorolΓ lana dia manana sarintany ho an'ny tsipika manontolo, ary misy rejisitra izay tsy ananantsika.
Tabilao Famaritana Pin - mitanisa ny asa lehibe sy hafa amin'ny tsimatra; ho an'ny "pillule manga" dia azonao atao ny mahita sary mety kokoa amin'ny Internet miaraka amin'ny lisitry ny pin sy ny asany. Noho izany, avy hatrany dia google Blue Pill pinout izahay ary mitazona ity sary ity eo am-pelatanana:
NB: nisy lesoka teo amin'ny sary avy amin'ny Internet, izay voamarika tao amin'ny fanehoan-kevitra, misaotra anao amin'izany. Ny sary dia nosoloina, fa ity no lesona - tsara kokoa ny manamarina ny vaovao fa tsy amin'ny datasheets.
Esory ny datasheet izahay, sokafy ny Boky TorolΓ lana ary manomboka izao dia io ihany no ampiasainay.
Fomba fiasa: miatrika fampidirana / famoahana mahazatra izahay, amboary ny SPI, avereno ny periferika ilaina.
Input Output
Ao amin'ny Atmega328, ny I/O dia ampiharina amin'ny fomba tsotra, ka izany no mahatonga ny habetsahan'ny safidy STM32 mety hampisafotofoto. Famintinana ihany no ilaintsika ankehitriny, fa na dia ireto aza dia manana safidy efatra:
"Pull-push" (hanoto-fihoaram-) dia ny vokatra mahazatra avy amin'ny Arduino, ny pin dia afaka maka ny sanda na HIGH na LOW. Fa amin'ny "open drain" misy fahasarotana, na dia tsotra aza ny zava-drehetra eto:
Fametrahana fivoahana / rehefa voatendry ho amin'ny famoahana ny seranana: / alefa ny buffer output: / - fomba fanondrahana misokatra: "0" ao amin'ny rejisitra famoahana dia ahafahan'ny N-MOS, "1" ao amin'ny rejisitra famoahana dia miala amin'ny seranana amin'ny fomba Hi-Z ( Tsy mihetsika ny P-MOS ) / - maody push-pull: "0" ao amin'ny rejisitra famoahana dia manetsika ny N-MOS, "1" ao amin'ny rejisitra famoahana dia manetsika P-MOS.
Ny fahasamihafana rehetra eo amin'ny tatatra misokatra (tatatra misokatra) avy amin'ny "push-pull" (hanoto-fihoaram-) dia ny hoe ao amin'ny pin voalohany dia tsy afaka manaiky ny fanjakana HIGH: rehefa manoratra iray amin'ny rejisitra famoahana dia miditra amin'ny fomba fanoherana avo (impedance avo, Hi-Z). Rehefa manoratra aotra, ny pin dia mitovy amin'ny fomba roa, na lojika na elektrika.
Amin'ny fomba fiasa mahazatra, ny pin dia mandefa fotsiny ny votoatin'ny rejisitra famoahana. Ao amin'ny "alternative" dia fehezin'ny periferika mifanaraka amin'izany (jereo 9.1.4):
Raha amboarina ho pin fampiasa hafa ny bit port, dia kilemaina ny rejisitra pin ary mifandray amin'ny pin periferika ny pin.
Fampiasa hafa ho an'ny pin tsirairay dia voalaza ao Famaritana Pin Ny datasheet dia eo amin'ny sary alaina. Ho an'ny fanontaniana ny amin'ny tokony hatao raha misy pin manana asa hafa maro, ny valiny dia omen'ny fanamarihana ambany pejy ao amin'ny datasheet:
Raha periferika maromaro no mampiasa pin mitovy, mba hisorohana ny fifandirana eo amin'ny fiasa hafa, periferika iray ihany no tokony hampiasaina amin'ny fotoana iray, avadika amin'ny fampiasana ny famantaranandro periferika azo atao (ao amin'ny rejisitra RCC mety).
Farany, manana hafainganam-pandehan'ny famantaranandro ihany koa ny tsimatra amin'ny fomba famoahana. Ity dia endri-javatra iray hafa mitsitsy angovo; amin'ny tranga misy antsika dia apetrakay ho ambony indrindra izany ary adinoy.
Noho izany: mampiasa SPI izahay, izay midika fa ny tsimatra roa (miaraka amin'ny angon-drakitra sy famantarana famantaranandro) dia tokony ho "asa fanosehana hafa", ary ny iray hafa (LAT) dia tokony ho "fanosika tsy tapaka". Saingy alohan'ny hanendrena azy ireo dia andao isika hiatrika ny SPI.
SPI
Fandaharana fanabeazana kely iray hafa
SPI na Serial Peripheral Interface (serial peripheral interface) dia interface tsotra sy tena mahomby amin'ny fampifandraisana MK amin'ny MK hafa sy ny tontolo ivelany amin'ny ankapobeny. Ny fitsipiky ny asany dia efa voalaza etsy ambony, izay momba ny mpamily LED Shinoa (ao amin'ny boky torolalana, jereo ny fizarana 25). Ny SPI dia afaka miasa amin'ny fomba master ("tompo") sy andevo ("andevo"). Ny SPI dia manana fantsona fototra efatra, izay tsy azo ampiasaina avokoa:
MISO, Input Master / Output andevo: ny mifanohitra amin'izany, dia mandray ao amin'ny tompony, ary mampita ao amin'ny andevo;
SCK, Famantaranandro Serial: mametraka ny fatran'ny fampitana angon-drakitra ao amin'ny tompony na mandray famantarana famantaranandro ao amin'ny andevo. Amin'ny ankapobeny dia mamely beats;
SS, Slave Select: miaraka amin'ny fanampian'ity fantsona ity, fantatry ny andevo fa misy zavatra tadiavina aminy. Ao amin'ny STM32 dia antsoina hoe NSS, izay N = ratsy, i.e. lasa andevo ny controller raha misy tany amin'ity fantsona ity. Izy io dia mitambatra tsara amin'ny maody Open Drain Output, saingy tantara hafa izany.
Tahaka ny zavatra hafa rehetra, ny SPI amin'ny STM32 dia manankarena amin'ny fiasa, izay mahatonga azy io ho sarotra takarina. Ohatra, dia afaka miasa tsy amin'ny SPI, fa koa amin'ny I2S interface tsara, ary ao amin'ny antontan-taratasy dia mifangaro ny famaritana, dia ilaina ny manapaka ny tafahoatra amin'ny fotoana. Tsotra dia tsotra ny andraikitray: mila mandefa angon-drakitra amin'ny alΓ lan'ny MOSI sy SCK fotsiny izahay. Mandehana any amin'ny fizarana 25.3.4 (fifandraisana duplex, serasera half-duplex), izay hitantsika Famantaranandro 1 sy tariby data tokana tokana (famantarana famantaranandro 1 sy stream data tokana tokana):
Amin'ity fomba ity, ny fampiharana dia mampiasa SPI amin'ny fomba fampitana fotsiny na mandray fotsiny. / Ny mode Transmit-only dia mitovy amin'ny mode duplex: ny angon-drakitra dia alefa amin'ny pin transmit (MOSI amin'ny mode master na MISO amin'ny mode slave), ary ny pin receive (MISO na MOSI tsirairay avy) dia azo ampiasaina ho pin I/O mahazatra. . Amin'ity tranga ity, ny fampiharana dia mila tsy miraharaha ny Rx buffer (raha vakina dia tsy hisy angon-drakitra nafindra any).
Tsara, maimaim-poana ny pin MISO, andao ampifandraiso amin'io ny famantarana LAT. Andeha hojerentsika ny Slave Select, izay ao amin'ny STM32 dia azo fehezina amin'ny programa, izay tena mety. Mamaky ny fehintsoratra mitovy anarana isika ao amin'ny fizarana 25.3.1 SPI Famaritana ankapobeny:
Ny fanaraha-maso ny rindrambaiko NSS (SSM = 1) / Ny fampahalalana momba ny fisafidianana andevo dia voarakitra ao amin'ny SSI bit amin'ny rejisitra SPI_CR1. Ny pin NSS ivelany dia mijanona maimaim-poana ho an'ny filana fampiharana hafa.
Fotoana hanoratana amin'ny rejisitra izao. Nanapa-kevitra ny hampiasa SPI2 aho, tadiavo ny adiresy fototra ao amin'ny datasheet - ao amin'ny fizarana 3.3 Memory Map:
Sokafy ny fizarana 25.3.3 miaraka amin'ny lohateny manazava tena hoe "Configuring SPI in Master Mode":
1. Apetraho amin'ny bits BR[2:0] ny famantaran'ny famantaranandro amin'ny SPI_CR1.
Ny rejisitra dia angonina ao amin'ny fizarana boky torolalana amin'ny anarana mitovy. Famindrana adiresy (Adiresy offset) ho an'ny CR1 - 0x00, amin'ny alΓ lan'ny default dia voadio avokoa ny bits rehetra (Avereno ny sanda 0x0000):
Ny bits BR dia mametraka ny mpizara famantaranandro fanaraha-maso, ka mamaritra ny faharetan'ny fiasan'ny SPI. Ny fatran'ny STM32 anay dia 72 MHz, ny mpamily LED, araka ny angon-drakitra, dia miasa amin'ny matetika hatramin'ny 25 MHz, ka mila mizara efatra (BR[2:0] = 001).
2. Apetraho ny bits CPOL sy CPHA mba hamaritana ny fifandraisana misy eo amin'ny famindrana angon-drakitra sy ny famantaran'ny famantaranandro (jereo ny kisary eo amin'ny pejy 240)
Koa satria mamaky angona eto isika fa tsy mijery schematics, andeha hojerentsika akaiky ny famaritana lahatsoratra momba ny bits CPOL sy CPHA ao amin'ny pejy 704 (SPI General Description):
Famantarana dingana sy ny polarity
Amin'ny fampiasana ny bitika CPOL sy CPHA ao amin'ny rejisitra SPI_CR1, azonao atao ny mifidy fifandraisana ara-potoana efatra. Ny bit CPOL (polarity famantaranandro) dia mifehy ny toetry ny famantaranandro rehefa tsy misy data alefa. Ity bit ity dia mifehy ny maody master sy slave. Raha averina indray ny CPOL dia ambany ny tsipìka SCK amin'ny fomba fiatoana. Raha apetraka ny bitika CPOL dia avo ny pin SCK mandritra ny fomba fiatoana.
Rehefa napetraka ny bit CPHA (faritra famantaranandro), dia ny sisiny faharoa amin'ny famantarana SCK ny strobe bitika avo lenta (milatsaka raha mazava ny CPOL, miakatra raha napetraka ny CPOL). Ny angona dia voasambotry ny fiovana faharoa amin'ny famantarana famantaranandro. Raha mazava ny bitika CPHA, ny strobe fandrika bitika avo dia ny sisiny miakatra amin'ny famantarana SCK (ny sisiny mianjera raha toa ka napetraka ny CPOL, ny sisiny miakatra raha voafafa ny CPOL). Ny angona dia voasambotra amin'ny fiovana voalohany amin'ny famantarana famantaranandro.
Rehefa avy naka an'io fahalalana io isika dia tonga amin'ny fanatsoahan-kevitra fa ny bits roa dia tsy maintsy mijanona ho zero, satria Tianay ny hijanona ho ambany ny mari-pamantarana SCK rehefa tsy ampiasaina, ary ny angon-drakitra dia ampitaina amin'ny sisiny miakatra amin'ny pulse (jereo ny sary. Rising Edge Takelaka data DM634
Teny an-dalana, eto isika dia nahita voalohany ny endri-javatra ny voambolana ao amin'ny ST datasheets: ao amin'izy ireo ny andian-teny hoe "reset ny bit ho aotra" voasoratra ao amin'izy ireo. hamerenana kely, fa tsy hanadio kely, toy ny, ohatra, Atmega.
3. Apetraho ny bit DFF mba hamaritana raha endrika 8-bit na 16-bit ny sakana angona
Naka DM16 634-bit manokana aho mba tsy hanelingelina ny fandefasana angon-drakitra PWM 12-bit, toy ny DM633. Misy dikany ny mametraka DFF ho ββiray:
4. Amboary ny bit LSBFIRST ao amin'ny rejisitra SPI_CR1 mba hamaritana ny endrika sakana
LSBFIRST, araka ny soso-kevitry ny anarany, dia manitsy ny fampitana amin'ny bitika kely indrindra aloha. Saingy ny DM634 dia te-hahazo angon-drakitra manomboka amin'ny kely indrindra. Noho izany, avelantsika hamerenana azy io.
5. Amin'ny fomba fiasan'ny fitaovana, raha ilaina ny fampidirana avy amin'ny pin NSS, ampiharo famantarana avo amin'ny pin NSS mandritra ny filaharan'ny famindrana byte manontolo. Ao amin'ny fomba rindrambaiko NSS, apetraho ny bits SSM sy SSI ao amin'ny rejisitra SPI_CR1. Raha ampiasaina ho vokatra ny pin NSS dia ny bit SSOE ihany no tokony apetraka.
Ampidiro SSM sy SSI hanadino ny fomba NSS hardware:
#define SSI 0x0100
#define SSM 0x0200
_SPI2_ (_SPI_CR1) |= SSM | SSI; //enable software control of SS, SS high
6. Ny bits MSTR sy SPE dia tsy maintsy apetraka (mijanona izy ireo raha toa ka avo ny mari-pamantarana NSS)
Raha ny marina, miaraka amin'ireto bits ireto dia manendry ny SPI ho tompon'andraikitra izahay ary mamelona azy:
Filaharana famindrana angona
Manomboka ny fandefasana rehefa soratana amin'ny buffer Tx ny byte iray.
Ny data byte dia ampidirina ao amin'ny rejisitra shift at mifanindran-dΓ lana fomba (avy amin'ny fiara fitateram-bahoaka anatiny) mandritra ny fandefasana ny bit voalohany, ary avy eo dia alefa any sequential MOSI pin mode, voalohany na farany bit mandroso miankina amin'ny fametrahana ny LSBFIRST bit ao amin'ny CPI_CR1 rejistra. Ny saina TXE dia napetraka aorian'ny fandefasana angon-drakitra avy amin'ny Tx buffer mankany amin'ny rejisitra shift, ary miteraka fanelingelenana ihany koa raha napetraka ny bit TXEIE ao amin'ny rejisitra CPI_CR1.
Nanasongadina teny vitsivitsy tao amin'ny fandikan-teny aho mba hisarihana ny saina amin'ny endri-javatra iray amin'ny fampiharana SPI amin'ny mpanara-maso STM. Ao amin'ny Atmega ny saina TXE (Tx Empty, Tx foana ary vonona handray angona) dia napetraka raha tsy aorian'ny nandefasana ny byte manontolo avy. Ary eto dia napetraka io saina io rehefa ampidirina ao amin'ny rejisitra fifindran'ny anatiny ny byte. Koa satria atosiky ny bits rehetra miaraka amin'ny fotoana iray (mifanitsy), ary avy eo ny angon-drakitra dia afindra tsikelikely, ny TXE dia napetraka alohan'ny handefasana tanteraka ny byte. Zava-dehibe izany satria Raha ny mpamily LED, dia mila misintona ny LAT pin rehefa avy nandefa Π²ΡΠ΅Ρ data, i.e. Ny saina TXE irery dia tsy ho ampy ho antsika.
Midika izany fa mila saina hafa isika. Andeha hojerentsika ny 25.3.7 - "Sainam-pirenena":
<β¦>
saina BUSY
Ny sainan'ny BSY dia napetraka sy voafafa amin'ny fitaovana (tsy misy fiantraikany ny fanoratana azy). Ny saina BSY dia manondro ny toetry ny soson'ny fifandraisana SPI.
Mamerina izany:
rehefa vita ny famindrana (afa-tsy amin'ny maodely master raha mitohy ny famindrana)
rehefa sembana ny SPI
rehefa misy hadisoana master mode (MODF=1)
Raha tsy mitohy ny famindrana dia voafafa eo anelanelan'ny famindrana data tsirairay ny saina BSY
Okay, ity dia ho azo ampiasaina. Andeha hojerentsika ny toerana misy ny Tx buffer. Mba hanaovana izany, vakio ny "SPI Data Register":
Bits 15:0 DR[15:0] Rejistra data
Data voaray na angon-drakitra ampitaina.
Ny rejisitry ny angona dia mizara ho buffer roa - ny iray ho an'ny fanoratana (mandefa buffer) ary ny iray ho an'ny famakiana (mandray buffer). Ny fanoratana amin'ny rejisitra data dia manoratra amin'ny Tx buffer, ary ny famakiana avy amin'ny rejistra data dia hamerina ny sanda voarakitra ao amin'ny buffer Rx.
Eny ary, ary ny rejisitry ny sata, izay ahitana ny saina TXE sy BSY:
Eny, satria mila mamindra in-16 in-droa bytes isika, araka ny isan'ny famoahana mpamily LED, toy izao:
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();
}
Saingy mbola tsy haintsika ny misintona ny pin LAT, ka hiverina amin'ny I/O isika.
Fanendrena tsimatra
Ao amin'ny STM32F1, ny rejisitra tompon'andraikitra amin'ny toetry ny tsimatra dia tsy mahazatra. Mazava fa betsaka kokoa noho ny Atmega izy ireo, saingy tsy mitovy amin'ny puce STM hafa. Fizarana 9.1 Famaritana ankapobeny momba ny GPIO:
Ny tsirairay amin'ireo port I/O tanjona ankapobeny (GPIO) manana rejisitra fanamafisana 32-bit roa (GPIOx_CRL sy GPIOx_CRH), rejistra data 32-bit roa (GPIOx_IDR sy GPIOx_ODR), rejisitra 32-bit / reset (GPIOx_BSRR), rejisitra reset 16-bit (GPIOx_BRR) ary 32- rejisitra fanakanana bit (GPIOx_LCKR).
Ny rejisitra roa voalohany dia tsy mahazatra, ary tsy dia mahasosotra ihany koa, satria miparitaka manerana azy ireo amin'ny endrika "bits efatra isaky ny rahalahy" ny tsipika port 16. Ireo. Ny pin zero hatramin'ny fito dia ao amin'ny CRL, ary ny ambiny dia ao amin'ny CRH. Mandritra izany fotoana izany, ny rejisitra sisa tavela dia mirakitra soa aman-tsara ny bitika rehetra amin'ny seranan-tsambo - matetika ny antsasany sisa dia "voatokana".
Ho fanatsorana, andeha isika hanomboka amin'ny faran'ny lisitra.
Tsy mila rejisitra fanakanana izahay.
Ny rejisitra napetraka sy ny famerenana dia tena mampihomehy satria mifamatotra amin'ny ampahany izy ireo: afaka manoratra ny zava-drehetra ao amin'ny BSRR ianao, izay ny bits 16 ambony dia hamerina ny pin ho aotra, ary ny ambany dia apetraka amin'ny 1, na azonao atao koa. Ampiasao ny BRR, ny bits 16 ambany izay mamerina ny pin. Tiako ilay safidy faharoa. Zava-dehibe ireo rejistra ireo satria manome fidirana atomika amin'ny pin:
Atomic Set na Reset
Tsy ilaina ny manafoana ny fiatoana rehefa manao fandaharana GPIOx_ODR amin'ny ambaratonga bit: bit iray na maromaro azo ovaina amin'ny asa fanoratana atomika tokana APB2. Izany dia vita amin'ny fanoratana "1" amin'ny rejisitra napetraka / famerenana (GPIOx_BSRR na, ho an'ny famerenana ihany, GPIOx_BRR) amin'ny bit izay mila ovaina. Ny bits hafa dia hijanona tsy hiova.
Ny rejistra data dia manana anarana manazava tena - IDR = fahan'ny Direction Register, fisoratana anarana fidirana; ODR = Fivoahana Direction Register, rejisitra mivoaka. Tsy mila azy ireo izahay amin'ny tetikasa ankehitriny.
Ary farany, ny rejisitra mifehy. Koa satria liana amin'ny tsipika SPI faharoa izahay, dia ny PB13, PB14 ary PB15, dia mijery avy hatrany ny CRH izahay:
Ary hitantsika fa mila manoratra zavatra amin'ny bits 20 ka hatramin'ny 31 isika.
Efa nofaritana etsy ambony izay tadiavintsika amin'ny pins, ka eto aho dia hanao tsy misy pikantsary, holazaiko fotsiny fa ny MODE dia mamaritra ny tari-dalana (fampidirana raha apetraka amin'ny 0 ny bits roa) ary ny hafainganam-pandehan'ny pin (mila 50MHz isika, i.e. samy pin amin'ny "1"), ary ny CNF dia mametraka ny maody: mahazatra "push-pull" - 00, "alternative" - ββ10. Amin'ny alΓ lan'ny default, araka ny hitantsika etsy ambony, ny pins rehetra dia manana bit fahatelo avy any ambany (CNF0), izany no mametraka azy ireo ho maodely fidirana mitsingevana.
Satria mikasa ny hanao zavatra hafa amin'ity chip ity aho, ho an'ny fahatsorana dia nofaritako ny sanda MODE sy CNF mety ho an'ny rejisitra ambany sy ambony.
(LAT_low fotsiny amin'ny inertia, efa toy izany foana, avelao hijanona)
Ankehitriny dia tsara ny zava-drehetra, saingy tsy mandeha izany. Satria STM32 ity, mitsitsy herinaratra izy ireo, izay midika fa mila mamela ny famantaranandro ny periferika ilaina ianao.
Alefaso ny famantaranandro
Ny famantaranandro, antsoina koa hoe Clock, dia tompon'andraikitra amin'ny famantaranandro. Ary efa hitantsika ny fanafohezana RCC. Mitady izany izahay ao amin'ny antontan-taratasy: Reset sy Clock Control.
Araka ny voalaza tetsy ambony, soa ihany fa ny ampahany sarotra indrindra amin'ny lohahevitra momba ny famantaranandro dia nataon'ny olona avy amin'ny STM ho antsika, izay isaoranay azy ireo (indray mandeha aho hanome rohy mankany Ny tranokalan'i Di Halt, mba hanazavana ny maha-safotofoto azy). Mila rejisitra tompon'andraikitra amin'ny fampandehanana ny famantaranandro periferika (Famantaranandro Periferika Enable Registers). Voalohany, andeha hojerentsika ny adiresy fototry ny RCC, dia eo am-piandohan'ny "Sarintany fahatsiarovana" izany:
Ary avy eo dia tsindrio ny rohy izay iezahanao hahita zavatra ao amin'ny takelaka, na, tsara kokoa, mandehana amin'ny famaritana ireo rejisitra afaka avy amin'ny fizarana momba ny avelao ny rejisitra. Aiza no hahitantsika RCC_APB1ENR sy RCC_APB2ENR:
Ary izy ireo, araka izany, dia misy bits izay ahitana ny famantaranandro ny SPI2, IOPB (I/O Port B) ary ny fiasa hafa (AFIO).
Raha manana fahafahana sy faniriana hanao fitsapana ianao, dia ampifandraiso amin'ny DM634 toy izao: DAI mankany PB15, DCK mankany PB13, LAT mankany PB14. Manome hery ny mpamily amin'ny 5 volts izahay, aza adino ny mampifandray ny tany.
STM8 PWM
PWM amin'ny STM8
Raha vao nanomana ity lahatsoratra ity aho, dia nanapa-kevitra, ohatra, ny hanandrana hifehy ny sasany amin'ny fampiasa amin'ny chip tsy mahazatra amin'ny fampiasana takelaka fotsiny, mba tsy hiafarako amin'ny mpanao kiraro tsy misy kiraro. Ny STM8 dia mety amin'ity andraikitra ity: voalohany, nanana boards sinoa roa aho miaraka amin'ny STM8S103, ary faharoa, tsy dia malaza loatra, ary noho izany ny fakam-panahy hamaky sy hitady vahaolana amin'ny Internet dia miankina amin'ny tsy fisian'ireo vahaolana ireo.
Misy koa ny chip Takela-daza ΠΈ Takelaka data RM0016, ao amin'ny voalohany dia misy adiresy pinout sy misoratra anarana, ao amin'ny faharoa - ny zavatra hafa rehetra. STM8 dia programa amin'ny C amin'ny IDE mahatsiravina ST Visual Develop.
Famantaranandro sy I/O
Amin'ny alΓ lan'ny default, ny STM8 dia miasa amin'ny matetika 2 MHz, tsy maintsy ahitsy avy hatrany izany.
HSI (Haingam-pandeha ambony anatiny) famantaranandro
Ny famantarana famantaranandro HSI dia avy amin'ny oscillator RC 16 MHz anatiny miaraka amin'ny fisarahana azo zahana (1 hatramin'ny 8). Izy io dia napetraka ao amin'ny rejisitra mpizara famantaranandro (CLK_CKDIVR).
Fanamarihana: eo am-piandohana, ny HSI RC oscillator miaraka amin'ny divider 8 dia nofantenana ho loharano voalohany amin'ny famantarana famantaranandro.
Hitanay ny adiresy rejisitra ao amin'ny datasheet, ny famaritana ao amin'ny refman ary mahita fa mila esorina ny rejisitra:
Koa satria handeha amin'ny PWM isika ary hampifandray ny LED, andeha hojerentsika ny pinout:
Ny puce dia kely, asa maro no mihantona amin'ny tsimatra mitovy. Ny ao anatin'ny fononteny efajoro dia "fampiasana hafa", novaina tamin'ny "bytes safidy" (safidy bytes) - zavatra toy ny Atmega fuses. Azonao atao ny manova ny soatoaviny amin'ny programa, saingy tsy ilaina izany, satria Ny fampiasa vaovao dia alefa aorian'ny famerenana indray. Mora kokoa ny mampiasa ST Visual Programmer (alaina miaraka amin'ny Visual Develop), izay afaka manova ireo bytes ireo. Ny pinout dia mampiseho fa ny tsipìka CH1 sy CH2 amin'ny fameram-potoana voalohany dia miafina ao anaty fonon-joro efamira; Ilaina ny mametraka ny bits AFR1 sy AFR0 ao amin'ny STVP, ary ny faharoa dia hamindra ny output CH1 amin'ny fameram-potoana faharoa avy amin'ny PD4 mankany PC5.
Noho izany, pin 6 no hifehy ny LED: PC6, PC7 ary PC3 ho an'ny fameram-potoana voalohany, PC5, PD3 ary PA3 ho an'ny faharoa.
Ny fametrahana ny tsipika I/O amin'ny STM8 dia tsotra sy mitombina kokoa noho ny amin'ny STM32:
mahazatra avy amin'ny rejisitry ny torolΓ lana momba ny angona DDR Atmega (Data Direction Register): 1 = vokatra;
ny rejisitra fanaraha-maso voalohany CR1, rehefa mivoaka, dia mametraka ny fomba fanosehana (1) na tatatra misokatra (0); satria mampifandray ny LED amin'ny puce miaraka amin'ny cathodes aho, dia mamela aotra eto aho;
ny rejisitry ny fanaraha-maso faharoa CR2, rehefa mivoaka, dia mametraka ny hafainganam-pandehan'ny famantaranandro: 1 = 10 MHz
MakΓ / Ampitahao ny sanda - sanda ho an'ny fisamborana / fampitahana, izay nanisa ny fameram-potoana hanao zavatra (raha ny PWM dia mamadika ny famantarana mivoaka);
Vidiny mialoha β sanda efa nomanina. Ampitahao ny sanda dia tsy afaka miova raha mikitika ny fameram-potoana, raha tsy izany dia tapaka ny tsingerin'ny PWM. Noho izany, ny soatoavina ampitaina vaovao dia apetraka ao anaty buffer ary esorina rehefa tonga amin'ny faran'ny fanisana ny fameram-potoana ary averina indray;
Ahitsio sisiny ΠΈ maody mirindra afovoany - fampifanarahana manamorona ny sisintany sy eo afovoany, mitovy amin'ny an'i Atmel PWM haingana ΠΈ Phase-correct PWM.
OCiREF, Output Compare Reference Signal - famantarana famantarana mivoaka, raha ny marina, izay miseho amin'ny pin mifanaraka amin'ny fomba PWM.
Araka ny efa mazava avy amin'ny pinout, roa timers manana PWM fahaiza-manao - ny voalohany sy ny faharoa. Samy 16-bit, ny voalohany dia manana endri-javatra fanampiny be dia be (indrindra fa afaka manisa na miakatra sy midina). Mila miara-miasa isika roa, ka nanapa-kevitra ny hanomboka amin'ny faharoa mazava kokoa aho, mba tsy hampiasana zavatra tsy misy ao. Ny olana sasany dia ny famaritana ny fiasan'ny PWM amin'ny timer rehetra ao amin'ny boky torolalana dia ao amin'ny toko momba ny fameram-potoana voalohany (17.5.7 PWM Mode), noho izany dia tsy maintsy mitsambikina miverimberina manerana ny antontan-taratasy ianao amin'ny fotoana rehetra.
Boundary Aligned PWM
Configuration kaonty avy any ambany ka hatrany ambony
Mavitrika ny fanisana ambany raha voafafa ny bit DIR ao amin'ny rejisitra TIM_CR1
ohatra
Ny ohatra dia mampiasa ny fomba PWM voalohany. Ny mari-pamantarana fanondroan'ny PWM OCiREF dia avo lenta raha TIM1_CNT <TIM1_CCRi. Raha tsy izany dia mila ambaratonga ambany. Raha lehibe noho ny sandan'ny autoload (TIM1_ARR rejisitry ny fampitahana ao amin'ny rejisitra TIM1_CCRi), dia atao amin'ny 1 ny famantarana OCiREF. Raha 0 ny sandan'ny fampitahana, dia aotra ny OCiREF....
STM8 famerana mandritra ny fanavaozana hetsika manamarina aloha mampitaha sanda, ary avy eo dia mamoaka famantarana famantarana. Ny fameram-potoana an'ny Atmega dia mivadika voalohany ary avy eo mampitaha, ka miteraka compare value == 0 ny vokatra dia fanjaitra, izay tsy maintsy atao amin'ny fomba ahoana (ohatra, amin'ny alΓ lan'ny famadihana ny lojika amin'ny programa).
Ka inona no tiantsika hatao: 8-bit PWM (AR == 255), manisa avy any ambany ka hatrany ambony, mifanitsy amin'ny sisin-tany. Satria ny takamoa dia mifandray amin'ny puce amin'ny alalan'ny cathodes, ny PWM dia tokony hamoaka 0 (LED) mandra- mampitaha sanda ary 1 apr.
Efa namaky momba ny sasany isika Maody PWM, noho izany dia mahita ny rejisitra ilaina amin'ny fameram-potoana faharoa isika amin'ny alalan'ny fikarohana ao amin'ny boky torolalana momba ity andian-teny ity (18.6.8 - TIMx_CCMR1):
110: Fomba PWM voalohany β rehefa manisa avy any ambany ka hatrany ambony, dia mavitrika ny fantsona voalohany raha TIMx_CNT <TIMx_CCR1. Raha tsy izany dia tsy miasa ny fantsona voalohany. [ao amin'ny antontan-taratasy fanampiny dia misy kopia-mametaka diso avy amin'ny fameram-potoana 1] 111: Fomba PWM faharoa β rehefa manisa avy any ambany ka hatrany ambony dia tsy mihetsika ny fantsona voalohany raha TIMx_CNT < TIMx_CCR1. Raha tsy izany dia mavitrika ny fantsona voalohany.
Satria ny LED dia mifandray amin'ny MK amin'ny cathodes, ny fomba faharoa dia mety amintsika (ny voalohany ihany koa, saingy mbola tsy fantatsika izany).
Bit 3 OC1PE: Alefaso aloha ny pin 1
0: Tsy mandeha ny rejisitra mialoha ny TIMx_CCR1. Afaka manoratra amin'ny TIMx_CCR1 ianao amin'ny fotoana rehetra. Miasa avy hatrany ny sanda vaovao.
1: Misokatra ny rejisitra mialoha ny TIMx_CCR1. Ny asa mamaky/manoratra dia miditra amin'ny rejisitra mialoha. Ny sanda TIMx_CCR1 efa voaloa mialoha dia ampidirina ao amin'ny rejisitra aloka mandritra ny hetsika fanavaozana tsirairay.
* Fanamarihana: Mba hiasa araka ny tokony ho izy ny maody PWM dia tsy maintsy alefa ny rejisitra mialoha. Tsy ilaina izany amin'ny fomba famantarana tokana (ny OPM dia napetraka ao amin'ny rejisitra TIMx_CR1).
Ny fameram-potoana faharoa dia tsy afaka manisa afa-tsy avy any ambany ka hatrany ambony, fampifanarahana amin'ny sisin-tany, tsy misy tokony hovana. Aleo apetraka amin'ny 256 ohatra ny mpanelanelana matetika. Ho an'ny fameram-potoana faharoa dia napetraka ao amin'ny rejisitra TIM2_PSCR ny mpizara ary manana hery roa:
Ny hany sisa tavela dia ny mamadika ny fehin-kevitra sy ny fameram-potoana faharoa. Ny olana voalohany dia voavaha amin'ny alΓ lan'ny rejisitra Alaivo/Ampitahao Tadiavo: misy fantsona roa, telo miparitaka manerana azy ireo tsy misy fotony. Eto isika dia afaka mianatra ihany koa fa azo atao ny manova ny polarity ny famantarana, i.e. Amin'ny ankapobeny, azo atao ny mampiasa PWM Mode 1. Manoratra izahay:
Andao hanoratra analogue tsotra AnalogWrite(), izay hamindra ny tena sanda amin'ny fameram-potoana ho fampitahana. Ny rejistra dia nomena anarana azo antoka Misambotra / mampitaha rejisitra, misy roa amin'izy ireo ho an'ny fantsona tsirairay: ny bits 8 ambany ambany ao amin'ny TIM2_CCRxL ary ny ambony ao amin'ny TIM2_CCRxH. Satria namorona PWM 8-bit izahay, dia ampy ny manoratra ny bitika kely indrindra:
Ny mpamaky mahay dia hahatsikaritra fa manana PWM misy tsininy kely isika, tsy mahavita mameno 100% (amin'ny sanda ambony indrindra amin'ny 255, ny famantarana dia mivadika amin'ny tsingerin'ny fameram-potoana iray). Ho an'ny LED dia tsy maninona izany, ary ny mpamaky mahay dia afaka maminavina ny fomba hanamboarana azy.
Ny PWM amin'ny fameram-potoana faharoa dia miasa, andao hiroso amin'ny voalohany.
Ny fameram-potoana voalohany dia manana bitika mitovy amin'ny rejisitra iray ihany (fa ireo bitika mbola "voatokana" ao amin'ny fameram-potoana faharoa dia ampiasaina amin'ny voalohany ho an'ny karazana zavatra mandroso rehetra). Noho izany dia ampy ny mahita ny adiresin'ny rejisitra mitovy amin'ny datasheet ary mandika ny code. Eny, ovay ny sandan'ny mpizara matetika, satria... Ny fameram-potoana voalohany dia tsy te hahazo hery roa, fa sanda 16-bit marina amin'ny rejisitra roa Prescaler High ΠΈ Low. Manao ny zava-drehetra izahay ary... tsy mandeha ny fotoana voalohany. Inona no olana?
Ny olana dia tsy misy afa-tsy amin'ny fijerena ny fizarana manontolo momba ny rejisitra fanaraha-maso ny fameram-potoana 1, izay itadiavantsika ilay iray izay tsy ananan'ny fameram-potoana faharoa. Hisy 17.7.30 fisoratana anarana fiatoana (TIM1_BKR), aiza no misy an'ity bit ity:
Ny tetikasa mini fahatelo dia ny mampifandray ireo LED RGB valo amin'ny fameram-potoana faharoa amin'ny fomba PWM ary mampiseho loko samihafa. Izy io dia mifototra amin'ny foto-kevitra momba ny LED multiplexing, izany hoe raha mamono sy mamono ny LED haingana dia haingana ianao, dia ho hitantsika fa mandeha foana izy ireo (fikirizan'ny fahitana, inertia ny fahitana maso). Nanao izany aho indray mandeha zavatra toy izany amin'ny Arduino.
Ny algorithm amin'ny asa dia toy izao manaraka izao:
mampifandray ny anode ny RGB LED voalohany;
nandrehitra azy, mandefa ny famantarana ilaina amin'ny cathodes;
niandry hatramin'ny faran'ny tsingerin'ny PWM;
mampifandray ny anode ny faharoa RGB LED;
nandrehitra azy...
Eny, sns. Mazava ho azy, ho an'ny asa tsara dia ilaina ny mampifandray ny anode ary ny LED dia "mirehitra" amin'ny fotoana iray ihany. Eny, na saika. Na ahoana na ahoana, dia mila manoratra fehezan-dalΓ na izay hamoaka soatoavina amin'ny fantsona telo amin'ny fameram-potoana faharoa, hanova azy ireo rehefa tonga ny UEV, ary hanova ny LED RGB mavitrika amin'izao fotoana izao.
Koa satria mandeha ho azy ny fifindran'ny LED, dia mila mamorona "fahatsiarovana video" izay hahazoan'ny mpandrindra ny interrupt angon-drakitra. Ity dia array tsotra:
uint8_t colors[8][3];
Mba hanovana ny lokon'ny LED manokana dia ampy ny manoratra ny soatoavina ilaina amin'ity array ity. Ary ny variable dia ho tompon'andraikitra amin'ny isan'ny LED mavitrika
uint8_t cnt;
Demux
Ho an'ny multiplexing mety dia mila demultiplexer CD74HC238 isika. Demultiplexer - chip izay mampihatra ny mpandraharaha amin'ny fitaovana <<. Amin'ny alalan'ny pins telo (bits 0, 1 ary 2) dia mamahana azy amin'ny isa telo-bit X izahay, ary ho setrin'izany dia manetsika ny isa mivoaka (1<<X). Ny sisa tavela amin'ny puce dia ampiasaina hanesorana ny famolavolana manontolo. Ilaintsika ity puce ity mba hampihenana ny isan'ny tsimatra misy ny microcontroller, fa koa ho an'ny fiarovana - mba tsy hivezivezy tsy nahy ny LED bebe kokoa noho izay azo atao ary tsy handoro ny MK. Ny puce dia mitentina denaria iray ary tokony hotehirizina ao amin'ny kabinetra fanafody ao an-tranonao foana.
Ny CD74HC238 dia ho tompon'andraikitra amin'ny famatsiana herinaratra amin'ny anode ny LED tiana. Ao amin'ny multiplex feno dia manome voltora amin'ny tsanganana amin'ny alΓ lan'ny P-MOSFET, fa amin'ity demo ity dia azo atao mivantana, satria dia misintona 20 mA, araka ny naoty ambony indrindra amin'ny datasheet. From Takelaka data CD74HC238M mila pinouts sy ity taratasy fitaka ity izahay:
H = ambaratonga avo lenta, L = ambaratonga ambany, X - aza miraharaha
Mampifandray ny E2 sy E1 amin'ny tany izahay, E3, A0, A1 ary A3 amin'ny pin PD5, PC3, PC4 ary PC5 amin'ny STM8. Koa satria ny latabatra etsy ambony dia misy ambaratonga ambany sy avo, dia amboarinay ho toy ny tsimatra fanosehana ireo tsimatra ireo.
PWM
Ny PWM amin'ny fameram-potoana faharoa dia amboarina amin'ny fomba mitovy amin'ny tantara teo aloha, misy fahasamihafana roa:
Voalohany, mila mamela ny fahatapahana isika Fanavaozana hetsika (UEV) izay hiantso fiasa izay manova ny LED mavitrika. Izany dia atao amin'ny fanovana ny bit Update Interrupt Enable amin'ny rejisitra misy anarana milaza
Ny fahasamihafana faharoa dia mifandraika amin'ny trangan'ny multiplexing, toy ny ghosting - famirapiratan'ny diode parasy. Amin'ny toe-javatra misy antsika, dia mety hitranga izany noho ny zava-misy fa ny fameram-potoana, izay nahatonga ny fahatapahana amin'ny UEV, dia mitohy manitikitika, ary tsy manam-potoana hanovana ny LED alohan'ny hanombohan'ny fameram-potoana hanoratra zavatra amin'ny tsimatra ny mpandrindra ny interrupt. Mba hiadiana amin'izany dia tsy maintsy mamadika ny lojika ianao (0 = famirapiratana ambony indrindra, 255 = tsy misy jiro) ary misoroka ny sandan'ny tsingerin'ny adidy tafahoatra. Ireo. ho azo antoka fa aorian'ny UEV dia mivoaka tanteraka ny LED mandritra ny tsingerin'ny PWM iray.
Aza mametraka r, g ary b amin'ny 255 ary tadidio ny mamadika azy ireo rehefa mampiasa azy ireo.
ka miato
Ny fototry ny interrupt dia ny hoe ao anatin'ny toe-javatra sasany dia mijanona amin'ny fanatanterahana ny programa fototra ny chip ary miantso asa ivelany. Mitranga ny fahatapahana noho ny fitaomana ivelany na anatiny, anisan'izany ny fameram-potoana.
Tamin'ny voalohany namorona tetikasa tao amin'ny ST Visual Develop, ankoatra ny main.c nahazo varavarankely misy rakitra mistery izahay stm8_interrupt_vector.c, tafiditra hoazy ao anatin'ilay tetikasa. Amin'ity rakitra ity dia misy asa omena ho an'ny interrupt tsirairay NonHandledInterrupt. Mila mamatotra ny asantsika amin'ny fiatoana tiana isika.
Ny hany sisa tavela dia ny mamela ny fahatapahana. Izany dia atao amin'ny fampiasana ny baiko assembler rim - tsy maintsy mitady izany ianao Boky TorolΓ lana momba ny programa:
//enable interrupts
_asm("rim");
Ny baiko assembler iray hafa dia sim β mamono ny fiatoana. Tsy maintsy vonoina izy ireo raha soratana ao amin'ny "fahatsiarovana horonan-tsary" ny soatoavina vaovao, mba tsy hanimba ny array ny fahatapahana nateraky ny fotoana tsy mety.
Raha farafaharatsiny misy olona mahita ity lahatsoratra ity ho mahasoa, dia tsy nanoratra izany aho. Ho faly aho handray fanehoan-kevitra sy fanamarihana, hiezaka hamaly ny zava-drehetra aho.