Fórum témák

» Több friss téma
Cikkek » Launchpad: ismerkedés az MSP430 mikrovezérlőkkel III.
Launchpad: ismerkedés az MSP430 mikrovezérlőkkel III.
Szerző: icserny, idő: Jún 19, 2012, Olvasva: 20472, Oldal olvasási idő: kb. 4 perc
Lapozás: OK   5 / 10

Az óra alrendszer beállítása

Az MSP430G2553 és az MSP430G2452 mikrovezérlők óra alrendszere megegyezik a Launchpad kártya korábbi kiadásával kapott mikrovezérlőkével, amelyet a második cikkben már részletesen ismertettem. Az egyetlen különbség az, hogy az új kiadású Launchpad kártyához kapott mikrovezérlőknél több gyárilag kalibrált frekvenciához találunk beállítási paramétereket (1, 8, 12 és 16 MHz). Ezért itt most nem térek ki az óra alrendszer részleteire, csak emlékeztetőül  összefoglalom  a legfontosabb tudnivalókat.

Az MSP430G2xxx mikrovezérlők az alábbi forrásokból vehetik az órajelet:

LFXT1 - alacsony frekvenciájú kristályoszcillátor. Az MSP430G2xxx mikrovezérlők esetében ez az egység csak a 10-50 kHz tartományban használható (tipikusan 32 kHz-es órakvarccal használják, melyet  a mikrovezérlő XIN és XOUT kivezetéseire kell kötni). A kvarcoszcillátor előnye a stabil frekvencia (egy időmérő alkalmazásnál ez elsődleges szempont), hátránya pedig esetünkben az, hogy elveszítjük miatta a P2.6 és P2.7 I/O kivezetéseket.

VLO - nagyon kis fogyasztású oszcillátor. Ez az oszcillátor nem igényel külső alkatrészt, a lapkára integrál elemekkel időzített RC oszcillátor, amely névlegesen 12 kHz-es órajelet állít elő. A hőmérséklettől és tápfeszültségtől függően azonban %-os nagyságrendű eltérések is lehetnek. Ez az oszcillátor tehát pontos időzítésekhez nem használható.

DCO - Digitálisan vezérelt oszcillátor. A VLO-hoz hasonlóan ez is RC oszcillátor, de magasabb frekvencia tartományban használható (egésze 16 MHz-ig), s ennek megfelelően nagyobb fogyasztású is.

5_1. ábra: Az óra alrendszer felépítésének vázlata

A fent felsorolt órajel forrásokból kiválasztás és utóosztás (frekvenciaosztás) után háromféle órajelet állít elő az óra alrendszer a mikrovezérlő központi egysége és a perifériák működtetéséhez:

MCLK - Fő órajel (master clock), amelyet a CPU és a rendszer használ. Ennek forrása bármelyik órajel-generátor (VLO, LFXT1, DCO) lehet, s a kiválasztott órajelet leoszthatjuk (1, 2, 4 vagy 8 osztási arány állítható be).

ACLK - Segéd órajel (auxiliary clock), amelyet egyes perifériák működtetésére választhatunk ki. Ennek forrása csak a VLO vagy az LFXT1 órajel-generátor lehet, s az órajelet leoszthatjuk (1, 2, 4 vagy 8 osztási arány állítható be).

SMCLK - alrendszerek órajele (subsystem master clock), amelyet a perifériák működtetésére választhatunk ki.

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 szerepének részletes ismertetése az MSP430x2xx Family Users Guide kézikönyv 5. fejezetében, illetve cikksorozatom második részében található.

Megjegyzések a mintapéldák futtatásához

Az óra alrendszer azonossága miatt az új kiadású Launchpad kártyával is gond nélkül futtathatók a második cikkben az órajel beállítását bemutató példaprogramok. A projektekben gyakorlatilag csak a mikrovezérlő típusát kell átállítani. A mikrovezérlő fogyasztását ellenőrzéséhez minden portlábat kimenetre állítunk, ezért a mikrovezérlő felprogramozása után a kísérleti áramkört az Emulátorral összekötő jumpereket vegyük le mind, s a VCC feliratú átkötés tüskéire csatlakoztassunk egy árammérőt! A portok inicializálásnál annyi változás van a korábbi kiadású kártyához képest, hogy a P2SEL regiszter mellett most a P2SEL2 regisztert is nulláznunk kell.

