5. lecke

STM8 MCUs lehet órajele három forrásból:

Nagy sebességű belső RC oszcillátor (HSI). amely frekvencián működik a 16 MHz-es -
Kis sebességű belső RC oszcillátor (LSI). aki dolgozik egy frekvenciája 128KHz






A külső RC oszcillátor (kvarc), amely működhet közötti frekvenciával, 1 és 24 MHz-es,
A vizsgálat során STM8 mikrokontroller fogjuk használni a belső oszcillátor, ami vagyunk elégedve (Szeretném megjegyezni, hogy a belső oszcillátor van kalibrálva nagyon jó). Természetesen a külső kristály adna nekünk nagyobb pontosságot, de mielőtt elkezdjük csinálni pritsenzionnye órát vagy többet, vagy arra, hogy miért van szükség extra áramkörök a táblán.

A dob a mikrokontroller, ha nem történtek változások, a nyilvántartások, a belső oszcillátor fog futni frekvenciája 2 MHz-es. Mi fog változni a hozzáállás frekvenciaosztó, hogy a belső óra megkezdte a munkáját a 16MHz frekvencia

áramfejlesztőnkből tuning algoritmus a következő:
-Állítsa vissza az összes generátor regiszterek a kezdeti érték
-Válogatás órajelforrás
-Engedélyezése óra mechanizmus
- Várakozás a stabilizációs a rendszer mikrokontroller óra

Óra rendszer regisztrálja
Regiszter Leírás óra körül kezdődnek a 89. oldalon STM8S Reference Manual. Ebben a cikkben fogjuk végig a nyilvántartások koncentráló értékeket fogunk telepíteni. A teljes leírás, vegye fel a kapcsolatot STM8S Reference Manual.

CLK_ICKR - regisztrálja belső óra (Internal Clock Register)

Regisztráció Név / Leírás
REGAH / felett az intézkedések a belső feszültség szabályozó, amikor a chip belép az Aktív-Halt módban.
LSIRDY / hardver telepítése, ez a bit jelzi, hogy készen áll LSI és stabil. 0 - azt jelzi, az oszcillátor nem áll készen, 1 - azt jelzi, hogy az oszcillátor stabil
LSIEN / Ez a bit határozza meg, hogy a szinkronizálási forrás a mikrokontroller kiválasztva.
FHWU / A bit lehet változtatni a programban. Ez a bit jelzi, hogy az tartalmazza a gyors ébredés a Active-Halt módban. 0 = letiltva, 1 = engedélyezve
HSIRDY / meg és állítsa vissza a hardver, ez a bit határozza meg a stabil és készen áll, hogy használja a belső órajel ha HSI.
HSIEN / A bit lehet változtatni a programban. Ez határozza meg, hogy a HSI van kiválasztva órajelforrás. Továbbá, ez a bit be lehet állítani hardver kívánt kénytelen működését HSI. = 0 azt jelzi, hogy a HSI nincs kiválasztva, 1 = azt jelzi, hogy a HSI kiválasztott.

CLK_ECKR - külső órajel regiszter (külső órajel Register)

Regisztráció Név / Leírás
HSERDY / feltétel a külső órajel forrás. 0 = nincs kész, 1 = teljes.
HSEEN engedélyezése / \ letiltja a külső órajel forrás. 0 = letiltva, 1 = engedélyezve

CLK_CMS R - Állapotregiszter órajel generátor (Clock Mester Status Register)
Ez a regiszter meg és állítsa vissza a hardver és jelzi, hogy melyik a generátor van kiválasztva órajelet.
A nagysága órajel forrás
0xe1HSI
0xd2 LSI
0xb4 HSE
CLK_SWR - rendszer power shift regiszter óra
Ez a nyilvántartás lehet változtatni a felhasználói programot, és kiválaszthatja a időzítés forrás.
A nagysága órajel forrás
0xe1 HSI
0xd2 LSI
0xb4 HSE

CLK_CKDIVR - térelválasztó rendszer óra
A rendszer órajelet lehet osztani, hogy kisebb működési frekvencia a mikrokontroller mag. Ez a nyilvántartás lehetővé teszi a előosztóval beállítani a belső órajel (HSI) és egy előosztóval a mikrokontroller mag.
Regisztráció Név / Leírás
HSIDIV / előosztóval belső oszcillátor
CPUDIV / előosztóval frekvencia nucleus







Ezek az értékek használhatók előosztóval HSI
Érték / előosztóval
0 / Frekvencia HSI
1 / HIS jelentése osztva 2
2 / HIS jelentése osztva 4
3 / HIS jelentése osztva 8

Azaz, az ilyen értékek is használhatók, mint a előosztó a mag.
Érték / előosztóval
0 / órajel frekvenciája
1 / órajel frekvenciája osztva 2
2 / órajel frekvenciája osztva 4
3 / órajel frekvenciája osztva 8
4 / órajel frekvenciája osztva 16
5 / órajel frekvenciája osztva 32
6 / órajel frekvenciája osztva 64
7 / órajel frekvenciája osztva 128

CLK_PCKENR1 CLK_ PCKENR2 - regiszterek óra teljes kerülete
Ezek a nyilvántartások van szükség annak érdekében, hogy a kínálat az órát, hogy a kívánt minket a periférián - időzítő, csipogók, I2C és így tovább. Minden egyes periféria van rendelve egy bit. Bit állítva egy lehetővé teszi órajelet és eldobjuk nullára - letiltja az órát.

