TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI
VIỆN ĐIỆN TỬ - VIỄN THÔNG
*******************************
MÔN ĐỒ ÁN II
Báo cáo tiến độ Đồ Án II:
Điều khiển thiết bị điện trong nhà qua
Module thu phát RF 315M
Giáo viên hướng dẫn :
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.
-Những đặc tính của dòng MSP 430 bao gồm:
+Điện áp nguồn: 1.8V – 3.6 V.
+Mức tiêu thụ năng lượng cực thấp:
+Chế độ hoạt động: 270 μA tại 1MHz, 2,2 V.
+Chế độ chờ: 0.7 μA.
+Chế độ tắt (RAM vẫn được duy trì): 0.1 μA.
+Thời gian đánh thức từ chế độ Standby nhỏ hơn 1μs.
+Cấu trúc RISC-16 bit, Thời gian một chu kỳ lệnh là 62.5 ns
+Cấu hình các module Clock cơ bản:
+Tần số nội lên tới 16 MHz với 4 hiệu chỉnh tần số +- 1%.
độ 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.
Sơ đồ chân của các dòng MSP430G2x53va MSP430G2x13:
class="bi xa y47 w3 ha"
Thanh ghi vào /ra
class="bi xa y4a w4 hc"
class="bi xa y4b w5 hd"
-Bộ định thời:
MSP430 có hai bộ định thời 16 Bit là Timer_A và Timer_B nó cũng đồngthời
đóng vai trò là bộ đếm.
Timer_A:Đặc tính của Timer_A:
Là một bộ Timer/Counter 16 bit. Với ba thanh ghi lưu trữ và 3 thanh ghi sosánh.
Là một Timer đa chức năng. Đếm thời gian, so sánh, PWM . Timer_Acũng có khả
năng ngắt khi counter đếm tràn hoặc mỗi thanh ghi đếm tràn. Cácđặc tính chính
của Timer_A bao gồm:+ Là một Timer/counter 16 Bit không đồng bộ với 4 chế độ
hoạt động.+ Có thể lựa chọn và cấu hình nguồn xung+ Hai tới 3 thanh ghi có thể
cấu hình capture/compare+ Cấu hình đầu ra với chế độ PWM+ Chốt ngõ vào và
ngõ ra không đồng bộ.
Sơ đồ khối của Timer_A
Phần 2: Giới thiệu về kit launch pad
1.1.Giới thiệu kit:
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
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.
*Tận dụng nguồn 5V
- 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.
Phần 3: Thực hành trên kit:
Code giao tiếp spi giữa msp430g2553 và capacitive touch
#include <msp430g2553.h>
int count_default[5], count_edge[5], k;
char touch[4], touch_rem[4], touch_count[4], j, i, key, speed = 1, mode = 0,
proximity = 0, slider = 0;
const char sensivity = 30; //Threshold
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;
void main(void)
{
WDTCTL = WDTPW + WDTHOLD; //Stop Watchdog Timer
Init(); //
touch_count[0]=1;
for (i = 0; i < 10; i++)
{
Get_info();
for (j = 0; j < 5; j++)
count_default[j] = (count_default[j] + count_edge[j]) /2;
}
while (1)
{
Get_info();
for (i = 0; i < 4; i++)
{
touch_rem[i] = touch[i];
if ((count_edge[i] + sensivity) < count_default[i]) //
{
if (touch_count[i] > 0)
touch_count[i]++;
touch[i] = 1;
}
else
{
touch[i] = 0;
touch_count[i] = 1;
}
if (touch_count[0] > 100)
{
speed = 1;
break;
}
}
}
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:
}
}