2_VLO_test

Első kísérletünkben a VLO oszcillátor leosztott jelét használjuk (VLO/8 = ~ 1500 Hz, ez a belső oszcillátorokkal beállítható legalacsonyabb frekvencia), ez lesz beállítva az ACLK, MCLK és SMCLK órajelnek. A DCO oszcillátort pedig kikapcsoljuk, így kapjuk a legkisebb fogyasztású aktív módot. Az aktív mód azt jelenti, hogy a CPU be van kapcsolva, fut a program. Ebben a programban LED1-et villantjuk fel 10 másodpercenként, 0.1 másodpercre. Ha a VCC átkötést lehúzzuk, akkor egy árammérővel megmérhetjük a CPU áramfelvételét (kb. 80 µA lesz).

2_DCO_1MHz

A fentihez hasonlóan, kb. 1 %-os kitöltéssel, 10 s-onként villantjuk fel a zöld LED-et, de most a DCO jelét használjuk a CPU és a perifériák működtetésére, melynek frekvenciája 1 MHz. Az alapértelmezett (RESET utáni) beállás helyett a pontosabb, a gyártás során egyedileg kalibrált beállítást használjuk.

2_DCO_16MHz

Bár nincs sok értelme, de ezt a programot is kipróbálhatjuk, amely a fentihez hasonlóan, kb. 1 %-os kitöltéssel, 10 s-onként villant, de most mindkét LED-et. Itt is a DCO jelét használjuk a CPU és a perifériák működtetésére, melynek frekvenciáját ~16 MHz-re állítjuk be. Ez a legmagasabb frekvencia, amivel a CPU-t működtethetjük.

A programnak egyébként azért nincs sok értelme, mert az új kiadású Launchpad kártyához kapott mikrovezérlők információs memóriájában az alábbi gyárilag kalibrált frekvenciákhoz találunk beállítási paramétereket: 1 MHz, 8 MHz, 12 MHz, 16 MHz. Egyszerűbb tehát, ha a fenti  program helyett a gyárilag kalibrál frekvenciához tartozó paramétereket töltjük be a megfelelő regiszterekben, ahogy ezt a következő mintapéldában tesszük.

3_DCO_CALIB

Az MSP430G2553 mikrovezérlő gyári mintapéldái (SLAC485A.ZIP) között található a msp430g2xx3_dco_calib.c példaprogram, amelyet néhány apró változtatással teszek közzé (áthelyeztem az MCLK kimenetet, ha nincs beforrasztva a kvarc, akkor bekapcsolhatjuk a VLO-t, s bár itt nincs rá szükség, de bemutatom, hogy hogyan kell beállítani a PSEL2 regiszter megfelelő bitjeit).

A program beállítja a kiválasztott, gyárilag kalibrált frekvenciát, s az órajeleket kiadja a portlábakon, így oszcilloszkóppal vagy logikai analizátorral ellenőrizhetők. Az MCLK jelnek nincs hardveres kivezetése, ezért egy portlábat kapcsolgatunk végtelen ciklusban fel és le. A kapcsolgatás és a ciklus szervezése azonban több utasításciklust vesz igénybe, ezért a kimenet jele MCLK/10 frekvenciával ismétlődik. A jelek az alábbi kivezetéseken jelennek meg:

Órajel Kivezetés
ACLK P1.0
SMCLK P1.4
MCLK/10 P1.5

5_2. ábra: A 3_dcl_calib program listája

A program elején van egy hibafigyelő csapda: ha a kalibrációs paramétereket korábban kitöröltük volna, akkor a program végtelen ciklusba kerül, és nem megy tovább. Ennek nyilvánvalóan akkor van értelme, ha az Emulátor segítségével nyomkövetést végzünk, s akkor észlelhető az elakadás.

Az órajel kiválasztásához azt a beállítást vegyük ki a megjegyzésből, amelyiket használni kívánjuk. A fenti ábrán az 1 MHz-es beállítás van érvényben.

Ha nincs beforrasztva a kvarckristály az XIN, XOUT lábak közé, akkor vegyük ki a megjegyzés jelet a BCSCTL3 |= LFXT1S_2; sor elől (átkapcsolás XT1-ről VLO-ra), hogy kapjunk ACLK jelet!


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

Belépés

Hirdetés
XDT.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