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: 22763, Oldal olvasási idő: kb. 5 perc
Az óra alrendszer regisztereiAz óra alrendszer működése elsősorban az alábbi regiszterekkel áll kapcsolatban:
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ásaMielő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 regiszterA 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):
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 regiszterA 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:
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 regiszterA 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:
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 regiszterA 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:
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! Értékeléshez bejelentkezés szükséges! |
Bejelentkezés
Hirdetés |