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
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:
- 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).pdf