Professional Documents
Culture Documents
Lap Trinh Vi DieuKhienMSP430
Lap Trinh Vi DieuKhienMSP430
I Mc ch mn hc: Cung cp kin thc v lp trnh vi iu khin TI MSP430. II. Thi gian: 30 tit l thuyt (2 tn ch) + 30 tit thc hnh (1 tn ch) III Gio trnh v ti liu tham kho MSP430 Microcontroller Basics. John H. Davies. Elsevier. 2008 (685 trang) Embedded Systems Design using the TI MSP430 Series. Chris Nagy. Elsevier. 2003 (296trang) Introduction to Embedded Systems - A Cyber-Physical Systems Approach, E. A. Lee and S. A. Seshia. http://LeeSeshia.org. 2011
2
M au
IV. nh gi: Thi kt thc mn: Bi t lun vi 3 cu hi. V. Gio vin: Ts. L Mnh Hi. Tel: 0985399000. Khng gi in thoi hi hay xin im, email: hailemanh@yahoo.com, lm.hai@hutech.edu.vn Website: giangvien.hutech.edu.vn GV thc hnh: Nguyn Ngc c. 0978629557
4
H thng nhng l g?
Theo vi.wikipedia.org: H thng nhng (Embedded system) l mt thut ng ch mt h thng c kh nng t tr (my tnh) c nhng vo trong mt mi trng hay mt h thng m. l cc h thng tch hp c phn cng v phn mm phc v cc bi ton chuyn dng trong nhiu lnh vc cng nghip, t ng ho iu khin, quan trc v truyn tin. c im ca cc h thng nhng l hot ng n nh v c tnh nng t ng ho cao.
7
H thng nhng l g?
My git Xe hi i mi c trn 100 b x l Khong 99% chp tnh ton c ng dng trong cc h thng nhng
10
Bo Launchpad MSP430
IAR Kickstart or Code Composer Studio Ver 5 (CCS)
MSP430G2543 MSP430G2553
12
Mch s tch hp thp: transitor, IC 555 Mch s tch hp trung bnh : CMOS 4000 Mch s tch hp cao: Vi iu khin
13
Cc hng ng dng
Application-specific integrated circuits (ASICs) Chp (IC) thit k dnh ring cho mt ng dng Field-programmable gate arrays (FPGAs) and programmable logic devices (PLDs) Chp thit k c th lp trnh thay i cu to chc nng bng cch to cc mi lin kt gia cc cng bn trong chp. C hng triu cng trong mt chp. Microcontrollers C mt s khi rt hay c s dng cng vi mt khi x l trung tm (CPU) .
14
Vi iu khin nh
CPU x l 8 hoc 16 bt B nh 64 KB Tc ti a : 16Mhz Chc nng chnh: iu khin, khng phi tnh ton! http://www.diendanti.com
15
16
17
2. B nh chng trnh: L b nh khng mt d liu khi mt in. Trc kia l ROM, nay s dng FLASH. Chp MSP430G2553 ch c 16KB 3. B nh d liu: RAM truy xut ty nhng d liu b xa khi mt in
Hin c b nh d liu khng b xa khi mt i n
4. Cc cng nhp/xut: Kt ni vi cc h thng khc 5. ng BUS d liu v BUS a ch: truyn d liu v lnh gia cc khi. 6. Khi xung nhp: To xung ng b cc khi
18
Cu hi
Hy k tn mt vi thit b dn dng l h thng nhng? Cc thnh phn c bn ca mt vi iu khin? Cc khi h tr thng gp mt VK? S khc bit gia cu trc Harvard v von Neumann ?
21
Cc chn VK MSP430G2553
Chn ra: 20 chn t v nha PDIP Phn ln cc chn c nhiu chc nng.
V d chn s 3 c 5 chc nng
Cc ng dng ti mi thi im ch yu cu mi chn thc hin mt chc nng => khng b mu thun
23
24
M t cc chn
VCC( chn 1) VSS (chn 20) dng cp ngun 3,3V cho chp. Ngun c th dao ng trong khong 1,8V 3,6 V P1.0P1.7, P2.0, and P2.7 l 2 cng nhp xut s. Mi cng 8 chn (8 bt), gi tt l P1 v P2. Cc khi chc nng cng s dng cc chn ny khi cn nh cu hnh thanh ghi chn khi P1SEL v P2SEL.
25
26
B nh
B nh l cc thanh ghi 8 bt, t chc thnh cc nh, a ch nh 16 bit t 0x0000 ti 0xFFFF Bus d liu 16 bit c th truyn 16 bt hoc 8 bt.
28
Bus a ch v cc nh
29
Th t nh
Little-endian ordering: Khi d liu c trn 1 byte th byte gi tr thp nm v tr di, byte gi tr cao nm bn trn trong b nh. Dng MSP430 c th t ny. Big-endian ordering: Byte gi tr thp nm v tr cao. Mt s chp ca Motorola, Freescale HCS08 c cu trc ny.
30
T chc b nh
T chc b nh ca MSP430G2553 gm cc thnh phn sau Thanh ghi chc nng chuyn dng: Cc thanh ghi ca cc khi c chc nng xc nh trc. V d cc thanh ghi PC, SP, SR, CG ca CPU, thanh ghi P1REN, P1DIR ca P1... Cc thanh ghi a nng ca CPU v cc thit b ngoi vi, nh cc thanh ghi R4-R15 ca CPU, P1IN, P1OUT ca P1. Cc thanh ghi 8 bt Cc thanh ghi 16 bt Random access memory (RAM): Cc thanh ghi t trong khi RAM c a ch t 0x0200 v ch c 256/512 Bytes Bootstrap loader : L phn b nh khng b xa cha chng trnh kt ni my tnh qua cng COM ca TI
31
B nh d liu khng bay hi (Information memory): L 256 Byte flash, cho php lu cc thng tin quan trng v khng b mt khi mt in. B nh chng trnh (Code memory): L b nh ch c (ROM) v cha chng trnh c np t my tnh xung. Sau khi np v khi ng, chng trnh ny s c c vo CPU thc thi . Chp hin nay c t 2KB-16KB. Interrupt and reset vectors: L phn b nh cha cc a ch ca cc hm x l ngt v ti khi ng.
32
33
34
CPU
35
36
B to xung nhp
Xung nhp l thit b khng th thiu ca cc h thng s Linh kin thng dng to xung nhp l thch anh c th to dao ng khong vi MHz cho chp (max = 16MHz) Tuy nhin khi chy tc cao, chp tiu tn nhiu in. Cc h thng di ng cn tit kim pin nn mt s b phn ch chy tn s thp s tit kim v tng thi gian s dng pin. B to xung nhp cn a dng ha cc ch hot ng ca VK. Nhiu ng dng nhng phn ln thi gian trng thi ng (cng sut thp)-> Cn tt xung nhp khi c th. Khi c s kin ngt, CPU s c cp xung ng b li hot ng. .
38
B to xung nhp
39
B to xung thp tn bng thch anh LFXT1: C th to cc xung nhp t vi chc KHz ti 1 MHz vi chnh xc cao. B to xung cao tn bng thch anh- XT2: Ging LFXT1 ngoi tr tn s cao hn (8-16MHz) B to xung tn s thp VLO vi chnh xc thp. Cc VK c th to xung nhp tn s thp m khng cn thch anh. Dng VLO nu cn tit kim nng lng (ko di thi gian s dng gia hai ln sc pin) B to xung iu khin k thut s (DCO): To cc xung nhp tn s cao (8-10MHz) m khng dng thch anh. Cc VK s dng DCO trong giai on u khi khi ng (khong 1 giy) .
40
Kim sot cc xung nhp thng qua thanh ghi trng thi (SR) CPUOFF kha MCLK, v dng CPU cng nh cc khi no dng MCLK ng b SCG1 kha SMCLK v cc khi dng MCLK ng b SCG0 kha DCO OSCOFF kha VLO v LFXT1.
41
42
43
Cu hi
Lit k cc thanh ghi CPU Cc ngun xung v cc loi xung ca VK TI MSP430G2553? Ngt l g, ti sao h thng nhng cn c ch ngt?
44
Bi tip
Mi trng pht trin ng dng Chng trnh n gin u tin
45
46
48
49
Hp ng
V d: mov.w #WDTPW|WDTHOLD ,& WDTCTL Sinh vin s hc lp trnh hp ng nu thnh tho lp trnh bng C
50
Bo thc hnh
Mch np
VK Cng tc S1
Cng tc S2 2 LED
51
Cc chng trnh m u
Bt /tt cc n LED c trng thi cng tc S2 T ng bt tt n dng hm gi chm Automatic Control: Use of Subroutines Automatic Control: Flashing a Light by Polling Timer_A Header Files and Issues Brushed under the Carpet
52
53
54
Bt tt cc n LED
#include <msp430g2553.h> // Specific device void main (void) { WDTCTL = WDTPW | WDTHOLD; // dng watchdog timer P1DIR = 0x41; // t cc chn P1.0 v P1.6 l OUTPUT:0b01000001 P1OUT = 0x41; // c hai led cng sng for (;;) { // Loop forever ... } // ... doing nothing } 55 Hy sa li chuong trnh Led 1 sng , led 2 tt
Nu cng tc S2 h (m) in p chn P1.3 s ln 1 (3,3v ) Nu cng tc S2 ng : in p trn P1.3 s xung 0 (0v)
56
#include <msp430g2553.h> // Specific device #define LED1 BIT0 #define LED2 BIT6 #define S2 BIT3 void main (void) { WDTCTL = WDTPW | WDTHOLD; // Stop watchdog timer P1DIR = LED1|LED2; // Set pin with LED1 and LED2 to output P1OUT = LED1|LED2; // bat LED1 va LED2 sang P1REN |= S2; //su dung dien tro keo len/xuong, chi dung voi Launchpad v1.5 P1OUT |= S2; //dien tro keo len, sau lenh nay, S2 thuong xuyen cao (1) while(1) { // Loop forever if ((P1IN & S2) == 0) P1OUT |= LED1; // Yes: bat LED1 else P1OUT &= ~ LED1; // No: tt LED1, LED2 khng thay doi } } Hy vit CT bt tt LED2 bng cng tc S2. LED1 khng thay i
57
58
59
60
TimerA
61
#include "msp430g2553.h" //2542 #define S2 BIT3 void main(void) { WDTCTL = WDTPW |WDTHOLD; P1DIR = BIT0|BIT6; P1OUT = 0x00; CCTL0 = CCIE; // CCR0 interrupt enabled CCR0 = 30000; TACTL = TASSEL_2 + MC_2 + ID_2; // SMCLK, upmode _BIS_SR( GIE); // Enter LPM0 w/ interrupt while(1){} } #pragma vector=TIMER0_A0_VECTOR __interrupt void Timer_A (void) { P1OUT ^=BIT0 | BIT6; CCR0 += 30000; 62 }
Quizzes
Cc phng php chp mt n LED?
63
64
65
Hm
Hm l cch vit chng trnh thnh cc m un nh. Vic to chng trnh t cc m un khin chng trnh tr nn r rng, d vit, d kim th v c th dng nhiu ln Mt khi hm c vit, c th ng gi thnh th vin s dng khi cn (th vin ng) Cc chng trnh nhng vit bng ngn ng c thng c cc hm di khng qu 30 dng lnh
66
Ngt
Ngt l c ch dng mt chng trnh ang chy thc hin mt chng trnh khc khi xy ra mt s kin do phn cng gy ra. Ngt c dng khi
Mt s kin khn cp cn c p ng tc thi. Cc s kin rt chm. Chuyn CPU t ch ng sang tch cc. Gi h iu hnh
68
69
C ngt
Mi ngt c mt c ngt ring, ch th rng c s kin cn x l gp. Chng hn Timer A c c ngt TAIFG C TAIFG s t ng bt ln khi TAR v 0. Khi c ngt bt ln, chng trnh x l ngt tng ng s c gi, tr trng hp b che. Chng trnh x l mt ngt ch c thc thi khi ngt ny khng b che bi bit GIE cho php ngt ton cc. Chng trnh chnh phi bt bt GIE (thuc thanh ghi SR) c ch ngt c php thc hin 70
Vector ngt
Vector ngt l vng nh cao trong b nh MSP430. Vng ny cha cc a ch ca cc ISR. Khi GIE cao v mt c ngt bt ln, a ch ca ISR tng ng s c np t IV vo PC. Mi ngt c mt th t u tin. Nu 2 ngt xy ra ng thi, th ngt c u tin cao hn s c thc thi. Th t u tin cao cao th v tr ISR trong IV cng cao.
71
72
chm
chm l thi gian t lc xy ra s kin ti khi chng trnh x l ngt c bt u. Trong trng hp CPU ang thc hin d 1 lnh, th CPU s cn mt nhp hon tt v su nhp thc hin su bc cn li trc khi bt u ISR.
73
Khai bo ISR
Interrupt Service Routines in C #pragma vector = TIMERA0_VECTOR __interrupt void TA0_ISR (void)
74
void main (void) { WDTCTL = WDTPW|WDTHOLD; // Stop watchdog timer P2OUT = LED1; // Preload LED1 on , LED2 off P2DIR = LED1|LED2; // Set pins with LED1 ,2 to output TACCR0 = 49999; // Upper limit of count for TAR TACCTL0 = CCIE; // Enable interrupts on Compare 0 TACTL = MC_1|ID_3|TASSEL_2|TACLR; // Set up and start Timer A // "Up to CCR0" mode , divide clock by 8, clock from SMCLK , clear timer __enable _interrupt (); // Enable interrupts (intrinsic) for (;;) { // Loop forever doing nothing } // Interrupts do the work } // ---------------------------------------------------------------------// Interrupt service routine for Timer A channel 0 #pragma vector = TIMERA0_VECTOR __interrupt void TA0_ISR (void) { P2OUT = LED1|LED2; // Toggle LEDs }
75
76
77
Quizzes
V sao Ngt li quan trng vi HTN? C ngt lm g? Bt GIE l g?
78
Bi sau?
Cng nhp xut s
79
80
81
82
83
84
Cc thanh ghi ca P1
Cc Port u c cc thanh ghi ca ring mnh Port P1 input, P1IN: nhn d liu logic (0/1) t cc chn ca P1 (8 bt) Port P1 output, P1OUT: Ghi d liu ra cc chn ca P1
85
Cc thanh ghi ca P1
Port P1 direction, P1DIR: xc nh hng truyn d liu. Nu bt i =0, chn P1.i s l INPUT, nu bt i=1, chn P1.i s l OUTPUT . Khi khi ng cc bt P1DIR c gi tr 0 Port P1 resistor enable, P1REN: Bt mt bt ca thanh ghi ny ln 1 s kich hot in tr ko ln hoc ko xung ti chn tng ng. Port P1 selection, P1SEL: Chn chn tng ng l chn nhp xut s (0 gi th mc nhin khi khi ng) hoc c chc nng khc (1).
86
87
88
89
Qut bn phm
1. Cp 011 cho X1X2X3 c Y1Y2Y3Y4 kim tra cc nt 1, 4, 7, or *. Cc nt khc s khng lm thay i Y1-Y4 v X2,X3 c gi tr 1 2. Cp 101 cho X1X2X3 c Y1Y2Y3Y4 kim tra cc nt 2, 5, 8, or 0. 3. Cp 110 cho X1X2X3 c Y1Y2Y3Y4 kim tra cc nt 3, 6, 9, or #.
90
LED 7 on
91
Bi tip theo
1. Cc loi Timer thng gp 2. Watchdog Timer 3. Timer A
92
Bi 6: B nh thi
1. Cc loi timer 2. Watchdog timer 3. Timer A
93
94
Cc loi B nh thi
Watchdog timer: ng h canh gc : c trong mi thit b dng MSP430. Chc nng chnh l chng li chng trinh nhng c th s dng nh mt b m thi gian chnh xc . Timer_A: C trong mi thit b. Loi Timer A c 3 knh v l thit b nh thi n gin nht. Timer Ac th m thi gian, o tn s hoc m cc s kin lp Timer_B: Ch c trong mt s chp ln. y l cu trc m rng ca Timer A vi s knh ln n 7 , c s dng to cc xung PWM iu khin ng c Timer Basic1: Ch c trong mt s chp MSP430F4XX. Real time clock: Ch c trong mt s chp MSP430 ln
95
WDT lun s dng xung nhp DCO 1MHz. Khi hot ng, bt WDTCNTCL bt ln 1 s xa thanh ghi WDTCNT
97
// Watchdog config: active , ACLK /32768 -> 1s interval; clear counter #define WDTCONFIG (WDTCNTCL|WDTSSEL) // Include settings for _RST/NMI pin here as well // ---------------------------------------------------------------------void main (void) { WDTCTL = WDTPW | WDTCONFIG; // Configure and clear watchdog P2DIR = BIT3 | BIT4; // Set pins with LEDs to output P2OUT = BIT3 | BIT4; // LEDs off (active low) for (;;) { // Loop forever LED2 = IFG1_bit.WDTIFG; // LED2 shows state of WDTIFG if (B1 == 1) { // Button up LED1 = 1; // LED1 off } else { // Button down WDTCTL = WDTPW | WDTCONFIG; // Feed/pet/kick/clear watchdog LED1 = 0; // LED1 on } } }
98
Timer_A
L b nh thi a nng thng dng, c mt trong mi chp MSP430. B nh thi gm 2 khi ln Timer block: L khi li vi thanh ghi TAR 16 bt, khi chn xung nhp v khi chia tn lm chm. Khi TAR khng c tn hiu ra nhng c th bt c TAIFG khi TAR v 0 Capture/compare channels: L khi bt tn hiu v so snh, c 3 khi c lp vi cc ch s 0,1 v 2. Khi ny gm 0 khi con nh sau
100
Khi bt tn hiu Capture : Nhn tn hiu cn m t bn ngoi Khi so snh Compare Gm thanh ghi TACCR0 (hoc 1,2) m s tn hiu hoc c t bng phn mm. Khi to ngt : bt c CCIFG khi TAR v TACCR bng nhau. Khi ly mu Sample to tn hiu so snh .
101
102
Cc ch nh thi
103
Bn ch hot ng
Stop (MC = 0): B nh thi dng hot ng. Mi thanh ghi gi nguyn gi. m ln (MC=1) TAR s m ln ti TACCR0 (i vi knh 0) v quay v 0. Lin tc (MC= 2): m ln 0xFFF ri quay v 0 m ln/xung(MC= 3): Thanh ghi TAR m ln n TACCR0 ri m xung ti 0 v lp li .
104
Chapter 10 : Communication
1. 2. 3. 4. 5. 6. 7. Communication Peripherals in the MSP430 Serial Peripheral Interface SPI with the USI SPI with the USCI Inter-integrated Circuit Bus A Simple IC Master with the USCI_B0 A Simple IC Slave with the USI on a F2013
106
107
109
110
The concept of SPI is based on two shift registers, one in each device, which are connected to form a loop. The registers usually hold 8 bits. Each device places a new bit on its output from the most significant bit (msb) of the shift register when the clock has a negative edge and reads its input into the lsb of the shift register on a positive edge of the clock. Thus a bit is transferred in each direction during each clock cycle. After eight cycles the contents of the shift registers have been exchanged and the transfer is complete. Transmission and reception are clearly inseparable.
111
The main pins are labeled SOMI, SIMO, and CLK (2 USCI)
112
113
SPI operation
There are separate shift registers for transmitting and receiving Moreover, these registers are double-buffered and the user has no direct access to the shift registers themselves. This means that a byte is moved from the receive shift register to RXBUF as soon as reception is complete, which leaves the shift register ready to accept the next transfer. Similarly, a byte written to TXBUF remains in its buffer until the previous byte has been transmitted, at which point it is moved to the transmit shift register. This relaxes considerably the constraints on handling interrupts in the USI, where the shift register must be read and updated rapidly between transfers. Although there are separate registers, reception and transmission are not independent because of the nature of SPI. 114
Read an examples C code for SPI communication For Master msp430g2xx3_uscia0_spi_09.c And for Slave msp430g2xx3_uscia0_spi_10.c
115
Structure
n tp H thng nhng
Cu trc tng th ca vi iu khin S khi ca chp TI MSP430G2553 B nh MSP430G2553: Phn b v tr b nh v ngha tng vng nh Cu to CPU v ngha cc thanh ghi trong CPU Cc loi xung nhp (clock) v cc ch hot ng Hm v cc bc thc hin khi gi mt hm Khi nim ngt v chng trnh phc v ngt Cc bc thc thi khi thc hin mt ngt. Cc ch cng sut thp. Cc cng nhp xut s (Digital Input and Output). Qut ma trn bn phm. Chng di Cc loi LCD. S chn kt ni theo chun HD44780 Cc loi timer. Cu trc v hot ng ca WDT Cu trc v cc ch hot ng ca TimerA0 Kt ni Serial Peripheral Interface (SPI). Cu trc v hot ng. Kt ni Inter-integrated Circuit Bus (I2C).