Professional Documents
Culture Documents
TTTN 2013 PDF
TTTN 2013 PDF
I. Mc tiu:
Harware
1. Yu cu phn cng:
Laptop 32 hoc 64 bit Window XP hoc Window 7 vi ti thiu 2G b nh
cng trng.
C kt ni mng.
Nu thc hin cc bi lab dng 2 mn hnh hin th th s gip qu trnh d
dng hn. Do , khuyn khch cc bn mang theo labtop c nhn trong cc
gi thc hnh.
Thc hin cc bi lab trn kit EK-LM4F120XL.
Mt multi meter.
Ci t LM Flash Programmer
12. Download, gii nn, v ci t mi nht LM Flash Programmer
(LMFLASHPROGRAMMER) t http://www.ti.com/tool/lmflashprogrammer .
Terminal Program
16. Nu s dng Window XP, c th s dng HyperTerminal. Window 7 khng c
chng trnh terminal, nn phi s dng mt phn mm khc. Cc cu lnh trong
cc bi labs s dng HyperTerminal v PuTTY. C th download PuTTY t a
ch sau:
http://the.earth.li/~sgtatham/putty/latest/x86/putty.exe
Download v ci t GIMP
18. Chng ta s cn mt cng c thao tc ha c kh nng x l cc nh nh dng
PNM. GIMP c th lm iu . Download v ci t GIMP t a ch:
www.gimp.org
LaunchPad Board Schematic
19. tham kho, schematic s c phn cui ca ti liu ny.
Kit
25. M hp kit ra
S c trong :
Ci t Board ban u
26. Kt ni board vi my tnh v ci t drivers
LM4F120 LaunchPad Board ICDI USB port (c ghi nhn trn board l DEBUG
v c th thy nh trong hnh di) l cng USB v bao gm 3 kt ni:
Drivers s c ci t t ng.
QuickStart Application
LaunchPad Board c lp trnh trc vi mt ng dng QuickStart. Ch cn cung
cp ngun cho board, ng dng ny s chy mt cch t ng.
27. Phi chc chn rng Power switch pha trn gc tri ca board c gt qua v
tr bn phi DEBUG nh trong hnh:
28. Phn mm trong LM4F120H5QR s dng timers nh l pulse-width modulators
(PWMs) thay i cng ca tt c 3 mu trn Led n RGB (red, green,
and blue). Bi vy, mt s cm nhn c nhiu mu sc khc nhau c to ra
thng qua vic kt hp cc mu c bn.
Hai plushbuttons pha di ca board c nh nhn SW1 (bn tri) v SW2
( bn phi ). Nhn hoc nhn v gi SW1 di chuyn v pha ph mu
cui. Nhn hoc nhn v gi SW2 di chuyn v ph mu tm cui.
31. Ta cn tm COM port number ca Stellaris virtual Serial Port trong Device
Manager. B qua bc 32 nu ng s dng Window 7 hoc 8.
Window XP:
35. Bn c th giao tip bng cch g cc dng lnh sau v nhn ENTER:
help: s to ra mt danh sch cc lnh v thng tin.
I. Mc tiu:
Click OK.
To Lab2 Project
2. Trn CCS menu bar chn File -> New -> CCS Project. Thit lp cc ty chn nh
bn di. Phi chc chn rng b chn Use default location v chn ng
dn chnh xc. Bc ny l quan trng lm cho project ca bn linh ng
v cho lin i ti cng vic mt cch trc tip. G 120 trong variant
a ln 4 phin bn ca thit b. Chn Empty Project (with main.c) cho project
mu. Click Finish.
3. File main.c s c m trong editor tab. Xa ni dung v g hoc copy/paste
on code sau vo trong file. ng bn khon v code by gi; s i vo chi
tit v code trong lab 3. Lu cc cu hi xut hin bn tri ca cc cu lnh
include. iu ny cho bit rng Code Composer khng bit ng dn n cc
ngun. Ta s sa iu phn sau.
#include "inc/hw_types.h"
#include "inc/hw_memmap.h"
#include "driverlib/sysctl.h"
#include "driverlib/gpio.h"
int main(void)
{
int LED = 2;
SysCtlClockSet(SYSCTL_SYSDIV_4|SYSCTL_USE_PLL|SYSCTL_XTAL_16MHZ|SYSCTL_OSC_MAIN);
SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOF);
GPIOPinTypeGPIOOutput(GPIO_PORTF_BASE, GPIO_PIN_1|GPIO_PIN_2|GPIO_PIN_3);
while(1)
{
// Turn on the LED
GPIOPinWrite(GPIO_PORTF_BASE, GPIO_PIN_1|GPIO_PIN_2|GPIO_PIN_3, LED);
// Delay for a bit
SysCtlDelay(2000000);
// Cycle through Red, Green and Blue LEDs
if (LED == 8) {LED = 2;} else {LED = LED*2;}
}
}
Nu code tht vo tht ra khng r rng, nhn Ctrl-A, click chut phi v chn
Source -> Correct Indentation.
4. M rng project trong Project Explorer pane ( pha bn tri) bng cch click vo
du + hoc du ca Lab 2. Danh sch ny cho thy c tt c cc file c s
dng build project. Mt trong cc file ny l startup_ccs.c m ta a vo
trong folder ca lab (file ny sn c trong mi StellarisWare example). Double-
click vo file m n. File ny nh ngha stack and the interrupt vector table
structure trong nhng th khc. Cc ci t ny l cn thit cho Code Composer
build project. Khng thay i bt k ni dung no trong file ny v ng li.
Ci t Build Options
5. trn cp n nhng cu hi xut hin sau hng lnh include. Hai bc
tip theo s gip gii quyt vn tm ra ngun ca cc file cn thit cho
bin dch code.
Click chut phi Lab2 trong Project Explorer pane v chn Properties. Click
Include Options di ARM Compiler. bn di, khung include search path,
${PROJECT_ROOT}/../../../..
Click OK lu li cc thay i.
Mt vi c trng ca CCS
9. Click nt Suspend trn CCS menu bar. Nu chng trnh dng vi mt bo
hiu No source available , click vo tab main.c. Hu ht thi gian trong vng
lp while() l trong cc hm delay v source file ny khng linked vo trong
project.
10. Breakpoints
Trong ca s chng trnh gia mn hnh, double-click vo vng xm bn tri
ca line number ca hang lnh GPIOPinWrite() thit lp breakpoint (n trng
ging th ny ). Click nt Resume restart li chng trnh. Chng trnh
s dng li im breakpoint v bn s thy mt mi tn bn tri ca line
number, xc nh rng b m chng trnh c dng trn hang ny ca
code. Ch rng ICDI driver hin ti khng h tr thm vo/b bt
breakpoints trong khi processor ang chy. Click nt Resume mt vi ln hoc
nhn phm F8 chy chng trnh. Quan st LED trn LaunchPad board.
Trong ca s code, double-click vo bin LED xung quanh dng 18. Click chut
phi vo bin c chn v chn Add Watch Expression v sau click OK. Ca
s trn bn phi s chuyn sang Expression view v bn s thy bin c
lit k. Chy chng trnh vi ln. Mi ln code thc hin ti im breakpoint,
gi tr hin th s c cp nht,. Gi tr c cp nht c bi nn mu vng.
14. Click vo Terminate quay v mi trng son tho. Click phi chut vo
Lab2 trong khung Project Explorer v chn Close Project ng project.
Minimize CCS.
LM Flash Programmer
15. LM Flash Programmer l mt giao din lp trnh c lp m cho php bn lp
trnh flash ca ca mt thit b Stellaris thng qua nhiu port. To ra nhiu file
cn thit cho bc build ri rc trong Code Composer m s c thy trong
trang tip theo ca bi lab ny.
Nu khng sn c, ci t LM Flash Programmer vo my ca bn.
16. Phi chc chn rng Code Composer Studio khng chy code trong mi trng
CCS Debug bng khng CCS v Flash Programmer s xung t trong vic
iu khin USB port.
s l Shortcut ca LM Flash Programmer trong Destop
ca bn, double-click vo m cng c. Nu khng thy
shortcut trn Destop, vo Start -> All Programs -> Texas
Instruments -> Stellaris -> LM Flash Programmer v click vo LM Flash
Programmer.
17. Hin ti board ca bn ang chy ng dng ca Lab2. Nu User LED khng sng,
nhn nt RESET trn board. Ta s lp trnh ng dng ban u tr li trn
LM4F120H5QR.
Click vo tab Configuration. Chn LM4F120 LaunchPad t Quick Set menu th
xung ca Configuration tab. Xem users guide thm thng tin v cch no
cu hnh bng tay cng c cho mt thit b m khng phi l evaluation boards.
Trong Code Composer, trong Project Explorer, click chut phi vo project v
chn Properties. bn tri, click Build v v sau Steps tab. Dn cc cu lnh
sau vo trong Post-build steps Command box:
"${CCS_INSTALL_ROOT}/utils/tiobj2bin/tiobj2bin"
"${BuildArtifactFileName}" "${BuildArtifactFileBaseName}.bin"
"${CG_TOOL_ROOT}/bin/ofd470" "${CG_TOOL_ROOT}/bin/hex470"
"${CCS_INSTALL_ROOT}/utils/tiobj2bin/mkhex4bin"
Trong Code Composer, trong Project Explorer, click chut phi vo project v
chn Properties. bn tri, click Build v v sau Steps tab. Dn cc cu lnh
sau vo trong Post-build steps Command box:
"${CCS_INSTALL_ROOT}/utils/tiobj2bin/tiobj2bin"
"${BuildArtifactFileName}" "${BuildArtifactFileBaseName}.bin"
"${CG_TOOL_ROOT}/bin/armofd" "${CG_TOOL_ROOT}/bin/armhex"
"${CCS_INSTALL_ROOT}/utils/tiobj2bin/mkhex4bin"
Hon Thnh!
Lab 3: Khi to v GPIO
I. Mc tiu:
To Lab3 project
1. Maximine Code Composer. Trn CCS menu bar chn File -> New-> CCS
Project. Lm cc chn la nh bn di. Phi chc chn rng khng chn vo
Use default location v chn ng dn chnh xc ti ccs folder m bn to
ra. Bc ny quan trng v n s lm project ca bn linh ng v include
cc ng dn lm vic cho ng. Trong hp variant, g 120 thu hp
cc kt qu trong hp bn phi. Trong ca s Project templates and examples,
chn Empty Project (with main.c). Click Finish.
Header Files
2. Xa ni dung hin ti ca main.c. G (hoc ct/dn t file pdf) cc hng sau vo
trong main.c include cc file header cn thit truy xut StellarisWare APIs
cng nh nh ngha bin:
#include "inc/hw_memmap.h"
#include "inc/hw_types.h"
#include "driverlib/sysctl.h"
#include "driverlib/gpio.h"
int PinData=2;
Main() Function
3. Tip theo, ta s to mt khun mu cho hm main. Copy on code sau vo pha
sau phn khai bo ca chng trnh:
int main(void)
{
Clock Setup
4. Cu hnh clock h thng chy s dng mt thch anh 16MHz trn b giao
ng chnh, li qua 400MHz PLL. 400MHz PLL dao ng tn s duy nht,
nhng c th c iu khin bi cc thch anh v b dao ng chy gia 5 v
25MHz. C mt mc nh l b chia 2 trong ng clock v by gi ta ang thit
lp thm b chia 5, nng tng s ln 10. iu c ngha l clock h thng s
40MHz. a hng code sau vo trong hm main():
SysCtlClockSet(SYSCTL_SYSDIV_5|SYSCTL_USE_PLL|SYSCTL_XTAL_16MHZ|SYSCTL_OSC_MAIN);
GPIO Configuration
5. Trc khi gi bt k hm ngoi vi c th driverLib, ta phi tch cc clock cho
ngoi vi . Nu bn tht bi, n s tr v kt qu l mt Fault ISR (address fault).
y l mt li chung ca mt s ngi dng thng mc phi. Hng lnh th 2
bn di cu hnh 3 chn GPIO kt ni vi LEDs nh l ng ra. Mt phn s
bn di ca LaunchPad board schematic ch r cc chn PF1, PF2 v PF3 l
c kt ni vi LEDs.
Cch ra mt hng, sau a 2 hng code sau vo trong main() sau hang lnh
bc trc.
SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOF);
GPIOPinTypeGPIOOutput(GPIO_PORTF_BASE, GPIO_PIN_1|GPIO_PIN_2|GPIO_PIN_3);
while(1)
{
GPIOPinWrite(GPIO_PORTF_BASE, GPIO_PIN_1|GPIO_PIN_2|GPIO_PIN_3, PinData);
SysCtlDelay(2000000);
GPIOPinWrite(GPIO_PORTF_BASE, GPIO_PIN_1|GPIO_PIN_2|GPIO_PIN_3, 0x00);
SysCtlDelay(2000000);
if(PinData==8) {PinData=2;} else {PinData=PinData*2;}
}
#include "inc/hw_memmap.h"
#include "inc/hw_types.h"
#include "driverlib/sysctl.h"
#include "driverlib/gpio.h"
int PinData=2;
int main(void)
{
SysCtlClockSet(SYSCTL_SYSDIV_5|SYSCTL_USE_PLL|SYSCTL_XTAL_16MHZ|SYSCTL_
OSC_MAIN);
SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOF);
GPIOPinTypeGPIOOutput(GPIO_PORTF_BASE, GPIO_PIN_1|GPIO_PIN_2|GPIO_PIN_3);
while(1)
{
GPIOPinWrite(GPIO_PORTF_BASE, GPIO_PIN_1|GPIO_PIN_2|GPIO_PIN_3, PinData);
SysCtlDelay(2000000);
GPIOPinWrite(GPIO_PORTF_BASE, GPIO_PIN_1|GPIO_PIN_2|GPIO_PIN_3, 0x00);
SysCtlDelay(2000000);
if(PinData==8) {PinData=2;} else {PinData=PinData*2;}
}
}
Startup Code
8. Ngoi cc file chnh to ra, bn cng cn c mt startup file c th chui
cng c m bn ang s dng. File ny cha ng vector table, startup routines
sao chp data khi to cho RAM, xa bss section, v li mc nh ISRs. File ny
a vo trong folder ca bn.
Double-click vo startup_ccs.c trong Project Explorer pane v c mt ci nhn
tng quan. ng thay i iu g vo lc ny.
10. Click phi chut Lab3 trong Project Explorer pane mt ln na v chn
Properties. Pha di ARM Linker, click File Search Path. Ta phi cung cp
cho project ng dn n M4F libraries. Thm include library file sau vo ca
s pha trn:
${PROJECT_ROOT}/../../../../driverlib/ccs-cm4f/Debug/driverlib-cm4f.lib
Lu li thay i.
13. Compile v download ng dng bng cch click vo nt Debug trn menu
bar. Click nt Resume chy chng trnh. Vi 3 LEDs cng sng mt lc,
bn s thy l chng nhp nhy mt mu gn nh l mu trng.
14. By gi ta s s dng pin masking feature sng LEDs mt lc. Ta s khng
phi tr v giao din CCS Edit chnh sa code. Ta c th lm ngay. Trong ca
s code, nhn hng u tin c cha GPIOPinWrite(). Pin mask y l
GPIO_PIN_1| GPIO_PIN_2| GPIO_PIN_3 , c ngha l tt c 3 trong s cc v
tr bit ny, tng ng vi v tr ca LED s c gi ra GPIO port. Thay i bit
mask thnh GPIO_PIN_1. Dng lnh s ging nh sau:
GPIOPinWrite(GPIO_PORTF_BASE, GPIO_PIN_1, PinData);
15. Compile v download ng dng bng cch click vo nt Debug trn menu
bar. Khi c nhc lu li cng vic, click OK. Khi bn c hi nu nh mun
kt thc debug session, click Yes.
Trc khi click nt Resume, on trc LED m bn mong i s sng: ____
16. Thay i bit mask thnh GPIO_PIN_2. Dng lnh s ging nh sau:
GPIOPinWrite(GPIO_PORTF_BASE, GPIO_PIN_2, PinData);
17. Compile v download ng dng bng cch click vo nt Debug trn menu
bar. Khi c nhc lu li cng vic, click OK. Khi bn c hi nu nh mun
kt thc debug session, click Yes.
Trc khi click nt Resume, on trc LED m bn mong i s sng: ____
18. Thay i bit mask thnh GPIO_PIN_3. Dng lnh s ging nh sau:
GPIOPinWrite(GPIO_PORTF_BASE, GPIO_PIN_3, PinData);
19. Compile v download ng dng bng cch click vo nt Debug trn menu
bar. Khi c nhc lu li cng vic, click OK. Khi bn c hi nu nh mun
kt thc debug session, click Yes.
Trc khi click nt Resume, on trc LED m bn mong i s sng: ____
20. Homework: Hy nhn cch s dng ca ButtonsPoll() API gi trong file qs-rgb.c
trong quickstart application (qs-rgb) folder. Vit code s dng hm API tt
m LED s dng pushbuttons.
Hon thnh!
Lab 4: Interrupts and the Timer
I. Mc tiu:
I. Cc bc tin hnh:
Header Files
Main() Function
Clock setup
GPIO Configuration
Timer Configuration
6. Mt ln na, chng ta cn phi enable clock cho ngoi vi trong thanh ghi RCGCn
trc khi truy cp n cc thanh nghi ca n. Nu khng th h thng s bo li Fault
ISR. Trong project ny ta s configure cho Timer 0 chy trong ch nh th Timer
32bit, nn nh rng khi Timer 0 chy trong ch 32 bit th n s dng 2 timer 16bit
Timer 0A v Timer 0B. TIMER0_BASE l a ch khi u ca Timer 0 trong bn
b nh. V on code sau y s configure cho Timer 0 hot ng trong ch trn:
SysCtlPeripheralEnable(SYSCTL_PERIPH_TIMER0);
TimerConfigure(TIMER0_BASE, TIMER_CFG_32_BIT_PER);
Calculate Delay
7. Trong project ny ta s tin hnh cho Led chp tt vi tn s 10Hz v vi duty cycle
l 50 . Bn cn phi to ra mt ngt ti thi gian mong mun. Trc tin bn cn
phi tnh ton s chu k clock cho 10hz bng cch gi hm SysCtlClockGet() v chia
cho tn s clock mong mun. Tip theo l chia 2 s clock to c mt ngt ti
khong thi gian mong mun.
Sau bn cn phi np gi tr s chu k clock ny cho thanh ghi Timers
Interval Load bng cch s dng hm TimerLoadSet trong driverlib timer
API. Nn nh l bn cn phi tr i mt chu k clock ti thi im ngt ti 0.
on code sau y s thc hin cc tnh ton trn:
ulPeriod = (SysCtlClockGet() / 10) / 2;
TimerLoadSet(TIMER0_BASE, TIMER_A, ulPeriod -1);
Interrupt Enable
8. Tip theo chng ta cn phi cho php ngt khng nhng cho tng module m c n cho
php ngt trong NVIC. Hm IntMasterEnable cho php ngt cho ton b h thng.
Hm IntEnable cho php ngt ca tng module ngoi vi bn trong h thng. Hm
TimerIntEnable cho php ngt tng s kin xy ra trn module Timer. y chng ta
s set cho Timer 0 ngt khi xy ra s kin Timeout.
Bn cn phi thm on code di y vo chng trnh cu hnh cho ngt
Timer:
IntEnable(INT_TIMER0A);
TimerIntEnable(TIMER0_BASE, TIMER_TIMA_TIMEOUT);
IntMasterEnable();
Timer Enable
9. Cui cng chng ta s kch hot cho Timer chy. Vic ny cho php Timer bt u
chy v s kch hot ngt timeout.
Thm on code sau vo chng trnh cho php Timer bt u chy.
TimerEnable(TIMER0_BASE, TIMER_A);
Main Loop
11. V tip theo ta cn phi vit chng trnh ngt trong Timer thc hin vc bt tt
Led da vo trng thi Led hin ti. Trc tin cn phi kim tra ngun ngt v xa
c bo ngt bng hm TimerIntClear(). Kim tra trng thi ca pin GPIO bng hm
GPIOPinRead(), v bt tt pin GPIO bng hm GPIOPinWrite().
Thm on code sau vo sau hm main():
void Timer0IntHandler(void)
{
// Clear the timer interrupt
TimerIntClear(TIMER0_BASE, TIMER_TIMA_TIMEOUT);
// Read the current state of the GPIO pin and
// write back the opposite state
if(GPIOPinRead(GPIO_PORTF_BASE, GPIO_PIN_2))
{
GPIOPinWrite(GPIO_PORTF_BASE,
GPIO_PIN_1|GPIO_PIN_2|GPIO_PIN_3, 0);
}
else
{
GPIOPinWrite(GPIO_PORTF_BASE, GPIO_PIN_2, 4);
}
}
int main(void)
{
unsigned long ulPeriod;
SysCtlClockSet(SYSCTL_SYSDIV_5|SYSCTL_USE_PLL|SYSCTL_XTAL_16M
HZ|SYSCTL_OSC_MAIN);
SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOF);
GPIOPinTypeGPIOOutput(GPIO_PORTF_BASE,
GPIO_PIN_1|GPIO_PIN_2|GPIO_PIN_3);
SysCtlPeripheralEnable(SYSCTL_PERIPH_TIMER0);
TimerConfigure(TIMER0_BASE, TIMER_CFG_32_BIT_PER);
IntEnable(INT_TIMER0A);
TimerIntEnable(TIMER0_BASE, TIMER_TIMA_TIMEOUT);
IntMasterEnable();
TimerEnable(TIMER0_BASE, TIMER_A);
while(1)
{
}
}
void Timer0IntHandler(void)
{
// Clear the timer interrupt
TimerIntClear(TIMER0_BASE, TIMER_TIMA_TIMEOUT);
Startup Code
13. Open startup_ccs.c chnh sa. Tn tin ny s cha tt c cc bng vector ngt m
chng ta trnh tho lun trc . Trong tp tin tm n d ng Timer 0 subtimer A.
bn cn phi c n thn thay th tn IntDefaultHandler thnh tn Timer0IntHandler y
chnh l tn m bn t cho hm s l ngt Timer 0.
Bn cng cn phi khai bo hm ny vi t kha extern pha trn bo cho
trnh compiler bit biu tng ny. Bn cn tm n d ng:
extern void _c_int00(void);
v add thm d ng sau vo ngay bn di n:
extern void Timer0IntHandler(void);
Click save.
Exceptions
y l on code truy cp vo thit b ngoi vi m khng enable clock. iu
ny s to ra mt ngoi l.
16. Tin hnh compile v download li chng trnh. Click Resume chy chng
trnh. Xem iu g xy ra, chng trnh ny chy c tt khng n Led mu xanh c
nhy khng.
18. Compile v Download li chng trnh. Click Resume chy chng trnh.
Khng c g xy ra. Bn click nt Suspend dng qu trnh Debug li. Bn s
thy rng chng trnh s b mc kt trong FaultISR(). Tt c cc ngoi l ISRs c
thc hin bng while(1). iu ny l khng h mong mun trong ng dng ca bn.
19. Loi b comment v tin hnh compile, download v chy li chng trnh mt ln
na chc chn chng trnh ca bn chy tt. Khi thc hin xong bn click nt
terminate kt thc trnh Debug v tin hnh ng project li.
20. Homework Idea: kim tra v vic iu ch rng xung ca Timer. Chng trnh
timer nhp nhy Led nhanh hn mt bn c th nhn thy. Thng l ln hn 30Hz,
v s dng rng xung thay i cng sng nhnh hn. Vit mt v ng lp
thc hin iu chnh cng khc nhau theo nh k.
Hon thnh!
Lab 5: ADC12
I. Mc tiu:
Header Files
3. Thi gian chy kim tra thng s ca cc thit b ngoi vi Driver Library l kh mau
k t khi kim tra qu mc s c nh hng tiu cc n tnh chu k. Nhng, trong
qu trnh Debug, bn c th thy rng bn c gi l mt driver library API vi
cc thng s khng chnh xc hoc mt th vin chc nng to ra mt li v mt l do
khc. Cc m sau y s c gi nu cc driver library gp mt li nh. code
chy ta cn thm vo on code sau.
#ifdef DEBUG
void__error__(char *pcFilename, unsigned long ulLine)
{
}
#endif
Main()
7. Set up clock h thng l 40Mhz. bng cch thm vo chng trnh d ng lnh sau:
SysCtlClockSet(SYSCTL_SYSDIV_5|SYSCTL_USE_PLL|SYSCTL_OSC_MAI
N|SYSCTL_XTAL_16MHZ);
8. Kch hot module ADC0 bng cch thm d ng lnh sau vo d ng k tip:
SysCtlPeripheralEnable(SYSCTL_PERIPH_ADC0);
9. Trong v d ny, chng ta thit lp tc ly mu l 250kilo-samples trong mi giy.
Hm API SysCtlADCSpeedSet() c th set tc ly my vi cc tc c th
(125KSPS, 500KSPS and 1MSPS).
Add thm vo d ng tip theo d ng lnh sau:
SysCtlADCSpeedSet(SYSCTL_ADCSPEED_250KSPS);
10. Trc khi cu hnh cc thit lp ADC sequencer. Ta cn phi disable ADC sequencer
1.
Add thm vo d ng tip theo d ng lnh sau:
ADCSequenceDisable(ADC0_BASE, 1);
12. Tip theo chng ta cn phi cu hnh tt c bn steps trong sequencer ADC. Cu hnh
cc steps 0-2 trn sequencer 1 ly mu cm bin nhit (ADC_CTL_TS). Trong
v d ny, chng ta s t trung bnh tt c bn mu d liu cm bin nhit trn
sequencer 1 tnh ton nhit , v vy tt c bn steps sequencer s o cm bin
nhit . bit thm thng tin v b sp xp dy ADC v cc steps, tham kho
datasheet ca thit b c th.
Add thm 3 d ng sau vo d ng tip theo d ng lnh:
ADCSequenceStepConfigure(ADC0_BASE, 1, 0, ADC_CTL_TS);
ADCSequenceStepConfigure(ADC0_BASE, 1, 1, ADC_CTL_TS);
ADCSequenceStepConfigure(ADC0_BASE, 1, 2, ADC_CTL_TS);
17. Cc du hiu cho thy vic chuyn i ADC hon tt s l l c tnh trng gin on
ADC. N lun lun thc hnh lp trnh tt m bo rng l c c xa trc khi
vit m x l n.
Thm on code sau vo d ng u tin trong v ng lp while(1):
ADCIntClear(ADC0_BASE, 1);
18. Sau chng ta c th kch hot chuyn i ADC bng phn mm. Chuyn i ADC
cng c th c kch hot bi nhiu ngun khc.
Thm d ng code sau y sau vo d ng tip theo trong v ng lp while(1):
ADCProcessorTrigger(ADC0_BASE, 1);
19. Sau , chng ta cn phi ch i cho vic chuyn i hon thnh. R rng, mt
cch tt hn lm iu ny l s dng mt interrupt, ch khng phi l mt lnh
ch i qu trnh chuyn i kt thc.
Thm d ng code sau y sau vo d ng tip theo trong v ng lp while(1):
while(!ADCIntStatus(ADC0_BASE, 1, false))
{
}
21. Tip theo ta s tin hnh tnh ton gi tr trung bnh ca d liu. Chng ta s ni v
hot ng ca php ton floating point sau, v vy by gi n l php ton fixed-
point.
Vic b xung thm 2 l lm tr n. T php ton 2/4 1/2 0.5, 1.5 s c
lm tr n ln 2 bng vic b xung thm 0.5, c n trng hp 1.0 khi c thm
vo 0.5 s thnh 1.5, iu ny s c lm tr n xung 1.0 do quy tc lm tr n
ca php ton nguyn.
Thm d ng code sau y sau vo d ng tip theo trong v ng lp while(1):
ulTempAvg = (ulADC0Value[0] + ulADC0Value[1] + ulADC0Value[2] +
ulADC0Value[3] + 2)/4;
23. Sau khi c oC vic tnh ton oF l ht sc d dng. Php chia c thc hin sau
trnh lm tr n trong qu trnh tnh ton.
Chng ta s dng cng thc sau chuyn i t oC sang oF: F ( C * 9)/5
+32 iu chnh li mt cht ta c: F ((C * 9) + 160) / 5.
Thm d ng code sau y sau vo d ng tip theo trong v ng lp while(1):
ulTempValueF = ((ulTempValueC * 9) + 160) / 5;
25. Click chut phi vo project Lab5 trong Project Explorer chn Properties. Bn click
theo ng dn sau Build ARM Compiler Advanced Options Predefined
Symbols. Trong phn Pre-define NAME add define DEBUG. Click Ok. Trong cc
bi lab tip theo define ny lun c xc nh.
Build and Run the Code
26. Bn tin hnh compile v Download ng dng ca bn bng cch click vo biu
tng Debug , sau khi qu trinh compile v download kt thc giao din Debug
s xut hin.
27. Click trong tab Expressions. Xa tt c Expressions bng cch click chut phi vo
khung v chn Remove All.
Tm n cc bin ulADC0Value, ulTempAvg, ulTempValueC v
ulTempValueF trong bn d ng cui cng ca code click p chut vo mi
bin chn tng bin, click chut phi vo bin v chn Add Watch
Expression sau nhn Ok. Lm nh vy cho 4 bin. Kt qu ta c nh hnh
sau:
28. Chng ta mun thit lp cho chng trinh Debug n hin th kt qu sau mi ln
chy. V khng c mt d ng lnh no sau qu trnh tnh ton, nn ta s t 1
Breakpoint trc cc lnh tnh ton hin th kt qu tnh ton gn nht.
Click chut vo d ng u tin trong v ng lp while (1)
ADCIntClear(ADC0_BASE, 1);
Click chut phi vo n, chn Breakpoint (Code Composer Studio)
breakpoint t 1 breakpoint ngay hng .
Click chut phi ln biu tng breakpoint v chn Breakpoint Properties
tm d ng cha Action v click vo Remain Halted value. l cch bnh
thng mt breakpoint nn hnh ng, nhng chng ta hy thay i n thnh
Update View. Trong hp thoi di y, lu rng ch c ca s Expressions
s c cp nht. By gi cc bin trong ca s Expressions s c cp nht
v code s tip tc thc hin. Nhn OK.
Ghi nh rng cc b cm bin nhit cha c hiu chnh, v vy cc gi
tr hin th khng chnh xc. Khng sao trong lab ny, v chng ta ch tm hiu
nhng thay i trong vic o lng.
Lu s lng bin ulTempAvg ang thay i. Chng ta c th gim s
lng bng cch s dng phn cng trung bnh trong ADC.
Hardware averaging
Tham s cui cng trong cc gi hm API
ADCHardwareOversampleConfigure() l s lng mu c ly trung
bnh. Con s ny c th l 2, 4, 8, 16, 32 hoc 64. La chn ca chng ta c
ngha l mi mu trong ADC FIFO s l kt qu ca 64 php o trung bnh
vi nhau.
31. Buil, download v chy chng trnh ca bn trn board launchpad. Quan st bin
ulTempAvg trong ca s Expressions, bn s thy n s thay i vi tc chm hn
nhiu so vi trc.
32. Trc khi thc hin bt k thay i, chng ta xem dung lng code ca chng ta hin
ti. Click Teminate kt thc qu trnh Debug v quay tr v giao din chnh
sa. Trong Project Explorer, m rng folder Debug ca project Lab5. Click p vo
file Lab5.map.
34. Hy nh rng M4F on-board ROM cha cc Th vin Driver ca thit b ngoi vi.
Thay v thm nhng th vin gi n b nh flash ca chng n, chng ta c th gi
chng t ROM. iu ny s lm gim kch thc m ca chng trnh ca chng ta
trong b nh flash. lm nh vy, chng ta cn thm s h tr cho ROM trong m
ca chng ta.
Trong main.c thm d ng include sau vo u ca code:
#include "driverlib/rom.h"
35. Trong properties lab5 ca bn, click chut phi trong Lab5 trn Project Explorer chn
Properties. Trong Build ARM Compiler Advanced Options, click trong
Predefined Symbols. Add biu tng sau y vo u ca s.
TARGET_IS_BLIZZARD_RA1
Blizzard l tn sn ph m ni b cho lot LM4F ca TI. Biu tng ny s
cung cp cho cc th vin truy cp vo cc API trong ROM. Nhn OK.
int main(void)
{
unsigned long ulADC0Value[4];
volatile unsigned long ulTempAvg;
volatile unsigned long ulTempValueC;
volatile unsigned long ulTempValueF;
ROM_SysCtlClockSet(SYSCTL_SYSDIV_5|SYSCTL_USE_PLL|SYSCTL_OSC
_MAIN|SYSCTL_XTAL_16MHZ);
ROM_SysCtlPeripheralEnable(SYSCTL_PERIPH_ADC0);
ROM_SysCtlADCSpeedSet(SYSCTL_ADCSPEED_250KSPS);
ROM_ADCHardwareOversampleConfigure(ADC0_BASE, 64);
ROM_ADCSequenceDisable(ADC0_BASE, 1);
ROM_ADCSequenceConfigure(ADC0_BASE,1,
ADC_TRIGGER_PROCESSOR, 0);
ROM_ADCSequenceStepConfigure(ADC0_BASE, 1, 0, ADC_CTL_TS);
ROM_ADCSequenceStepConfigure(ADC0_BASE, 1, 1, ADC_CTL_TS);
ROM_ADCSequenceStepConfigure(ADC0_BASE, 1, 2, ADC_CTL_TS);
ROM_ADCSequenceStepConfigure(ADC0_BASE, 1, 3, ADC_CTL_TS |
ADC_CTL_IE | ADC_CTL_END);
ROM_ADCSequenceEnable(ADC0_BASE, 1);
while(1)
{
ROM_ADCIntClear(ADC0_BASE, 1);
ROM_ADCProcessorTrigger(ADC0_BASE, 1);
while(!ROM_ADCIntStatus(ADC0_BASE, 1, false))
{
}
ROM_ADCSequenceDataGet(ADC0_BASE, 1, ulADC0Value);
ulTempAvg = (ulADC0Value[0] + ulADC0Value[1] + ulADC0Value[2] +
ulADC0Value[3] + 2)/4;
ulTempValueC = (1475 - ((2475 * ulTempAvg)) / 4096)/10;
ulTempValueF = ((ulTempValueC * 9) + 160) / 5;
}
}
Khi qu trnh hon tt, click nt Resume chy code ca bn. Khi bn chc
chn rng tt c mi th ang lm vic mt cch chnh xc, click nt Terminate
quay tr v giao din chnh sa.
Kch thc mi cho .text Ca chng ta l 3e8h. N l nh hn so vi trc
40%. Vit kt qu ca bn y_____
39. Phng php th hin trong cc bc sau c gi l " direct ROM calls ". N cng
c th thc hin cuc gi ROM nh x khi bn ang s dng cc thit b (nh ARM
Cortex-M3 TI) c th c hoc khng c mt ROM. Kim tra phn 32,3 trong
Peripheral Driver Library Users Guide bit thm thng tin.
40. Khi bn hon thnh, ng project v chng trnh Code Composer Studio ca bn
li.
Hon thnh!