Fórum témák

» Több friss téma
Cikkek » Launchpad: ismerkedés az MSP430 mikrovezérlőkkel II.
Launchpad: ismerkedés az MSP430 mikrovezérlőkkel II.
Szerző: icserny, idő: Nov 3, 2011, Olvasva: 21209, Oldal olvasási idő: kb. 5 perc
Lapozás: OK   2 / 8

Az óra alrendszer regiszterei

Az óra alrendszer működése elsősorban az alábbi regiszterekkel áll kapcsolatban:

Regiszternév Funkció rövid leírása Típus Cím Kezdőérték
DCOCTL DCO vezérlő regisztere R/W 0x56 0x60 (PUC)
BCSCTL1 Óra alrendszer 1. vezérlő regisztere R/W 0x57 0x87 (POR)
BCSCTL2 Óra alrendszer 2. vezérlő regisztere R/W 0x58 0x00 (PUC)
BCSCTL3 Óra alrendszer 3. vezérlő regisztere R/W 0x53 0x05 (PUC)
IE1 SFR interrupt engedélyező bitek 1 R/W 0x00 0x00 (PUC)
IFG1 SFR interrupt jelzőbitek 1 R/W 0x02 0x00 (PUC)

A regiszterek sorában meg kellett volna még említenünk a Státusz Regisztert (SR) is, amelynek néhány bitje szintén befolyásolja az óra alrendszer működését, de ezekre a részletekre majd az energiatakarékos üzemmódok kapcsán térünk ki. Most csak annyit kell tudnunk, hogy az SR ezen bitjeivel egyes órajelek (MCLK, SMCLK) és oszcillátorok (pl. DCO), valamint a CPU működése letiltható. Ezek egy részét az előző oldalon az 1_1. ábrán a CPUOFF és SGC1 kapcsolókkal próbáltuk érzékeltetni, de ott nem tértünk ki minden részletre.

A digitálisan vezérelhető oszcillátor (DCO) hangolása

Mielőtt a regiszterek ismertetését folytatnánk, szót kell ejteni a digitálisan vezérelhető oszcillátor (DCO) beállításáról, ami első ránézésre nagyon komplikáltnak tűnik. A DCO frekvenciája a BCSCTL1 regiszter RSELx  bitcsoportjának, valamint a DCOCTL regiszter DCOx és MODx bitcsoportjainak beírásával állítható be. Ezek szerepe a következő:

