[msp430] adc10
TRANSCRIPT
-
BIN SON :CENAKHO@
-
C 2 module ADC trong MSP430 l ADC 10 bit v
ADC 12 bit c TEXAS INSTRUMENTS gii thiu
l c hiu nng rt ng k.
Guide ny s hng dn cho cc bn s dng ADC10
v 12, nhng config nng cao nh tit kim nng
lng, hiu chnh b m, chuyn i nng cao knh
mong b con tm hiu thm trong datasheet.
-
B chuyn i ADC10 (da trn mc in p v+ v v- lm h qui chiu) s chuyn kt qu t tn hiu
analog thnh tn hiu digital vi phn gii 10 bit
v lu kt qu vo thanh ghi ADC10MEM.
Nu in p c vo ln hn v+ th kt qu s l 0x3ff v nu b hn v- th kt qu s l 0.
-
B iu khin ADC c ci t bi 2 thanh ghi l
ADC10CTL0 v ADC10CTL1 ch c th c
chnh sa khi bit ENC=0 v sau khi chnh sa xong th bn cn set bit ENC=1 ADC lm vic.
-
ADC10CTL0
-
NU BN CHN IN P QUI CHIU NI
Chn ngun in p so snh bng cch set bit REFON ( REFON mt 30 micro giy chuyn trng thi ) . Khi REFON =0 th tc l bn chn ngun ni AVCC =3.5V, khi REFON =1 th:
*Khi REF2_5V = 1 ,in p qui chiu ni l 2.5 V, = 0,
in p qui chiu ni l 1.5 V.
NU BN CHN IN P QUI CHIU NGOI
REFOUT=1 th chng ta phi gn in p qui chiu ngoi vo 2 chn Vref+ v Vref- ca chip, ln lt P1.4 v P1.3.
-
ADC10ON: bt tt b ADC10 ADC10IE: cho php ngt trong ADC10, c ngt ADC10IFG s c
set mi khi chuyn i xong, dng c ngt ny th bit cho php ngt
ADC v ngt ton cc phi c set trc ( GIE =1 ), c ngt s c t
reset mi khi vo chng trnh ngt.
ENC (Enable conversion) v ADC10SC (Start conversion) s c set khi chng ta bt u chuyn i
-
La chn c th cho ngun p
qui chiu dng v m
Tc ly mu chuyn i ADC
-
Bit MSC: la chn khi ng bng tay sau mi ln chuyn i hoc t ng chuyn i lin tc ADC (CH DNG TRONG MODE 1,2,3 CA ADC )
-
ADC10CTL1
-
Bit INCHx chn chn mang chc nng ADC, nhng dng mu vng l cc chc nng thng
dng.
-
B chia tn cho xung clock adc
Chn ngun xung clock adc
-
B chia tn cho xung clock adc THIT LP BIT IU KHIN CHO ADC
-
Cc mode hot ng Bit busy bo bn
-
C 4 mode chuyn i adc nh trn bng cch chnh sa bit CONSEQx
-MODE 00: mu s c chuyn i 1 ln, kt qu lu trong thanh ghi ADC10MEM,
chuyn i c kch hot da vo bit ADC10SC v ENC phi c set li sau mi ln chun i.
-MODE 01: chuyn i ln lt nhiu tn hiu ADC t chn Ax ( config bit trong INCHx) n chn A0 kt qu s lu ln lt vo ADC10MEM. -MODE 10: chuyn i lin tc tn hiu ADC t 1 chn c nh kt qu s lu ln lt
vo ADC10MEM.
-MODE 11: chuyn i lin tc NHIU tn hiu ADC t chn Ax ( config bit trong INCHx) n chn A0 kt qu s lu ln lt vo ADC10MEM.
mang li hiu nng cao nht vi cc mode 01,10,11 th nh sn xut khuyn bt
bit MSC=1 (multiple sample and convert)
-
Bn cnh vic set bit INCHx chn chn mang chc nng ADC,
cc bn phi enable chc nng ADC cho chng qua thanh ghi ADC10AE
-
CU TRC THANH GHI KT QU ADC ADC10MEM
-
1. AVCC REF (3.5v)
ADC10CTL0 = ADC10SHT_2 + ADC10ON + ADC10IE; // chn tc ly mu, bt ADC , bt interrupt ADC
2. 1.5V REF
ADC10CTL0 = SREF_1 + ADC10SHT_2 + REFON + ADC10ON + ADC10IE; //SREF =1 chn ngun p dng khc AVCC, bt REF_ON, bt ADC , bt interrupt ADC 3. 2.5V REF
ADC10CTL0 = SREF_1 + ADC10SHT_2 +REF2_5V+ REFON + ADC10ON + ADC10IE; //SREF =1 chn ngun p dng khc AVCC, bt REF_ON, bt ADC , bt interrupt ADC
-
4. EXTERNAL VREF+ , VREF-
ADC10CTL0 = SREF_5 + ADC10SHT_2 + REFOUT + ADC10ON + ADC10IE; //SREF =5 chn ngun p dng khc AVCC, bt REF_ON, bt ADC , bt interrupt ADC, bt REFOUT //101 VR+ = VREF+ and VR- = VREF-/ VeREF-. Devices with VeREF+/- pins only.
-
V D 1:
VIT CHNG TRNH C IN P T CHN A1, S DNG THCH
ANH NI, NU IN P LN HN 0.5 LN AVCC TH SNG LED PORT A0. TRONG QU TRNH CHUYN I ADC, TC GI CHO CHIP MSP
CHUYN QUA CH TIT KIM NNG LNG LPM0 NH HNH
MINH HA BN DI. CC BN XEM THM SLIDE V CC CH
HOT NG CA MSP HIU R THM V CC CH NY
-
#include "msp430g2231.h"
void main(void)
{
WDTCTL = WDTPW + WDTHOLD; // hm dng stop watchdog timer
ADC10CTL0 = ADC10SHT_2 + ADC10ON + ADC10IE; // bt cc bit tng ng trong thanh ghi
ADC10CTL1 = INCH_1; //ADC10CTL0 v 1
ADC10AE0 |= 0x02; // chc nng ADC cho PORT 1.1
P1DIR |= 0x01; // Chn chc nng output cho PORT 1.0
for (;;) // lp v tn
{
ADC10CTL0 |= ENC + ADC10SC; // bt cc bit ENC v ADC10SC nhm khi ng chuyn i
__bis_SR_register(CPUOFF + GIE); // bt ch tit kim nng lng
if (ADC10MEM < 0x1FF) //so snh kt qu cha trong thanh ghi ADCMEM
P1OUT &= ~0x01; // tt led P1.0
else
P1OUT |= 0x01; // bt LED P1.0
}
}
// ADC10 interrupt service routine //ngt ADC
#pragma vector=ADC10_VECTOR //on code ny nhm a MSP thot ra khi
__interrupt void ADC10_ISR(void) //trng thi LPM0 tit kim nng lng
{
__bic_SR_register_on_exit(CPUOFF);}