Regisztráció Név / Kiegészítők / Leírás

CLK_PCKENR1 / TIM1 / engedélyezése / tiltása időzítő 1
TIM3 Timer engedélyezése / tiltása 2
TIM2 / TIM5 időzítő engedélyezése / tiltása 2/5 (attól függően, n.)
TIM4 / TIM6 időzítő engedélyezése / tiltása 4/6 (attól függően, n.)
UART1 / 2/3 engedélyezése / tiltása UART 1/2/3
SPI engedélyezése / SPI off
I2C engedélyezése / letiltása I2C
CLK_PCKENR2 / CAN / engedélyezése / letiltása CAN-busz
ADC engedélyezése / letiltása ADC
ÉME Engedélyezi / letiltja a watchdog timer

Kompatibilis perifériák fogja használni az órajelet is. Letiltása szolgáltatás időzítés - letiltani.
CLK_CSSR - biztonsági nyilvántartás
A bekapcsolás után, CSS kezd szorosan figyelemmel kíséri az órajelet a HSE. Ha hirtelen elhallgatott, a következő mentési intézkedések:
- Fut HSI (ha ki van kapcsolva), és az óra be van kapcsolva,
- HSE off
- A CLK_CSSR emelkedik AUX zászló, figyelmeztet minket arra, hogy a munka tartalék generátort.
- Van azonos fekvő CSSD zászló, és ha a bit be van állítva CSSDIE, megszakítás érkezik.
- Minden regiszterek csoportból CLK, kivéve CLK_CKDIVR, blokkolt írásra. Az óra beállításainak módosítása (kivéve osztó) már nem lehet a következő újraindításig.

CLK_CCOR - Állítható kimeneti regiszter órajel
A szolgál kimeneti órajel MC lábát.
CLK_HSITRIMR - kalibrálása belső oszcillátor

Nos, most egy kis példa azt mutatja, hogyan tudunk dolgozni az óra.
Például, egyszerűen fordítsa az állam a pin PD0, és ezzel megváltoztatják az óra beállításait, és a szkóp megfigyelni a frekvencia változását a előosztóval beállítást.

Itt a mi programkód

____________________________________________________________
#include
#include

//
// állítsa a mikrokontroller üzemi frekvenciát 16 MHz a belső oszcillátor
//
érvényteleníti InitialiseSystemClock ()
CLK_ICKR = 0; // visszaállítása regisztrációhoz belső óra
CLK_ICKR_HSIEN = 1; // engedélyezése belső oszcillátor HSI
CLK_ECKR = 0; // letiltása külső oszcillátor
míg a (CLK_ICKR_HSIRDY == 0); // Várakozás stabilizálása a belső oszcillátor
CLK_CKDIVR = 0; // A maximális frekvencia
CLK_PCKENR1 = 0xff; // Ide teljes kerülete
CLK_PCKENR2 = 0xff; // Ugyanaz
CLK_CCOR = 0; // kikapcsolása CCO.
CLK_HSITRIMR = 0; // Kapcsolja ki hsiu vágás.
CLK_SWIMCCR = 0; // Set úszni futni óra / 2.
CLK_SWR = 0xe1; // használata HSI forrásként időzítés
CLK_SWCR = 0; // visszaállítása zászló generátorok kapcsolási
CLK_SWCR_SWEN = 1; // Kapcsolja be a kapcsolót a HSI
míg a (CLK_SWCR_SWBSY = 0!); // Felfüggesztés átállás megtörténik
>

//
//
//
int main (void)
__disable_interrupt (); // letiltása megszakítja inicializálás namoment
//
// inicializálása a láb PD0
//
PD_DDR_DDR0 = 1; // Set pin PD0 kimenet
PD_CR1_C14 = 1; // Pin működik push-pull üzemben,
PD_CR2_C24 = 1; // működési frekvencia 10MHz Pin
//
// Most be a rendszer óráját
//
InitialiseSystemClock ();
__enable_interrupt (); // lehetővé megszakítás
while (1) // Végtelen hurok váltás a pina
PD_ODR_ODR4 = 1; // Mi kérdés egység (+ 5V) a pin PD0
PD_ODR_ODR4 = 0; // Mi kérdés nulla (föld) pin PD0
>
>

_______________________________________________________________
Csatlakoztatása után az oszcilloszkóp a pin mi PD0 látunk itt van egy kép. A kapcsolási frekvencia a mi pin - 2,963MGts. (Megjegyzem, hogy soha nem fogod látni a frekvencia 16MHz tűs, így a mi példánkban gyakorisága 2,963MGts egyszerűen tájékoztató jellegűek és frekvenciájának változtatásával a előosztóval, látni fogjuk, hogy ez meg fog változni)

És most itt van, hogy mi történik, ha mi meg a előosztóval a belső oszcillátor (HSI) 2.
Ehhez meg kell változtatni itt a sorban a mi kódot.
___________________________________________________________
CLK_CKDIVR = 0
______________________________________________________

Az itt
______________________________________________________
CLK_CKDIVR = 0;
CLK_CKDIVR_HSIDEV = 1; // beállítása előosztóval 2
______________________________________________________

A munkánk eredménye az alábbi képre. Jel frekvencia vált 1,335MGts, azaz körülbelül a fele az eredeti frekvencia.




Kapcsolódó cikkek