Lege datasheets 2: SPI in STM32; PWM, timers et obloquitur in STM8
В in prima parte, Conatus sum indicare fabrum electronicarum amabam qui ab Arduino braccas creverunt quomodo et cur datas cartas legerent et alia documenta pro microcontrolers. Textus magnus evasit, ergo pollicitus sum exempla practica in uno articulo demonstrare. Bene se appellabat fungus lac.
Hodie monstrabo tibi quomodo schedulis utaris ad solvendum satis simplex, sed necessarium multis inceptis, muneribus in STM32 (Blue Pill) et STM8 moderatoris. Omnia demo incepta dicata meis dilectis LEDs, eas in magna quantitate accendemus, quibus omnibus iucunda periphericis uti debebimus.
Textus iterum ingens evasit, ut commodum contentus sum:
Disclaimer: ingeniarius non sum, altam scientiam in electronicis habere non simulo, articulus amateurs similis mei destinatur. Revera biennio ante consideravi ut scopum audientium. Si quis mihi indicasset tunc chartas schedae ignotae in scalpello incognitas non esse FORMIDULOSUS ut legerem, non multum temporis quaesivi in Interreti fragmenta quaedam codicis et fuscinulas cum forfice et taenia tenaces inveniendi.
Focus huius articuli in schedae datae, non inceptae, ut signum non sit nimis nitidum et saepe coartatum. Negotiones ipsae sunt valde simplices, licet primae notitiae novae spumae aptae sint.
Spero quod articulus meus aliquem adiuvabit in simili statu immersionis in amabam.
STM32
XVI LEDs cum DM16 et SPI
Parva propositio utens Blue Pill (STM32F103C8T6) et DM634 exactoris DUXERIT. Tabulae datae utentes, aurigam STM IO portus figurabimus et SPI figurabimus.
DM634
Chipum Taiwanese cum 16 16-bit PWM outputibus coniungi potest in vinculis. Low-finem 12-bit exemplar notum est ex project domestico Lightpack. Uno tempore, eligens inter DM63x et TLC5940 notos, compluribus de causis elegi DM: 1) TLC in Aliexpress definite fictus est, sed hic non est; 2) DM sui iuris frequentiam generans habet PWM; 3) vilius Moscuae emi potuit quam exspectans particulam ab Ali. Et, sane, studium fuit discere quomodo te ipsum chip regere, quam prompto bibliothecae factae utens. Astulae nunc maxime in involucro SSOP24 exhibentur, facilia sunt ad solidiora adaptori.
Cum fabrica Taiwanese datasheet chip Anglice scripta in Sinica, quod significat illud erit iocum. Primum intueri pinout (Pin Connection) utro crure iungat quid , ac fibularum descriptionem .pin Description). 16 fibulae;
DC Sink Sources (Open Exhaurire)
Submerge / Aperto-exhaurire output — exhaurire; fons influens vena; the output is connected to ground in activo statu - LEDs are connected with driver by cathodes. Electrice, hoc est, utique, non "detrito aperto" (aperta exhauriunt) , sed in schedulis saepissime haec designatio pro paxillis in modus exhauriendis invenitur.
Resistentes externi inter REXT et GND ut output monetae publicae
Relatio resistor instituitur inter REXT clavum et terram, quae resistentiam internam outputorum regit, vide graphum in pagina 9 paginae notae. In DM634, haec resistentia etiam per programmatum moderari potest, cum in altiore splendore ponitur (global claritas); Singula in hoc articulo non ingrediar, ego modo 2.2 - 3 kOhm resistor hic ponam.
Ut scias quomodo intelligas moderari, inspiciamus descriptionem instrumenti instrumenti:
Yeah, hic est, Chinese Anglis in omni gloria sua. Translatio haec problematica est, intelligere potes si vis, sed alius modus est - vide quomodo nexus cum similibus TLC5940 in notitia schedae descriptus est:
... Tantum tres fibulae notitiae in notam ingrediuntur. Ortus ortu SCLK notae notitias e clavo ad tabulam internum transfert. Postquam omnia indicia onerata sunt, signum breve altum XLAT evinctum, quae notitias consequenter in tabulas internas transfert. Tabulae internae portae in gradu XLAT signo excitatae sunt. Omnia notitia prima momentis insignium transmittitur.
Claustrum - pessulus / pessulus / pessulus. Resurgens ora - ducit ore pulsus MSB primum - insignium (leftmost) paulum deinceps. ad horologium data - transmittunt notitia continue (per partes).
sermo pessulus saepe in documentis pro astularum invenitur et variis modis transfertur, sic intellegendi causa me patiar
parva institutionis progressioAgitator DUCTUS essentialiter mandare trabea est. "Vertere" (subcinctus) in nomine - bitwise motus notitiarum intra machinam: unumquodque novum frenum detrusum intus protrudit totam catenam ante ipsam. Cum nemo observare velit tenebrarum blinking LEDs in transpositione, processus fit in tabulatis quiddam distinctum ab operantibus tabulariis per damper (pessulus) est genus spei locus ubi freni in optata serie disponuntur. Cum omnia parata sunt, shutter aperit, frena ad opus faciendum, priorem massam reponat. Verbum pessulus in documentis pro microcircuitibus fere semper talem damper implicat, in quibuscunque combinationibus adhibetur.
Ita, notitia translationis ad DM634 exercetur sic: DAI input ad valorem insignium tantillum longi LED, trahere DCK sursum et deorsum; DAI input pone ad valorem alterius frenum, collige DCK; et sic deinceps usque ad omnes partes traductae sunt ( . )clocked in *) post quem LAT trahimus. Hoc manually fieri potest (frenum-bang) , sed praestat SPI interfaciei specialiter ad hoc formandam uti, cum in duobus exemplaribus nostro STM32 exhibeatur.
Blue Pill STM32F103
Introductorium: STM32 moderatores multo magis implicati sunt quam Atmega328 quam formidulose videri possent. Praeterea, ob rationes energiae salutaris, omnes fere peripherales in initio aversae sunt, et frequentia horologii 8 MHz ab interno fonte est. Fortunate STM programmarii codicem scripsit qui spumam ad "calculatum" 72 MHz adducit, et omnium IDuum quas novi auctores in processu initializationi comprehendisse scio, horologio non opus est (sed potes, si vere vis). Sed vertere debebis in peripherals.
Documenta: Pillula caerulea cum chip STM32F103C8T6 populari instructa, duo documenta utilia ei sunt;
Data Sheet for microcontrollers STM32F103x8 et STM32F103xB;
Pinouts - chip pinouts - in casu quod ipsi tabulas facere constituimus;
Map memoriae - map memoriae pro certo chip. Relatio Manualis chartam totius lineae habet, et registra commemorat quae nostros non habent.
Acus Definitiones tabulae principales et alternae fibulas enumerat; nam picturas "hyacinthini" commodiores in Interreti reperire potes cum indice fibularum et functionum. Ergo statim google Pillula caerulea nos pinout et hanc imaginem in manu tenemus:
NB: error fuit in pictura ex interreti, quod in commentis notabatur, tibi gratias ago. Pictura reposita est, sed haec lectio est - melius est notitias non ex schedulis compescere.
Data scheda removemus, Relatio Manualis aperimus, eoque posthac tantum utimur.
De modo procedendi: input/output vexillum tractamus, configurare SPI, in necessariis periphericis verte.
Input output
De Atmega328, I/O perquam simpliciter perficitur, quare abundantia optionum STM32 confundi potest. Nunc conclusionibus tantum indigemus, sed etiam hae quattuor bene habent:
apertum exhaurire, dis-traho, alternative dis-traho, alternative open drain
"dis-traho" (viverra urna) usitatum est ab Arduino coactum, clavum valorem vel ALTUM vel SUBJECTUM accipere potest. Sed cum "patentibus exhauriendis" sunt difficultatibusquamvis tamen omnia simplicia sint;
Output configuration / cum portus attribuitur output: / output quiddam enabled: / - aperta exhauriunt modum: "0" in registro output dat N-MOS, "1" in output registri relinquit portum in modo Hi-Z ( P-MOS non reducitur ) / modum viverra urna: "0" in tabulario output operatur N-MOS, "1" in tabulario output actuat P-MOS.
Discrimen inter aperta exhaurire (aperta exhauriunt) Ex "dis-traho" (viverra urna) est in primo clavo statum ALTUM accipere non posse: cum scribens unum ad output tabularium, in modum repugnantiae ingreditur (excelsum impedimentum, Hi-Z*). Cum nulla scriptura, clavus in utroque modo, et logice et electrically se gerit.
In normali output modo, paxillus simpliciter transmittit contenta output mandare. In "alternativo" per peripherales correspondentes regitur (cf. 9.1.4);
Si frenum in alterna functione clavum configuratur, actis mandare debilis est et paxillus periphericis clavo iungitur.
Officialis alternativa singulorum clavorum describitur Definitiones pin Datasheet est imago receptae. Ad quaestionem quid faciendum si clavus plura officia habeat, respondetur per nota in scheda:
Si plures peripherales eodem clavo utantur, ad vitandum conflictum inter functiones alternativas, una tantum peripherica ad tempus utendum est, utens horologii peripherici frenum (in congruo RCC registro).
Denique fibulae in output modum etiam celeritatem horologii habent. Haec alia industria salvifica est, in casu nostro, eam ad maximam modo ponemus et obliviscamur.
Ita: utimur SPI, quod significat duos fibulas (ex data et horologii signo) debere esse "munus dis-traho alternum", alterum "dis-traho iusto". Sed antequam eas adiuves, agamus cum SPI.
SPI
Alius parva institutionis progressio
SPI seu Serial interface periphericum (Vide interface periphericum) est interfacies simplex et efficacissima ad iungendum MK cum aliis MKs et extra in genere. Principium operationis suae iam supra descriptum est, ubi de Sinensi auriga DUXERIT (in the reference manual, see section 25). SPI in domino (“domini”) et servo (“servi”) modo operari potest. SPI quattuor praecipuas canales habet, quarum non omnes adhiberi possunt;
MOSI, Magister Output / Servus Input: hic paxillus notitias in modum domini transmittit, et in servo modum notitias accipit;
MISO, Magister Input / Servus Output: imo recipit in dominum et in servum transmittit;
SCK, Serial Horologium: frequentia notitiarum transmissio in domino ponit aut horologium signum in servo accipit. Per se verberat percutit;
SS, Slava Selecta: adiuvante hoc canali, servus scit aliquid ab eo deesse. Die STM32 dicitur NSS, ubi N = negativa, i.e. gubernator servus fit, si in hoc canali teritur. Bene coniungit cum modum Open Exhaurire Output, sed aliam fabulam esse.
Sicut omnia alia, SPI in STM32 officinas dives est, quae aliquantum difficilis intellectui reddit. Exempli gratia, operari non solum cum SPI, sed etiam cum I2S interface, et in documentis eorum descriptiones permiscentur, necesse est excessum tempestive abscindere. Nostrum negotium perquam simplex est: tantum opus est notitias mittere utentes modo MOSI et SCK. Ad sectionem 25.3.4 accedimus (communicatio dimidia duplex, communicatio dimidia duplex), ubi invenimus I horologium et I unidirectional data filum (1 signum horologii et 1 unidirectional datae amnis);
Hoc modo, applicatio adhibet SPI in vel transmittendo tantum vel modo accipiendo. / Transmit-unus modus duplex modus est similis: notitia transmittit in clavum transmissum (MOSI in modo domini vel MISO in modum servilem), et paxillus (MISO vel MOSI respective) adhiberi potest ut regularis I/O paxillus . Hoc in casu, applicatio solum quiddam Rx ignorare debet (si legatur, nulla translatio notitiarum ibi erit).
Magnus, MISO paxillus immunis est, signum LAT connectamus. Intueamur Slavum Lego, quod in STM32 programmatice regi potest, quod perquam commodum est. Ejusdem nominis legitur paragrapho in sectione 25.3.1 SPI Descriptio Generalis:
Software imperium NSS (SSM = 1) / Informationes selectae servi in SSI frenum de SPI_CR1 mandare continentur. NSS paxillus externa ad alias applicationes necessitates libera manet.
Tempus est tabulas scribere. SPI2 uti decrevi, eius basim inscriptionem electronicam in pagina data quaeramus - in sectione 3.3 Memoriae Tabulae:
Pars aperta 25.3.3 cum titulo auto-explatorio "Configing SPI in Mode Magistro":
1. Vide horologium frequentiam cum lamellis BR[2:0] in tabulario SPI_CR1 constitue.
Regesta collecta in sectione manuali ejusdem nominis. Oratio subcinctus (Oratio offset) pro CR1 - 0x00, per defaltam omnia frena tolluntur (Reset valorem 0x0000);
In BR frena constitue moderatorem horologii divisoris, ita frequentiam in qua SPI agunt. STM32 nostra frequentia 72 MHz erit, agitator DUCTUS, secundum datas paginas, cum frequentia usque ad 25 MHz operatur, sic per quattuor dividere oportet (BR[2:0] = 001).
2. CPOL et CPHA particulas constitue ut relationem inter notitia translationis et horologii vide (vide iconem pag 240) definiant.
Cum chartam datam hic legamus et schismaticos non inspiciamus, propius inspiciamus descriptionem textus CPOL et CPHA frenorum pag 704 (SPI Descriptio generalis):
Horologium tempus et verticitatem
Utens CPOL et CPHA frena SPI_CR1 registri, quattuor relationes sincere programma eligere potes. CPOL (horologii verticitas) statum horologii signo momordit moderatur cum nulla notitia traducitur. Hic frenum domini moderatur et ancillae modorum. Si CPOL est reset, paxillus SCK in reliquis modus est humilis. Si CPOL frenum positum est, paxillus SCK in modo quietis altus est.
Cum frenum CPHA (horologii pascha) positum est, strobe laqueus altus frenum est scopulus secundus signum SCK (cadens si CPOL patet, ortus si CPOL ponitur). Data capitur secunda mutatione in signo horologii. Si CPHA frenum patet, strobe laqueus altitudinis frenum est signum oriens SCK (ora cadens si CPOL ponatur, marginem assurgentem si CPOL purgatum est). Data prima mutatione capitur in signo horologii.
Cognita hac scientia, ad conclusionem venimus ambas frenos manere debere cyphris, quia Signum SCK humile manere volumus, cum in usu non sint, et data in pulsum oram orientis transmitti (vide Fig. Resurgens Edge in DM634 datasheet).
Obiter hic primum notam vocabulorum in ST datarum schedae invenimus: in iis scriptum " frenum in nihilum reponi" scriptum est. ut reset aliquantuluset non ut purgare aliquantulusvelut, exempli gratia, Atmega.
3. constitue DFF frenum determinare an notitia obstructionum sit VIII-bit vel XVI frenum format
Ego specialiter 16-bit DM634 cepi ut non molestus sim cum tradendo 12-bit PWM data, sicut in DM633. Sensum facit DFF ponere uni;
4. LSBFIRST frenum in SPI_CR1 mandare configurare ut forma truncum determinet
LSBFIRST, ut nomen sonat, transmissionem configurat cum prima parte minimi significantis. Sed DM634 notitias accipere cupit ex parte insignium rerum incipiens. Unde eam retexere relinquimus.
5. In modum ferramentorum, si initus ex NSS paxillus requiritur, altum signum ad NSS clavum applica per totam seriem translationis byte. In NSS modum programmatis pone SSM et SSI frenos in SPI_CR1 mandare. Si NSS paxillus utendum pro output, tantum SSOE frenum inponendum est.
Install SSM et SSI ut obliviscatur circa NSS hardware modum:
#define SSI 0x0100
#define SSM 0x0200
_SPI2_ (_SPI_CR1) |= SSM | SSI; //enable software control of SS, SS high
6. MSTR et SPE frena ponenda sunt (solummodo positae manent si signum NSS altum est)
Profecto his frenis designamus nostrum SPI ut dominum et vicissim;
SPI configuratur, statim munera scribamus quae bytes ad aurigam mittimus. Continue reading 25.3.3 "Configurans SPI in domini modus";
Data translatio ordinis
Transmissio incipit cum byte ad Tx quiddam scriptum est.
Data byte oneratur in mandare subcinctus at parallela modus (ex bus internis) in traductione primi frenum, post quem traducitur sequential MOSI paxillus modus primus vel ultimus deinceps secundum partem LSBFIRST frenum in registro CPI_CR1 pendens. Quod TXE vexillum est pone cum notitia tradenda de quiddam TX subcinctus mandarenec non interregem si TXEIE frenum in CPI_CR1 registro positum est.
Pauca verba in translatione illustravi ut animadvertamus unum notam exsecutionis SPI in STM moderatoris. In Atmega vexillum TXE (Tx Inanis, Tx inanis est et ad notitias recipiendas paratas ) solum positum est postquam totum byte missum est de. Hoc autem vexillum hic positum est postquam byte in tabulario transpositio interno inserta est. Cum omnibus frustularum simul (parallelis) illuc impellitur, et tunc notitia ducta transfertur, TXE ante byte funditus mittitur. Hoc est momenti, quod in casu aurigae ductus nostro, necesse est ut LAT clavum missum trahas всех data, i.e. Vexillum TXE solum nobis satis non erit.
Hoc significat quod vexillum alio indigemus. Intueamur 25.3.7 - "Status Flags":
<...>
EXERCITUS vexillum
Vexillum BSY ferramentis exaratum est et purgatum (ad ipsum scribens nullum effectum habet). Vexillum BSY significat statum SPI stratum communicationis.
resets:
expleta translatio (praeter modum magistri, si translatio continua sit)
cum SPI is disabled
cum dominus error occurs modus (MODF = I)
Si translatio continua non sit, vexillum BSY inter singulas notitias translationis summovetur
Purus, hac in promptu veniam. Quaeramus ubi sita sit quiddam Tx. Hoc facere, lege "SPI Data Register":
Bits 15:0 DR [15:0] Data Register
Data recipi vel data tradenda.
Tabulae datae in duos buffers dividitur, unum pro scripto (transmittit quiddam) et unum pro legendo. Scribens ad actis mandare scribens ad Tx quiddam scribit, et ex actis mandandi legens reddet valorem in quiddam Rx contentum.
Bene, ac status registri, ubi vexilla TXE et BSY inveniuntur;
Bene, quoniam opus est ut 16 vicies binos bytes transmittere, secundum numerum outputs coegi LED, aliquid simile:
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();
}
Sed detrahere LAT clavum adhuc nescimus, sic ad I/O revertemur.
paxillos assignare
In STM32F1, in registra publica fibulae responsabilia admodum sunt inusitata. Patet plures ex eis esse quam Atmega, sed etiam ab aliis STM chippis diversae sunt. Sectio 9.1 Descriptio generalis GPIO:
Uterque de communi proposito I/O portuum (GPIO) Configurationis tabulae duo 32- frenum (GPIOx_CRL et GPIOx_CRH), duo 32-frena actis diurnorum (GPIOx_IDR et GPIOx_ODR), a 32-frenum/regestorum tabulatorum (GPIOx_BSRR), tabula 16-bit tabulatorum (GPIOx_BRR) et 32- bis tabulae interclusionis (GPIOx_LCKR).
Primae duae tabulae inusitatae sunt, et etiam satis incommodi, quia 16 portus fibulae trans eas dispersae sunt in forma "quattuor minutas fratris". Illae. fibulae nulla ad septem sunt in CRL, reliqui in CRH. Eodem tempore reliqui registri bene globulos omnium portuum fibularum continent - saepe dimidium "reservatum" remanentes.
Pro simplici, a fine indice incipiamus.
Non opus est tabulario interclusio.
Tabulae copiae et tabulae retexere satis ridiculae sunt in eo quod ex parte se mutuo duplicant: omnia scribere potes in BSRR, ubi superiores 16 freni ad nihilum clavum reset, inferiores ad 1 ponentur, vel etiam potes. uti BRR, inferior XVI frusta e quibus paxillus tantum retexere. I. option alterum amo. Haec tabula magni momenti sunt quod aditum nuclei praebent paxillos:
Aut nuclei Set Reset
Nihil opus est ut disable obloquitur cum programmatio GPIOx_ODR in gradu particulae: una vel plura minuta mutari possunt cum una operatione atomica scribe APB2. Hoc obtinetur scribendo "1" ad tabulam reponendam (GPIOx_BSRR vel, ad solum rete, GPIOx_BRR) de frenum mutandum. Aliae minutae non mutabuntur.
In actis diplomatis nomina propria explanatoria satis habent - IDR = initus Directio Register, input register; ODR = Output Directio Registri, output mandare. Non opus est illis in re praesenti.
Demum regere registra. Cum in secundo SPI fibulas quaerimus, nempe PB13, PB14 & PB15, statim in CRH intuemur;
Et videmus quod in calcariis aliquid scribere debebimus ab 20 ad 31 .
Iam supra figuratum est quod e paxillis velimus, ita hic sine tortore faciam, modo dicam quod INSTITUTUM designat directionem (input si ambae ponuntur ad 0) et clavum celeritatem (opus 50MHz, i.e. utrumque clavum ad "1"), et CNF modum ponit: regularis "dis-traho" - 00, "alterativus" - 10. Defectu, ut supra vidimus, omnes fibulae tertiam partem ab imo (CNF0) habent; ponit modum tristique initus.
Cum aliud consilium cum hoc spumae facere instituo, pro simplici modo omnia possibilia definivi et CNF valores tam inferiores quam superiores in registris potestate.
Nunc magna sunt omnia, sed non opus. Quia hoc est STM32, electricitatem conservant, id quod opus est ut clocking requiritur peripheralium.
Conversus in clocking
Excubiae, quae etiam pro horologio dicuntur, pro clocking. Et iam potuimus notare abbreviationem RCC. Illud exspectamus in documentis: hoc est Reset et Horologium Imperium.
Difficillima pars horologii nostri, ut supra dictum est, feliciter evenit ab hominibus STM, ob quod illis gratias maximas agimus (iterum nexum dabo. Di Hal's websiteut pateat quam conturbatio sit). Tantum opus est registris author ut clocking periphericum (Periphericum Clock activare registra). Primum, basim RCC inscriptionis inveniamus, est in ipso initio "Manae Memoriae":
Et tunc vel deprime nexum ubi aliquid in lamella invenire conaris vel multo melius per descriptiones elaborandi regestis e sectionibus circa. enable commentariis. Ubi invenies RCC_APB1ENR et RCC_APB2ENR:
Atque hi igitur frena continentes clocking SPI2, IOPB (I/O Port B) et functiones alternativas (AFIO).
Si facultas et vis experiendi habes, coniunge DM634 hoc simile: DAI ad PB15, DCK ad PB13, LAT ad PB14. Possimus a 5 volts aurigam, campos coniungere noli.
STM8 PWM
PWM in STM8
Cum hoc articulum inibam modo, decrevi, exempli causa, tentare aliquam functionem ignotae chip utentis tantum schedulae, ut cum sutore sine ocreis non desinam. STM8 huic muneri specimen fuit: primum, duas tabulas Sinensium cum STM8S103 habui, secundo, non admodum popularis, ideoque tentatio legendi et solutionis in interreti innititur defectu harum ipsarum solutionum.
Defalta, STM8 in frequentia 2 MHz operatur, hoc statim corrigi debet.
HSI (CELITAS Internum) Horologium
Signum horologii HSI derivatur ab interno 16 MHz RC oscillatoris cum divisore programmabili (1 ad 8). In tabula divisoris horologii positum est (CLK_CKDIVR).
Nota: initio, HSI RC oscillator cum divisore 8 eligetur ut fons praecipuus horologii signum.
Inscriptionem electronicam in notitia electronicarum invenimus, descriptionem in refman et vide tabulam purgari debere:
Cum PWM currere volumus et LEDs coniunge, inspiciamus pinout:
Chip parvum est, multa munera in eisdem paxillis suspenduntur. Quod in uncis quadratis est "officinatio alternativa", mutatur per "optionem bytes" (optio bytes) - aliquid simile Atmega fuses. Valores grammatice mutare potes, sed non est necessarium, quia Novus functionality solum post reboot reducitur. Facilius est uti ST Visual Programmer (downloaded with Visual Develop), qui hos bytes mutare potest. Pinout ostendit CH1 et CH2 fibulas primi timoris occultas in uncis quadratis; necesse est ut AFR1 & AFR0 frena in STVP constituant, & altera etiam CH1 outputa secundi timoris ab PD4 ad PC5 transferat.
Ita fibulae 6 continentes LEDs: PC6, PC7 et PC3 pro secundo, PC5, PD3 et PA3 pro secundo.
Erectio I/O fibulae ipsae in STM8 simplicius et logicius est quam in STM32;
nota ex Atmega DDR data directione mandare (Data Directio Register): 1 = output;
mandare primum imperium CR1, cum output, modum dis-trahendi ponit (1) vel exhaurire aperta (0); quoniam LEDs cum cathodibus coniungo, hic zeros relinquo;
secunda mandare potestate CR2, cum output, celeritas horologii ponit: 1 = 10 MHz
Auto-reload, AR - autoloadable valorem usque ad quem timor numerabit (venae tempus);
Renovatio Vicis, UEV - eventus qui fit cum timor AR numeravit;
PWM Officium Cycle - PWM officium cycli, saepe vocatur "officium factor";
Captis / Compare Value - valorem pro captione / comparatione, cui timor numeravit facturus aliquid (in casu PWM, signum output invertit);
Preload Precium - preloaded valorem. Compare valorem mutare non potest dum timor utres, alioquin PWM cyclus franget. Novae igitur valores transmissae in quiddam ponuntur et evellitur, cum timor ad finem suae countionis perveniat et retegat;
Ora-aligned и Centrum-aligned modos - alignment in confinio et in centro, idem quod Atmel's Fast WM и Phase-recte PWM.
OCiREF, Output Compare Reference signum - signum output referat, re vera, quod in PWM modi clavum respondentem apparet.
Ut iam ex pinout liquet, duo timers facultatem habent PWM, primus et secundus. Utrumque XVI frenum, primum multum additamenta (praesertim, numerare potest et sursum et deorsum). Uterque opus est aequaliter laborare, itaque statui ab altera tenuiorum manifesto incipere, ut non casu aliquo utatur quod ibi non est. Aliquid problema est, descriptionem functionis PWM omnium timentium in relatione manuali in capitulo de primo timore (16 PWM Modus), sic tibi omni tempore salire et emittere per documentum.
PWM in STM8 magnum habet commodum super PWM in Atmega:
Terminus varius PWM
Ratio configuratione ab imo ad summum
Fundum computatio activa est si DIR frenum in TIM_CR1 mandare purgatum est
exempli gratia
Utitur exemplo primo PWM mode. Signum PWM referentis OCiREF alta est quamdiu TIM1_CNT < TIM1_CCRi. Alias dictum suscipit sed, massa. Si valor comparationis in TIM1_CCRi registro maior est quam valorem autoload (TIM1_ARR registri), signum OCiREF apud 1 habetur. Si valor comparationis sit 0, OCiREF nulla habetur....
STM8 timer in update eventu primum checks simile valoremet tunc demum signum facit. Timor Atmega primum cochleis et deinde comparat, inde in compare value == 0 output est acus, de quo aliquo modo agendum est (exempli gratia, programmatice invertendo logicam).
Quid ergo facere velimus: 8-bit PWM (AR == 255), computatis ab imo ad summum, alignment per fines. Cum bulbi leves cathodes cum spumae coniunguntur, PWM output 0 (duc) debet donec simile valorem and 1 after.
De quibusdam iam legitur WM modus, sic invenimus tabularium inquisitum secundi timoris per inquisitionem in relatione manuali huius locutionis (18.6.8 - TIMx_CCMR1);
110: Modus primus PWM - cum ab imo ad summum computando, canalis primus activus est dum TIMx_CNT <TIMx_CCR1. Alioquin rivus primus iners est. [In documento est exemplum erroneum crustulum a timer 1] 111: Modus secundus PWM – computando ab imo ad summum, primus canalis iners est dum TIMx_CNT <TIMx_CCR1. Alioquin primus canalis est activus.
Cum LEDs cum MK per cathodis conexi sunt, secundus modus nobis convenit (primus quoque, sed tamen nondum scimus).
Bit III OC3PE: Admitte pin I preload
0: Preload mandare in TIMx_CCR1 is disabled. Scribere potes ad TIMx_CCR1 aliquando. Novus valor statim operatur.
1: Preload mandare in TIMx_CCR1 est enabled. Legere / scribe res accedere preload mandare. Valor praeloadus TIMx_CCR1 in tabulario umbraculo in unoquoque eventu update onustus est.
*Nota: Pro modus PWM ad recte operandum, praescriptio tabulae praestanda est. Hoc non est necessarium in uno signo (opM frenum in TIMx_CR1 in tabulario positum).
Bene, omnia invertamus quae nobis necessaria sunt ad tres vias timoris secundi:
Secundus timor non potest nisi ab imo ad summum numerare, alignment in finibus, nihil mutari debet. Ponamus divisorem frequentiam, exempli gratia, ad 256. Pro secundo divisore in TIM2_PSCR registro positum est et potestas duorum est;
Restat ut in conclusiones et ipsum secundo. Prima quaestio ex registris solvitur Captis/Compare enablebini, tres canales asymmetrice per eos dispersi. Hic etiam discimus quod signum verticitatem potest mutare, i.e. in principio, PWM Mode uti potuit 1. Scribimus:
Simplex analogon AnalogWrite scribamus (), quod ipsa bona ad timerem ad comparationem transferet. Registra nominantur praedictio Captis/Compare commentariisdua sunt pro quolibet canali: ordo inferior 8 calcaria in TIM2_CCRxL et summus ordo in TIM2_CCRxH. Cum an-triginta PWM creavimus, satis est ad notas minimas tantummodo scribere;
Attentus lector animadvertet nos PWM leviter deesse, non posse C% satietatem producere (ad valorem maximum 100, signum unius cycli timentis inverti). Nam LEDs hoc non refert, et attentus lector jam quomodo reficere possit divinare.
PWM secundo opera timentis, ad primum transeamus.
Prima timer frena isdem prorsus in eisdem registris habet (sicut ea quae in secundo tempore "reservantur" manserunt, in primo pro omnibus provectis rebus active adhibentur). Itaque satis est inscriptiones earumdem tabularum in scheda reperiri et in codice exscribere. Bene, mutant valorem divisorem frequentiam, quia... Primus timor vult non potestatem duorum recipere, sed valorem XVI obolum in duobus registris Prescaler High и Minimum. Omnia facimus, et prima timor non operatur. Quid rei est?
Quaestio solui potest nisi per totam sectionem de registris timentis 1 inspiciendo, ubi quaerimus illam, quam secundus timor non habet. Erit 17.7.30 Mandatum frange (TIM1_BKR)ubi haec bit;
Tertium mini-projectum est octo RGB LEDs coniungere ad modum secundi timoris in PWM et eos colores diversos ostendere. Fundatur in conceptu multiplicationis LED, quae est quod si LEDs valde et celerrime conversus est, nobis videbitur constanter in (pertinacia visionisInertia visus). Ego statim feci aliquid simile hoc in Arduino.
Bene, etc. Utique ad pulchram operationem requiritur quod anode iungitur et LED "ignitur" simul. Bene vel fere. In casu, necesse est codicem scribere, qui valores in tribus secundis vicissitudines outputabit, eas cum UEV pervenit, simulque mutabit actuosam RGB LED.
Cum commutatio ducatur automatice, necesse est "videre memoriam" creare ex qua manubrium interregem datam accipiet. Haec simplex ordinata est;
uint8_t colors[8][3];
Ut colorem specifici LED mutet, satis erit bona requisita in hunc ordinata scribere. Et variabilis reus erit numero LED . activi
uint8_t cnt;
Demux
Ad propriam multiplicem, satis impariter, CD74HC238 demultiplexor est. Multiplexer - chip qui operantem in hardware <<. Per tres initus fibulas (bitras 0, 1 et 2) eum numero trium numerorum X pascimus, et respondens numerus output operatur (1<<X). Reliquae inputationes spumae totum consilium scalis adhibentur. Hoc chip non opus est non solum ad numerum paxillos microcontrollorum occupatorum reducere, sed etiam ad salutem — ut non in plures LEDs quam fieri possit et MK non incendat accidens. Chipum denarium constat et semper in domo tua medicinalis scrinium servari debet.
Nostra CD74HC238 author erit ut intentionem praebeat ad anoodum desiderati LED. In multiplici multiplex-cursu, per P-MOSFET subministret intentionem columnae, sed in hoc demo potest directe, quia trahit XX mA, secundum absolutum maximum ratings in datasheet. Ex datasheet CD74HC238 pinouts et hoc opus est fraudulentus sheet:
H = alta intentione gradu, L = humili intentione gradu, X - non curat
Ad paxillos PD2, PC1, PC3 & PC0 of StM1 applicamus. Mensa superiora cum gradus tam humiles quam excelsos contineat, paxillos istos quasi clavos distrahentes configuramus.
PWM
PWM secundo configuratur eodem modo, quo in priori fabula, duabus differentiis;
Primum, opus est ut interregem Update Event (UEV) quae munus vocabit quod toggles activum LED. Hoc fit mutato frenum Admitte update Interpellare in actis mandare cum vera nominis
Secunda differentia comparatur ad phaenomenon multiplicationis, ut ghosting — Parasitus ardor Diodorum. In nobis, constare potest ex eo quod timer, interregem in UEV, pergit tick, et tracto interpellare non vacat mutandae ductus antequam timer aliquid scribere coeperit ad paxillos. Ad hoc pugnandum, logicam invertere debebis (0 = maximam splendorem, 255 = nihil illuminatum) et extremam officii cycli valores vitabis. Illae. ut post UEV LEDs exeant perfecte ad unum cyclum PWM.
Fuge occasum r, g et b ad 255 et memento invertere ea cum utendo.
obloquitur
Essentia interpellationis est quod in quibusdam circumstantiis chippis sistit principale propositum exequi et munus aliquod externum appellat. Obloquitur ob influxus externos vel internas, etiam timer.
Cum primum consilium in ST Visual Evolvere, in addition to main.c accepimus fenestram cum arcanum file stm8_interrupt_vector.cipso facto inclusa est in re. In hoc fasciculo, munus unicuique interrumpendum tribuitur NonHandledInterrupt. Munus nostrum optatum interrumpere debemus obligare.
Data scheda habet mensam vectorum interpellandi, ubi ea quae opus sunt invenimus:
XIII TIM13 renovatio / inundatio
14 TIM2 captis/compare
Necesse est nos duxerunt ad UEV mutare, ut interrumpat #13.
Primo igitur in tabula stm8_interrupt_vector.c mutare defaltam nomen muneris responsalis ad interpellandum No. 13 (IRQ13) ad proprium tuum:
{0x82, TIM2_Overflow}, /* irq13 */
Secundo, tabellam creare debebimus main.h cum sequenti contenti:
Alius coetus mandatum est sim - obloquitur vertit off. Avertendi sunt oportet dum bona nova scribentur ad "memoriam video", ut interruptio causata in momento iniquo aciem non corrumpat.