Svet elektronike

ponedeljek
25 september 2017
Text size
  • Increase font size
  • Default font size
  • Decrease font size
Domov Revija Programiranje Programiranje s HAL knjižnicami (2) - Uporaba SPI in notranje RTC ure

Programiranje s HAL knjižnicami (2) - Uporaba SPI in notranje RTC ure

E-pošta Natisni

V predhodnem članku, objavljenim v reviji Svet Elektronike, smo predstavili razvojna orodja, katera bomo uporabljali pri nadaljnjem razvoju vgrajene programske opreme. Tu se bomo osredotočili predvsem na uporabo STM32 HAL knjižnic, katere nam z grafičnim konfiguriranjem periferije olajšajo rokovanje z mikrokontrolerjem. V okviru članka smo predstavili osnovno delo z grafičnim orodjem CubeMX [1], namenjenim STM32 družinam mikrokontrolerjev, kjer smo izdelali osnovno aplikacijo, katera preklaplja LED diode razvojne plošče.

Slike niV tokratni izdaji revije Svet Elektronike bomo nadgradili znanje grafičnega nastavljanja periferije, in sicer bomo dodali SPI povezavo do že poznanega LCD zaslona (128x64) [2], k temu pa bomo dodali do sedaj še neznane funkcionalnosti, in sicer sta to notranja RTC ura in stražni mehanizem (ang. watch-dog). Dodatno k temu bomo pokazali, kako lahko procesor deluje v režimu, v katerem varčuje z energijo – uporabili bomo najbolj potraten način, obstajajo še varčnejši načini, a so kompleksnejši. Aplikacija, ki jo bomo izdelali, bo tako s pomočjo RTC prekinitve bujenja (wake-up) zbujala procesor in preklapljala LED diode razvojne plošče. Pritisk uporabniškega gumba bo spremenil vsebino zaslona, a bo namerno vnesel stanje, v katerem bo stražni mehanizem zaznal neodzivnost, tako da bomo nazorno prikazali, kako deluje ta funkcionalnost.

Strojna oprema

RTC – ura realnega časa

Slike niUro realnega časa do sedaj nismo uporabljali, a je to ključna komponenta vsakega računalniškega sistema, tudi mikrokontrolerja. Poenostavljeno povedano, je RTC računalniška ura, ki skrbi za precizno merjenje časa. Dizajn tega sklopa zahteva ogromno znanja, saj če želimo imeti izjemno precizno uro, je potrebno imeti izjemno kvaliteten kristal, opraviti statično kalibracijo, temperaturno kompenzacijo, itd. Za naše potrebe bomo interno RTC uro uporabili za generiranje prekinitve, s katero je mogoče mikroprocesor zbuditi iz spanja. Slaba lastnost interne RTC ure je, da jo izgubimo, ko mikrokontroler izgubi napajalno napetost. To se da na razvojni plošči rešiti tako, da na pin VBat pripeljemo napajalno napetost ali da v obliki zunanje komponente povežemo RTC uro na eno izmed komunikacijskih vodil procesorja.

Stražni mehanizem

Stražni mehanizem uporabljamo, da se zavarujemo pred nedelujočo napravo. Vemo, da je programska oprema podvržena hroščem, ki so v svetu mikrokontrolerjev lahko katastrofalne narave. Kaj hitro se nam pripeti, da imamo v aplikaciji hrošča, ki povzroči, da pristanemo v HardFault() prekinitveni rutini. Iz te rutine navadno ni več povratka (razen če ga sami ne sprogramiramo), kajti v njej se nahaja neskončna zanka. V tem primeru je naša naprava nedelujoča in je potreben fizični odklop napajanja ali ponovni zagon naprave, da le-ta zopet prične delovati (dokler zopet ne doseže hrošča). V takšnem primeru nam je v pomoč stražni mehanizem, ki si ga lahko predstavljamo kot odštevalnik časa – časovna vrednost je nastavljiva – in ko odštevalnik doseže vrednost 0, bo izvedel ponovni zagon procesorja. Da se to ne zgodi, mora naša aplikacija poskrbeti, da se odštevalnik intervalno ponastavlja (v obliki sekvence, spremembe stanja GPIO pina, itd.) na začetno vrednost. Torej je logično, ko aplikacija ni več sposobna ponastaviti odštevalnika, mora biti nekaj narobe z njo, zato izvede ponovni zagon mikrokontrolerja in poskusi znova. Kljub temu, da imamo napako, bo naprava večino časa odzivna!

Varčevanje z energijo

Skoraj vsi obstoječi mikrokontrolerji omogočajo takšen ali drugačen način varčevanja z energijo. Poenostavljeno povedano, energijo lahko varčujemo z nižanjem maksimalne delovne frekvence, ne definiramo GPIO pinov, ki jih ne potrebujemo, ipd. A v procesor so vgrajeni še dodatni načini varčevanja z energijo, ki so bodisi mile ali zelo restriktivne narave, kar se seveda odraža na končni porabi. Procesor STM32F4, ki ga trenutno uporabljamo, omogoča tri režima varčevanja z energijo, in sicer Sleep, Stop in Standby način. Omenimo le poglavitne lastnosti posameznih načinov:

Sleep način ustavi procesorsko jedro, stanje periferije ostane nespremenjeno, kar pomeni, da GPIO pini ostanejo v stanju, v katerem so bili pred vstopom v ta režim delovanja. Iz tega načina pridemo ob vsaki zaznani proženi prekinitvi NVIC vektorja – torej tudi systick časovnik –nadaljujemo pa iz točke vstopa v sleep način. Stop način ustavi vse ure 1.2 V domene, onemogoči PLL, HSI in HSE RC komponente ter ohranja notranji SRAM in registre. Iz tega načina pridemo ob vsaki konfigurirani EXTI liniji, delo pa nadaljujemo iz točke prehoda v spanje.

Program

Celotni članek

Programiranje s HAL knjižnicami (2) - Uporaba SPI in notranje RTC ure

2017_SE254_39

Zadnjič posodobljeno ( Četrtek, 29 Junij 2017 12:31 )  
JoomlaWatch 1.2.12 - Joomla Monitor and Live Stats by Matej Koval

PayPal naročnina

Svet elektronike zdaj z več vsebine (Arduino, ARM, Raspberry PI, PSoC, PIC, lestvično programiranje, radioamaterstvo...)

 

Če želite kupiti celoletno Naročnino na tiskano revijo Svet elektronike z vključenim 10% popustom po ceni samo 44,95 Evrov kliknite spodnji gumb (velja za pravne osebe!)

 

Če želite kupiti celoletno Naročnino na tiskano revijo Svet elektronike z vključenim 20% popustom po ceni samo 39,95 Evrov kliknite spodnji gumb (velja za fizične osebe!)

 

Če želite kupiti celoletno Spletno naročnino na revijo Svet elektronike po ceni samo 20,33 Evrov kliknite spodnji gumb.

 

Če ste obstoječi naročnik tiskane revije ali avtor članka v reviji Svet elektronike in želite kupiti Spletno naročnino na revijo Svet elektronike s 50% pustom po ceni samo 10,16 Evrov kliknite spodnji gumb.

 

V primerih spletne naročnine boste na Vaš email naslov v enem delovnem dnevu prejeli Uporabniško ime in Geslo za celoletno Spletno naročnino na revijo Svet elektronike


Naša spletna stran uporablja piškotke. Če želite izvedeti več o uporabi piškotkov si preberite našo Politiko o piškotkih.

Sprejmem piškotke s te strani

EU Cookie Directive Plugin Information