Professional Documents
Culture Documents
MÔN ĐỒ ÁN II
Sinh viên:
MỤC LỤC:
I.Tổng quan về MSP430.
II.Giới thiệu về KIT Launch Pad.
III.Phần thực hành trên KIT.
Phần I. Tổng quan về MSP430:
MSP 430 là họ vi điều khiển cấu trúc RISC 16-bit được sản xuất bởicông ty Texas
Instruments.MSP là chữ viết tắt của “MIXED SIGNAL MICROCONTROLLER”
- Làdòng vi điều khiển siêu tiết kiệm năng lượng, sử dụng nguồn thấp, khoảng
điệnáp nguồn cấp từ 1.8V – 3.6V
-MSP 430 kết hợp các đặc tính của một CPU hiện đại và tích hợp sẵn các module
ngoại vi. Đặc biệt ChípMSP 430 là giải pháp thích hợp cho những ứng dụng yêu
cầu trộn tín hiệu.
-MSP430 được sử dụng và biết đến đặc biệt trong những ứng dụng về thiết bịđo có
sử dụng hoặc không sử dụng LCD với chế độ nguồn nuôi rất thấp. Với chế
độnguồn nuôi từ khoảng 1,8 đến 3,6v và 5 chế độ bảo vệ nguồn.Với sự tiêu thụ
dòng rất thấp trong chế độ tích cực thì dòng tiêu thụ là 200uA,1Mhz, 2.2v; với chế
độ standby thì dòng tiêu thụ là 0.7uA. Và chế độ tắt chỉ duy trì bộ nhớ Ram thì
dòng tiêu thụ rất nhỏ 0.1uA.MSP430 có ưu thế về chế độ nguồn nuôi. Thời gian
chuyển chế độ từ chế độstandby sang chế độ tích cực rất nhỏ (< 6us). Và có tích
hợp 96 kiểu hình cho hiểnthị LCD. 16 bit thanh ghi, 16 bit RISC CPU.Có một đặc
điểm của họ nhà MSP là khi MCU không có tín hiệu dao độngngoại, thì MSP sẽ tự
động chuyển sang hoạt động ở chế độ dao động nội.
Hình minh họa kit LaunchPad Rev.1.1 (bản ổn định hiện tại là Rev.1.5) :
Một kit LaunchPad gồm hai thành phần, với GND được phủ chung:
- Nửa trên: Là phần mạch nạp theo chuẩn spy-bi-wire Jtag (2 dây), kết hợp với
chuyển đổi giao tiếp UART với máy tính. Trên cùng là đầu USBmini để nối với
máy tính, phía dưới là hàng Header để nối ra đối tượng cần giao tiếp, bao gồm các
chân:
· TXD, RXD: phục vụ giao tiếp UART với máy tính.
· RST, TEST: phục vụ nạp và debug (sửa lỗi) theo chuẩn spy-bi-wire Jtag.
· VCC: cấp nguồn 3V3 cho đối tượng (thường là nửa dưới LaunchPad).
- Nửa dưới: là một mạch phát triển MSP430 đơn giản, bao gồm:
· Socket cắm MSP430 (thường gắn sẵn chip MSP430G2553), Pad hàn thạch anh,
Nút nhấn Reset chip.
· Nút nhấn gắn vào P1.3, hai Led hiển thị có jumper để gắn vào P1.0 và P1.6. Hai
hàng header để kết nối hai hàng chân của chip ra ngoài, một hàng header
nguồnGND-GND-VCC để lấy nguồn 3V3 trên LaunchPad.
- Nguồn ngoài được cấp qua Domino J1 trong khối nguồn của mạch. Nguồn vào có thể
là AC hay DC, dải điện áp từ 8V đến 30V. Với phương án này, tổng dòng tiêu thụ của
mạch giới hạn ở khoảng 1A (giới hạn của 7805). Cụ thể, chúng ta có thể lựa chọn biến
áp 220V/12-24V; các cục sạc (adapter) AC, DC 9V, 12V, 19V, …; Ac-quy 12-24V; Pin
9V, …
- Ngoài ra, nếu có nguồn DC 5V, 3V3 bên ngoài thì có thể cắm vào header nguồn
J2 (5V) hay J14 (3V3) để sử dụng. Khi làm cách làm này cần phải chắc chắn, đảm
bảo điê ̣n áp cấp trong khoảng từ 3v3 đến 5v
- Sau khi cấp nguồn, Led D1, D2 sẽ sáng. Ta gạt công tắc để Led D4 sáng, cấp
nguồnMSP430
- Nguồn 3V3 LaunchPad được cấp qua header J11, với dòng tối đa
khoảng 250mA.
- Nguồn trên Launch Pad có thể lấy từ nhiều điểm, được đánh dấu
là VCC và GND (chú ý trạng thái của jumper VCC khi lấy nguồn). Thông thường,
ta giữ jumperVCC và lấy nguồn tự cụm header GND-GND-VCC phía dưới kit.
- Sau khi cấp nguồn vào J11, Led D3 sẽ sáng. Ta gạt công tắc để Led D4 sáng, cấp
nguồn cho MSP430
- Chú ý là khi mạch chỉ được cấp nguồn 3V3, các module dùng nguồn
5V (LCD, ..)sẽ không hoạt đô ̣ng.
- LaunchPad có thiết kế lỗ TP1 (5V), TP3 (GND) để người dùng lấy nguồn USB-
5V từ máy tính khi cần thiết. Chúng ta có thể hàn thêm header để lấy nguồn tại đây
(chỉ cần hàn header vào TP1 là đủ, GND có thể lấy từ nhiều vị trí khác TP3).
- Nguồn USB-5V có dòng tối đa khoảng 500mA, đủ cho việc chạy LCD trên mạch
Main. Tuy nhiên, khi sử dụng nguồn này cần phải cẩn thận, tránh để chập nguồn,
ảnh hưởng đến hoạt động của máy tính. Đặc biệt chú ý phần vỏ ngoài của đầu cắm
USBmini được bắt dính với GND, không để cho header ở TP1 dính vào đây.
- Chúng ta cấp nguồn 5V-USB này vào mạch Main ở header nguồn J2 (5V). Sau
khi cấp nguồn, Led D1, D2 sẽ sáng. Ta gạt công tắc để Led D4 sáng, cấp nguồn
cho MSP430.
void Init(void)
{
P1DIR |= 0xff;
P1SEL &= ~(BIT2 + BIT3 + BIT4 + BIT5); // Pin-Osc: PxSEL.x = 0; PxSEL2.x = 1;
P1OUT &= ~(BIT2 + BIT3 + BIT4 + BIT5);
P2DIR = 0xff;
P2OUT &= ~BIT6;
P2SEL &= ~BIT6; // Pin-Osc: PxSEL.x
= 0; PxSEL2.x = 1;
//Config timer A
TA0CTL = TASSEL_3+MC_2; // TACLK, cont mode
TA0CCTL1 = CM_3+CCIS_3+CAP; // Pos&Neg,GND,Cap
}
void Get_info(void)
{
P2SEL2 &= ~BIT6; //P2.6 -> Output
P2OUT &= ~BIT6; //P2.6 -> Ground
P2SEL2 |= BIT6;
TA0CTL |= TACLR; // Clear Timer_A TAR
_delay_cycles(10000);
TA0CCTL1 ^= CCIS0; // Create SW capture of CCR1
count_edge[4] = TACCR1; // Save result
void main(void)
{
WDTCTL = WDTPW + WDTHOLD; //Stop Watchdog Timer
Init(); //
touch_count[0]=1;
while (1)
{
Get_info();
if (slider == 1)
{
P1OUT &= ~0x41;
for (i = 0; i < 29; i++)
{
P1OUT ^= BIT0;
_delay_cycles(100000);
}
}
else if (slider == 2)
{
P1OUT &= ~0x41;
for (i = 0; i < 29; i++)
{
P1OUT ^= BIT6;
_delay_cycles(100000);
}
}
switch (proximity)
{
case 0:
{
switch (mode)
{
case 0:
P1OUT &= ~BIT6;
P1OUT |= BIT0;
break;
case 1:
P1OUT &= ~BIT0;
P1OUT |= BIT6;
break;
case 2:
k = ++k % (3 * speed);
if (k == 0)
P1OUT ^= 0x41;
break;
}
_delay_cycles(2000);
}
break;
case 1:
if (count_edge[4] > count_default[4])
count_default[4] = (count_default[4] + count_edge[4])/2;
for (i = 0; i < 150; i++)
{
if (i < count_default[4] - count_edge[4] - 10)
P1OUT |= BIT0 + BIT6;
else
P1OUT &= ~(BIT0 + BIT6);
_delay_cycles(15);
}
break;
}
slider = 0;
}
}