RSELx - tartomány kiválasztása (range select). A négybites bitcsoportba 0 - 15 közötti érték írható, amellyel a frekvenciát durva lépésekben hangolhatjuk (RSELx = 0 adja a legalacsonyabb frekvenciát, s minden lépés kb. 1,3 - 1,4-szeresére növeli a frekvenciát a 0,6 - 20 MHz tartományban (Figyelem, ügyeljünk rá, hogy az MSP430G2xxx mikrovezérlőknél 16 MHz a legmagasabb megengedett MCLK/SMCLK órajel frekvencia!)

DCOx - a DCO frekvenciájának kiválasztás. Az RSELx bitekkel kiválasztott tartományban finomabb hangolást tesz lehetővé (8 diszkrét lépésben) ez a hárombites bitcsoport. Minden lépés kb. 8 %-kal növeli a frekvenciát.

MODx - moduláció, az átlagos frekvencia finomhangolásához. A moduláció azt jelenti, hogy az órajel nem állandó frekvenciájú, hanem a DCOx bitcsoporttal kiválasztott és nála 8 %-kal nagyobb frekvencia váltakozik. Az ebbe az ötbites bitcsoportba beírt szám azt mondja meg, hogy minden 32  órajel periódusból hány legyen a magasabb frekvenciájú óraimpulzus (a többi óraimpulzus értelemszerűen a DCOx bitcsoporttal kiválasztott alacsonyabb frekvenciával ismétlődik).

A DCOCTL regiszter

A DCOCTL regiszter a DCO digitálisan vezérelhető oszcillátor finomhangolására szolgál (a durvább hangolást a BCSCTL1 regiszter RSELx  bitcsoportjának beállításával végezhetjük). Az egyes bitek szerepét az alábbiakban foglalhatjuk össze (a táblázat utolsó sora tájékoztat az adott bit írhatóságáról, olvashatóságáról, s arról, hogy mi a bit alapértelmezett értéke):

Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0
DCO2 DCO1 DCO0 MOD4 MOD3 MOD2 MOD1 MOD0
r/w-0 r/w-1 r/w-1 r/w-0 r/w-0 r/w-0 r/w-0 r/w-0

DCO2: DCO0 - a DCO frekvenciájának kiválasztása. A hangolást nyolc lépésben végezhetjük, az RSELx bitekkel kiválasztott frekvenciasávban. Minden lépés kb. 8 %-kal növeli a frekvenciát.

MOD4:MOD0 - Modulátor beállítás. A bitcsoportba beírt MOD érték azt mondja meg, azt mondja meg, hogy minden 32  órajel periódusból hány legyen a magasabb frekvenciájú (a DCO+1 beállításhoz tartozó) óraimpulzus. A maradék (32-MOD) óraimpulzus értelemszerűen a DCOx bitcsoporttal kiválasztott alacsonyabb frekvenciával ismétlődik. Megjegyzés: a DCOx = 7 beállítás esetén a moduláció nem használható!

A DCOCTL regiszter írható, olvasható, s minden RESET-kor DCOx = 3, MODx =0 értékre áll be.

A BCSCTL1 regiszter

BCSCTL1 regiszter segítségével ACLK osztóját állíthatjuk be és a DCO  durva hangolását végezhetjük el. Az egyes bitek szerepét az alábbiakban foglalhatjuk össze:

Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0
XT2OFF XTS DIVA1 DIVA0 RSEL3 RSEL2 RSEL1 RSEL0
r/w-1 r/w-0 r/w-0 r/w-0 r/w-0 r/w-1 r/w-1 r/w-1

XTOFF - az egyes MSP430 vezérlőkben beépített XT2 oszcillátor letiltására szolgál (0: XT2 engedélyezve van, 1: XT2 le van tiltva, hacsak MCLK vagy SMCLK nem használja). A Launchpad kártyához használt mikrovezérlőkben XT2 nincs implementálva, tehát esetünkben ennek a bitnek nincs szerepe!

XTS - az LFXT1 oszcillátor üzemmódját állíthatjuk be azoknál a mikrovezérlőknél, amelyek LFXT1 nagyfrekvenciás üzemmódját is támogatják (0: alacsony frekvenciájú mód 1: magas frekvenciájú mód). A Launchpad kártyához használt MSP430G2xxx mikrovezérlők azonban nem ilyenek, tehát ennek a bitnek esetünkben nincs szerepe!

DIVA1: DIVA0 - frekvencia leosztási arány ACLK számára (00: 1/1, 01: 1/2, 10: 1/4, 11: 1/8). A BCSCTL3 regiszter LFXT1Sx bitcsoportjával kiválasztott oszcillátor leosztott frekvenciája lesz az ACLK órajel. 

RSEL3: RSEL0 - frekvenciasáv kiválasztása (durva hangolás) DCO számára. A legalacsonyabb frekvenciasávot RSELx = 0 beállítással választhatjuk ki (~100 kHz-es sávközép). A bekapcsoláskor alapértelmezett beállással (RSELx = 7, DCOx = 3, MODx =0) DCO frekvenciája kb. 1 MHz lesz

A BCSCTL2 regiszter

BCSCTL2 regiszter segítségével az MCLK és SMCLK órajelek forrását választhatjuk ki, és frekvencia- osztójukat állíthatjuk be. Az egyes bitek szerepét az alábbiakban foglalhatjuk össze:

Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0
SELM1 SELM0 DIVM1 DIVM0 SELS DIVS1 DIVS0 DCOR
r/w-0 r/w-0 r/w-0 r/w-0 r/w-0 r/w-0 r/w-0 r/w-0

SELM1:SELM0 - az MCLK órajel forrását választja ki (00 vagy 01 esetén: DCO, 10 vagy 11 esetén:  LFXT1 vagy VLO - attól függően, hogy melyik van engedélyezve). Mivel a Launchpad kártyához használt mikrovezérlőkben XT2 nincs implementálva, a SELM0 bitnek gyakorlatilag nincs szerepe (azoknál a mikrovezérlőknél, ahol van XT2 oszcillátor, a 10 bitkombináció XT2-t választja ki).

DIVM1: DIVM0 - az MLCK frekvenciaosztóját állítja be (00: 1/1, 01: 1/2, 10: 1/4, 11: 1/8).

SELS - az SMCLK órajel forrását választja ki (0: DCO, 1: LFXT1 vagy VLO - attól függően, hogy melyik van engedélyezve). Megjegyzés: Azoknál a mikrovezérlőknél, ahol van XT2 oszcillátor, a SELS =1 beállítás XT2-t választja ki (ebben az esetben  LFXT1 vagy VLO nem választható ki SMCLK forrásául.

DIVS1: DIVS0 - az SMLCK frekvenciaosztóját állítja be (00: 1/1, 01: 1/2, 10: 1/4, 11: 1/8).

DCOR - egyes MSP430 mikrovezérlőknél lehetőség van arra, hogy a DCO oszcillátort külső ellenállással hangoljuk. Ennek kiválasztására szolgál ez a vezérlőbit (0: belső idózítő, 1: külső ellenállás). A Launchpadnál használt MSP430G2xxx mikrovezérlőknél nincs ilyen lehetőség!

A BCSCTL3 regiszter

BCSCTL3 regiszter segítségével állíthatjuk be az LFXT1 oszcillátor üzemmódját, kapcsolhatjuk be a beépített kapacitásokat, s itt állíthatnánk be az XT2 oszcillátor ütemmódját is - ha volna. A legalsó két bit csak olvasható,  itt oszcillátor hiba esetén bebillen a megfelelő bit. A regiszter egyes bitjeinek szerepét az alábbiakban foglalhatjuk össze:

Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0
XT2S1 XT2S0 LFXT1S1 LFXT1S0 XCAP1 XCAP0 XT2OF LFXT1OF
r/w-0 r/w-0 r/w-0 r/w-0 r/w-0 r/w-1 r-0 r-1

XT2S1:XT2S0 - az XT2 oszcillátor üzemmódját állítja be. Mivel a Launchpad kártyához használt mikrovezérlőkben XT2 nincs implementálva, esetünkben az XT2S1:XT2S0 biteknek nincs szerepe!

LFXT1S1:LFXT1S0 - az LFXT1 oszcillátor üzemmódját állítja be (00: 32 kHz kristállyal, 01: fenntartott, 10: VLO, 11: külső digitális jelforrás használata). Megjegyzések: Ezeknek a biteknek XTS = 1 beállítás esetén más jelentése van (XT1 magasfrekvenciájú módját állítanák be), de a Launchpadnál használt MSP430G2xxx mikrovezérlőknél nincs ilyen beállítási lehetőség! Az LFXT1Sx = 01 bitkombináció későbbi fejlesztéseknek van fenntartva, esetünkben nem használható. Mi csak a 00 (ehhez be kell forrasztani a 32 kHz kristályt!) és az 10(VLO) üzemmódot fogjuk használni.

XCAP1:XCAP0 - az LFXT1 oszcillátor alacsonyfrekvenciájú üzemmódjában (pl. a 32 kHz-es órakvarc használata esetén) a beépített kapacitásokat állíthatjuk be (00: ~1pF, 01: ~6 pF, 10: ~10 pF, 11: ~12.5 pF).

XT2OF - az XT2 oszcillátor hiba jelzése (0: nincs hiba, 1: oszcillátor hiba). Esetünkben ennek a bitnek nincs szerepe.

LFXT1OF - az LFXT1 oszcillátor hiba jelzése (0: nincs hiba, 1: oszcillátor hiba - pl. nem rezeg a kvarc, vagy nincs beépítve). Ez a jelzőbit bekapcsoláskor vagy RESET-kor automatikusan '1'-be áll, ez gondoskodik róla, hogy MLCK kezdetben a DCO órajelllel induljon el. A jelzőbit kiolvasáskor, vagy az OFIFG törlésekor automatikusan törlődik, ám amíg az oszcillátor nem rezeg stabilan, a hibajelzés újra '1'-be állhat.

Megjegyzés: oszcillátor hiba esetén az IFG1 regiszter OFIFG megszakításkérő jelzőbit is bebillen. Ha engedélyezve van, akkor nem maszkolható megszakítást okoz. Az OFIFG bitet kiszolgáláskor szoftveresen törölni kell.


A cikk még nem ért véget, lapozz!
Következő: »»   2 / 8
Értékeléshez bejelentkezés szükséges!
Bejelentkezés

Belépés

Hirdetés
Lapoda.hu     XDT.hu     HEStore.hu
Az oldalon sütiket használunk a helyes működéshez. Bővebb információt az adatvédelmi szabályzatban olvashatsz. Megértettem