Bài giảng Lập trình hệ thống nhúng sử dụng vi điều khiển MSP430 (Embedded System I)

Nội dung chi tiết

Chương 1: Các hệthống nhúng và vi điều khiển

MSP430

Chương 2: Phát triển ứng dụng nhúng.

Chương 3: Các hàm và ngắt

Chương 4: Nhập/xuất

Chương 5: Bộ định thời

Chương 6: ADC

Chương 7: Kết nối

pdf120 trang | Chuyên mục: Kỹ Thuật Lập Trình Nhúng | Chia sẻ: dkS00TYs | Lượt xem: 2875 | Lượt tải: 1download
Tóm tắt nội dung Bài giảng Lập trình hệ thống nhúng sử dụng vi điều khiển MSP430 (Embedded System I), để xem tài liệu hoàn chỉnh bạn click vào nút "TẢI VỀ" ở trên
• Các Port đều có các thanh ghi của riêng mình
• Port P1 input, P1IN: nhận dữ liệu logic (0/1) từ 
các chân của P1 (8 bít)
• Port P1 output, P1OUT: Ghi dữ liệu ra các chân 
của P1
86
Các thanh ghi của P1
•Port P1 direction, P1DIR: xác định hướng truyền dữ liệu. Nếu 
bít i =0, chân P1.i sẽ là INPUT, nếu bít i=1, chân P1.i sẽ là 
OUTPUT . Khi khởi động các bít P1DIR có giá trị 0
•Port P1 resistor enable, P1REN: Bật một bít của thanh ghi này 
lên 1 sẽ kich hoạt điện trở kéo lên hoặc kéo xuống tại chân tương 
ứng. 
•Port P1 selection, P1SEL: Chọn chân tương ứng là chân nhập 
xuất số (0 – giá thị mặc nhiên khi khởi động) hoặc có chức năng 
khác (1).
87
Digital Input and Output
• Port P1 interrupt enable, P1IE: Cho phép ngắt trên chân tương 
ứng nếu bật lên 1, cấm ngắt nếu bít tương ứng là 0
• Port P1 interrupt edge select, P1IES: chọn cạnh lên để tạo ngắt 
nếu bít tương ứng là 0, hoặc cạnh xuống nếu là 1. Thanh ghi này 
chỉ có hiệu lực nếu thanh ghi P1IE đã bật
• Port P1 interrupt flag, P1IFG: Là thanh ghi chứa các cờ ngắt . 
Khi một chân được bật cho phép ngắt và có sự thay đổi tín hiệu 
đúng như thanh ghi P1IES đặt thì cò ngắt tu7ong ứng chân này 
bật lên. Nêu GIE đã bật thì ISR sẽ được thực thi
88
Quét ma trận bàn phím
• Khi số nút nhấn khá lớn, số chân chíp dùng 
điều kiển các công tắc sẽ lớn. 
• Có thể giảm số chân VDK bắn ma trận bàn 
phím
89
90
Quét bàn phím
1. Cấp 011 cho X1X2X3 Đọc Y1Y2Y3Y4 để kiểm
tra các nút 1, 4, 7, or *. Các nút khác sẽ không
làm thay đổi Y1-Y4 vì X2,X3 có giá trị 1
2. Cấp 101 cho X1X2X3 Đọc Y1Y2Y3Y4 để kiểm
tra các nút 2, 5, 8, or 0. 
3. Cấp 110 cho X1X2X3 Đọc Y1Y2Y3Y4 để kiểm
tra các nút 3, 6, 9, or #. 
91
LED 7 đoạn
92
Bài tiếp theo
1. Các loại Timer thường gặp
2. Watchdog Timer
3. Timer A
93
Bài 6: Bộ định thời
1. Các loại timer
2. Watchdog timer
3. Timer A
94
95
Các loại Bộ định thời
Watchdog timer: Đồng hồ canh gác : có trong mọi thiết bị dòng 
MSP430. Chức năng chính là chống lỗi chương trinh nhưng có thể sử 
dụng như một bộ đếm thời gian chính xác
.
Timer_A: Có trong mọi thiết bị. Loại Timer A có 3 kênh và là thiết 
bị định thời đơn giản nhất. Timer Acó thể đếm thời gian, đo tần số 
hoặc đếm các sự kiện lặp 
Timer_B: Chỉ có trong một số chíp lớn. Đây là cấu trúc mở rộng của 
Timer A với số kênh lên đến 7 , được sử dụng để tạo các xung PWM 
điều khiển động cơ
Timer Basic1: Chỉ có trong một số chíp MSP430F4XX.
Real time –clock: Chỉ có trong một số chíp MSP430 lớn 
96
Watchdog Timer (WDT)
• Chức năng chính: chống lỗi chương trình như lặp 
quẩn, treo VĐK…
• WDT có một thanh ghi đếm lên WDTCNT và khi đạt 
giới hạn trên (65535) nó sẽ khởi động lại VĐK.
• Chương trình được viết phải định kỳ xóa thanh ghi 
đếm lên của WDT trước khi đạt giới hạn. Nếu không 
hệ thống sẽ bị reset.
• Tuy nhiên hoạt động của WDT được cấu hình bởi 
thanh ghi điều khiển 16-bit WDTCTL. Bật bít 
WDTHOLT sẽ ngừng hoạt động của WDT
97
WDT luôn sử dụng xung nhịp DCO 1MHz. Khi hoạt động, 
bít WDTCNTCL bật lên 1 sẽ xóa thanh ghi WDTCNT 
98
// 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
}
}
}
99
Sử dụng WDT như một bộ 
định thời
• Nếu không dùng để kiểm tra lỗi chương 
trình, WDT có thể được sử dụng như một 
bộ định thời . 
• Bật bít WDTTMSEL trong thanh ghi 
WDTCTL sẽ đặt WDT vào chế độ đếm, tuy 
nhiên khi đạt giới hạn thì WDTIFG bật lên 
mà không khởi động lại VĐK
• Việc đọc WDTCNT cho biết thời gian đã 
xảy một sự kiện
100
Timer_A
• Là bộ định thời đa năng thông dụng, có mặt trong mọi chíp 
MSP430. Bộ định thời gồm 2 khối lớn
• Timer block: Là khối lõi với thanh ghi TAR 16 bít, khối 
chọn xung nhịp và khối chia tần làm chậm. Khôi TAR 
không có tín hiệu ra nhưng có thể bật cờ TAIFG khi TAR 
về 0
• Capture/compare channels: Là khối bắt tín hiệu và so 
sánh, có 3 khối độc lập với các chỉ số 0,1 và 2. Khối này 
gồm 0 khối con như sau
101
• Khối bắt tín hiệu Capture : Nhận tín hiệu cần đếm từ bên 
ngoài 
• Khối so sánh Compare Gồm thanh ghi TACCR0 (hoặc 
1,2) để đếm số tín hiệu hoặc được đặt bằng phần mềm. 
• Khối tạo ngắt : bật cờ CCIFG khi TAR và TACCR bằng 
nhau.
• Khối lấy mẫu Sample tạo tín hiệu để so sánh
• .
102
103
Các chế độ định thời
104
Bốn chế độ hoạt động
• Stop (MC = 0): Bộ định thời dừng hoạt động. Mọi thanh 
ghi giữ nguyên giá.
• Đếm lên (MC=1) TAR sẽ đếm lên tới TACCR0 (đối với 
kênh 0) và quay về 0.
• Liên tục (MC= 2): Đếm lên 0xFFF rồi quay về 0
• Đếm lên/xuống(MC= 3): Thanh ghi TAR đếm lên đến 
TACCR0 rồi đếm xuống tới 0 và lặp lại
• . 
105
Hệ thống nhúng
Ts. Lê Mạnh Hải
Khoa CNTT, 
ĐH Kỹ thuật Công nghệ TP HCM
Embedded Systems
106
Chapter 10 : Communication
1. Communication Peripherals in the MSP430
2. Serial Peripheral Interface
3. SPI with the USI
4. SPI with the USCI
5. Inter-integrated Circuit Bus
6. A Simple I²C Master with the USCI_B0
7. A Simple I²C Slave with the USI on a F2013
107
108
Communication Peripherals in the 
MSP430
• The universal serial interface (USI) is a lightweight module, which 
is included in the small F20x2 and F20x3 devices. For a start, it 
handles only synchronous communication—SPI and I²C.
• Universal Serial Communication Interface
larger devices in the MSP430F2xx and MSP430F4xx families contain 
one or more universal serial communication interface (USCI) 
modules. The hardware handles almost all aspects of the 
communication, unlike the USI, so the software needs only to provide 
the data to transmit and store the received data in normal operation. 
Typically this requires only a couple of small interrupt service 
routines.
• Universal Synchronous/Asynchronous Receiver/Transmitter
(USART) is an older module, which has been superseded by the 
USCI.
109
110
Serial Peripheral Interface
• The serial peripheral interface was introduced by 
Motorola and is the simplest synchronous 
communication protocol in general use.
• The only problem is that it is not a fixed standard like 
I²C. There are plenty of options within “standard” SPI 
and innumerable variations that go beyond this.
111
• 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.
112
The main pins are labeled SOMI, SIMO, and CLK (2 USCI)
113
SPI block in USCI
114
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. 
115
Read an examples C code for SPI communication
For Master
msp430g2xx3_uscia0_spi_09.c
And for Slave
msp430g2xx3_uscia0_spi_10.c 
116
Inter-integrated Circuit Bus
• The I²C bus was introduced by Philips (now NXP) 
Semiconductors. It was widely adopted and has become 
even more popular since its patents expired in 2006. It is a 
true bus, unlike SPI, with a specification and user manual 
that can be downloaded from NXP.
• Revision 03 of the user manual is document UM10204, 
dated June 19, 2007. It is clearly written and a lot easier to 
read than you might expect. The I²C bus uses only two, 
bidirectional lines:
• Serial data (SDA).
• Serial clock (SCL).
117
• Structure
• Operation: Read from page 534 -542
Ôn tập Hệ thống nhúng
1. Cấu trúc tổng thể của vi điều khiển 
2. Sơ đồ khối của chíp TI MSP430G2553
3. Bộ nhớ MSP430G2553: Phân bổ vị trí bộ nhớ và ý 
nghĩa từng vùng nhớ 
4. Cấu tạo CPU và ý nghĩa các thanh ghi trong CPU
5. Các loại xung nhịp (clock) và các chế độ hoạt động
6. Hàm và các bước thực hiện khi gọi một hàm
7. Khái niệm ngắt và chương trình phục vụ ngắt
8. Các bước thực thi khi thực hiện một ngắt. 
9. Các chế độ công suất thấp.
10. Các cổng nhập xuất số (Digital Input and Output).
11. Quét ma trận bàn phím. Chống dội 
12. Các loại LCD. Sơ đồ chân kết nối theo chuẩn 
HD44780 
13. Các loại timer. Cấu trúc và hoạt động của WDT
14. Cấu trúc và các chế độ hoạt động của TimerA0
15. Kết nối Serial Peripheral Interface (SPI). Cấu trúc 
và hoạt động.
16. Kết nối Inter-integrated Circuit Bus (I2C).
Kiểm tra giữa kỳ
• Viết CT hiển thị phút và giây trên Led 7 
đoạn. Sử dụng Timer A (7 điểm)
• Cứ 1 mỗi giây đèn LED L4 phải sáng / tắt 
dấu chấm (LED h) 1 lần 

File đính kèm:

  • pdfBài giảng Lập trình hệ thống nhúng sử dụng vi điều khiển MSP430 (Embedded System I).pdf
Tài liệu liên quan