SlideShare una empresa de Scribd logo
1 de 78
Descargar para leer sin conexión
Tài liệu hướng dẫn thí nghiệm MSP‐EXP430FG4618
1 | P a g e Bộ môn Kỹ Thuật Điện Tử, khoa Điện‐Điện Tử, trường ĐHBK‐ĐHQG TP.HCM
Soạn: Hoàng Trang, Bùi Quốc Bảo.
Đối tượng dùng tài liệu này:
- Sinh viên muốn tìm hiểu về MCU MSP430 của hãng TI.
- Sinh viên khoa Điện-Điện Tử học môn thí nghiệm Vi Xử Lý tại Bộ môn Điện Tử.
Mục tiêu:
Sau khi sinh viên đọc xong tài liệu này, sinh viên có thể:
- Biết được các đặc tính cơ bản của kit thí nghiệm MSP-EXP430FG4618
- Đặc tính và cách cài đặt bộ Debug MSP-FET430UIF.
- Cách sử dụng IAR.
- Thực hiện các bài liên quan đến xuất/nhập, ngắt, timer
Với mục tiêu đó, tài liệu này được trình bày theo các phần sau đây:
I. Kit MSP-EXP430FG4618
1. Giới thiệu chung:
Kit thí nghiệm MSP-EXP430FG4618 của hãng TI với sự kết hợp 2 chip MSP430FG4618 và
MSP430F2013 nên cung cấp hầu hết các ngoại vi trong họ MSP430. Ngoài ra, các header cho
các module thử nghiệm TI wireless và RAM dung lượng lớn trên kit này đã giúp kit MSP-
EXP430FG4618 khá phù hợp như là 1 nền tảng cho các ứng dụng về wireless. Hai chip 4618 và
2013 có thể giao tiếp với nhau (xem hình 2) hoặc giao tiếp với các thiết bị bên ngoài.
Để lập trình và debug, chúng ta có 2 môi trường riêng biệt được hỗ trợ: IAR Embeeded
Workbench và TI Code Composer Essential (CCE). Thiết bị để lập trình và debug cho chip TI là
TI USB Flash Emulation Tool (FET), trong tài liệu này là MSP-FET430UIF, sẽ được trình bày
trong phần III.
Hình 1 trình bày hình ảnh thực của kit MSP-EXP430FG4618 tại bộ môn Điện Tử
CuuDuongThanCong.com https://fb.com/tailieudientucntt
CuuDuongThanCong.com https://fb.com/tailieudientucntt
Tài liệu hướng dẫn thí nghiệm MSP‐EXP430FG4618
2 | P a g e Bộ môn Kỹ Thuật Điện Tử, khoa Điện‐Điện Tử, trường ĐHBK‐ĐHQG TP.HCM
Soạn: Hoàng Trang, Bùi Quốc Bảo.
Hình 1. Hình ảnh thực của kit MSP-EXP430FG4618
2. Các đặc tính của kit MSP-EXP430FG4618
Để thuận tiện theo dõi, sơ đồ khối của kit MSP-EXP430FG4618 được trình bày trong hình 2.
CuuDuongThanCong.com https://fb.com/tailieudientucntt
CuuDuongThanCong.com https://fb.com/tailieudientucntt
Tài liệu hướng dẫn thí nghiệm MSP‐EXP430FG4618
3 | P a g e Bộ môn Kỹ Thuật Điện Tử, khoa Điện‐Điện Tử, trường ĐHBK‐ĐHQG TP.HCM
Soạn: Hoàng Trang, Bùi Quốc Bảo.
Hình 2. Sơ đồ khối của kit MSP-EXP430FG4618
2.1. JTAG
Hai header JTAG1 và JTAG2 để lập trình và debug mỗi MSP430 riêng biệt: JTAG1 cho
MSP430FG4618 và JTAG2 cho MSP430F2013.
JTAG1 cho MSP430FG4618 dùng kiểu kết nối JTAG chuẩn 4 dây, còn JTAG cho
MSP430F2013 dùng kiểu giao tiếp JTAG Spy-Bi-Wire (2 dây). Điều này cho phép các chân ở
các port được sử dụng trong quá trình debug.
2.2. Microphone:
Microphone (MIC) được kết nối với MSP430FG4618 qua các chân trong hình 3. Microphone
được kích hoạt hay không qua chân của MSP430FG4618.
Câu hỏi dành cho sinh viên: giải thích cơ chế điều khiển, thu nhận tín hiệu MIC của
MSP430FG4618 qua các chân như hình 3?
Không gian số 4 này
chừa sẵn để sử dụng sau
Không gian
này: chỉ có
header,
chừa sẵn để
sử dụng sau
CuuDuongThanCong.com https://fb.com/tailieudientucntt
CuuDuongThanCong.com https://fb.com/tailieudientucntt
Tài liệu hướng dẫn thí nghiệm MSP‐EXP430FG4618
4 | P a g e Bộ môn Kỹ Thuật Điện Tử, khoa Điện‐Điện Tử, trường ĐHBK‐ĐHQG TP.HCM
Soạn: Hoàng Trang, Bùi Quốc Bảo.
Hình 3: Kết nối microphone
2.3. Buzzer
Buzzer được kết nối với port I/O P3.5 của MSP430FG4618.
Buzzer có thể hoàn toàn bị cách ly với jumper JP1.
Lưu ý: trong quá trình thí nghiệm, sau khi thử nghiệm thành công, sinh viên nên tháo JP1 này để
tránh làm ảnh hưởng người xung quanh.
2.4. LCD
LCD trong kit này là loại SoftBaugh SBLCDA4, nó có 4 chế độ khác nhau: tĩnh, 2-mux, 3-mux
và 4-mux. LCD này được hỗ trợ khi giao tiếp với MSP430FG4618 qua LCD driver đã có sẵn.
Thông tin thêm về LCD này, sinh viên có thể google hoặc download từ trang web của bộ môn
Điện Tử.
2.5. Nút nhấn S1 và S2:
Hai nút nhấn S1 và S2 được nối với onnected to the interrupt capable
MSP430FG4618 digital I/O port, P1.
Hình 4: kết nối switch
2.6. LED
Kit thí nghiệm có tổng cộng 4 LED, 3 LED (LED1, LED2, và LED4) được kết nối với chip
MSP430FG4618, và 1 LED còn lại (LED3) được kết nối với chip MSP430F2013. Các LED này
được sử dụng chủ yếu với mục đích hiển thị. 2 LED LED3 và LED4 có thể được ngắt khỏi kết
CuuDuongThanCong.com https://fb.com/tailieudientucntt
CuuDuongThanCong.com https://fb.com/tailieudientucntt
Tài liệu hướng dẫn thí nghiệm MSP‐EXP430FG4618
5 | P a g e Bộ môn Kỹ Thuật Điện Tử, khoa Điện‐Điện Tử, trường ĐHBK‐ĐHQG TP.HCM
Soạn: Hoàng Trang, Bùi Quốc Bảo.
nối bằng Jumper để tiết kiệm năng lượng cho kit. (LED3 dùng jumper JP2, LED4 dùng JP3).
Xem tóm tắt trong bảng 1 và hình 5
Bảng 1 trình bày về kết nối các LED
Bảng 1: Kết nối LED
LED Kết nối với chip Port Ghi chú Jumper
LED1 MSP430FG4618 P2.2
LED2 MSP430FG4618 P2.1
LED3 MSP430F2013 P1.0 JP2
LED4 MSP430FG4618 P5.1 JP3
Hình 5: Các kết nối LED.
2.7. Giao tiếp RS232
For a serial interface to a PC,
Chip MSP430FG4618 hỗ trợ chuẩn giao tiếp RS-232 9 chân thông qua ngoại vi USC của chip
(được cấu hình trong chế độ UART).
Hình 6: Giao tiếp RS232
Chân 74, P2.5/UCA0RXD
Chân 75, P2.4/UCA0TXD
CuuDuongThanCong.com https://fb.com/tailieudientucntt
CuuDuongThanCong.com https://fb.com/tailieudientucntt
Tài liệu hướng dẫn thí nghiệm MSP‐EXP430FG4618
6 | P a g e Bộ môn Kỹ Thuật Điện Tử, khoa Điện‐Điện Tử, trường ĐHBK‐ĐHQG TP.HCM
Soạn: Hoàng Trang, Bùi Quốc Bảo.
2.8. Jack headphone 3.5mm:
Ngõ ra headphone được kết nối với Op-Amp OA2 đã được tích hợp sẵn trong chip
MSP430FG4618 (qua chân P6.5 Ạ/OA2O). Ngõ vào cho bộ Op-Amp này có thể được kết nối
bên trong đến chân ngõ ra DAC12 của chip MSP430FG4618.
Lưu ý: có vài lựa chọn suy hao được cung cấp nội bộ bên trong chip hoặc qua hardware bằng
cách sử dụng Jumper JP4.
Hình 7: Headphone jack 3.5mm
2.9. Các jumper
Để thuận tiện khi thao tác thí nghiệm, hình sau đây trình bày vị trí các jumper
CuuDuongThanCong.com https://fb.com/tailieudientucntt
CuuDuongThanCong.com https://fb.com/tailieudientucntt
Tài liệu hướng dẫn thí nghiệm MSP‐EXP430FG4618
7 | P a g e Bộ môn Kỹ Thuật Điện Tử, khoa Điện‐Điện Tử, trường ĐHBK‐ĐHQG TP.HCM
Soạn: Hoàng Trang, Bùi Quốc Bảo.
Hình 8: Vị trí các Jumper trên kit MSP430FG4618
Bảng 2 tóm tắt các chức năng của các jumper
Bảng 2. Chức năng các jumper
Header Chức năng khi dung Jumper kết nối Khi không dùng jumper
kết nối
Yêu cầu
JTAG1 Bộ FET để lập trình-debug FG4618 FG4618 không được mô
phỏng
X
JTAG2 Bộ FET để lập trình-debug F2013 F2013 không được mô
phỏng
X
PWR1 Cung cấp nguồn cho FG4618. Ngoài
ra, dùng để đo dòng
FG4618 không được
cung cấp nguồn
Yêu cầu cần gắn jumper
này để sử dụng FG4618
PWR2 Cung cấp nguồn cho F2013. Ngoài ra,
dùng để đo dòng
F2013 không được cung
cấp nguồn
Yêu cầu cần gắn jumper
này để sử dụng F2013
CuuDuongThanCong.com https://fb.com/tailieudientucntt
CuuDuongThanCong.com https://fb.com/tailieudientucntt
Tài liệu hướng dẫn thí nghiệm MSP‐EXP430FG4618
8 | P a g e Bộ môn Kỹ Thuật Điện Tử, khoa Điện‐Điện Tử, trường ĐHBK‐ĐHQG TP.HCM
Soạn: Hoàng Trang, Bùi Quốc Bảo.
BATT Cung cấp nguồn cho kit bằng 2 pin
AAA. Ngoài ra, dung để đo dòng tổng
cộng của kit
Pin không cung cấp
nguồn cho cả 2 chip
MSP430
Yêu cầu khi cần dùng
pin
JP1 Để sử dụng buzzer (nối với chân
FG4618-P3.5)
Không dùng buzzer Tùy chọn
JP2 Cho phép LED3 hoạt động (LED3 nối
với chân F2013-P1.0)
Không dùng LED3 Tùy chọn/ yêu cầu khi
dùng LED3
JP3 Cho phép LED4 hoạt động (LED4 nối
với chân FG4618-P5.1)
Không dùng LED4 Tùy chọn/ yêu cầu khi
dùng LED4
JP4 Suy hao mức điện áp ra của audio
(69%)
98% suy hao của ngõ ra
audio DAC12
Tùy chọn
H1 (1-2,
3-4)
Cấu hình cho I2C
1-2: SDA-UCBOSDA
3-4: SCL-UCBOSCL
Không giao tiếp qua I2C Yêu cầu cho giao tiếp
bên trong processor
H1 (1-2,
3-4, 5-6,
7-8)
Cấu hình cho SPI
1-2: SDI – UCB0SIMO
3-4: SDO – UCB0SOMI
5-6: P1.4 – P3.0 (CS)
7-8: SCLK – UCB0CLK
Không giao tiếp qua SPI Yêu cầu cho giao tiếp
bên trong processor
Vcc VCC_1: 3 chân phía dưới. Dùng cho
FG4618/JTAG1.
VCC_2: 3 chân phía trên. Dùng cho
F2013/JTAG2.
LCL: cung cấp Vcc đến FET.
FET: nguồn từ FET
(jumper BATT không được thiết lập)
Nguồn từ JTAG Yêu cầu khi sử dụng
không cần pin
CuuDuongThanCong.com https://fb.com/tailieudientucntt
CuuDuongThanCong.com https://fb.com/tailieudientucntt
Tài liệu hướng dẫn thí nghiệm MSP‐EXP430FG4618
9 | P a g e Bộ môn Kỹ Thuật Điện Tử, khoa Điện‐Điện Tử, trường ĐHBK‐ĐHQG TP.HCM
Soạn: Hoàng Trang, Bùi Quốc Bảo.
3. Sơ đồ mạch của kit MSP-EXP430FG4618
CuuDuongThanCong.com https://fb.com/tailieudientucntt
CuuDuongThanCong.com https://fb.com/tailieudientucntt
Tài liệu hướng dẫn thí nghiệm MSP‐EXP430FG4618
10 | P a g e Bộ môn Kỹ Thuật Điện Tử, khoa Điện‐Điện Tử, trường ĐHBK‐ĐHQG TP.HCM
Soạn: Hoàng Trang, Bùi Quốc Bảo.
II. Đặc tính và cách cài đặt bộ Debug MSP-FET430UIF
1. Giới thiệu công cụ FET
FET (Flash Emulation Tool) cho phép lập trình-debug họ MSP430 qua JTAG chuẩn (4
dây) và JTAG tiết kiệm chân (2 dây, Spy Bi-Wire). Do đó, FET được dùng để phát triển
các ứng dụng trên họ MCU này. Có 2 cơ chế giao tiếp của FET là qua USB cổng song
song, tương ứng với các loại MSP-FET430UIF (xem hình bên dưới) và MSP-
FET430PIF. Các tính năng của 2 loại FET này được trình bày trong bảng dưới đây.
FET430UIF
Chức năng giữa 2 loại FET: FET430UIF và FET430PIF
Đặc tính MSP-FET430UIF MSP-FET430PIF
Hỗ trợ tất cả họ MSP430
dựa trên Flash (F1xx, F2xx,
F4xx, F5xx)
x x
Cho phép cấu hình bảo mật
JTAG để bảo vệ code
x KHÔNG
Cho phép tạo ra nguồn cấp
chỉnh được 1.8V-3.6V ở
100mA
x KHÔNG
Cố định tạo ra nguồn cấp
2.8V
KHÔNG X
Debug dùng JTAG chuẩn 4
dây
x X
Debug dùng JTAG chuẩn 2
dây (Spy-Bi-Wire)
x KHÔNG
Hỗ trợ bởi CCE x X
Hỗ trợ bởi IAR x x
Với các so sánh trên, FET430UIF có tính năng tốt hơn, và do đó chúng ta sẽ sử dụng
công cụ này. Và phần tiếp theo trình bày cách cài đặt FET430UIF.
CuuDuongThanCong.com https://fb.com/tailieudientucntt
CuuDuongThanCong.com https://fb.com/tailieudientucntt
Tài liệu hướng dẫn thí nghiệm MSP‐EXP430FG4618
11 | P a g e Bộ môn Kỹ Thuật Điện Tử, khoa Điện‐Điện Tử, trường ĐHBK‐ĐHQG TP.HCM
Soạn: Hoàng Trang, Bùi Quốc Bảo.
2. Cài đặt FET430UIF
Trong phần này, chúng tôi trình bày cách cài đặt FET430UIF trên Windows 7. Các hệ
điều hành khác cũng thực hiện tương tự.
Bước 1: Download driver cho FET430UIF và lưu trong máy của bạn.
Đối với Windows 7-64 bit:
processors.wiki.ti.com/images/d/dc/TUSBWINVCP_Win7-64.zip
Đối với Windows 7-32 bit:
processors.wiki.ti.com/images/6/6a/TUSBWINVCP_Win7-32.zip
Đối với WindowsXP-32 bit:
processors.wiki.ti.com/images/7/73/TUSBWINVCP_XP32.zip
Đối với WindowsXP-64 bit:
processors.wiki.ti.com/images/3/3b/TUSBWINVCP_XP64.zip
Cho các hệ điều hành khác, vui long vào website sau:
http://processors.wiki.ti.com/index.php/MSP430_JTAG_Interface_USB_Driver
Hoặc các driver trên, các bạn có thể vào website của bộ môn Điện Tử để download/
hoặc liên hệ người soạn tài liệu này/ hoặc liên hệ giáo viên hướng dẫn.
Bước 2: Gắn FET430UIF vào máy vi tính qua cổng USB
Bước 3: Click phải chuột vào Computer/ chọn Properties sẽ cho cửa sổ sau. Tiếp theo
click vào Device Manager như hình sau:
CuuDuongThanCong.com https://fb.com/tailieudientucntt
CuuDuongThanCong.com https://fb.com/tailieudientucntt
Tài liệu hướng dẫn thí nghiệm MSP‐EXP430FG4618
12 | P a g e Bộ môn Kỹ Thuật Điện Tử, khoa Điện‐Điện Tử, trường ĐHBK‐ĐHQG TP.HCM
Soạn: Hoàng Trang, Bùi Quốc Bảo.
Bước 4: Click phải trên phần thiết bị mà chưa được cài đặt, rồi chọn Properties. Tiếp
đến chọn tab Driver / Update Driver… và chọn đường dẫn đến file driver mà bạn đã
download ở bước 1.
CuuDuongThanCong.com https://fb.com/tailieudientucntt
CuuDuongThanCong.com https://fb.com/tailieudientucntt
Tài liệu hướng dẫn thí nghiệm MSP‐EXP430FG4618
13 | P a g e Bộ môn Kỹ Thuật Điện Tử, khoa Điện‐Điện Tử, trường ĐHBK‐ĐHQG TP.HCM
Soạn: Hoàng Trang, Bùi Quốc Bảo.
III. Thiết lập cơ bản cho thí nghiệm
Hai phần trên đã trình bày về kit MSP-EXP430FG4618 và FET430UIF. Phần này sẽ trình
bày về các bước thiết lập cơ bản phục vụ cho thí nghiệm Vi Xử Lý tại bộ môn Kỹ Thuật Điện
Tử, khoa Điện-Điện Tử, trường Đại Học Bách Khoa-Đại Học Quốc Gia TP.Hồ Chí Minh.
Các bước này là cơ bản nhất để bắt đầu thực hiện thí nghiệm, còn các tùy chọn khác, vui lòng
xem lại mục I. Trong từng bài thí nghiệm, sẽ trình bày các bước thiết lập thêm tùy thuộc từng
bài.
Bước 1: thiết lập MSP-EXP430FG4618
- Kiểm tra/sử dụng jumper PWR1 để cung cấp nguồn cho FG4618. (jumper PWR1
nằm khoảng giữa kit, phía bên phải chip M430G4618, nếu đặt kit như vị trí hình 1)
- Kiểm tra/ không sử dụng jumper BATT (jumper BATT ở phía dưới, bên phải kit).
Khi thí nghiệm, thiết lập như vậy để không sử dụng pin cung cấp nguồn cho 2 chip
với mục đích tiết kiệm pin.
- Kiểm tra/ sử dụng jumper Vcc (jumper Vcc ở phía dưới, bên phải kit). Để thiết lập sử
dụng nguồn từ FET (khi không dùng pin), thiết lập jumper ở vị trí FET cho cả 2 hàng
1 và 2 (nghĩa là 2 jumper kết nối, mỗi jumper kết nối 2 header tận cùng bên phải: 2
header phía dưới: dùng cho FG4618/JTAG1, 2 chân phía trên: dùng cho
F2013/JTAG2).
Bước 2: Kết nối FET430UIF
- Kết nối dây USB giữa máy tính và FET.
- Kết nối dây 14 pin JTAG giữa FET và kit MSP-EXP430FG4618.
Bước 3: sử dụng IAR để lập trình-debug (xem mục IV)
Bước 4: tiến hành thí nghiệm. Chúc may mắn.
IV. Sử dụng IAR Embeeded Workbench (http://www.iar.com/)
Để lập trình và debug cho MSP430, chúng ta có 2 môi trường riêng biệt được hỗ trợ: IAR
Embeeded Workbench và TI Code Composer Essential (CCE). IAR được chọn trình bày
trong phần này vì tính đơn giản, gọn nhẹ của nó.
Các thông tin chi tiết liên quan về IAR, vui lòng xem tại website http://www.iar.com/
Phần này trình bày cơ bản về sử dụng IAR để tạo 1 project và lập trình trên MSP430.
Bước 1: chạy chương trình IAR Embeeded Workbench IDE
CuuDuongThanCong.com https://fb.com/tailieudientucntt
CuuDuongThanCong.com https://fb.com/tailieudientucntt
Tài liệu hướng dẫn thí nghiệm MSP‐EXP430FG4618
14 | P a g e Bộ môn Kỹ Thuật Điện Tử, khoa Điện‐Điện Tử, trường ĐHBK‐ĐHQG TP.HCM
Soạn: Hoàng Trang, Bùi Quốc Bảo.
(lưu ý: bước này trình bày theo bản cài đặt trên Windows 7, trên các hệ điều hành khác,
chi tiết trong bước 1 có thể khác)
Start/All Programs/IAR Systems/ IAR Embeeded Workbench Kickstart for MSP430
4.21/ IAR Embeeded Workbench.
Sau đó, giao diện hiện như sau:
Bước 2: Từ cửa sổ giao diện chính, chọn Project/ Create New Project …
Sau đó, giao diện sau sẽ hiện ra và ta qua bước 3
Bước 3: chọn ngôn ngữ sử dụng. Trong thí nghiệm này, chúng ta chọn Empty
project hoặc C/main và click OK. Ở đây, trình bày lựa chọn Empty project
CuuDuongThanCong.com https://fb.com/tailieudientucntt
CuuDuongThanCong.com https://fb.com/tailieudientucntt
Tài liệu hướng dẫn thí nghiệm MSP‐EXP430FG4618
15 | P a g e Bộ môn Kỹ Thuật Điện Tử, khoa Điện‐Điện Tử, trường ĐHBK‐ĐHQG TP.HCM
Soạn: Hoàng Trang, Bùi Quốc Bảo.
Cửa sổ Save As như sau hiện ra để lưu tên project, đường dẫn project và ta qua bước
4.
Bước 4: Chọn đường dẫn muốn lưu project và tên Project. Trong ví dụ này, tên
project là lab1 và được lưu trong thư mục “my lab”.
Nếu ở bước 3 chọn Empty project thì có giao diện sau:
CuuDuongThanCong.com https://fb.com/tailieudientucntt
CuuDuongThanCong.com https://fb.com/tailieudientucntt
Tài liệu hướng dẫn thí nghiệm MSP‐EXP430FG4618
16 | P a g e Bộ môn Kỹ Thuật Điện Tử, khoa Điện‐Điện Tử, trường ĐHBK‐ĐHQG TP.HCM
Soạn: Hoàng Trang, Bùi Quốc Bảo.
Bước 5: thiết lập các tùy chọn: vi điều khiển, debug, file nạp,….
Chọn Project/Option… (hoặc Alt+F7)
+ Trong mục General Options -> chọn tab Target -> chọn MSP430FG4618 (các bước
như trong hình sau)
CuuDuongThanCong.com https://fb.com/tailieudientucntt
CuuDuongThanCong.com https://fb.com/tailieudientucntt
Tài liệu hướng dẫn thí nghiệm MSP‐EXP430FG4618
17 | P a g e Bộ môn Kỹ Thuật Điện Tử, khoa Điện‐Điện Tử, trường ĐHBK‐ĐHQG TP.HCM
Soạn: Hoàng Trang, Bùi Quốc Bảo.
Tiếp tục, chọn các tab khác để thiết lập như sau (các lựa chọn còn lại, vui lòng xem help hoặc
hỏi người soạn tài liệu này để rõ hơn)
Trong tab Output: chọn Output file: Executable
Trong tab Library Configuration: chọn Library: CLIB
+ Trong mục C/C++ Compiler:
CuuDuongThanCong.com https://fb.com/tailieudientucntt
CuuDuongThanCong.com https://fb.com/tailieudientucntt
Tài liệu hướng dẫn thí nghiệm MSP‐EXP430FG4618
18 | P a g e Bộ môn Kỹ Thuật Điện Tử, khoa Điện‐Điện Tử, trường ĐHBK‐ĐHQG TP.HCM
Soạn: Hoàng Trang, Bùi Quốc Bảo.
Trong tab Optimizations: chọn level: None (để hỗ trợ tối đa quá trình debug)
Trong tab List: chọn Output list file: Assembler mnemonics
+ Trong mục Debugger:
Trong tab Setup: chọn Driver: FET Debugger
CuuDuongThanCong.com https://fb.com/tailieudientucntt
CuuDuongThanCong.com https://fb.com/tailieudientucntt
Tài liệu hướng dẫn thí nghiệm MSP‐EXP430FG4618
19 | P a g e Bộ môn Kỹ Thuật Điện Tử, khoa Điện‐Điện Tử, trường ĐHBK‐ĐHQG TP.HCM
Soạn: Hoàng Trang, Bùi Quốc Bảo.
Tiếp đến, trong FET Debugger:
Trong tab Setup: chọn Connection: Texas Instrument USB-IF.
Xong các chọn lựa ở trên trong bước 5, click OK để lưu lại tùy chọn. Chúng ta qua bước 6.
Bước 6: tạo file lập trình
File/ New/File, sẽ có giao diện sau:
CuuDuongThanCong.com https://fb.com/tailieudientucntt
CuuDuongThanCong.com https://fb.com/tailieudientucntt
Tài liệu hướng dẫn thí nghiệm MSP‐EXP430FG4618
20 | P a g e Bộ môn Kỹ Thuật Điện Tử, khoa Điện‐Điện Tử, trường ĐHBK‐ĐHQG TP.HCM
Soạn: Hoàng Trang, Bùi Quốc Bảo.
Kế tiếp, chúng ta cần viết chương trình trong cửa sổ soạn thảo bên phải. Trong hướng dẫn này, ví
dụ nhập code như sau:
/************************************************/
/* Huong dan IAR */
/* Bo mon Dien Tu-khoa D-DT-truong DH Bach Khoa */
/***********************************************/
#include <msp430xG46x.h>
void main (void){
volatile unsigned int i;
WDTCTL = WDTPW | WDTHOLD; // Dung Watchdog Timer
P2DIR |= 0x04; // P2.2: Output
while(1){ // lap vo tan
i=30000; // Delay
do (i--);
while (i !=0);
P2OUT ^= 0x04; // Dao pin P2.2 bang cach dung exclusive-OR
}
}
Và chúng ta có kết quả như sau:
CuuDuongThanCong.com https://fb.com/tailieudientucntt
CuuDuongThanCong.com https://fb.com/tailieudientucntt
Tài liệu hướng dẫn thí nghiệm MSP‐EXP430FG4618
21 | P a g e Bộ môn Kỹ Thuật Điện Tử, khoa Điện‐Điện Tử, trường ĐHBK‐ĐHQG TP.HCM
Soạn: Hoàng Trang, Bùi Quốc Bảo.
Sau đó, chúng ta lưu file bằng: File/Save. Cửa sổ sau sẽ hiện ra để nhập tên và định dạng file.
Chúng ta lưu file: “lab1.c”.
CuuDuongThanCong.com https://fb.com/tailieudientucntt
CuuDuongThanCong.com https://fb.com/tailieudientucntt
Tài liệu hướng dẫn thí nghiệm MSP‐EXP430FG4618
22 | P a g e Bộ môn Kỹ Thuật Điện Tử, khoa Điện‐Điện Tử, trường ĐHBK‐ĐHQG TP.HCM
Soạn: Hoàng Trang, Bùi Quốc Bảo.
File “lab1.c” này nằm trong thư mục mylab, mà chưa được đưa vào project lab1. Để đưa file
“lab1.c” vào project để dùng, ta cần: Project/Add file…, một cửa sổ hiện ra và chọn “lab1.c”
như giao diện sau:
Lúc này, trong cửa sổ làm việc project sẽ như sau:
CuuDuongThanCong.com https://fb.com/tailieudientucntt
CuuDuongThanCong.com https://fb.com/tailieudientucntt
Tài liệu hướng dẫn thí nghiệm MSP‐EXP430FG4618
23 | P a g e Bộ môn Kỹ Thuật Điện Tử, khoa Điện‐Điện Tử, trường ĐHBK‐ĐHQG TP.HCM
Soạn: Hoàng Trang, Bùi Quốc Bảo.
Bước 7: biên dịch file lập trình
Thực hiện: Project/Compile (hoặc Ctrl + F7), lúc này IAR sẽ yêu cầu lưu lại Workspace
làm việc với giao diện sau. Nhập tên Workspace, trong hướng dẫn này, là lab.eww
Sauk hi lưu Workspace, quá trình biên dịch sẽ được thực hiện. Nếu không có lỗi thì sẽ hiện ra
thông báo như sau (còn trong trường hợp lỗi, vì không thể trình bày hết mọi thứ, vui lòng tự sửa
lỗi, hay hỏi người hướng dẫn. Chúc may mắn!)
CuuDuongThanCong.com https://fb.com/tailieudientucntt
CuuDuongThanCong.com https://fb.com/tailieudientucntt
Tài liệu hướng dẫn thí nghiệm MSP‐EXP430FG4618
24 | P a g e Bộ môn Kỹ Thuật Điện Tử, khoa Điện‐Điện Tử, trường ĐHBK‐ĐHQG TP.HCM
Soạn: Hoàng Trang, Bùi Quốc Bảo.
Bước 8: lập trình-debug cho chip
Thực hiện Project/Download and Debug (hoặc Ctrl+D).
Để thấy kết quả thực hiện trên kit: Debug/Go (hoặc F5)
Trên đây là các bước cơ bản, chắc hẳn chúng ta khi thực hiện sẽ gặp 1 số lỗi nào đó. Vì khuôn
khổ giới hạn và người soạn cũng không có tham vọng trình bày hết mọi thứ trong hướng dẫn
này, do đó, nếu có lỗi, vui lòng tự tìm hiểu hoặc hỏi người hướng dẫn. Chúc may mắn!
Kế tiếp, chúc các bạn vui vẻ khi thực hiện các bài lab sau.
CuuDuongThanCong.com https://fb.com/tailieudientucntt
CuuDuongThanCong.com https://fb.com/tailieudientucntt
Tài liệu hướng dẫn thí nghiệm MSP‐EXP430FG4618
25 | P a g e Bộ môn Kỹ Thuật Điện Tử, khoa Điện‐Điện Tử, trường ĐHBK‐ĐHQG TP.HCM
Soạn: Hoàng Trang, Bùi Quốc Bảo.
V. Các bài thí nghiệm:
Chúng ta sẽ đi qua 3 bài thí nghiệm được thực hiện trong 3 buổi thí nghiệm như sau
Bài 1: GPIO
Lý thuyết
1) Các thanh ghi liên quan đến GPIO:
1.1 Direction Register PxDIR (P1DIR, P2DIR):
Đây là các thanh ghi 8 bit điều khiển chiều của 8 chân port. P1DIR điều khiển PORT1, P2DIR
điều khiển PORT2.
 Bit = 1: Chân PORT tương ứng được cấu hình thành output
 Bit = 0: Chân PORT tương ứng được cấu hình thành input
1.2 Input Register (PxIN):
Đây là các thanh ghi 8 bit chứa giá trị đọc được từ các chân PORT.
 Bit = 1: Chân PORT tương ứng ở mức cao
 Bit = 0: Chân PORT tương ứng ở mức thấp.
1.3 Output Register (PxOUT):
Đây là thanh ghi điều khiển ngõ ra của các PORT.
 Bit = 1: Xuất mức cao ra chân PORT tương ứng.
 Bit = 0: Xuất mức thấp ra chân PORT tương ứng.
1.4 Function Select Register:
Đây là thanh ghi chọn chức năng cho chân PORT. Mỗi chân PORT có thể cấu hình chọn chức
năng Input/Output hay là chức năng đặc biệt khác.
 Bit = 1: Chọn chức năng đặc biệt.
 Bit = 0: Chọn chức năng GPIO.
1.5 Các thanh ghi cấu hình ngắt cho các chân PORT:
Mỗi chân PORT của MSP430 đều có thể dùng để tạo ngắt. Các ngắt này được cấu hình thông qua các
thanh ghi PxIFG, PxIE, PxIES.
1.5.1 Interrupt enable Register (PxIE) :
Mỗi bit trong thanh ghi này dùng để cho phép/không cho phép ngắt trên chân PORT tương ứng.
 Bit = 1: Cho phép ngắt.
 Bit = 0: Cấm ngắt.
1.5.2 Interrupt Edge Select Registers (PxIES):
Dùng để chọn cạnh của tín hiệu ngắt
CuuDuongThanCong.com https://fb.com/tailieudientucntt
CuuDuongThanCong.com https://fb.com/tailieudientucntt
Tài liệu hướng dẫn thí nghiệm MSP‐EXP430FG4618
26 | P a g e Bộ môn Kỹ Thuật Điện Tử, khoa Điện‐Điện Tử, trường ĐHBK‐ĐHQG TP.HCM
Soạn: Hoàng Trang, Bùi Quốc Bảo.
 Bit = 1: Ngắt tại cạnh xuống của tín hiệu.
 Bit = 0: Ngắt tại cạnh lên của tín hiệu.
1.5.3 Interrupt Flag Registers (PxIFG):
Thanh ghi này chứa các cờ ngắt. Các cờ này được tự đọng bật bởi phần cứng, phải được xóa bằng
phần mềm. Các cờ này có thể được bật bằng phần mềm để cho phép ngắt.
 Bit = 1: Một ngắt đang chờ xử lý.
 Bit = 0: Không có ngắt nào đang chờ.
2) Các lưu ý khi viết chương trình cho lab này:
a) Watchdog Timer
Trong lab này, chúng ta không cần sử dụng Watchdog timer.
Để tắt Watchdog timer, ghi giá trị 5A vào 8 bit cao của thanh ghi WDTCTL và set thứ 7 của
thanh ghi WDTCTL.
WDTCTL = 0x5A00 | 0x0080
Hoặc:
(WDTCTL = WDTPW | WDTHOLD )
b) Delay:
Bởi vì trong chương trình chưa định nghĩa clock nên CPU sẽ sử dụng thạch anh 32.768 kHz. Để
có thời gian delay khoảng 1s, vòng delay sẽ đếm xuống từ 30.000
SV có thể dùng câu lệnh dưới đây để tạo delay:
for(int i=30000;i>0;i++);
CuuDuongThanCong.com https://fb.com/tailieudientucntt
CuuDuongThanCong.com https://fb.com/tailieudientucntt
Tài liệu hướng dẫn thí nghiệm MSP‐EXP430FG4618
27 | P a g e Bộ môn Kỹ Thuật Điện Tử, khoa Điện‐Điện Tử, trường ĐHBK‐ĐHQG TP.HCM
Soạn: Hoàng Trang, Bùi Quốc Bảo.
3. Thực hành
Lab1A: Cho 2 LED 1 và LED2 sáng tắt luân phiên.
Yêu cầu: Sinh viên viết chương trình cho 2 LED sáng tắt luân phiên. Thời gian giữa 2 lần sáng tắt
là khoảng 1s.
Project file:
File mẫu: Lab1_LED1_2_Blinky_Student LAB1_LED1_2_Blinky_Student.c
File bài giải: Lab1_LED1_2_Blinky_Solution LAB1_LED1_2_Blinky_Solution.c
Hình 1: Kết nối LED với MSP430 CPU
a) Đọc hiểu sơ đồ và điền vào chỗ trống:
Các LED được kết nối với CPU như trên hình 1.
LED1 nối vào chân Port gì của CPU?
LED1 nối vào chân Port gì của CPU?
Để điều khiển LED, các chân port phải là input hay output?
Để LED sáng, phải xuất giá trị gì ra chân port?
b) Hoàn chỉnh chương trình bằng cách điền vào các chỗ trống:
#include <msp430xG46x.h>
void main (void){
volatile unsigned int i;
CuuDuongThanCong.com https://fb.com/tailieudientucntt
CuuDuongThanCong.com https://fb.com/tailieudientucntt
Tài liệu hướng dẫn thí nghiệm MSP‐EXP430FG4618
28 | P a g e Bộ môn Kỹ Thuật Điện Tử, khoa Điện‐Điện Tử, trường ĐHBK‐ĐHQG TP.HCM
Soạn: Hoàng Trang, Bùi Quốc Bảo.
WDTCTL = ……… | ………; //Stop Watchdog Timer
P2DIR |= …………………….; //Configure P2.1 and P2.2 as Output
P2OUT &= ………………….; // Turn off LED1, LED2
P2OUT |= ……………………; // Turn on LED 1, turn off LED 2
while(1){ //Infinite loop
i= …………………………..; //Delay
do (i--);
while (i !=0);
//Toggle Port P2.1 and P2.2 using an exclusive-OR
P2OUT ^= ………………………; }
}
CuuDuongThanCong.com https://fb.com/tailieudientucntt
CuuDuongThanCong.com https://fb.com/tailieudientucntt
Tài liệu hướng dẫn thí nghiệm MSP‐EXP430FG4618
29 | P a g e Bộ môn Kỹ Thuật Điện Tử, khoa Điện‐Điện Tử, trường ĐHBK‐ĐHQG TP.HCM
Soạn: Hoàng Trang, Bùi Quốc Bảo.
Lab1B: Đảo LED khi nhấn SW1
Yêu cầu: Sinh viên viết chương trình để đảo trạng thái LED1 mỗi khi SW1 được nhấn.
File mẫu: Lab1_SW_Toggle_LED_Student Lab1_SW_Toggle_LED_Student.c
File bài giải: Lab1_SW_Toggle_LED_Solution Lab1_SW_Toggle_LED_Solution.c
a) Đọc hiểu sơ đồ và điền vào chỗ trống:
Các SW được kết nối với CPU như trên hình 1.
SW1 nối vào chân Port gì của CPU?
SW2 nối vào chân Port gì của CPU?
Để đọc trạng thái switch, các chân port phải là input hay output?
b) Hoàn chỉnh chương trình bằng cách điền vào các chỗ trống:
#include <msp430xG46x.h>
void main (void){
volatile unsigned int i;
WDTCTL = ??; //Stop Watchdog Timer
P2DIR |= ??; //Configure P2.2 as Output (LED1)
P1DIR &= ??; //Configure P1.0 as Input (S1)
CuuDuongThanCong.com https://fb.com/tailieudientucntt
CuuDuongThanCong.com https://fb.com/tailieudientucntt
Tài liệu hướng dẫn thí nghiệm MSP‐EXP430FG4618
30 | P a g e Bộ môn Kỹ Thuật Điện Tử, khoa Điện‐Điện Tử, trường ĐHBK‐ĐHQG TP.HCM
Soạn: Hoàng Trang, Bùi Quốc Bảo.
while (1)
{
while ((P1IN & 0x01)); //Wait for the press of the button
P2OUT ^= ??; //Toggle Port P2.2
for(??); //Delay, button debounce
while (??); //Wait for the release of the button
for(??); //Delay, button debounce
}
}
CuuDuongThanCong.com https://fb.com/tailieudientucntt
CuuDuongThanCong.com https://fb.com/tailieudientucntt
Tài liệu hướng dẫn thí nghiệm MSP‐EXP430FG4618
31 | P a g e Bộ môn Kỹ Thuật Điện Tử, khoa Điện‐Điện Tử, trường ĐHBK‐ĐHQG TP.HCM
Soạn: Hoàng Trang, Bùi Quốc Bảo.
Lab1C: Đảo LED khi nhấn Switch, sử dụng ngắt
Yêu cầu: Sinh viên viết chương trình đảo trạng thái LED1 khi Switch 1 được nhấn. Trong chương
trình sử dụng ngắt trên chân port giao tiếp Switch.
File mẫu:
Lab1_SW_Toggle_LED_Interrupt_StudentLab1_SW_Toggle_LED_ Interrupt_Student.c
File bài giải:
Lab1_SW_Toggle_LED_Interrupt_SolutionLab1_SW_Toggle_LED_Interrupt_Solution.c
a) Lý thuyết:
MSP430 được thiết kế để làm việc với các ứng dụng công suất thấp. Vì vậy CPU thường ở trạng thái
“off” trong phần lớn thời gian. Để đưa CPU vào trạng thái “off”, các bit SCG1, SCG0 và CPUOFF
trong thanh ghi SR được set.
Một ngắt xảy ra sẽ đánh thức CPU. Khi đó thanh ghi SR được lưu vào stack và CPU thực thi ISR. Khi
thoát khỏi ISR, thanh ghi SR được lấy ra từ stack và làm cho CPU tắt trở lại.
 Đưa CPU vào trạng thái công suất thấp và cho phép ngắt:
Bit GIE trong thanh ghi SR khi được set sẽ cho phép ngắt.
Ta đưa CPU vào trạng thái công suất thấp, cho phép ngắt bằng lệnh:
_BIS_SR (LPM3_bits + GIE);
Trong đó:
LPM3_bits = (SCG1+SCG0+CPUOFF)
 Định nghĩa chương trình phục vụ ngắt (ISR):
Ta định nghĩa 1 ISR tại vector ngắt ISR_VECTOR bằng cấu trúc sau:
#pragma vector=ISR_VECTOR __interrupt void myISR (void)
{
………………………
}
b) Thực hành:
1. Đọc hiểu sơ đồ và điền vào chỗ trống:
CuuDuongThanCong.com https://fb.com/tailieudientucntt
CuuDuongThanCong.com https://fb.com/tailieudientucntt
Tài liệu hướng dẫn thí nghiệm MSP‐EXP430FG4618
32 | P a g e Bộ môn Kỹ Thuật Điện Tử, khoa Điện‐Điện Tử, trường ĐHBK‐ĐHQG TP.HCM
Soạn: Hoàng Trang, Bùi Quốc Bảo.
Các SW được kết nối với CPU như trên hình 1.
 SW1 nối vào chân Port gì của CPU?
 Khi Switch được nhấn, sẽ có chuyển trạng thái như thế nào trên chân PORT?
 Để cho phép ngắt trên chân P1.0, ta phải ghi ……….. vào bit…….của thanh ghi
…………….?
 Để chọn cạnh xuống cho ngắt trên chân P1.0, ta phải ghi ……….. vào bit…….của thanh
ghi …………….?
2. Hoàn chỉnh chương trình bằng cách điền vào các chỗ trống:
#include <msp430xG46x.h>
#pragma vector=??
__interrupt void Port_1 (void) { //define an interrupt service routine at 0xFFE8
volatile unsigned int i;
P2OUT ^= …………………………………….; //Toggle Port P2.2
for(……………………………………...); //Delay, button debounce
while (………………………………….); //Wait for the release of the button
for(…………………………..); //Delay, button debounce
P1IFG &= ~0x01; //Clean P1.0 Interrupt Flag (bit 0 of P1IFG register)
}
void main (void){
WDTCTL = ……………………………………….; //Stop Watchdog Timer
P2DIR |= ……………………….; //Configure P2.2 as Output (LED1)
P1DIR &= ……………………..; //Configure P1.0 as Input (S1)
P1IE |= ………………………; //Interrupt Enable in P1.0
P1IES |= …………………; //P1.0 Interrupt flag high-to-low transition
_BIS_SR (……………………); //Low Power Mode with interrupts enabled
}
High to Low Low to High
CuuDuongThanCong.com https://fb.com/tailieudientucntt
CuuDuongThanCong.com https://fb.com/tailieudientucntt
Tài liệu hướng dẫn thí nghiệm MSP‐EXP430FG4618
33 | P a g e Bộ môn Kỹ Thuật Điện Tử, khoa Điện‐Điện Tử, trường ĐHBK‐ĐHQG TP.HCM
Soạn: Hoàng Trang, Bùi Quốc Bảo.
Bài 2: TIMER
Mục tiêu:
Sau lab này, sinh viên sẽ nắm kiến thức cơ bản về các nguồn xung nhịp của MSP430 và
Basic Timer 1 module.
1. Lý thuyết
Để câú hình cho timer, đầu tiên bộ FLL+ tạo xung nhịp phải được cấu hình trước để chọn
xung nhịp đưa vào timer. Sau đó các giá trị thích hợp sẽ được đưa vào các thanh ghi cấu hình
cho timer để làm timer hoạt động theo chế độ mong muốn.
Timer của MSP430x4xxx:
MSP430x4xx có 3 timer. Các timer này là:
CuuDuongThanCong.com https://fb.com/tailieudientucntt
CuuDuongThanCong.com https://fb.com/tailieudientucntt
Tài liệu hướng dẫn thí nghiệm MSP‐EXP430FG4618
34 | P a g e Bộ môn Kỹ Thuật Điện Tử, khoa Điện‐Điện Tử, trường ĐHBK‐ĐHQG TP.HCM
Soạn: Hoàng Trang, Bùi Quốc Bảo.
 Basic Timer 1
 Timer_A
 Timer_B
1.1 Basic Timer 1 Module:
Hình 2.1: Sơ đồ khối của Basic Timer 1
1.1.1 Basic Timer1 Counter 1 (BTCNT1):
Dùng để taọ tần số frame (frame frequency) cho bộ điều khiển LCD (LCD Controller)
Là thanh ghi 8 bit, có thể ghi/đọc
Nguồn clock: ACLK
Hệ số chia cho clock ngõ ra (fLCD) được chọn bởi các bit BTFRFQx trong thanh ghi
BTCTL.
FLCD = ACLK / x
1.1.2 Basic Timer1 Counter 2 (BTCNT2):
CuuDuongThanCong.com https://fb.com/tailieudientucntt
CuuDuongThanCong.com https://fb.com/tailieudientucntt
Tài liệu hướng dẫn thí nghiệm MSP‐EXP430FG4618
35 | P a g e Bộ môn Kỹ Thuật Điện Tử, khoa Điện‐Điện Tử, trường ĐHBK‐ĐHQG TP.HCM
Soạn: Hoàng Trang, Bùi Quốc Bảo.
Là bộ chia tần số có khả năng tạo ngắt, dùng để taọ những ngắt theo chu kỳ cho CPU hoặc
tạo thành hệ thống đồng hồ thời gian thực.
Là thanh ghi 8 bit, có thể ghi/đọc
Nguồn clock: ACLK, SMCLK, hoặc SMCLK/256 khi mắc nối tiếp với BTCNT1
Hệ số chia cho clock ngõ ra (fLCD) được chọn bởi các bit BTFRFQx trong thanh ghi
BTCTL.
Dùng để tạo ngắt Basic Timer 1 Interrupt BTIFG, thời gian ngắt được chọn bởi các bit
BTIPx trong thanh ghi BTCTL.
1.1.3 Các thanh ghi cho Basic Timer 1 Module:
1.1.3.1 BTCTL, Basic Timer 1 Control Register:
CuuDuongThanCong.com https://fb.com/tailieudientucntt
CuuDuongThanCong.com https://fb.com/tailieudientucntt
Tài liệu hướng dẫn thí nghiệm MSP‐EXP430FG4618
36 | P a g e Bộ môn Kỹ Thuật Điện Tử, khoa Điện‐Điện Tử, trường ĐHBK‐ĐHQG TP.HCM
Soạn: Hoàng Trang, Bùi Quốc Bảo.
1.1.3.2 IE2, Interrupt Enable Register 2:
1.1.3.3 IFG2, Interrupt Flag Register 2:
1.2 Các nguồn xung nhịp:
Xung nhịp hệ thống của MSP430x4xx được định nghĩa bởi bộ khóa tần số FLL+ (Frequency
Locked Loop). FLL+ có thể làm việc với thạch anh gắn ngoài hay bộ dao động nội.
FLL+ gồm có 3 nguồn :
LFXT1CLK: Bộ dao động có khả năng tạo xung nhịp tốc độ thấp với thạch anh đồng hồ
32.768 Hz, hoặc xung nhịp tốc độ cao với thạch anh, resonance hay nguồn xung nhịp
ngoài với tần số từ 450Khz-8Mhz.
XT2CLK: Bộ dao động có khả năng tạo xung nhịp tốc độ cao với thạch anh, resonance
hay nguồn xung nhịp ngoài với tần số từ 450Khz-8Mhz.
DCOCLK: Bộ dao động R-C nội, được ổn định tần số bởi FLL.
Có 4 tín hiệu xung nhịp được tạo ra:
 Master Clock (MCLK):
Được chọn bởi phần mềm từ các nguồn LFXT1CLK, XT2CLK hoặc DCO.
MCLK có thể được chia bởi các hệ số 1, 2, 4, 8 trước khi sử dụng. MCLK được
sử dụng bởi CPU và hệ thống.
 Sub-System Main Clock (SMCLK):
Được chọn bởi phần mềm giữa XT2CLK và DCOCLK. SMCLK có thể được
chọn bằng phần mềm cho các ngoại vi.
 Auxiliary Clock (ACLK):
ACLK được taọ ra từ LFXT1CLK, có thể được chọn bằng phần mềm cho ngoại
vi.
 Buffered Auxiliary Clock (ACLK/n):
Là ngõ ra được đệm của ACLK. ACLK/n chính là ACLK chia cho hệ số chia 1, 2,
4, 8 và được sử dụng cho các ngoại vi bên ngoài.
CuuDuongThanCong.com https://fb.com/tailieudientucntt
CuuDuongThanCong.com https://fb.com/tailieudientucntt
Tài liệu hướng dẫn thí nghiệm MSP‐EXP430FG4618
37 | P a g e Bộ môn Kỹ Thuật Điện Tử, khoa Điện‐Điện Tử, trường ĐHBK‐ĐHQG TP.HCM
Soạn: Hoàng Trang, Bùi Quốc Bảo.
Sau khi reset, MCLK và SMCLK được lấy từ DCOCLK ở tần số gấp 32 lần ACLK. Nếu
bộ dao động LFXT1CLK sử dụng thạch anh 32.768 Hz, tần số của MCLK và SMCLK sẽ
là 1.048576 Mhz..

Hình 2.2: Sơ đồ khối bộ tạo xung nhịp
1.2.1 Các bộ tạo dao động:
1.2.1.1 Low/High Frequency Oscillator (LFXT1):
CuuDuongThanCong.com https://fb.com/tailieudientucntt
CuuDuongThanCong.com https://fb.com/tailieudientucntt
Tài liệu hướng dẫn thí nghiệm MSP‐EXP430FG4618
38 | P a g e Bộ môn Kỹ Thuật Điện Tử, khoa Điện‐Điện Tử, trường ĐHBK‐ĐHQG TP.HCM
Soạn: Hoàng Trang, Bùi Quốc Bảo.
Bộ dao động này có thể được dùng để tạo xung nhịp tốc độ thấp (low speed) từ thạch anh
đồng hồ (tần số 32.768 Mhz) hoặc xung nhịp tốc độ cao (high speed) từ thạch anh ngoài
hoặc bộ dao động ngoài với tầm từ 450 Khz đến 8 Mhz.
Bit XTS_FLL trong thanh ghi FLL_CTL0 dùng để chọn lựa chế độ hoạt động của
LFXT1.
 XTS_FLL = 0 : Low speed
 XTS_FLL = 1: High Speed
Giá trị tụ điện bên trong của bộ dao động (1, 6, 8, 10pF) được chọn bởi các bit
XCAPxPF.
Bộ dao động LFXT1 có thể được tắt bằng cách set bit OSCOFF lên 1 nếu LFXT1 không
được chọn để tạo nguồn cho MCLK (SELM # 3 hoặc CPUOFF = 1).
1.2.1.2 High Frequency Oscillator (XT2):
Bộ dao động XT2 dùng thạch anh ngoài để tạo dao động tần số cao XT2CLK. Bộ dao
động XT2 không có tụ bên trong, vì vậy tụ ngoài sẽ cần được sử dụng khi giao tiếp thạch
anh.
Bộ dao động XT2 có thể được tắt bằng cách set bit XT2OFF lên 1 nếu XT2CLK không
được chọn để tạo nguồn cho MCLK (SELM # 2 hoặc CPUOFF = 1) và SMCLK (SELS =
0 hoặc SMCLKOFF = 1).
1.2.1.3 Bộ dao động nội DCO:
Bộ dao động DCO dùng FLL để nhân tín hiệu ACLK lên (N+1) lần, với N là 7 bit thấp
của thanh ghi SCFQCTL.
Bit DCOPLUS chọn tần số fDCOCLK bằng fDCO hoặc fDCO/D. Số chia D bằng 1, 2, 4, 8 và
được chọn bởi các bit FLLDx. Sau khi reset, DCOPLUS bằng 0 và D bằng 2.
 DCOPLUS = 0: fDCOCLK = (N+1) x fACLK.
 DCOPLUS = 1: fDCOCLK = D x (N+1) x fACLK.
Giới hạn tần số của DCO
Giới hạn tần số dao động của DCO được chọn bởi các bit FNx. Người lập trình phải đảm
bảo tần số của MCLK không vượt quá tần số hoạt động cao nhất của DCO.
CuuDuongThanCong.com https://fb.com/tailieudientucntt
CuuDuongThanCong.com https://fb.com/tailieudientucntt
Tài liệu hướng dẫn thí nghiệm MSP‐EXP430FG4618
39 | P a g e Bộ môn Kỹ Thuật Điện Tử, khoa Điện‐Điện Tử, trường ĐHBK‐ĐHQG TP.HCM
Soạn: Hoàng Trang, Bùi Quốc Bảo.
1.2.2 Các thanh ghi điều khiển clock:
1.2.2.1 SCFQCTL, System Clock Control Register :
CuuDuongThanCong.com https://fb.com/tailieudientucntt
CuuDuongThanCong.com https://fb.com/tailieudientucntt
Tài liệu hướng dẫn thí nghiệm MSP‐EXP430FG4618
40 | P a g e Bộ môn Kỹ Thuật Điện Tử, khoa Điện‐Điện Tử, trường ĐHBK‐ĐHQG TP.HCM
Soạn: Hoàng Trang, Bùi Quốc Bảo.
1.2.2.2 SCFI0, System Clock Frequency Integrator Register 0 :
1.2.2.3 SCFI1, System Clock Frequency Integrator Register 1:
CuuDuongThanCong.com https://fb.com/tailieudientucntt
CuuDuongThanCong.com https://fb.com/tailieudientucntt
Tài liệu hướng dẫn thí nghiệm MSP‐EXP430FG4618
41 | P a g e Bộ môn Kỹ Thuật Điện Tử, khoa Điện‐Điện Tử, trường ĐHBK‐ĐHQG TP.HCM
Soạn: Hoàng Trang, Bùi Quốc Bảo.
1.2.2.4 FLL_CTL0, FLL+ Control Register 0:
CuuDuongThanCong.com https://fb.com/tailieudientucntt
CuuDuongThanCong.com https://fb.com/tailieudientucntt
Tài liệu hướng dẫn thí nghiệm MSP‐EXP430FG4618
42 | P a g e Bộ môn Kỹ Thuật Điện Tử, khoa Điện‐Điện Tử, trường ĐHBK‐ĐHQG TP.HCM
Soạn: Hoàng Trang, Bùi Quốc Bảo.
1.2.2.5 FLL_CTL1, FLL+ Control Register 1:
CuuDuongThanCong.com https://fb.com/tailieudientucntt
CuuDuongThanCong.com https://fb.com/tailieudientucntt
Tài liệu hướng dẫn thí nghiệm MSP‐EXP430FG4618
43 | P a g e Bộ môn Kỹ Thuật Điện Tử, khoa Điện‐Điện Tử, trường ĐHBK‐ĐHQG TP.HCM
Soạn: Hoàng Trang, Bùi Quốc Bảo.
1.3 Các chế độ hoạt động:
MSP430 được thiết kế để hoạt động ở chế độ công suất thấp. Các chế độ hoạt động được
cấu hình bởi các bit CPUOFF, OSCOFF, SCG0, và SCG1 trong thanh ghi trạng thái SR.
CuuDuongThanCong.com https://fb.com/tailieudientucntt
CuuDuongThanCong.com https://fb.com/tailieudientucntt
Tài liệu hướng dẫn thí nghiệm MSP‐EXP430FG4618
44 | P a g e Bộ môn Kỹ Thuật Điện Tử, khoa Điện‐Điện Tử, trường ĐHBK‐ĐHQG TP.HCM
Soạn: Hoàng Trang, Bùi Quốc Bảo.
2. Thực hành:
2.1 Lab 2A: Đảo LED sử dụng Basic Timer 1
File mẫu:
Lab2_Timer_Toggle_LED Lab2_Timer_Toggle_LED_Solution.c
Lab2_Timer_Toggle_LED Lab2_Timer_Toggle_LED_Solution.c
Yêu cầu:
Sinh viên viết chương trình đảo trạng thái LED1 và LED2 sau thời gian 1s, sử dụng ngắt
Basic Timer 1 Interrupt.
2.1.1 Trả lời các câu hỏi:
Vô hiệu hóa Watchdog Timer
Để vô hiệu hóa Watchdog Timer, ta phải ghi vào thanh ghi WDTCTL giá trị gì?
WDTCTL = ……………………………………………..;
Câú hình FLL+:
Một thạch anh tần số 32768 Hz đuợc nối vào bộ dao động LFXT1. Ta phải ghi vào thanh
ghi FLL_CTL0 giá trị gì để chọn tụ bên trong có giá trị 8PF?
FLL_CTL0 |= …………………………………………...;
Với các thanh ghi khác ở giá trị mặc định, tần số của các tín hiệu xung nhịp sẽ bang bao
nhiêu?
ACLK = ………………………;
MCLK = ………………………;
SMCLK = ……………………..;
Cấu hình GPIO
LED1 và LED2 được nối vào chân P2.2 và P2.1. Ta phải ghi vào thanh ghi nào với giá trị
gì để cấu hình cho 2 chân PORT này thành output, còn lại là input?
…………………. = ……………………………….;
Ta phải ghi vào thanh ghi nào với giá trị gì để làm cho LED1 sáng, LED2 tắt?
…………………. = ……………………………….;
CuuDuongThanCong.com https://fb.com/tailieudientucntt
CuuDuongThanCong.com https://fb.com/tailieudientucntt
Tài liệu hướng dẫn thí nghiệm MSP‐EXP430FG4618
45 | P a g e Bộ môn Kỹ Thuật Điện Tử, khoa Điện‐Điện Tử, trường ĐHBK‐ĐHQG TP.HCM
Soạn: Hoàng Trang, Bùi Quốc Bảo.
Cấu hình cho Basic Timer 1:
Ta dùng Basic Timer 1 để tạo ngắt. Basic timer gồm 2 bộ đếm mắc nối tiếp, trong đó ngõ
vào của BTCNT2 là ngõ ra của BTCNT1 chia cho 256. (Tham khảo hình 2.1). Ngõ vào
của BTCNT1 là tín hiệu ACLK có tần số 32768 Hz. Ngõ ra của BTCNT2 phải được chia
cho bao nhiêu để có ngắt Basic Timer 1 có chu kỳ là 1s? ……………..
Giá trị phải ghi vào các thanh ghi sau là bao nhiêu để có số chia cho BTCNT2 như trên
và cho phép ngắt?
BTCTL = ………………………………;
IE2 = …………………………………...;
Chế độ công suất thấp:
Chương trình đơn giản đảo trạng thái LED1 và LED2 trong ngắt. Chế độ công suất thấp
nào nên được sử dụng? ……………………….
(Tham khảo phần 1.4: Các chế độ hoạt động)
Khi đó, nguồn xung nhịp nào sẽ được tích cực trong suốt quá trình hoạt
động?.............................................
2.1.2 Hoàn tất chương trình:
#include <msp430xG46x.h>
//*****************************************************************
// Basic Timer interrupt service routine: refresh LCD with 0.5 sec
//*****************************************************************
#pragma vector=BASICTIMER_VECTOR
__interrupt void basic_timer_ISR(void)
{
P2OUT ^=0x06; // LED2 toogle
}
//*****************************************************************
// Main routine
//*****************************************************************
CuuDuongThanCong.com https://fb.com/tailieudientucntt
CuuDuongThanCong.com https://fb.com/tailieudientucntt
Tài liệu hướng dẫn thí nghiệm MSP‐EXP430FG4618
46 | P a g e Bộ môn Kỹ Thuật Điện Tử, khoa Điện‐Điện Tử, trường ĐHBK‐ĐHQG TP.HCM
Soạn: Hoàng Trang, Bùi Quốc Bảo.
void main(void)
{
WDTCTL = ....................; // Stop WDT
FLL_CTL0 |= .................; // Set load cap for 32k xtal
// Basic Timer 1 Configuration
BTCTL = ....................; // (ACLK/256)/64
IE2 |= .......................; // Enable BT interrupt with 0.5 period
// LED1 & LED2 configuration
P2DIR = ......................; // P2.2 and P2.1 as digital output
P2OUT = ......................; // LED1 on and LED2 off
__bis_SR_register(LPM3_bits + GIE); // Enter LPM3 w/ interrupt
}
CuuDuongThanCong.com https://fb.com/tailieudientucntt
CuuDuongThanCong.com https://fb.com/tailieudientucntt
Tài liệu hướng dẫn thí nghiệm MSP‐EXP430FG4618
47 | P a g e Bộ môn Kỹ Thuật Điện Tử, khoa Điện‐Điện Tử, trường ĐHBK‐ĐHQG TP.HCM
Soạn: Hoàng Trang, Bùi Quốc Bảo.
2.2 Lab 2B: Hiển thị số đếm lên LCD:
Yêu cầu: Sinh viên viết chương trình hiển thị giá trị lần lượt từ 0 -> 9 lên led 7 đoạn P7 của
LCD. Giá trị hiển thị tăng lên 1 sau 1 s. Nếu ấn SW2, chương trình ngừng đếm (giá trị ngừng
tăng lên). Nếu ấn SW1, chương trình hoạt động bình thường.
Chương trình sử dụng ngắt timer để hiển thị LCD, ngắt ngoài trên chân P2.1 và P2.2 để cho
phép chương trình dừng đếm hay tiếp tục hoạt động.
2.2.1 Hướng dẫn:
LCD sử dụng trên board có các phần tử hiển thị như sau:
Các segment 7 đoạn được đánh số từ P1 -> P8. Ta sẽ hiển thị các thông số giờ - phút –
giây lên các segment 7 đoạn từ P7 -> P2.
LCD được điều khiển bởi LCD Controller bên trong MSP430. Để cho đơn giản, sinh viên
được cho sẵn các hàm khởi tạo LCD và các macro để hiển thị số lên LCD.
Các macro điều khiển LCD được cho trong file LCD_defs.h. Trong đó:
P1_NULL nghĩa là LED 7 đoạn P1 tắt.
P1_A0 nghĩa là LED 7 đoạn P1 hiển thị số 0.
Các macro khác hoàn toàn tương tự.
P1
P7
CuuDuongThanCong.com https://fb.com/tailieudientucntt
CuuDuongThanCong.com https://fb.com/tailieudientucntt
Tài liệu hướng dẫn thí nghiệm MSP‐EXP430FG4618
48 | P a g e Bộ môn Kỹ Thuật Điện Tử, khoa Điện‐Điện Tử, trường ĐHBK‐ĐHQG TP.HCM
Soạn: Hoàng Trang, Bùi Quốc Bảo.
Hình 2.3: Sơ đồ kết nối SW1 và SW2
2.2.2 Trả lời các câu hỏi:
 SW1 nối vào chân Port gì của CPU?
 SW2 nối vào chân Port gì của CPU?
 Khi Switch được nhấn, sẽ có chuyển trạng thái như thế nào trên chân PORT?
 Để cho phép ngắt trên chân P1.0 và P1.1, ta phải ghi ……….. vào bit…….của
thanh ghi …………….?
 Để chọn cạnh xuống cho ngắt trên chân P1.0, ta phải ghi ……….. vào
bit…….của thanh ghi …………….?
 Trong chương trình phục vụ ngắt, dựa vào cờ ……………….. trong thanh ghi
……………………………. để phân biệt ngắt cho SW1 hay SW2?
 Để xóa các cờ ngắt ngoài, ta phải ghi giá trị …………..vào các thanh ghi
………………?
 Dừng đếm hoặc cho phép đếm được thực hiện bằng cách cho phép / cấm ngắt
basic timer. Ta cho phép/cấm ngắt basic timer bằng cách ghi
……………/………….. vào thanh ghi gì?
2.2.3 Hoàn chỉnh chương trình bằng cách điền vào chỗ trống:
High to Low Low to High
CuuDuongThanCong.com https://fb.com/tailieudientucntt
CuuDuongThanCong.com https://fb.com/tailieudientucntt
Tài liệu hướng dẫn thí nghiệm MSP‐EXP430FG4618
49 | P a g e Bộ môn Kỹ Thuật Điện Tử, khoa Điện‐Điện Tử, trường ĐHBK‐ĐHQG TP.HCM
Soạn: Hoàng Trang, Bùi Quốc Bảo.
#include <msp430xG46x.h>
#include "LCD_defs.h"
//******************************************************************
// Global data
//******************************************************************
unsigned char number;
void LCD_write_number(char num)
{
switch (num)
{
case 1: P7_A1;
break;
case 2: ...................................;
break;
case 3: ...................................;
break;
case 4: ...................................;
break;
case 5: ...................................;
break;
case 6: ...................................;
break;
case 7: ...................................;
break;
case 8: ...................................;
CuuDuongThanCong.com https://fb.com/tailieudientucntt
CuuDuongThanCong.com https://fb.com/tailieudientucntt
Tài liệu hướng dẫn thí nghiệm MSP‐EXP430FG4618
50 | P a g e Bộ môn Kỹ Thuật Điện Tử, khoa Điện‐Điện Tử, trường ĐHBK‐ĐHQG TP.HCM
Soạn: Hoàng Trang, Bùi Quốc Bảo.
break;
case 9: ...................................;
break;
case 0: ...................................;
break;
}
}
//******************************************************************
//LCD clean. All segments are turnned off
//******************************************************************
void LCD_all_off(void)
{
LCDM2 = 0x00;
LCDM3 = 0x00;
LCDM4 = 0x00;
LCDM5 = 0x00;
LCDM6 = 0x00;
LCDM7 = 0x00;
LCDM8 = 0x00;
LCDM9 = 0x00;
LCDM10 = 0x00;
LCDM11 = 0x00;
LCDM12 = 0x00;
LCDM13 = 0x00;
}
//******************************************************************
CuuDuongThanCong.com https://fb.com/tailieudientucntt
CuuDuongThanCong.com https://fb.com/tailieudientucntt
Tài liệu hướng dẫn thí nghiệm MSP‐EXP430FG4618
51 | P a g e Bộ môn Kỹ Thuật Điện Tử, khoa Điện‐Điện Tử, trường ĐHBK‐ĐHQG TP.HCM
Soạn: Hoàng Trang, Bùi Quốc Bảo.
// Port1 interrupt service routine: toogle LCD page
//******************************************************************
#pragma vector=PORT1_VECTOR
__interrupt void PORT1_ISR (void)
{
int i;
if (P1IFG & ......................) //check if P1IFG.0 = 1
{
IE2 = ...............................; // disable basic timer 1 interrupt
}
if (P1IFG & ......................) //check if P1IFG.1 = 1
{
IE2 = ..........................; // enable basic timer 1 interrupt
}
i=1500; //Delay, button debounce
do (i--);
while (i !=0);
while (! (P1IN & 0x03)); //Wait for the release of the button
i=1500; //Delay, button debounce
do (i--);
while (i !=0);
P1IFG &= ......................;// clean Interrupt flag
}
//*****************************************************************
// Basic Timer interrupt service routine: increase the number from 0->9
//*****************************************************************
CuuDuongThanCong.com https://fb.com/tailieudientucntt
CuuDuongThanCong.com https://fb.com/tailieudientucntt
Tài liệu hướng dẫn thí nghiệm MSP‐EXP430FG4618
52 | P a g e Bộ môn Kỹ Thuật Điện Tử, khoa Điện‐Điện Tử, trường ĐHBK‐ĐHQG TP.HCM
Soạn: Hoàng Trang, Bùi Quốc Bảo.
#pragma vector=BASICTIMER_VECTOR
__interrupt void basic_timer_ISR(void)
{
LCD_write_number(number);
if (number == 9) number = ..................;
else number = ..............................;
}
//*****************************************************************
// Main routine
//*****************************************************************
void main(void)
{
WDTCTL = WDTPW | WDTHOLD; // Stop WDT
FLL_CTL0 |= XCAP18PF; // Set load cap for 32k xtal
// LCD COM0-COM1-COM2-COM3 configuration
P5DIR |= 0x1E; // Ports P5.2, P5.3 and P5.4 as outputs
P5SEL |= 0x1E; // Ports P5.2, P5.3 and P5.4 as special function (COM1,
COM2 and COM3)
// LCD_A S0-S21 configuration
LCDAPCTL0 = LCDS24 | LCDS20 | LCDS16 | LCDS12 | LCDS8 | LCDS4;
// LCD_A configuration
LCDACTL = LCDFREQ_192 | LCD4MUX | LCDSON | LCDON; // (ACLK = 32768)/192,
4-mux LCD, LCD_A on, Segments on
CuuDuongThanCong.com https://fb.com/tailieudientucntt
CuuDuongThanCong.com https://fb.com/tailieudientucntt
Tài liệu hướng dẫn thí nghiệm MSP‐EXP430FG4618
53 | P a g e Bộ môn Kỹ Thuật Điện Tử, khoa Điện‐Điện Tử, trường ĐHBK‐ĐHQG TP.HCM
Soạn: Hoàng Trang, Bùi Quốc Bảo.
LCDAVCTL0 = LCDCPEN; // Charge pump enable
LCDAVCTL1 = VLCD_3_44; // VLCD = 3,44 V
// clean LCD
LCD_all_off();
// Basic Timer 1 Configuration
BTCTL = .................................; // (ACLK/256)/128
IE2 |= ..................................; // Enable BT interrupt
// LED1 e LED2 configuration
P2DIR = .................................; // P2.2 and P2.1 as digital output
P2OUT = ..................................; // LED1 on and LED2 off
// SW1 and SW2 configuration
P1SEL &= ................................; // P1.0 and P1.1 I/O ports
P1DIR &= ..............................; // P1.0 and P1.1 digital inputs
P1IFG = ...............................; // Clear P1 flags
P1IES &= ...............................; // high-to-low transition interrupts for P1.0 & P1.1
P1IE |= ................................; // enable port interrupts for P1.0 & P1.1
number = 0;
__bis_SR_register(LPM3_bits + GIE); // Enter LPM3 w/ interrupt
}
CuuDuongThanCong.com https://fb.com/tailieudientucntt
CuuDuongThanCong.com https://fb.com/tailieudientucntt
Tài liệu hướng dẫn thí nghiệm MSP‐EXP430FG4618
54 | P a g e Bộ môn Kỹ Thuật Điện Tử, khoa Điện‐Điện Tử, trường ĐHBK‐ĐHQG TP.HCM
Soạn: Hoàng Trang, Bùi Quốc Bảo.
Lab3: Sử dụng RealTime Clock
Mục tiêu:
Sau lab này, sinh viên sẽ nắm kiến thức cơ bản về đồng hồ thời gian thực
1. Lý thuyết:
Trong Lab 2 ta đã nói về Basic Timer module và FLL+. Trong Lab 3, sinh viên sẽ làm việc
với khối đồng hồ thời gian thực.
1.1. Realtime Clock module:
Đồng hồ thời gian thực là 1 khối đếm thời gian giây, phút, giờ, ngày, tháng và năm. Ngoài ra,
nó còn có thể được sử dụng như là 1 bộ đếm. Chế độ hoạt động của RTC được cấu hình bởi
các bit RTCMODEx trong thanh ghi RTCCTL.
Xung nhịp cho RTC có tần số 1Hz được lấy từ basic timer 1 module. Basic timer 1 vẫn có
thể được cấu hình để tạo ngắt basic timer 1 như ở lab2.
Ta thường cấu hình cho RTC hoạt động với kiểu BCD hơn là hexadecimal. Khi muốn thiết
lập giá trị ban đầu cho RTC, ta dừng hoạt động của RTC bằng cách set bit RTCHOLD trong
thanh ghi RTCCTL lên 1, sau đó ghi giá trị ban đầu vào các thanh ghi ngày, tháng, năm, giờ,
phút, giây. Xóa bit RTCHOLD sẽ cho phép RTC hoạt động trở lại.
1.2 Các thanh ghi cho RTC:
1.2.1 RealTime Clock Control Register (RTCCTL):
CuuDuongThanCong.com https://fb.com/tailieudientucntt
CuuDuongThanCong.com https://fb.com/tailieudientucntt
Tài liệu hướng dẫn thí nghiệm MSP‐EXP430FG4618
55 | P a g e Bộ môn Kỹ Thuật Điện Tử, khoa Điện‐Điện Tử, trường ĐHBK‐ĐHQG TP.HCM
Soạn: Hoàng Trang, Bùi Quốc Bảo.
1.2.2 RTCDAY, RTC Day-of-Month Register, Calendar Mode with Hexadecimal
Format:
1.2.3 RTCDAY, RTC Day-of-Month Register, Calendar Mode with BCD Format:
1.2.4 RTCDOW, RTC Day-of-Week Register, Calendar Mode:
CuuDuongThanCong.com https://fb.com/tailieudientucntt
CuuDuongThanCong.com https://fb.com/tailieudientucntt
Tài liệu hướng dẫn thí nghiệm MSP‐EXP430FG4618
56 | P a g e Bộ môn Kỹ Thuật Điện Tử, khoa Điện‐Điện Tử, trường ĐHBK‐ĐHQG TP.HCM
Soạn: Hoàng Trang, Bùi Quốc Bảo.
1.2.5 RTCHOUR, RTC Hours Register, Calendar Mode with Hexadecimal
Format:
1.2.6 RTCHOUR, RTC Hours Register, Calendar Mode with BCD Format:
1.2.7 RTCMIN, RTC Minutes Register, Calendar Mode with Hexadecimal
Format:
1.2.8 RTCMIN, RTC Minutes Register, Calendar Mode with BCD Format:
1.2.9 RTCMON, RTC Month Register, Calendar Mode with Hexadecimal
Format:
1.2.10 RTCMON, RTC Month Register, Calendar Mode with BCD Format:
CuuDuongThanCong.com https://fb.com/tailieudientucntt
CuuDuongThanCong.com https://fb.com/tailieudientucntt
Tài liệu hướng dẫn thí nghiệm MSP‐EXP430FG4618
57 | P a g e Bộ môn Kỹ Thuật Điện Tử, khoa Điện‐Điện Tử, trường ĐHBK‐ĐHQG TP.HCM
Soạn: Hoàng Trang, Bùi Quốc Bảo.
1.2.11 RTCSEC, RTC Seconds Register, Calendar Mode with Hexadecimal
Format:
1.2.12 RTCSEC, RTC Seconds Register, Calendar Mode with BCD Format:
1.2.13 RTCYEARH, RTC Year High-Byte Register, Calendar Mode with
Hexadecimal Format:
1.2.14 RTCYEARH, RTC Year High-Byte Register, Calendar Mode with BCD
Format:
1.2.15 RTCYEARL, RTC Year Low-Byte Register, Calendar Mode with
Hexadecimal Format:
2. Thực hành:
2.1 Lab 3A: Thiết kế đồng hồ giờ-phút-giây.
Yêu cầu:
CuuDuongThanCong.com https://fb.com/tailieudientucntt
CuuDuongThanCong.com https://fb.com/tailieudientucntt
Tài liệu hướng dẫn thí nghiệm MSP‐EXP430FG4618
58 | P a g e Bộ môn Kỹ Thuật Điện Tử, khoa Điện‐Điện Tử, trường ĐHBK‐ĐHQG TP.HCM
Soạn: Hoàng Trang, Bùi Quốc Bảo.
SV viết chương trình hiển thị các giá trị giờ-phút-giây. Giá trị giờ hiển thị lên led P7-P6,
phút hiển thị lên LED P5-P4 và giây hiển thị lên LED P3-P2. Nếu số giây là chẵn, hiển thị
hai dấu 2 chấm tại led P3 và P5 (dùng 2 macro P3_DOT_ON và P5_DOT_ON). Nếu số giây
là lẻ, tắt hai dấu 2 chấm tại led P3 và P5 (dùng 2 macro P3_DOT_OFF và P5_DOT_OFF).
Chương trình cập nhật LCD sau mỗi 0.5 s sử dụng ngắt basic timer module.
Khi bắt đầu, chương trình đặt giá trị ban đầu cho RTC là: 8h 30 p 0s ngày 28 tháng 10 năm
2011.
File mẫu:
Lab3_realtime_ClockLab3_realtime_Clock_Solution.c
Lab3_Realtime_Clock_StudentLab3_Realtime_Clock_Student.c
2.1.1 Trả lời câu hỏi bằng cách điền vào chỗ trống.
Ghi giá trị ………………….vào thanh ghi………………….. để đưa RTC vào trạng thái
ngừng (hold), cấm ngắt và dữ liệu ở dạng BCD?
Hoàn tất những câu lệnh dưới đây để đặt giá trị ban đầu cho RTC là: 8h 30 p 0s ngày 28
tháng 10 năm 2011.
……………………… = ……………………………;
……………………… = ……………………………;
……………………… = ……………………………;
……………………… = ……………………………;
……………………… = ……………………………;
……………………… = ……………………………;
Hoàn thành câu lệnh dưới đây để đưa RTC vào chế độ hoạt động
RTCCTL &= …………………………………;
CuuDuongThanCong.com https://fb.com/tailieudientucntt
CuuDuongThanCong.com https://fb.com/tailieudientucntt
Tài liệu hướng dẫn thí nghiệm MSP‐EXP430FG4618
59 | P a g e Bộ môn Kỹ Thuật Điện Tử, khoa Điện‐Điện Tử, trường ĐHBK‐ĐHQG TP.HCM
Soạn: Hoàng Trang, Bùi Quốc Bảo.
Để tạo ngắt basic timer 1 sau mỗi 0.5 s, ta phải ghi giá trị ……………….. vào thanh ghi
BTCTL?
Chương trình có thể sử dụng chế độ tiết kiệm năng lượng nào?..............................
2.1.2 Hoàn thành chương trình:
#include <msp430xG46x.h>
#include <LCD_defs.h>
//******************************************************************
// Write Hour in LCD
//******************************************************************
void LCD_hour()
{
switch (RTCHOUR & 0xF0) // switch to write hour first digit
{
case 0x10: P7_A1;
break;
case 0x20: P7_A2;
break;
case 0x00: P7_A0;
break;
}
switch (.............. & 0x0F) // switch to write hour second digit
{
case ..........: ............;
break;
case ..........: ............;
CuuDuongThanCong.com https://fb.com/tailieudientucntt
CuuDuongThanCong.com https://fb.com/tailieudientucntt
Tài liệu hướng dẫn thí nghiệm MSP‐EXP430FG4618
60 | P a g e Bộ môn Kỹ Thuật Điện Tử, khoa Điện‐Điện Tử, trường ĐHBK‐ĐHQG TP.HCM
Soạn: Hoàng Trang, Bùi Quốc Bảo.
break;
case ..........: ............;
break;
case ..........: ............;
break;
case ..........: ............;
break;
case ..........: ............;
break;
case ..........: ............;
break;
case ..........: ............;
break;
case ..........: ............;
break;
case ..........: ............;
break;
}
}
//******************************************************************
// Write minutes in LCD
//******************************************************************
void LCD_min()
{
switch (...................... & 0xF0) // switch to write minutes
first digit
CuuDuongThanCong.com https://fb.com/tailieudientucntt
CuuDuongThanCong.com https://fb.com/tailieudientucntt
Tài liệu hướng dẫn thí nghiệm MSP‐EXP430FG4618
61 | P a g e Bộ môn Kỹ Thuật Điện Tử, khoa Điện‐Điện Tử, trường ĐHBK‐ĐHQG TP.HCM
Soạn: Hoàng Trang, Bùi Quốc Bảo.
{
case ..........: ............;
break;
case ..........: ............;
break;
case ..........: ............;
break;
case ..........: ............;
break;
case ..........: ............;
break;
case ..........: ............;
break;
}
switch (..................... & 0x0F) // switch to write minutes second
digit
{
case ..........: ............;
break;
case ..........: ............;
break;
case ..........: ............;
break;
case ..........: ............;
break;
case ..........: ............;
CuuDuongThanCong.com https://fb.com/tailieudientucntt
CuuDuongThanCong.com https://fb.com/tailieudientucntt
Tài liệu hướng dẫn thí nghiệm MSP‐EXP430FG4618
62 | P a g e Bộ môn Kỹ Thuật Điện Tử, khoa Điện‐Điện Tử, trường ĐHBK‐ĐHQG TP.HCM
Soạn: Hoàng Trang, Bùi Quốc Bảo.
break;
case ..........: ............;
break;
case ..........: ............;
break;
case ..........: ............;
break;
case ..........: ............;
break;
case ..........: ............;
break;
}
}
//******************************************************************
// Write seconds in LCD
//******************************************************************
void LCD_sec()
{
switch (.................... & 0xF0) // switch to write seconds first digit
{
case ..........: ............;
break;
case ..........: ............;
break;
case ..........: ............;
break;
CuuDuongThanCong.com https://fb.com/tailieudientucntt
CuuDuongThanCong.com https://fb.com/tailieudientucntt
Tài liệu hướng dẫn thí nghiệm MSP‐EXP430FG4618
63 | P a g e Bộ môn Kỹ Thuật Điện Tử, khoa Điện‐Điện Tử, trường ĐHBK‐ĐHQG TP.HCM
Soạn: Hoàng Trang, Bùi Quốc Bảo.
case ..........: ............;
break;
case ..........: ............;
break;
case ..........: ............;
break;
}
switch (............................. & 0x0F) // switch to write seconds
second digit
{
case ..........: ............;
break;
case ..........: ............;
break;
case ..........: ............;
break;
case ..........: ............;
break;
case ..........: ............;
break;
case ..........: ............;
break;
case ..........: ............;
break;
case ..........: ............;
break;
CuuDuongThanCong.com https://fb.com/tailieudientucntt
CuuDuongThanCong.com https://fb.com/tailieudientucntt
Tài liệu hướng dẫn thí nghiệm MSP‐EXP430FG4618
64 | P a g e Bộ môn Kỹ Thuật Điện Tử, khoa Điện‐Điện Tử, trường ĐHBK‐ĐHQG TP.HCM
Soạn: Hoàng Trang, Bùi Quốc Bảo.
case ..........: ............;
break;
case ..........: ............;
}
}
//******************************************************************
//LCD clean. All segments are turnned off
//******************************************************************
void LCD_all_off(void)
{
LCDM2 = 0x00;
LCDM3 = 0x00;
LCDM4 = 0x00;
LCDM5 = 0x00;
LCDM6 = 0x00;
LCDM7 = 0x00;
LCDM8 = 0x00;
LCDM9 = 0x00;
LCDM10 = 0x00;
LCDM11 = 0x00;
LCDM12 = 0x00;
LCDM13 = 0x00;
}
//*****************************************************************
// Basic Timer interrupt service routine: refresh LCD with 0.5 sec
//*****************************************************************
CuuDuongThanCong.com https://fb.com/tailieudientucntt
CuuDuongThanCong.com https://fb.com/tailieudientucntt
Tài liệu hướng dẫn thí nghiệm MSP‐EXP430FG4618
65 | P a g e Bộ môn Kỹ Thuật Điện Tử, khoa Điện‐Điện Tử, trường ĐHBK‐ĐHQG TP.HCM
Soạn: Hoàng Trang, Bùi Quốc Bảo.
#pragma vector=BASICTIMER_VECTOR
__interrupt void basic_timer_ISR(void)
{
P2OUT |=.......................; // LED1 turn on
P2OUT ^=.......................; // LED2 toogle
LCD_sec();
LCD_min();
LCD_hour();
if (RTCSEC & 0x01) // display the dot of P3 and P5
{
........................;
........................;
}
else
{
........................;
........................;
}
P2OUT &=...................; // LED1 turn off
}
//*****************************************************************
// Main routine
//*****************************************************************
void main(void)
{
CuuDuongThanCong.com https://fb.com/tailieudientucntt
CuuDuongThanCong.com https://fb.com/tailieudientucntt
Tài liệu hướng dẫn thí nghiệm MSP‐EXP430FG4618
66 | P a g e Bộ môn Kỹ Thuật Điện Tử, khoa Điện‐Điện Tử, trường ĐHBK‐ĐHQG TP.HCM
Soạn: Hoàng Trang, Bùi Quốc Bảo.
WDTCTL = WDTPW | WDTHOLD; // Stop WDT
FLL_CTL0 |= XCAP18PF; // Set load cap for 32k xtal
// LCD COM0-COM1-COM2-COM3 configuration
P5DIR |= 0x1E; // Ports P5.2, P5.3 and P5.4 as outputs
P5SEL |= 0x1E;
// LCD_A S0-S21 configuration
LCDAPCTL0 = LCDS24 | LCDS20 | LCDS16 | LCDS12 | LCDS8 | LCDS4;
// LCD_A configuration
LCDACTL = LCDFREQ_192 | LCD4MUX | LCDSON | LCDON;
LCDAVCTL0 = LCDCPEN; // Charge pump enable
LCDAVCTL1 = VLCD_3_44; // VLCD = 3,44 V
// clean LCD
LCD_all_off();
// RTC configuration
RTCCTL = .............................;
// BCD mode, RTC e BT disable
// Interrupt disable,
// Init Clock
RTCSEC = ...............; // Set Seconds in BCD format
RTCMIN = ...............; // Set Minutes in BCD format
RTCHOUR = ...............; // Set Hours in BCD format
// Init Calendar
RTCDOW = ...............; // Set Day-of-Week in BCD format
CuuDuongThanCong.com https://fb.com/tailieudientucntt
CuuDuongThanCong.com https://fb.com/tailieudientucntt
Tài liệu hướng dẫn thí nghiệm MSP‐EXP430FG4618
67 | P a g e Bộ môn Kỹ Thuật Điện Tử, khoa Điện‐Điện Tử, trường ĐHBK‐ĐHQG TP.HCM
Soạn: Hoàng Trang, Bùi Quốc Bảo.
RTCDAY = ...............; // Set Day in BCD format
RTCMON = ...............; // Set Month in BCD format
RTCYEAR = ...............; // Set Year in BCD format
RTCCTL &= ...............; // Enable RTC
// Basic Timer 1 Configuration
BTCTL = ...............; // (ACLK/256)/64
IE2 |= ...............; // Enable BT interrupt with 0.5 periode
// LED1 e LED2 configuration
P2DIR = ...............; // P2.2 and P2.1 as digital output
P2OUT = ...............; // LED1 on and LED2 off
// LCD init
LCD_sec();
LCD_min();
LCD_hour();
// SW1 and SW2 configuration
P1SEL &= ...............; // P1.0 and P1.1 I/O ports
P1DIR &= ...............; // P1.0 and P1.1 digital inputs
__bis_SR_register(..........................); // Enter LPM3 w/ interrupt
}
CuuDuongThanCong.com https://fb.com/tailieudientucntt
CuuDuongThanCong.com https://fb.com/tailieudientucntt
Tài liệu hướng dẫn thí nghiệm MSP‐EXP430FG4618
68 | P a g e Bộ môn Kỹ Thuật Điện Tử, khoa Điện‐Điện Tử, trường ĐHBK‐ĐHQG TP.HCM
Soạn: Hoàng Trang, Bùi Quốc Bảo.
2.2 Lab 3B: Thiết kế đồng hồ hiển thị giờ-phút-giây và ngày tháng năm.
Yêu cầu:
SV viết chương trình hiển thị các giá trị giờ-phút-giây hoặc ngày-tháng-năm.
Giá trị giờ hiển thị lên led P7-P6, phút hiển thị lên LED P5-P4 và giây hiển thị lên LED P3-
P2. Nếu số giây là chẵn, hiển thị hai dấu 2 chấm tại led P3 và P5 (dùng 2 macro
P3_DOT_ON và P5_DOT_ON). Nếu số giây là lẻ, tắt hai dấu 2 chấm tại led P3 và P5 (dùng
2 macro P3_DOT_OFF và P5_DOT_OFF).
Giá trị ngày hiển thị lên led P7-P6, phút hiển thị lên LED P5-P4 và giây hiển thị lên LED
P3-P2. Nếu số giây là chẵn, hiển thị hai dấu 2 chấm tại led P3 và P5 (dùng 2 macro
P3_DOT_ON và P5_DOT_ON). Nếu số giây là lẻ, tắt hai dấu 2 chấm tại led P3 và P5 (dùng
2 macro P3_DOT_OFF và P5_DOT_OFF).
Chương trình cập nhật LCD sau mỗi 0.5 s sử dụng ngắt basic timer module.
Khi reset, chương trình mặc định ở chế độ hiển thị giờ-phút-giây. Khi SW1 được nhấn,
chương trình sẽ hoán đổi giữa chế độ hiển thị giờ-phút-giây và ngày-tháng-năm.
Trong chương trình sử dụng biến toàn cục mode để lưu chế độ hiện hành. Khi SW1 được
nhấn sẽ tạo một ngắt làm thay đổi giá trị của mode.
Khi bắt đầu, chương trình đặt giá trị ban đầu cho RTC là: 8h 30 p 0s ngày 28 tháng 10 năm
2011.
File mẫu:
Calenda_SolutionCalenda_Solution.c
Calenda_StudentCalenda_Student.c
Hoàn tất chương trình:
#include <msp430xG46x.h>
#include <LCD_defs.h>
//******************************************************************
// Global data
//******************************************************************
unsigned char mode;
//******************************************************************
// Write year decade
CuuDuongThanCong.com https://fb.com/tailieudientucntt
CuuDuongThanCong.com https://fb.com/tailieudientucntt
Tài liệu hướng dẫn thí nghiệm MSP‐EXP430FG4618
69 | P a g e Bộ môn Kỹ Thuật Điện Tử, khoa Điện‐Điện Tử, trường ĐHBK‐ĐHQG TP.HCM
Soạn: Hoàng Trang, Bùi Quốc Bảo.
//******************************************************************
void LCD_year()
{
}
//******************************************************************
// Write month in LCD
//******************************************************************
void LCD_month()
{
}
//******************************************************************
// Write day in LCD
//******************************************************************
void LCD_day()
{
}
//******************************************************************
// Write Hour in LCD
//******************************************************************
void LCD_hour()
{
switch (RTCHOUR & 0xF0) // switch to write hour first digit
{
case 0x10: P7_A1;
break;
case 0x20: P7_A2;
CuuDuongThanCong.com https://fb.com/tailieudientucntt
CuuDuongThanCong.com https://fb.com/tailieudientucntt
Tài liệu hướng dẫn thí nghiệm MSP‐EXP430FG4618
70 | P a g e Bộ môn Kỹ Thuật Điện Tử, khoa Điện‐Điện Tử, trường ĐHBK‐ĐHQG TP.HCM
Soạn: Hoàng Trang, Bùi Quốc Bảo.
break;
case 0x00: P7_A0;
break;
}
switch (RTCHOUR & 0x0F) // switch to write hour second digit
{
case 0x01: P6_A1;
break;
case 0x02: P6_A2;
break;
case 0x03: P6_A3;
break;
case 0x04: P6_A4;
break;
case 0x05: P6_A5;
break;
case 0x06: P6_A6;
break;
case 0x07: P6_A7;
break;
case 0x08: P6_A8;
break;
case 0x09: P6_A9;
break;
case 0x00: P6_A0;
break;
CuuDuongThanCong.com https://fb.com/tailieudientucntt
CuuDuongThanCong.com https://fb.com/tailieudientucntt
Tài liệu hướng dẫn thí nghiệm MSP‐EXP430FG4618
71 | P a g e Bộ môn Kỹ Thuật Điện Tử, khoa Điện‐Điện Tử, trường ĐHBK‐ĐHQG TP.HCM
Soạn: Hoàng Trang, Bùi Quốc Bảo.
}
}
//******************************************************************
// Write minutes in LCD
//******************************************************************
void LCD_min()
{
switch (RTCMIN & 0xF0) // switch to write minutes first digit
{
case 0x10: P5_A1;
break;
case 0x20: P5_A2;
break;
case 0x30: P5_A3;
break;
case 0x40: P5_A4;
break;
case 0x50: P5_A5;
break;
case 0x00: P5_A0;
break;
}
switch (RTCMIN & 0x0F) // switch to write minutes second
digit
{
case 0x01: P4_A1;
CuuDuongThanCong.com https://fb.com/tailieudientucntt
CuuDuongThanCong.com https://fb.com/tailieudientucntt
Tài liệu hướng dẫn thí nghiệm MSP‐EXP430FG4618
72 | P a g e Bộ môn Kỹ Thuật Điện Tử, khoa Điện‐Điện Tử, trường ĐHBK‐ĐHQG TP.HCM
Soạn: Hoàng Trang, Bùi Quốc Bảo.
break;
case 0x02: P4_A2;
break;
case 0x03: P4_A3;
break;
case 0x04: P4_A4;
break;
case 0x05: P4_A5;
break;
case 0x06: P4_A6;
break;
case 0x07: P4_A7;
break;
case 0x08: P4_A8;
break;
case 0x09: P4_A9;
break;
case 0x00: P4_A0;
break;
}
}
//******************************************************************
// Write seconds in LCD
//******************************************************************
void LCD_sec()
{
CuuDuongThanCong.com https://fb.com/tailieudientucntt
CuuDuongThanCong.com https://fb.com/tailieudientucntt
Tài liệu hướng dẫn thí nghiệm MSP‐EXP430FG4618
73 | P a g e Bộ môn Kỹ Thuật Điện Tử, khoa Điện‐Điện Tử, trường ĐHBK‐ĐHQG TP.HCM
Soạn: Hoàng Trang, Bùi Quốc Bảo.
switch (RTCSEC & 0xF0) // switch to write seconds first digit
{
case 0x10: P3_A1;
break;
case 0x20: P3_A2;
break;
case 0x30: P3_A3;
break;
case 0x40: P3_A4;
break;
case 0x50: P3_A5;
break;
case 0x00: P3_A0;
break;
}
switch (RTCSEC & 0x0F) // switch to write seconds
second digit
{
case 0x01: P2_A1;
break;
case 0x02: P2_A2;
break;
case 0x03: P2_A3;
break;
case 0x04: P2_A4;
break;
CuuDuongThanCong.com https://fb.com/tailieudientucntt
CuuDuongThanCong.com https://fb.com/tailieudientucntt
Tài liệu hướng dẫn thí nghiệm MSP‐EXP430FG4618
74 | P a g e Bộ môn Kỹ Thuật Điện Tử, khoa Điện‐Điện Tử, trường ĐHBK‐ĐHQG TP.HCM
Soạn: Hoàng Trang, Bùi Quốc Bảo.
case 0x05: P2_A5;
break;
case 0x06: P2_A6;
break;
case 0x07: P2_A7;
break;
case 0x08: P2_A8;
break;
case 0x09: P2_A9;
break;
case 0x00: P2_A0;
}
}
//******************************************************************
//LCD clean. All segments are turnned off
//******************************************************************
void LCD_all_off(void)
{
LCDM2 = 0x00;
LCDM3 = 0x00;
LCDM4 = 0x00;
LCDM5 = 0x00;
LCDM6 = 0x00;
LCDM7 = 0x00;
LCDM8 = 0x00;
LCDM9 = 0x00;
CuuDuongThanCong.com https://fb.com/tailieudientucntt
CuuDuongThanCong.com https://fb.com/tailieudientucntt
Tài liệu hướng dẫn thí nghiệm MSP‐EXP430FG4618
75 | P a g e Bộ môn Kỹ Thuật Điện Tử, khoa Điện‐Điện Tử, trường ĐHBK‐ĐHQG TP.HCM
Soạn: Hoàng Trang, Bùi Quốc Bảo.
LCDM10 = 0x00;
LCDM11 = 0x00;
LCDM12 = 0x00;
LCDM13 = 0x00;
}
//******************************************************************
// Port1 interrupt service routine: toogle LCD mode
//******************************************************************
#pragma vector=PORT1_VECTOR
__interrupt void PORT1_ISR (void)
{
if (mode == 0) mode = 1; // toggle LCD mode
else mode = 0;
P1IFG &= ...................; // clean Interrupt flag
}
//*****************************************************************
// Basic Timer interrupt service routine: refresh LCD with 0.5 sec
//*****************************************************************
#pragma vector=BASICTIMER_VECTOR
__interrupt void basic_timer_ISR(void)
{
P2OUT |=....................; // LED1 turn on
P2OUT ^=....................; // LED2 toogle
if (mode == 0) // Display hour-minute-second
{
CuuDuongThanCong.com https://fb.com/tailieudientucntt
CuuDuongThanCong.com https://fb.com/tailieudientucntt
Tài liệu hướng dẫn thí nghiệm MSP‐EXP430FG4618
76 | P a g e Bộ môn Kỹ Thuật Điện Tử, khoa Điện‐Điện Tử, trường ĐHBK‐ĐHQG TP.HCM
Soạn: Hoàng Trang, Bùi Quốc Bảo.
...........................;
...........................;
...........................;
}
else // Display year-month-day
{
LCD_year();
LCD_month();
LCD_day();
}
if (RTCSEC & 0x01) // toogle clock dots
{
P3_DOT_ON;
P5_DOT_ON;
}
else
{
P3_DOT_OFF;
P5_DOT_OFF;
}
P2OUT &=~0x02; // LED1 turn off
}
//*****************************************************************
// Main routine
//*****************************************************************
void main(void)
CuuDuongThanCong.com https://fb.com/tailieudientucntt
CuuDuongThanCong.com https://fb.com/tailieudientucntt
Tài liệu hướng dẫn thí nghiệm MSP‐EXP430FG4618
77 | P a g e Bộ môn Kỹ Thuật Điện Tử, khoa Điện‐Điện Tử, trường ĐHBK‐ĐHQG TP.HCM
Soạn: Hoàng Trang, Bùi Quốc Bảo.
{
WDTCTL = WDTPW | WDTHOLD; // Stop WDT
FLL_CTL0 |= XCAP18PF; // Set load cap for 32k xtal
// LCD COM0-COM1-COM2-COM3 configuration
P5DIR |= 0x1E; // Ports P5.2, P5.3 and P5.4 as outputs
P5SEL |= 0x1E; // Ports P5.2, P5.3 and P5.4 as special function (COM1,
COM2 and COM3)
// LCD_A S0-S21 configuration
LCDAPCTL0 = LCDS24 | LCDS20 | LCDS16 | LCDS12 | LCDS8 | LCDS4;
// LCD_A configuration
LCDACTL = LCDFREQ_192 | LCD4MUX | LCDSON | LCDON; LCDAVCTL0 =
LCDCPEN; // Charge pump enable
LCDAVCTL1 = VLCD_3_44; // VLCD = 3,44 V
// clean LCD
LCD_all_off();
// RTC configuration
RTCCTL = .............................. ; // BCD mode, RTC e BT disable, Interrupt disable,
//
// Init Clock
RTCSEC = ..............................; // Set Seconds in BCD format
RTCMIN = ..............................; // Set Minutes in BCD format
RTCHOUR = ..............................; // Set Hours in BCD format
// Init Calendar
RTCDOW = ..............................; // Set Day-of-Week in BCD format
RTCDAY = ..............................; // Set Day in BCD format
CuuDuongThanCong.com https://fb.com/tailieudientucntt
CuuDuongThanCong.com https://fb.com/tailieudientucntt
Tài liệu hướng dẫn thí nghiệm MSP‐EXP430FG4618
78 | P a g e Bộ môn Kỹ Thuật Điện Tử, khoa Điện‐Điện Tử, trường ĐHBK‐ĐHQG TP.HCM
Soạn: Hoàng Trang, Bùi Quốc Bảo.
RTCMON = ..............................; // Set Month in BCD format
RTCYEAR = ..............................; // Set Year in BCD format
RTCCTL &= ..............................; // Enable RTC
// Basic Timer 1 Configuration
BTCTL = ..............................; // (ACLK/256)/64
IE2 |= ..............................; // Enable BT interrupt with 0.5 periode
// LED1 e LED2 configuration
P2DIR = 0x06; // P2.2 and P2.1 as digital output
P2OUT = 0x04; // LED1 on and LED2 off
// LCD init
LCD_sec();
LCD_min();
LCD_hour();
mode = 0;
// SW1 and SW2 configuration
P1SEL &= ..............................; // P1.0 and P1.1 I/O ports
P1DIR &= ..............................; // P1.0 and P1.1 digital inputs
P1IFG = ..............................; // Clear P1 flags
P1IES &= ..............................; // high-to-low transition interrupts
P1IE |= ..............................; // enable port interrupts
__bis_SR_register(..............................); // Enter LPM3 w/ interrupt
}
CuuDuongThanCong.com https://fb.com/tailieudientucntt
CuuDuongThanCong.com https://fb.com/tailieudientucntt

Más contenido relacionado

Similar a thi-nghiem-vi-xu-ly__tutorial-lab-msp430-debugger-iar-for-student-p - [cuuduongthancong.com].pdf

Quy trinh lap dat tram bts 3900 huawei
Quy trinh lap dat tram bts 3900 huaweiQuy trinh lap dat tram bts 3900 huawei
Quy trinh lap dat tram bts 3900 huaweiBang Nguyen Van
 
Hướng dẫn làm quen với stm8 f103 - tincanban.com
Hướng dẫn làm quen với stm8 f103 - tincanban.comHướng dẫn làm quen với stm8 f103 - tincanban.com
Hướng dẫn làm quen với stm8 f103 - tincanban.comThùy Linh
 
Mitsubishi
MitsubishiMitsubishi
Mitsubishiddungd4
 
PLC mitsubishi
PLC mitsubishiPLC mitsubishi
PLC mitsubishiquanglocbp
 

Similar a thi-nghiem-vi-xu-ly__tutorial-lab-msp430-debugger-iar-for-student-p - [cuuduongthancong.com].pdf (6)

cam bien sieu am
cam bien sieu amcam bien sieu am
cam bien sieu am
 
Quy trinh lap dat tram bts 3900 huawei
Quy trinh lap dat tram bts 3900 huaweiQuy trinh lap dat tram bts 3900 huawei
Quy trinh lap dat tram bts 3900 huawei
 
Hướng dẫn làm quen với stm8 f103 - tincanban.com
Hướng dẫn làm quen với stm8 f103 - tincanban.comHướng dẫn làm quen với stm8 f103 - tincanban.com
Hướng dẫn làm quen với stm8 f103 - tincanban.com
 
Mitsubishi
MitsubishiMitsubishi
Mitsubishi
 
PLC mitsubishi
PLC mitsubishiPLC mitsubishi
PLC mitsubishi
 
Tài liệu gsm bts 3900
Tài liệu gsm bts 3900Tài liệu gsm bts 3900
Tài liệu gsm bts 3900
 

Último

30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...Nguyen Thanh Tu Collection
 
Danh sách sinh viên tốt nghiệp Đại học - Cao đẳng Trường Đại học Phú Yên năm ...
Danh sách sinh viên tốt nghiệp Đại học - Cao đẳng Trường Đại học Phú Yên năm ...Danh sách sinh viên tốt nghiệp Đại học - Cao đẳng Trường Đại học Phú Yên năm ...
Danh sách sinh viên tốt nghiệp Đại học - Cao đẳng Trường Đại học Phú Yên năm ...hoangtuansinh1
 
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...Nguyen Thanh Tu Collection
 
Campbell _2011_ - Sinh học - Tế bào - Ref.pdf
Campbell _2011_ - Sinh học - Tế bào - Ref.pdfCampbell _2011_ - Sinh học - Tế bào - Ref.pdf
Campbell _2011_ - Sinh học - Tế bào - Ref.pdfTrnHoa46
 
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...Nguyen Thanh Tu Collection
 
PHƯƠNG THỨC VẬN TẢI ĐƯỜNG SẮT TRONG VẬN TẢI
PHƯƠNG THỨC VẬN TẢI ĐƯỜNG SẮT TRONG VẬN TẢIPHƯƠNG THỨC VẬN TẢI ĐƯỜNG SẮT TRONG VẬN TẢI
PHƯƠNG THỨC VẬN TẢI ĐƯỜNG SẮT TRONG VẬN TẢImyvh40253
 
BỘ LUYỆN NGHE VÀO 10 TIẾNG ANH DẠNG TRẮC NGHIỆM 4 CÂU TRẢ LỜI - CÓ FILE NGHE.pdf
BỘ LUYỆN NGHE VÀO 10 TIẾNG ANH DẠNG TRẮC NGHIỆM 4 CÂU TRẢ LỜI - CÓ FILE NGHE.pdfBỘ LUYỆN NGHE VÀO 10 TIẾNG ANH DẠNG TRẮC NGHIỆM 4 CÂU TRẢ LỜI - CÓ FILE NGHE.pdf
BỘ LUYỆN NGHE VÀO 10 TIẾNG ANH DẠNG TRẮC NGHIỆM 4 CÂU TRẢ LỜI - CÓ FILE NGHE.pdfNguyen Thanh Tu Collection
 
TÀI LIỆU BỒI DƯỠNG HỌC SINH GIỎI LÝ LUẬN VĂN HỌC NĂM HỌC 2023-2024 - MÔN NGỮ ...
TÀI LIỆU BỒI DƯỠNG HỌC SINH GIỎI LÝ LUẬN VĂN HỌC NĂM HỌC 2023-2024 - MÔN NGỮ ...TÀI LIỆU BỒI DƯỠNG HỌC SINH GIỎI LÝ LUẬN VĂN HỌC NĂM HỌC 2023-2024 - MÔN NGỮ ...
TÀI LIỆU BỒI DƯỠNG HỌC SINH GIỎI LÝ LUẬN VĂN HỌC NĂM HỌC 2023-2024 - MÔN NGỮ ...Nguyen Thanh Tu Collection
 
sách sinh học đại cương - Textbook.pdf
sách sinh học đại cương   -   Textbook.pdfsách sinh học đại cương   -   Textbook.pdf
sách sinh học đại cương - Textbook.pdfTrnHoa46
 
GIÁO ÁN DẠY THÊM (KẾ HOẠCH BÀI DẠY BUỔI 2) - TIẾNG ANH 7 GLOBAL SUCCESS (2 CỘ...
GIÁO ÁN DẠY THÊM (KẾ HOẠCH BÀI DẠY BUỔI 2) - TIẾNG ANH 7 GLOBAL SUCCESS (2 CỘ...GIÁO ÁN DẠY THÊM (KẾ HOẠCH BÀI DẠY BUỔI 2) - TIẾNG ANH 7 GLOBAL SUCCESS (2 CỘ...
GIÁO ÁN DẠY THÊM (KẾ HOẠCH BÀI DẠY BUỔI 2) - TIẾNG ANH 7 GLOBAL SUCCESS (2 CỘ...Nguyen Thanh Tu Collection
 
CD21 Exercise 2.1 KEY.docx tieng anh cho
CD21 Exercise 2.1 KEY.docx tieng anh choCD21 Exercise 2.1 KEY.docx tieng anh cho
CD21 Exercise 2.1 KEY.docx tieng anh chonamc250
 
Chuong trinh dao tao Su pham Khoa hoc tu nhien, ma nganh - 7140247.pdf
Chuong trinh dao tao Su pham Khoa hoc tu nhien, ma nganh - 7140247.pdfChuong trinh dao tao Su pham Khoa hoc tu nhien, ma nganh - 7140247.pdf
Chuong trinh dao tao Su pham Khoa hoc tu nhien, ma nganh - 7140247.pdfhoangtuansinh1
 
Giới thiệu Dự án Sản Phụ Khoa - Y Học Cộng Đồng
Giới thiệu Dự án Sản Phụ Khoa - Y Học Cộng ĐồngGiới thiệu Dự án Sản Phụ Khoa - Y Học Cộng Đồng
Giới thiệu Dự án Sản Phụ Khoa - Y Học Cộng ĐồngYhoccongdong.com
 
1.DOANNGOCPHUONGTHAO-APDUNGSTEMTHIETKEBTHHHGIUPHSHOCHIEUQUA (1).docx
1.DOANNGOCPHUONGTHAO-APDUNGSTEMTHIETKEBTHHHGIUPHSHOCHIEUQUA (1).docx1.DOANNGOCPHUONGTHAO-APDUNGSTEMTHIETKEBTHHHGIUPHSHOCHIEUQUA (1).docx
1.DOANNGOCPHUONGTHAO-APDUNGSTEMTHIETKEBTHHHGIUPHSHOCHIEUQUA (1).docxTHAO316680
 
GNHH và KBHQ - giao nhận hàng hoá và khai báo hải quan
GNHH và KBHQ - giao nhận hàng hoá và khai báo hải quanGNHH và KBHQ - giao nhận hàng hoá và khai báo hải quan
GNHH và KBHQ - giao nhận hàng hoá và khai báo hải quanmyvh40253
 
Các điều kiện bảo hiểm trong bảo hiểm hàng hoá
Các điều kiện bảo hiểm trong bảo hiểm hàng hoáCác điều kiện bảo hiểm trong bảo hiểm hàng hoá
Các điều kiện bảo hiểm trong bảo hiểm hàng hoámyvh40253
 
Kiểm tra cuối học kì 1 sinh học 12 đề tham khảo
Kiểm tra cuối học kì 1 sinh học 12 đề tham khảoKiểm tra cuối học kì 1 sinh học 12 đề tham khảo
Kiểm tra cuối học kì 1 sinh học 12 đề tham khảohoanhv296
 
Nhiễm khuẩn tiêu hóa-Tiêu chảy do vi khuẩn.pptx
Nhiễm khuẩn tiêu hóa-Tiêu chảy do vi khuẩn.pptxNhiễm khuẩn tiêu hóa-Tiêu chảy do vi khuẩn.pptx
Nhiễm khuẩn tiêu hóa-Tiêu chảy do vi khuẩn.pptxhoangvubaongoc112011
 
cac-cau-noi-tthcm.pdf-cac-cau-noi-tthcm-
cac-cau-noi-tthcm.pdf-cac-cau-noi-tthcm-cac-cau-noi-tthcm.pdf-cac-cau-noi-tthcm-
cac-cau-noi-tthcm.pdf-cac-cau-noi-tthcm-KhnhHuyn546843
 

Último (20)

30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
 
1 - MÃ LỖI SỬA CHỮA BOARD MẠCH BẾP TỪ.pdf
1 - MÃ LỖI SỬA CHỮA BOARD MẠCH BẾP TỪ.pdf1 - MÃ LỖI SỬA CHỮA BOARD MẠCH BẾP TỪ.pdf
1 - MÃ LỖI SỬA CHỮA BOARD MẠCH BẾP TỪ.pdf
 
Danh sách sinh viên tốt nghiệp Đại học - Cao đẳng Trường Đại học Phú Yên năm ...
Danh sách sinh viên tốt nghiệp Đại học - Cao đẳng Trường Đại học Phú Yên năm ...Danh sách sinh viên tốt nghiệp Đại học - Cao đẳng Trường Đại học Phú Yên năm ...
Danh sách sinh viên tốt nghiệp Đại học - Cao đẳng Trường Đại học Phú Yên năm ...
 
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
 
Campbell _2011_ - Sinh học - Tế bào - Ref.pdf
Campbell _2011_ - Sinh học - Tế bào - Ref.pdfCampbell _2011_ - Sinh học - Tế bào - Ref.pdf
Campbell _2011_ - Sinh học - Tế bào - Ref.pdf
 
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
 
PHƯƠNG THỨC VẬN TẢI ĐƯỜNG SẮT TRONG VẬN TẢI
PHƯƠNG THỨC VẬN TẢI ĐƯỜNG SẮT TRONG VẬN TẢIPHƯƠNG THỨC VẬN TẢI ĐƯỜNG SẮT TRONG VẬN TẢI
PHƯƠNG THỨC VẬN TẢI ĐƯỜNG SẮT TRONG VẬN TẢI
 
BỘ LUYỆN NGHE VÀO 10 TIẾNG ANH DẠNG TRẮC NGHIỆM 4 CÂU TRẢ LỜI - CÓ FILE NGHE.pdf
BỘ LUYỆN NGHE VÀO 10 TIẾNG ANH DẠNG TRẮC NGHIỆM 4 CÂU TRẢ LỜI - CÓ FILE NGHE.pdfBỘ LUYỆN NGHE VÀO 10 TIẾNG ANH DẠNG TRẮC NGHIỆM 4 CÂU TRẢ LỜI - CÓ FILE NGHE.pdf
BỘ LUYỆN NGHE VÀO 10 TIẾNG ANH DẠNG TRẮC NGHIỆM 4 CÂU TRẢ LỜI - CÓ FILE NGHE.pdf
 
TÀI LIỆU BỒI DƯỠNG HỌC SINH GIỎI LÝ LUẬN VĂN HỌC NĂM HỌC 2023-2024 - MÔN NGỮ ...
TÀI LIỆU BỒI DƯỠNG HỌC SINH GIỎI LÝ LUẬN VĂN HỌC NĂM HỌC 2023-2024 - MÔN NGỮ ...TÀI LIỆU BỒI DƯỠNG HỌC SINH GIỎI LÝ LUẬN VĂN HỌC NĂM HỌC 2023-2024 - MÔN NGỮ ...
TÀI LIỆU BỒI DƯỠNG HỌC SINH GIỎI LÝ LUẬN VĂN HỌC NĂM HỌC 2023-2024 - MÔN NGỮ ...
 
sách sinh học đại cương - Textbook.pdf
sách sinh học đại cương   -   Textbook.pdfsách sinh học đại cương   -   Textbook.pdf
sách sinh học đại cương - Textbook.pdf
 
GIÁO ÁN DẠY THÊM (KẾ HOẠCH BÀI DẠY BUỔI 2) - TIẾNG ANH 7 GLOBAL SUCCESS (2 CỘ...
GIÁO ÁN DẠY THÊM (KẾ HOẠCH BÀI DẠY BUỔI 2) - TIẾNG ANH 7 GLOBAL SUCCESS (2 CỘ...GIÁO ÁN DẠY THÊM (KẾ HOẠCH BÀI DẠY BUỔI 2) - TIẾNG ANH 7 GLOBAL SUCCESS (2 CỘ...
GIÁO ÁN DẠY THÊM (KẾ HOẠCH BÀI DẠY BUỔI 2) - TIẾNG ANH 7 GLOBAL SUCCESS (2 CỘ...
 
CD21 Exercise 2.1 KEY.docx tieng anh cho
CD21 Exercise 2.1 KEY.docx tieng anh choCD21 Exercise 2.1 KEY.docx tieng anh cho
CD21 Exercise 2.1 KEY.docx tieng anh cho
 
Chuong trinh dao tao Su pham Khoa hoc tu nhien, ma nganh - 7140247.pdf
Chuong trinh dao tao Su pham Khoa hoc tu nhien, ma nganh - 7140247.pdfChuong trinh dao tao Su pham Khoa hoc tu nhien, ma nganh - 7140247.pdf
Chuong trinh dao tao Su pham Khoa hoc tu nhien, ma nganh - 7140247.pdf
 
Giới thiệu Dự án Sản Phụ Khoa - Y Học Cộng Đồng
Giới thiệu Dự án Sản Phụ Khoa - Y Học Cộng ĐồngGiới thiệu Dự án Sản Phụ Khoa - Y Học Cộng Đồng
Giới thiệu Dự án Sản Phụ Khoa - Y Học Cộng Đồng
 
1.DOANNGOCPHUONGTHAO-APDUNGSTEMTHIETKEBTHHHGIUPHSHOCHIEUQUA (1).docx
1.DOANNGOCPHUONGTHAO-APDUNGSTEMTHIETKEBTHHHGIUPHSHOCHIEUQUA (1).docx1.DOANNGOCPHUONGTHAO-APDUNGSTEMTHIETKEBTHHHGIUPHSHOCHIEUQUA (1).docx
1.DOANNGOCPHUONGTHAO-APDUNGSTEMTHIETKEBTHHHGIUPHSHOCHIEUQUA (1).docx
 
GNHH và KBHQ - giao nhận hàng hoá và khai báo hải quan
GNHH và KBHQ - giao nhận hàng hoá và khai báo hải quanGNHH và KBHQ - giao nhận hàng hoá và khai báo hải quan
GNHH và KBHQ - giao nhận hàng hoá và khai báo hải quan
 
Các điều kiện bảo hiểm trong bảo hiểm hàng hoá
Các điều kiện bảo hiểm trong bảo hiểm hàng hoáCác điều kiện bảo hiểm trong bảo hiểm hàng hoá
Các điều kiện bảo hiểm trong bảo hiểm hàng hoá
 
Kiểm tra cuối học kì 1 sinh học 12 đề tham khảo
Kiểm tra cuối học kì 1 sinh học 12 đề tham khảoKiểm tra cuối học kì 1 sinh học 12 đề tham khảo
Kiểm tra cuối học kì 1 sinh học 12 đề tham khảo
 
Nhiễm khuẩn tiêu hóa-Tiêu chảy do vi khuẩn.pptx
Nhiễm khuẩn tiêu hóa-Tiêu chảy do vi khuẩn.pptxNhiễm khuẩn tiêu hóa-Tiêu chảy do vi khuẩn.pptx
Nhiễm khuẩn tiêu hóa-Tiêu chảy do vi khuẩn.pptx
 
cac-cau-noi-tthcm.pdf-cac-cau-noi-tthcm-
cac-cau-noi-tthcm.pdf-cac-cau-noi-tthcm-cac-cau-noi-tthcm.pdf-cac-cau-noi-tthcm-
cac-cau-noi-tthcm.pdf-cac-cau-noi-tthcm-
 

thi-nghiem-vi-xu-ly__tutorial-lab-msp430-debugger-iar-for-student-p - [cuuduongthancong.com].pdf

  • 1. Tài liệu hướng dẫn thí nghiệm MSP‐EXP430FG4618 1 | P a g e Bộ môn Kỹ Thuật Điện Tử, khoa Điện‐Điện Tử, trường ĐHBK‐ĐHQG TP.HCM Soạn: Hoàng Trang, Bùi Quốc Bảo. Đối tượng dùng tài liệu này: - Sinh viên muốn tìm hiểu về MCU MSP430 của hãng TI. - Sinh viên khoa Điện-Điện Tử học môn thí nghiệm Vi Xử Lý tại Bộ môn Điện Tử. Mục tiêu: Sau khi sinh viên đọc xong tài liệu này, sinh viên có thể: - Biết được các đặc tính cơ bản của kit thí nghiệm MSP-EXP430FG4618 - Đặc tính và cách cài đặt bộ Debug MSP-FET430UIF. - Cách sử dụng IAR. - Thực hiện các bài liên quan đến xuất/nhập, ngắt, timer Với mục tiêu đó, tài liệu này được trình bày theo các phần sau đây: I. Kit MSP-EXP430FG4618 1. Giới thiệu chung: Kit thí nghiệm MSP-EXP430FG4618 của hãng TI với sự kết hợp 2 chip MSP430FG4618 và MSP430F2013 nên cung cấp hầu hết các ngoại vi trong họ MSP430. Ngoài ra, các header cho các module thử nghiệm TI wireless và RAM dung lượng lớn trên kit này đã giúp kit MSP- EXP430FG4618 khá phù hợp như là 1 nền tảng cho các ứng dụng về wireless. Hai chip 4618 và 2013 có thể giao tiếp với nhau (xem hình 2) hoặc giao tiếp với các thiết bị bên ngoài. Để lập trình và debug, chúng ta có 2 môi trường riêng biệt được hỗ trợ: IAR Embeeded Workbench và TI Code Composer Essential (CCE). Thiết bị để lập trình và debug cho chip TI là TI USB Flash Emulation Tool (FET), trong tài liệu này là MSP-FET430UIF, sẽ được trình bày trong phần III. Hình 1 trình bày hình ảnh thực của kit MSP-EXP430FG4618 tại bộ môn Điện Tử CuuDuongThanCong.com https://fb.com/tailieudientucntt CuuDuongThanCong.com https://fb.com/tailieudientucntt
  • 2. Tài liệu hướng dẫn thí nghiệm MSP‐EXP430FG4618 2 | P a g e Bộ môn Kỹ Thuật Điện Tử, khoa Điện‐Điện Tử, trường ĐHBK‐ĐHQG TP.HCM Soạn: Hoàng Trang, Bùi Quốc Bảo. Hình 1. Hình ảnh thực của kit MSP-EXP430FG4618 2. Các đặc tính của kit MSP-EXP430FG4618 Để thuận tiện theo dõi, sơ đồ khối của kit MSP-EXP430FG4618 được trình bày trong hình 2. CuuDuongThanCong.com https://fb.com/tailieudientucntt CuuDuongThanCong.com https://fb.com/tailieudientucntt
  • 3. Tài liệu hướng dẫn thí nghiệm MSP‐EXP430FG4618 3 | P a g e Bộ môn Kỹ Thuật Điện Tử, khoa Điện‐Điện Tử, trường ĐHBK‐ĐHQG TP.HCM Soạn: Hoàng Trang, Bùi Quốc Bảo. Hình 2. Sơ đồ khối của kit MSP-EXP430FG4618 2.1. JTAG Hai header JTAG1 và JTAG2 để lập trình và debug mỗi MSP430 riêng biệt: JTAG1 cho MSP430FG4618 và JTAG2 cho MSP430F2013. JTAG1 cho MSP430FG4618 dùng kiểu kết nối JTAG chuẩn 4 dây, còn JTAG cho MSP430F2013 dùng kiểu giao tiếp JTAG Spy-Bi-Wire (2 dây). Điều này cho phép các chân ở các port được sử dụng trong quá trình debug. 2.2. Microphone: Microphone (MIC) được kết nối với MSP430FG4618 qua các chân trong hình 3. Microphone được kích hoạt hay không qua chân của MSP430FG4618. Câu hỏi dành cho sinh viên: giải thích cơ chế điều khiển, thu nhận tín hiệu MIC của MSP430FG4618 qua các chân như hình 3? Không gian số 4 này chừa sẵn để sử dụng sau Không gian này: chỉ có header, chừa sẵn để sử dụng sau CuuDuongThanCong.com https://fb.com/tailieudientucntt CuuDuongThanCong.com https://fb.com/tailieudientucntt
  • 4. Tài liệu hướng dẫn thí nghiệm MSP‐EXP430FG4618 4 | P a g e Bộ môn Kỹ Thuật Điện Tử, khoa Điện‐Điện Tử, trường ĐHBK‐ĐHQG TP.HCM Soạn: Hoàng Trang, Bùi Quốc Bảo. Hình 3: Kết nối microphone 2.3. Buzzer Buzzer được kết nối với port I/O P3.5 của MSP430FG4618. Buzzer có thể hoàn toàn bị cách ly với jumper JP1. Lưu ý: trong quá trình thí nghiệm, sau khi thử nghiệm thành công, sinh viên nên tháo JP1 này để tránh làm ảnh hưởng người xung quanh. 2.4. LCD LCD trong kit này là loại SoftBaugh SBLCDA4, nó có 4 chế độ khác nhau: tĩnh, 2-mux, 3-mux và 4-mux. LCD này được hỗ trợ khi giao tiếp với MSP430FG4618 qua LCD driver đã có sẵn. Thông tin thêm về LCD này, sinh viên có thể google hoặc download từ trang web của bộ môn Điện Tử. 2.5. Nút nhấn S1 và S2: Hai nút nhấn S1 và S2 được nối với onnected to the interrupt capable MSP430FG4618 digital I/O port, P1. Hình 4: kết nối switch 2.6. LED Kit thí nghiệm có tổng cộng 4 LED, 3 LED (LED1, LED2, và LED4) được kết nối với chip MSP430FG4618, và 1 LED còn lại (LED3) được kết nối với chip MSP430F2013. Các LED này được sử dụng chủ yếu với mục đích hiển thị. 2 LED LED3 và LED4 có thể được ngắt khỏi kết CuuDuongThanCong.com https://fb.com/tailieudientucntt CuuDuongThanCong.com https://fb.com/tailieudientucntt
  • 5. Tài liệu hướng dẫn thí nghiệm MSP‐EXP430FG4618 5 | P a g e Bộ môn Kỹ Thuật Điện Tử, khoa Điện‐Điện Tử, trường ĐHBK‐ĐHQG TP.HCM Soạn: Hoàng Trang, Bùi Quốc Bảo. nối bằng Jumper để tiết kiệm năng lượng cho kit. (LED3 dùng jumper JP2, LED4 dùng JP3). Xem tóm tắt trong bảng 1 và hình 5 Bảng 1 trình bày về kết nối các LED Bảng 1: Kết nối LED LED Kết nối với chip Port Ghi chú Jumper LED1 MSP430FG4618 P2.2 LED2 MSP430FG4618 P2.1 LED3 MSP430F2013 P1.0 JP2 LED4 MSP430FG4618 P5.1 JP3 Hình 5: Các kết nối LED. 2.7. Giao tiếp RS232 For a serial interface to a PC, Chip MSP430FG4618 hỗ trợ chuẩn giao tiếp RS-232 9 chân thông qua ngoại vi USC của chip (được cấu hình trong chế độ UART). Hình 6: Giao tiếp RS232 Chân 74, P2.5/UCA0RXD Chân 75, P2.4/UCA0TXD CuuDuongThanCong.com https://fb.com/tailieudientucntt CuuDuongThanCong.com https://fb.com/tailieudientucntt
  • 6. Tài liệu hướng dẫn thí nghiệm MSP‐EXP430FG4618 6 | P a g e Bộ môn Kỹ Thuật Điện Tử, khoa Điện‐Điện Tử, trường ĐHBK‐ĐHQG TP.HCM Soạn: Hoàng Trang, Bùi Quốc Bảo. 2.8. Jack headphone 3.5mm: Ngõ ra headphone được kết nối với Op-Amp OA2 đã được tích hợp sẵn trong chip MSP430FG4618 (qua chân P6.5 Ạ/OA2O). Ngõ vào cho bộ Op-Amp này có thể được kết nối bên trong đến chân ngõ ra DAC12 của chip MSP430FG4618. Lưu ý: có vài lựa chọn suy hao được cung cấp nội bộ bên trong chip hoặc qua hardware bằng cách sử dụng Jumper JP4. Hình 7: Headphone jack 3.5mm 2.9. Các jumper Để thuận tiện khi thao tác thí nghiệm, hình sau đây trình bày vị trí các jumper CuuDuongThanCong.com https://fb.com/tailieudientucntt CuuDuongThanCong.com https://fb.com/tailieudientucntt
  • 7. Tài liệu hướng dẫn thí nghiệm MSP‐EXP430FG4618 7 | P a g e Bộ môn Kỹ Thuật Điện Tử, khoa Điện‐Điện Tử, trường ĐHBK‐ĐHQG TP.HCM Soạn: Hoàng Trang, Bùi Quốc Bảo. Hình 8: Vị trí các Jumper trên kit MSP430FG4618 Bảng 2 tóm tắt các chức năng của các jumper Bảng 2. Chức năng các jumper Header Chức năng khi dung Jumper kết nối Khi không dùng jumper kết nối Yêu cầu JTAG1 Bộ FET để lập trình-debug FG4618 FG4618 không được mô phỏng X JTAG2 Bộ FET để lập trình-debug F2013 F2013 không được mô phỏng X PWR1 Cung cấp nguồn cho FG4618. Ngoài ra, dùng để đo dòng FG4618 không được cung cấp nguồn Yêu cầu cần gắn jumper này để sử dụng FG4618 PWR2 Cung cấp nguồn cho F2013. Ngoài ra, dùng để đo dòng F2013 không được cung cấp nguồn Yêu cầu cần gắn jumper này để sử dụng F2013 CuuDuongThanCong.com https://fb.com/tailieudientucntt CuuDuongThanCong.com https://fb.com/tailieudientucntt
  • 8. Tài liệu hướng dẫn thí nghiệm MSP‐EXP430FG4618 8 | P a g e Bộ môn Kỹ Thuật Điện Tử, khoa Điện‐Điện Tử, trường ĐHBK‐ĐHQG TP.HCM Soạn: Hoàng Trang, Bùi Quốc Bảo. BATT Cung cấp nguồn cho kit bằng 2 pin AAA. Ngoài ra, dung để đo dòng tổng cộng của kit Pin không cung cấp nguồn cho cả 2 chip MSP430 Yêu cầu khi cần dùng pin JP1 Để sử dụng buzzer (nối với chân FG4618-P3.5) Không dùng buzzer Tùy chọn JP2 Cho phép LED3 hoạt động (LED3 nối với chân F2013-P1.0) Không dùng LED3 Tùy chọn/ yêu cầu khi dùng LED3 JP3 Cho phép LED4 hoạt động (LED4 nối với chân FG4618-P5.1) Không dùng LED4 Tùy chọn/ yêu cầu khi dùng LED4 JP4 Suy hao mức điện áp ra của audio (69%) 98% suy hao của ngõ ra audio DAC12 Tùy chọn H1 (1-2, 3-4) Cấu hình cho I2C 1-2: SDA-UCBOSDA 3-4: SCL-UCBOSCL Không giao tiếp qua I2C Yêu cầu cho giao tiếp bên trong processor H1 (1-2, 3-4, 5-6, 7-8) Cấu hình cho SPI 1-2: SDI – UCB0SIMO 3-4: SDO – UCB0SOMI 5-6: P1.4 – P3.0 (CS) 7-8: SCLK – UCB0CLK Không giao tiếp qua SPI Yêu cầu cho giao tiếp bên trong processor Vcc VCC_1: 3 chân phía dưới. Dùng cho FG4618/JTAG1. VCC_2: 3 chân phía trên. Dùng cho F2013/JTAG2. LCL: cung cấp Vcc đến FET. FET: nguồn từ FET (jumper BATT không được thiết lập) Nguồn từ JTAG Yêu cầu khi sử dụng không cần pin CuuDuongThanCong.com https://fb.com/tailieudientucntt CuuDuongThanCong.com https://fb.com/tailieudientucntt
  • 9. Tài liệu hướng dẫn thí nghiệm MSP‐EXP430FG4618 9 | P a g e Bộ môn Kỹ Thuật Điện Tử, khoa Điện‐Điện Tử, trường ĐHBK‐ĐHQG TP.HCM Soạn: Hoàng Trang, Bùi Quốc Bảo. 3. Sơ đồ mạch của kit MSP-EXP430FG4618 CuuDuongThanCong.com https://fb.com/tailieudientucntt CuuDuongThanCong.com https://fb.com/tailieudientucntt
  • 10. Tài liệu hướng dẫn thí nghiệm MSP‐EXP430FG4618 10 | P a g e Bộ môn Kỹ Thuật Điện Tử, khoa Điện‐Điện Tử, trường ĐHBK‐ĐHQG TP.HCM Soạn: Hoàng Trang, Bùi Quốc Bảo. II. Đặc tính và cách cài đặt bộ Debug MSP-FET430UIF 1. Giới thiệu công cụ FET FET (Flash Emulation Tool) cho phép lập trình-debug họ MSP430 qua JTAG chuẩn (4 dây) và JTAG tiết kiệm chân (2 dây, Spy Bi-Wire). Do đó, FET được dùng để phát triển các ứng dụng trên họ MCU này. Có 2 cơ chế giao tiếp của FET là qua USB cổng song song, tương ứng với các loại MSP-FET430UIF (xem hình bên dưới) và MSP- FET430PIF. Các tính năng của 2 loại FET này được trình bày trong bảng dưới đây. FET430UIF Chức năng giữa 2 loại FET: FET430UIF và FET430PIF Đặc tính MSP-FET430UIF MSP-FET430PIF Hỗ trợ tất cả họ MSP430 dựa trên Flash (F1xx, F2xx, F4xx, F5xx) x x Cho phép cấu hình bảo mật JTAG để bảo vệ code x KHÔNG Cho phép tạo ra nguồn cấp chỉnh được 1.8V-3.6V ở 100mA x KHÔNG Cố định tạo ra nguồn cấp 2.8V KHÔNG X Debug dùng JTAG chuẩn 4 dây x X Debug dùng JTAG chuẩn 2 dây (Spy-Bi-Wire) x KHÔNG Hỗ trợ bởi CCE x X Hỗ trợ bởi IAR x x Với các so sánh trên, FET430UIF có tính năng tốt hơn, và do đó chúng ta sẽ sử dụng công cụ này. Và phần tiếp theo trình bày cách cài đặt FET430UIF. CuuDuongThanCong.com https://fb.com/tailieudientucntt CuuDuongThanCong.com https://fb.com/tailieudientucntt
  • 11. Tài liệu hướng dẫn thí nghiệm MSP‐EXP430FG4618 11 | P a g e Bộ môn Kỹ Thuật Điện Tử, khoa Điện‐Điện Tử, trường ĐHBK‐ĐHQG TP.HCM Soạn: Hoàng Trang, Bùi Quốc Bảo. 2. Cài đặt FET430UIF Trong phần này, chúng tôi trình bày cách cài đặt FET430UIF trên Windows 7. Các hệ điều hành khác cũng thực hiện tương tự. Bước 1: Download driver cho FET430UIF và lưu trong máy của bạn. Đối với Windows 7-64 bit: processors.wiki.ti.com/images/d/dc/TUSBWINVCP_Win7-64.zip Đối với Windows 7-32 bit: processors.wiki.ti.com/images/6/6a/TUSBWINVCP_Win7-32.zip Đối với WindowsXP-32 bit: processors.wiki.ti.com/images/7/73/TUSBWINVCP_XP32.zip Đối với WindowsXP-64 bit: processors.wiki.ti.com/images/3/3b/TUSBWINVCP_XP64.zip Cho các hệ điều hành khác, vui long vào website sau: http://processors.wiki.ti.com/index.php/MSP430_JTAG_Interface_USB_Driver Hoặc các driver trên, các bạn có thể vào website của bộ môn Điện Tử để download/ hoặc liên hệ người soạn tài liệu này/ hoặc liên hệ giáo viên hướng dẫn. Bước 2: Gắn FET430UIF vào máy vi tính qua cổng USB Bước 3: Click phải chuột vào Computer/ chọn Properties sẽ cho cửa sổ sau. Tiếp theo click vào Device Manager như hình sau: CuuDuongThanCong.com https://fb.com/tailieudientucntt CuuDuongThanCong.com https://fb.com/tailieudientucntt
  • 12. Tài liệu hướng dẫn thí nghiệm MSP‐EXP430FG4618 12 | P a g e Bộ môn Kỹ Thuật Điện Tử, khoa Điện‐Điện Tử, trường ĐHBK‐ĐHQG TP.HCM Soạn: Hoàng Trang, Bùi Quốc Bảo. Bước 4: Click phải trên phần thiết bị mà chưa được cài đặt, rồi chọn Properties. Tiếp đến chọn tab Driver / Update Driver… và chọn đường dẫn đến file driver mà bạn đã download ở bước 1. CuuDuongThanCong.com https://fb.com/tailieudientucntt CuuDuongThanCong.com https://fb.com/tailieudientucntt
  • 13. Tài liệu hướng dẫn thí nghiệm MSP‐EXP430FG4618 13 | P a g e Bộ môn Kỹ Thuật Điện Tử, khoa Điện‐Điện Tử, trường ĐHBK‐ĐHQG TP.HCM Soạn: Hoàng Trang, Bùi Quốc Bảo. III. Thiết lập cơ bản cho thí nghiệm Hai phần trên đã trình bày về kit MSP-EXP430FG4618 và FET430UIF. Phần này sẽ trình bày về các bước thiết lập cơ bản phục vụ cho thí nghiệm Vi Xử Lý tại bộ môn Kỹ Thuật Điện Tử, khoa Điện-Điện Tử, trường Đại Học Bách Khoa-Đại Học Quốc Gia TP.Hồ Chí Minh. Các bước này là cơ bản nhất để bắt đầu thực hiện thí nghiệm, còn các tùy chọn khác, vui lòng xem lại mục I. Trong từng bài thí nghiệm, sẽ trình bày các bước thiết lập thêm tùy thuộc từng bài. Bước 1: thiết lập MSP-EXP430FG4618 - Kiểm tra/sử dụng jumper PWR1 để cung cấp nguồn cho FG4618. (jumper PWR1 nằm khoảng giữa kit, phía bên phải chip M430G4618, nếu đặt kit như vị trí hình 1) - Kiểm tra/ không sử dụng jumper BATT (jumper BATT ở phía dưới, bên phải kit). Khi thí nghiệm, thiết lập như vậy để không sử dụng pin cung cấp nguồn cho 2 chip với mục đích tiết kiệm pin. - Kiểm tra/ sử dụng jumper Vcc (jumper Vcc ở phía dưới, bên phải kit). Để thiết lập sử dụng nguồn từ FET (khi không dùng pin), thiết lập jumper ở vị trí FET cho cả 2 hàng 1 và 2 (nghĩa là 2 jumper kết nối, mỗi jumper kết nối 2 header tận cùng bên phải: 2 header phía dưới: dùng cho FG4618/JTAG1, 2 chân phía trên: dùng cho F2013/JTAG2). Bước 2: Kết nối FET430UIF - Kết nối dây USB giữa máy tính và FET. - Kết nối dây 14 pin JTAG giữa FET và kit MSP-EXP430FG4618. Bước 3: sử dụng IAR để lập trình-debug (xem mục IV) Bước 4: tiến hành thí nghiệm. Chúc may mắn. IV. Sử dụng IAR Embeeded Workbench (http://www.iar.com/) Để lập trình và debug cho MSP430, chúng ta có 2 môi trường riêng biệt được hỗ trợ: IAR Embeeded Workbench và TI Code Composer Essential (CCE). IAR được chọn trình bày trong phần này vì tính đơn giản, gọn nhẹ của nó. Các thông tin chi tiết liên quan về IAR, vui lòng xem tại website http://www.iar.com/ Phần này trình bày cơ bản về sử dụng IAR để tạo 1 project và lập trình trên MSP430. Bước 1: chạy chương trình IAR Embeeded Workbench IDE CuuDuongThanCong.com https://fb.com/tailieudientucntt CuuDuongThanCong.com https://fb.com/tailieudientucntt
  • 14. Tài liệu hướng dẫn thí nghiệm MSP‐EXP430FG4618 14 | P a g e Bộ môn Kỹ Thuật Điện Tử, khoa Điện‐Điện Tử, trường ĐHBK‐ĐHQG TP.HCM Soạn: Hoàng Trang, Bùi Quốc Bảo. (lưu ý: bước này trình bày theo bản cài đặt trên Windows 7, trên các hệ điều hành khác, chi tiết trong bước 1 có thể khác) Start/All Programs/IAR Systems/ IAR Embeeded Workbench Kickstart for MSP430 4.21/ IAR Embeeded Workbench. Sau đó, giao diện hiện như sau: Bước 2: Từ cửa sổ giao diện chính, chọn Project/ Create New Project … Sau đó, giao diện sau sẽ hiện ra và ta qua bước 3 Bước 3: chọn ngôn ngữ sử dụng. Trong thí nghiệm này, chúng ta chọn Empty project hoặc C/main và click OK. Ở đây, trình bày lựa chọn Empty project CuuDuongThanCong.com https://fb.com/tailieudientucntt CuuDuongThanCong.com https://fb.com/tailieudientucntt
  • 15. Tài liệu hướng dẫn thí nghiệm MSP‐EXP430FG4618 15 | P a g e Bộ môn Kỹ Thuật Điện Tử, khoa Điện‐Điện Tử, trường ĐHBK‐ĐHQG TP.HCM Soạn: Hoàng Trang, Bùi Quốc Bảo. Cửa sổ Save As như sau hiện ra để lưu tên project, đường dẫn project và ta qua bước 4. Bước 4: Chọn đường dẫn muốn lưu project và tên Project. Trong ví dụ này, tên project là lab1 và được lưu trong thư mục “my lab”. Nếu ở bước 3 chọn Empty project thì có giao diện sau: CuuDuongThanCong.com https://fb.com/tailieudientucntt CuuDuongThanCong.com https://fb.com/tailieudientucntt
  • 16. Tài liệu hướng dẫn thí nghiệm MSP‐EXP430FG4618 16 | P a g e Bộ môn Kỹ Thuật Điện Tử, khoa Điện‐Điện Tử, trường ĐHBK‐ĐHQG TP.HCM Soạn: Hoàng Trang, Bùi Quốc Bảo. Bước 5: thiết lập các tùy chọn: vi điều khiển, debug, file nạp,…. Chọn Project/Option… (hoặc Alt+F7) + Trong mục General Options -> chọn tab Target -> chọn MSP430FG4618 (các bước như trong hình sau) CuuDuongThanCong.com https://fb.com/tailieudientucntt CuuDuongThanCong.com https://fb.com/tailieudientucntt
  • 17. Tài liệu hướng dẫn thí nghiệm MSP‐EXP430FG4618 17 | P a g e Bộ môn Kỹ Thuật Điện Tử, khoa Điện‐Điện Tử, trường ĐHBK‐ĐHQG TP.HCM Soạn: Hoàng Trang, Bùi Quốc Bảo. Tiếp tục, chọn các tab khác để thiết lập như sau (các lựa chọn còn lại, vui lòng xem help hoặc hỏi người soạn tài liệu này để rõ hơn) Trong tab Output: chọn Output file: Executable Trong tab Library Configuration: chọn Library: CLIB + Trong mục C/C++ Compiler: CuuDuongThanCong.com https://fb.com/tailieudientucntt CuuDuongThanCong.com https://fb.com/tailieudientucntt
  • 18. Tài liệu hướng dẫn thí nghiệm MSP‐EXP430FG4618 18 | P a g e Bộ môn Kỹ Thuật Điện Tử, khoa Điện‐Điện Tử, trường ĐHBK‐ĐHQG TP.HCM Soạn: Hoàng Trang, Bùi Quốc Bảo. Trong tab Optimizations: chọn level: None (để hỗ trợ tối đa quá trình debug) Trong tab List: chọn Output list file: Assembler mnemonics + Trong mục Debugger: Trong tab Setup: chọn Driver: FET Debugger CuuDuongThanCong.com https://fb.com/tailieudientucntt CuuDuongThanCong.com https://fb.com/tailieudientucntt
  • 19. Tài liệu hướng dẫn thí nghiệm MSP‐EXP430FG4618 19 | P a g e Bộ môn Kỹ Thuật Điện Tử, khoa Điện‐Điện Tử, trường ĐHBK‐ĐHQG TP.HCM Soạn: Hoàng Trang, Bùi Quốc Bảo. Tiếp đến, trong FET Debugger: Trong tab Setup: chọn Connection: Texas Instrument USB-IF. Xong các chọn lựa ở trên trong bước 5, click OK để lưu lại tùy chọn. Chúng ta qua bước 6. Bước 6: tạo file lập trình File/ New/File, sẽ có giao diện sau: CuuDuongThanCong.com https://fb.com/tailieudientucntt CuuDuongThanCong.com https://fb.com/tailieudientucntt
  • 20. Tài liệu hướng dẫn thí nghiệm MSP‐EXP430FG4618 20 | P a g e Bộ môn Kỹ Thuật Điện Tử, khoa Điện‐Điện Tử, trường ĐHBK‐ĐHQG TP.HCM Soạn: Hoàng Trang, Bùi Quốc Bảo. Kế tiếp, chúng ta cần viết chương trình trong cửa sổ soạn thảo bên phải. Trong hướng dẫn này, ví dụ nhập code như sau: /************************************************/ /* Huong dan IAR */ /* Bo mon Dien Tu-khoa D-DT-truong DH Bach Khoa */ /***********************************************/ #include <msp430xG46x.h> void main (void){ volatile unsigned int i; WDTCTL = WDTPW | WDTHOLD; // Dung Watchdog Timer P2DIR |= 0x04; // P2.2: Output while(1){ // lap vo tan i=30000; // Delay do (i--); while (i !=0); P2OUT ^= 0x04; // Dao pin P2.2 bang cach dung exclusive-OR } } Và chúng ta có kết quả như sau: CuuDuongThanCong.com https://fb.com/tailieudientucntt CuuDuongThanCong.com https://fb.com/tailieudientucntt
  • 21. Tài liệu hướng dẫn thí nghiệm MSP‐EXP430FG4618 21 | P a g e Bộ môn Kỹ Thuật Điện Tử, khoa Điện‐Điện Tử, trường ĐHBK‐ĐHQG TP.HCM Soạn: Hoàng Trang, Bùi Quốc Bảo. Sau đó, chúng ta lưu file bằng: File/Save. Cửa sổ sau sẽ hiện ra để nhập tên và định dạng file. Chúng ta lưu file: “lab1.c”. CuuDuongThanCong.com https://fb.com/tailieudientucntt CuuDuongThanCong.com https://fb.com/tailieudientucntt
  • 22. Tài liệu hướng dẫn thí nghiệm MSP‐EXP430FG4618 22 | P a g e Bộ môn Kỹ Thuật Điện Tử, khoa Điện‐Điện Tử, trường ĐHBK‐ĐHQG TP.HCM Soạn: Hoàng Trang, Bùi Quốc Bảo. File “lab1.c” này nằm trong thư mục mylab, mà chưa được đưa vào project lab1. Để đưa file “lab1.c” vào project để dùng, ta cần: Project/Add file…, một cửa sổ hiện ra và chọn “lab1.c” như giao diện sau: Lúc này, trong cửa sổ làm việc project sẽ như sau: CuuDuongThanCong.com https://fb.com/tailieudientucntt CuuDuongThanCong.com https://fb.com/tailieudientucntt
  • 23. Tài liệu hướng dẫn thí nghiệm MSP‐EXP430FG4618 23 | P a g e Bộ môn Kỹ Thuật Điện Tử, khoa Điện‐Điện Tử, trường ĐHBK‐ĐHQG TP.HCM Soạn: Hoàng Trang, Bùi Quốc Bảo. Bước 7: biên dịch file lập trình Thực hiện: Project/Compile (hoặc Ctrl + F7), lúc này IAR sẽ yêu cầu lưu lại Workspace làm việc với giao diện sau. Nhập tên Workspace, trong hướng dẫn này, là lab.eww Sauk hi lưu Workspace, quá trình biên dịch sẽ được thực hiện. Nếu không có lỗi thì sẽ hiện ra thông báo như sau (còn trong trường hợp lỗi, vì không thể trình bày hết mọi thứ, vui lòng tự sửa lỗi, hay hỏi người hướng dẫn. Chúc may mắn!) CuuDuongThanCong.com https://fb.com/tailieudientucntt CuuDuongThanCong.com https://fb.com/tailieudientucntt
  • 24. Tài liệu hướng dẫn thí nghiệm MSP‐EXP430FG4618 24 | P a g e Bộ môn Kỹ Thuật Điện Tử, khoa Điện‐Điện Tử, trường ĐHBK‐ĐHQG TP.HCM Soạn: Hoàng Trang, Bùi Quốc Bảo. Bước 8: lập trình-debug cho chip Thực hiện Project/Download and Debug (hoặc Ctrl+D). Để thấy kết quả thực hiện trên kit: Debug/Go (hoặc F5) Trên đây là các bước cơ bản, chắc hẳn chúng ta khi thực hiện sẽ gặp 1 số lỗi nào đó. Vì khuôn khổ giới hạn và người soạn cũng không có tham vọng trình bày hết mọi thứ trong hướng dẫn này, do đó, nếu có lỗi, vui lòng tự tìm hiểu hoặc hỏi người hướng dẫn. Chúc may mắn! Kế tiếp, chúc các bạn vui vẻ khi thực hiện các bài lab sau. CuuDuongThanCong.com https://fb.com/tailieudientucntt CuuDuongThanCong.com https://fb.com/tailieudientucntt
  • 25. Tài liệu hướng dẫn thí nghiệm MSP‐EXP430FG4618 25 | P a g e Bộ môn Kỹ Thuật Điện Tử, khoa Điện‐Điện Tử, trường ĐHBK‐ĐHQG TP.HCM Soạn: Hoàng Trang, Bùi Quốc Bảo. V. Các bài thí nghiệm: Chúng ta sẽ đi qua 3 bài thí nghiệm được thực hiện trong 3 buổi thí nghiệm như sau Bài 1: GPIO Lý thuyết 1) Các thanh ghi liên quan đến GPIO: 1.1 Direction Register PxDIR (P1DIR, P2DIR): Đây là các thanh ghi 8 bit điều khiển chiều của 8 chân port. P1DIR điều khiển PORT1, P2DIR điều khiển PORT2.  Bit = 1: Chân PORT tương ứng được cấu hình thành output  Bit = 0: Chân PORT tương ứng được cấu hình thành input 1.2 Input Register (PxIN): Đây là các thanh ghi 8 bit chứa giá trị đọc được từ các chân PORT.  Bit = 1: Chân PORT tương ứng ở mức cao  Bit = 0: Chân PORT tương ứng ở mức thấp. 1.3 Output Register (PxOUT): Đây là thanh ghi điều khiển ngõ ra của các PORT.  Bit = 1: Xuất mức cao ra chân PORT tương ứng.  Bit = 0: Xuất mức thấp ra chân PORT tương ứng. 1.4 Function Select Register: Đây là thanh ghi chọn chức năng cho chân PORT. Mỗi chân PORT có thể cấu hình chọn chức năng Input/Output hay là chức năng đặc biệt khác.  Bit = 1: Chọn chức năng đặc biệt.  Bit = 0: Chọn chức năng GPIO. 1.5 Các thanh ghi cấu hình ngắt cho các chân PORT: Mỗi chân PORT của MSP430 đều có thể dùng để tạo ngắt. Các ngắt này được cấu hình thông qua các thanh ghi PxIFG, PxIE, PxIES. 1.5.1 Interrupt enable Register (PxIE) : Mỗi bit trong thanh ghi này dùng để cho phép/không cho phép ngắt trên chân PORT tương ứng.  Bit = 1: Cho phép ngắt.  Bit = 0: Cấm ngắt. 1.5.2 Interrupt Edge Select Registers (PxIES): Dùng để chọn cạnh của tín hiệu ngắt CuuDuongThanCong.com https://fb.com/tailieudientucntt CuuDuongThanCong.com https://fb.com/tailieudientucntt
  • 26. Tài liệu hướng dẫn thí nghiệm MSP‐EXP430FG4618 26 | P a g e Bộ môn Kỹ Thuật Điện Tử, khoa Điện‐Điện Tử, trường ĐHBK‐ĐHQG TP.HCM Soạn: Hoàng Trang, Bùi Quốc Bảo.  Bit = 1: Ngắt tại cạnh xuống của tín hiệu.  Bit = 0: Ngắt tại cạnh lên của tín hiệu. 1.5.3 Interrupt Flag Registers (PxIFG): Thanh ghi này chứa các cờ ngắt. Các cờ này được tự đọng bật bởi phần cứng, phải được xóa bằng phần mềm. Các cờ này có thể được bật bằng phần mềm để cho phép ngắt.  Bit = 1: Một ngắt đang chờ xử lý.  Bit = 0: Không có ngắt nào đang chờ. 2) Các lưu ý khi viết chương trình cho lab này: a) Watchdog Timer Trong lab này, chúng ta không cần sử dụng Watchdog timer. Để tắt Watchdog timer, ghi giá trị 5A vào 8 bit cao của thanh ghi WDTCTL và set thứ 7 của thanh ghi WDTCTL. WDTCTL = 0x5A00 | 0x0080 Hoặc: (WDTCTL = WDTPW | WDTHOLD ) b) Delay: Bởi vì trong chương trình chưa định nghĩa clock nên CPU sẽ sử dụng thạch anh 32.768 kHz. Để có thời gian delay khoảng 1s, vòng delay sẽ đếm xuống từ 30.000 SV có thể dùng câu lệnh dưới đây để tạo delay: for(int i=30000;i>0;i++); CuuDuongThanCong.com https://fb.com/tailieudientucntt CuuDuongThanCong.com https://fb.com/tailieudientucntt
  • 27. Tài liệu hướng dẫn thí nghiệm MSP‐EXP430FG4618 27 | P a g e Bộ môn Kỹ Thuật Điện Tử, khoa Điện‐Điện Tử, trường ĐHBK‐ĐHQG TP.HCM Soạn: Hoàng Trang, Bùi Quốc Bảo. 3. Thực hành Lab1A: Cho 2 LED 1 và LED2 sáng tắt luân phiên. Yêu cầu: Sinh viên viết chương trình cho 2 LED sáng tắt luân phiên. Thời gian giữa 2 lần sáng tắt là khoảng 1s. Project file: File mẫu: Lab1_LED1_2_Blinky_Student LAB1_LED1_2_Blinky_Student.c File bài giải: Lab1_LED1_2_Blinky_Solution LAB1_LED1_2_Blinky_Solution.c Hình 1: Kết nối LED với MSP430 CPU a) Đọc hiểu sơ đồ và điền vào chỗ trống: Các LED được kết nối với CPU như trên hình 1. LED1 nối vào chân Port gì của CPU? LED1 nối vào chân Port gì của CPU? Để điều khiển LED, các chân port phải là input hay output? Để LED sáng, phải xuất giá trị gì ra chân port? b) Hoàn chỉnh chương trình bằng cách điền vào các chỗ trống: #include <msp430xG46x.h> void main (void){ volatile unsigned int i; CuuDuongThanCong.com https://fb.com/tailieudientucntt CuuDuongThanCong.com https://fb.com/tailieudientucntt
  • 28. Tài liệu hướng dẫn thí nghiệm MSP‐EXP430FG4618 28 | P a g e Bộ môn Kỹ Thuật Điện Tử, khoa Điện‐Điện Tử, trường ĐHBK‐ĐHQG TP.HCM Soạn: Hoàng Trang, Bùi Quốc Bảo. WDTCTL = ……… | ………; //Stop Watchdog Timer P2DIR |= …………………….; //Configure P2.1 and P2.2 as Output P2OUT &= ………………….; // Turn off LED1, LED2 P2OUT |= ……………………; // Turn on LED 1, turn off LED 2 while(1){ //Infinite loop i= …………………………..; //Delay do (i--); while (i !=0); //Toggle Port P2.1 and P2.2 using an exclusive-OR P2OUT ^= ………………………; } } CuuDuongThanCong.com https://fb.com/tailieudientucntt CuuDuongThanCong.com https://fb.com/tailieudientucntt
  • 29. Tài liệu hướng dẫn thí nghiệm MSP‐EXP430FG4618 29 | P a g e Bộ môn Kỹ Thuật Điện Tử, khoa Điện‐Điện Tử, trường ĐHBK‐ĐHQG TP.HCM Soạn: Hoàng Trang, Bùi Quốc Bảo. Lab1B: Đảo LED khi nhấn SW1 Yêu cầu: Sinh viên viết chương trình để đảo trạng thái LED1 mỗi khi SW1 được nhấn. File mẫu: Lab1_SW_Toggle_LED_Student Lab1_SW_Toggle_LED_Student.c File bài giải: Lab1_SW_Toggle_LED_Solution Lab1_SW_Toggle_LED_Solution.c a) Đọc hiểu sơ đồ và điền vào chỗ trống: Các SW được kết nối với CPU như trên hình 1. SW1 nối vào chân Port gì của CPU? SW2 nối vào chân Port gì của CPU? Để đọc trạng thái switch, các chân port phải là input hay output? b) Hoàn chỉnh chương trình bằng cách điền vào các chỗ trống: #include <msp430xG46x.h> void main (void){ volatile unsigned int i; WDTCTL = ??; //Stop Watchdog Timer P2DIR |= ??; //Configure P2.2 as Output (LED1) P1DIR &= ??; //Configure P1.0 as Input (S1) CuuDuongThanCong.com https://fb.com/tailieudientucntt CuuDuongThanCong.com https://fb.com/tailieudientucntt
  • 30. Tài liệu hướng dẫn thí nghiệm MSP‐EXP430FG4618 30 | P a g e Bộ môn Kỹ Thuật Điện Tử, khoa Điện‐Điện Tử, trường ĐHBK‐ĐHQG TP.HCM Soạn: Hoàng Trang, Bùi Quốc Bảo. while (1) { while ((P1IN & 0x01)); //Wait for the press of the button P2OUT ^= ??; //Toggle Port P2.2 for(??); //Delay, button debounce while (??); //Wait for the release of the button for(??); //Delay, button debounce } } CuuDuongThanCong.com https://fb.com/tailieudientucntt CuuDuongThanCong.com https://fb.com/tailieudientucntt
  • 31. Tài liệu hướng dẫn thí nghiệm MSP‐EXP430FG4618 31 | P a g e Bộ môn Kỹ Thuật Điện Tử, khoa Điện‐Điện Tử, trường ĐHBK‐ĐHQG TP.HCM Soạn: Hoàng Trang, Bùi Quốc Bảo. Lab1C: Đảo LED khi nhấn Switch, sử dụng ngắt Yêu cầu: Sinh viên viết chương trình đảo trạng thái LED1 khi Switch 1 được nhấn. Trong chương trình sử dụng ngắt trên chân port giao tiếp Switch. File mẫu: Lab1_SW_Toggle_LED_Interrupt_StudentLab1_SW_Toggle_LED_ Interrupt_Student.c File bài giải: Lab1_SW_Toggle_LED_Interrupt_SolutionLab1_SW_Toggle_LED_Interrupt_Solution.c a) Lý thuyết: MSP430 được thiết kế để làm việc với các ứng dụng công suất thấp. Vì vậy CPU thường ở trạng thái “off” trong phần lớn thời gian. Để đưa CPU vào trạng thái “off”, các bit SCG1, SCG0 và CPUOFF trong thanh ghi SR được set. Một ngắt xảy ra sẽ đánh thức CPU. Khi đó thanh ghi SR được lưu vào stack và CPU thực thi ISR. Khi thoát khỏi ISR, thanh ghi SR được lấy ra từ stack và làm cho CPU tắt trở lại.  Đưa CPU vào trạng thái công suất thấp và cho phép ngắt: Bit GIE trong thanh ghi SR khi được set sẽ cho phép ngắt. Ta đưa CPU vào trạng thái công suất thấp, cho phép ngắt bằng lệnh: _BIS_SR (LPM3_bits + GIE); Trong đó: LPM3_bits = (SCG1+SCG0+CPUOFF)  Định nghĩa chương trình phục vụ ngắt (ISR): Ta định nghĩa 1 ISR tại vector ngắt ISR_VECTOR bằng cấu trúc sau: #pragma vector=ISR_VECTOR __interrupt void myISR (void) { ……………………… } b) Thực hành: 1. Đọc hiểu sơ đồ và điền vào chỗ trống: CuuDuongThanCong.com https://fb.com/tailieudientucntt CuuDuongThanCong.com https://fb.com/tailieudientucntt
  • 32. Tài liệu hướng dẫn thí nghiệm MSP‐EXP430FG4618 32 | P a g e Bộ môn Kỹ Thuật Điện Tử, khoa Điện‐Điện Tử, trường ĐHBK‐ĐHQG TP.HCM Soạn: Hoàng Trang, Bùi Quốc Bảo. Các SW được kết nối với CPU như trên hình 1.  SW1 nối vào chân Port gì của CPU?  Khi Switch được nhấn, sẽ có chuyển trạng thái như thế nào trên chân PORT?  Để cho phép ngắt trên chân P1.0, ta phải ghi ……….. vào bit…….của thanh ghi …………….?  Để chọn cạnh xuống cho ngắt trên chân P1.0, ta phải ghi ……….. vào bit…….của thanh ghi …………….? 2. Hoàn chỉnh chương trình bằng cách điền vào các chỗ trống: #include <msp430xG46x.h> #pragma vector=?? __interrupt void Port_1 (void) { //define an interrupt service routine at 0xFFE8 volatile unsigned int i; P2OUT ^= …………………………………….; //Toggle Port P2.2 for(……………………………………...); //Delay, button debounce while (………………………………….); //Wait for the release of the button for(…………………………..); //Delay, button debounce P1IFG &= ~0x01; //Clean P1.0 Interrupt Flag (bit 0 of P1IFG register) } void main (void){ WDTCTL = ……………………………………….; //Stop Watchdog Timer P2DIR |= ……………………….; //Configure P2.2 as Output (LED1) P1DIR &= ……………………..; //Configure P1.0 as Input (S1) P1IE |= ………………………; //Interrupt Enable in P1.0 P1IES |= …………………; //P1.0 Interrupt flag high-to-low transition _BIS_SR (……………………); //Low Power Mode with interrupts enabled } High to Low Low to High CuuDuongThanCong.com https://fb.com/tailieudientucntt CuuDuongThanCong.com https://fb.com/tailieudientucntt
  • 33. Tài liệu hướng dẫn thí nghiệm MSP‐EXP430FG4618 33 | P a g e Bộ môn Kỹ Thuật Điện Tử, khoa Điện‐Điện Tử, trường ĐHBK‐ĐHQG TP.HCM Soạn: Hoàng Trang, Bùi Quốc Bảo. Bài 2: TIMER Mục tiêu: Sau lab này, sinh viên sẽ nắm kiến thức cơ bản về các nguồn xung nhịp của MSP430 và Basic Timer 1 module. 1. Lý thuyết Để câú hình cho timer, đầu tiên bộ FLL+ tạo xung nhịp phải được cấu hình trước để chọn xung nhịp đưa vào timer. Sau đó các giá trị thích hợp sẽ được đưa vào các thanh ghi cấu hình cho timer để làm timer hoạt động theo chế độ mong muốn. Timer của MSP430x4xxx: MSP430x4xx có 3 timer. Các timer này là: CuuDuongThanCong.com https://fb.com/tailieudientucntt CuuDuongThanCong.com https://fb.com/tailieudientucntt
  • 34. Tài liệu hướng dẫn thí nghiệm MSP‐EXP430FG4618 34 | P a g e Bộ môn Kỹ Thuật Điện Tử, khoa Điện‐Điện Tử, trường ĐHBK‐ĐHQG TP.HCM Soạn: Hoàng Trang, Bùi Quốc Bảo.  Basic Timer 1  Timer_A  Timer_B 1.1 Basic Timer 1 Module: Hình 2.1: Sơ đồ khối của Basic Timer 1 1.1.1 Basic Timer1 Counter 1 (BTCNT1): Dùng để taọ tần số frame (frame frequency) cho bộ điều khiển LCD (LCD Controller) Là thanh ghi 8 bit, có thể ghi/đọc Nguồn clock: ACLK Hệ số chia cho clock ngõ ra (fLCD) được chọn bởi các bit BTFRFQx trong thanh ghi BTCTL. FLCD = ACLK / x 1.1.2 Basic Timer1 Counter 2 (BTCNT2): CuuDuongThanCong.com https://fb.com/tailieudientucntt CuuDuongThanCong.com https://fb.com/tailieudientucntt
  • 35. Tài liệu hướng dẫn thí nghiệm MSP‐EXP430FG4618 35 | P a g e Bộ môn Kỹ Thuật Điện Tử, khoa Điện‐Điện Tử, trường ĐHBK‐ĐHQG TP.HCM Soạn: Hoàng Trang, Bùi Quốc Bảo. Là bộ chia tần số có khả năng tạo ngắt, dùng để taọ những ngắt theo chu kỳ cho CPU hoặc tạo thành hệ thống đồng hồ thời gian thực. Là thanh ghi 8 bit, có thể ghi/đọc Nguồn clock: ACLK, SMCLK, hoặc SMCLK/256 khi mắc nối tiếp với BTCNT1 Hệ số chia cho clock ngõ ra (fLCD) được chọn bởi các bit BTFRFQx trong thanh ghi BTCTL. Dùng để tạo ngắt Basic Timer 1 Interrupt BTIFG, thời gian ngắt được chọn bởi các bit BTIPx trong thanh ghi BTCTL. 1.1.3 Các thanh ghi cho Basic Timer 1 Module: 1.1.3.1 BTCTL, Basic Timer 1 Control Register: CuuDuongThanCong.com https://fb.com/tailieudientucntt CuuDuongThanCong.com https://fb.com/tailieudientucntt
  • 36. Tài liệu hướng dẫn thí nghiệm MSP‐EXP430FG4618 36 | P a g e Bộ môn Kỹ Thuật Điện Tử, khoa Điện‐Điện Tử, trường ĐHBK‐ĐHQG TP.HCM Soạn: Hoàng Trang, Bùi Quốc Bảo. 1.1.3.2 IE2, Interrupt Enable Register 2: 1.1.3.3 IFG2, Interrupt Flag Register 2: 1.2 Các nguồn xung nhịp: Xung nhịp hệ thống của MSP430x4xx được định nghĩa bởi bộ khóa tần số FLL+ (Frequency Locked Loop). FLL+ có thể làm việc với thạch anh gắn ngoài hay bộ dao động nội. FLL+ gồm có 3 nguồn : LFXT1CLK: Bộ dao động có khả năng tạo xung nhịp tốc độ thấp với thạch anh đồng hồ 32.768 Hz, hoặc xung nhịp tốc độ cao với thạch anh, resonance hay nguồn xung nhịp ngoài với tần số từ 450Khz-8Mhz. XT2CLK: Bộ dao động có khả năng tạo xung nhịp tốc độ cao với thạch anh, resonance hay nguồn xung nhịp ngoài với tần số từ 450Khz-8Mhz. DCOCLK: Bộ dao động R-C nội, được ổn định tần số bởi FLL. Có 4 tín hiệu xung nhịp được tạo ra:  Master Clock (MCLK): Được chọn bởi phần mềm từ các nguồn LFXT1CLK, XT2CLK hoặc DCO. MCLK có thể được chia bởi các hệ số 1, 2, 4, 8 trước khi sử dụng. MCLK được sử dụng bởi CPU và hệ thống.  Sub-System Main Clock (SMCLK): Được chọn bởi phần mềm giữa XT2CLK và DCOCLK. SMCLK có thể được chọn bằng phần mềm cho các ngoại vi.  Auxiliary Clock (ACLK): ACLK được taọ ra từ LFXT1CLK, có thể được chọn bằng phần mềm cho ngoại vi.  Buffered Auxiliary Clock (ACLK/n): Là ngõ ra được đệm của ACLK. ACLK/n chính là ACLK chia cho hệ số chia 1, 2, 4, 8 và được sử dụng cho các ngoại vi bên ngoài. CuuDuongThanCong.com https://fb.com/tailieudientucntt CuuDuongThanCong.com https://fb.com/tailieudientucntt
  • 37. Tài liệu hướng dẫn thí nghiệm MSP‐EXP430FG4618 37 | P a g e Bộ môn Kỹ Thuật Điện Tử, khoa Điện‐Điện Tử, trường ĐHBK‐ĐHQG TP.HCM Soạn: Hoàng Trang, Bùi Quốc Bảo. Sau khi reset, MCLK và SMCLK được lấy từ DCOCLK ở tần số gấp 32 lần ACLK. Nếu bộ dao động LFXT1CLK sử dụng thạch anh 32.768 Hz, tần số của MCLK và SMCLK sẽ là 1.048576 Mhz..  Hình 2.2: Sơ đồ khối bộ tạo xung nhịp 1.2.1 Các bộ tạo dao động: 1.2.1.1 Low/High Frequency Oscillator (LFXT1): CuuDuongThanCong.com https://fb.com/tailieudientucntt CuuDuongThanCong.com https://fb.com/tailieudientucntt
  • 38. Tài liệu hướng dẫn thí nghiệm MSP‐EXP430FG4618 38 | P a g e Bộ môn Kỹ Thuật Điện Tử, khoa Điện‐Điện Tử, trường ĐHBK‐ĐHQG TP.HCM Soạn: Hoàng Trang, Bùi Quốc Bảo. Bộ dao động này có thể được dùng để tạo xung nhịp tốc độ thấp (low speed) từ thạch anh đồng hồ (tần số 32.768 Mhz) hoặc xung nhịp tốc độ cao (high speed) từ thạch anh ngoài hoặc bộ dao động ngoài với tầm từ 450 Khz đến 8 Mhz. Bit XTS_FLL trong thanh ghi FLL_CTL0 dùng để chọn lựa chế độ hoạt động của LFXT1.  XTS_FLL = 0 : Low speed  XTS_FLL = 1: High Speed Giá trị tụ điện bên trong của bộ dao động (1, 6, 8, 10pF) được chọn bởi các bit XCAPxPF. Bộ dao động LFXT1 có thể được tắt bằng cách set bit OSCOFF lên 1 nếu LFXT1 không được chọn để tạo nguồn cho MCLK (SELM # 3 hoặc CPUOFF = 1). 1.2.1.2 High Frequency Oscillator (XT2): Bộ dao động XT2 dùng thạch anh ngoài để tạo dao động tần số cao XT2CLK. Bộ dao động XT2 không có tụ bên trong, vì vậy tụ ngoài sẽ cần được sử dụng khi giao tiếp thạch anh. Bộ dao động XT2 có thể được tắt bằng cách set bit XT2OFF lên 1 nếu XT2CLK không được chọn để tạo nguồn cho MCLK (SELM # 2 hoặc CPUOFF = 1) và SMCLK (SELS = 0 hoặc SMCLKOFF = 1). 1.2.1.3 Bộ dao động nội DCO: Bộ dao động DCO dùng FLL để nhân tín hiệu ACLK lên (N+1) lần, với N là 7 bit thấp của thanh ghi SCFQCTL. Bit DCOPLUS chọn tần số fDCOCLK bằng fDCO hoặc fDCO/D. Số chia D bằng 1, 2, 4, 8 và được chọn bởi các bit FLLDx. Sau khi reset, DCOPLUS bằng 0 và D bằng 2.  DCOPLUS = 0: fDCOCLK = (N+1) x fACLK.  DCOPLUS = 1: fDCOCLK = D x (N+1) x fACLK. Giới hạn tần số của DCO Giới hạn tần số dao động của DCO được chọn bởi các bit FNx. Người lập trình phải đảm bảo tần số của MCLK không vượt quá tần số hoạt động cao nhất của DCO. CuuDuongThanCong.com https://fb.com/tailieudientucntt CuuDuongThanCong.com https://fb.com/tailieudientucntt
  • 39. Tài liệu hướng dẫn thí nghiệm MSP‐EXP430FG4618 39 | P a g e Bộ môn Kỹ Thuật Điện Tử, khoa Điện‐Điện Tử, trường ĐHBK‐ĐHQG TP.HCM Soạn: Hoàng Trang, Bùi Quốc Bảo. 1.2.2 Các thanh ghi điều khiển clock: 1.2.2.1 SCFQCTL, System Clock Control Register : CuuDuongThanCong.com https://fb.com/tailieudientucntt CuuDuongThanCong.com https://fb.com/tailieudientucntt
  • 40. Tài liệu hướng dẫn thí nghiệm MSP‐EXP430FG4618 40 | P a g e Bộ môn Kỹ Thuật Điện Tử, khoa Điện‐Điện Tử, trường ĐHBK‐ĐHQG TP.HCM Soạn: Hoàng Trang, Bùi Quốc Bảo. 1.2.2.2 SCFI0, System Clock Frequency Integrator Register 0 : 1.2.2.3 SCFI1, System Clock Frequency Integrator Register 1: CuuDuongThanCong.com https://fb.com/tailieudientucntt CuuDuongThanCong.com https://fb.com/tailieudientucntt
  • 41. Tài liệu hướng dẫn thí nghiệm MSP‐EXP430FG4618 41 | P a g e Bộ môn Kỹ Thuật Điện Tử, khoa Điện‐Điện Tử, trường ĐHBK‐ĐHQG TP.HCM Soạn: Hoàng Trang, Bùi Quốc Bảo. 1.2.2.4 FLL_CTL0, FLL+ Control Register 0: CuuDuongThanCong.com https://fb.com/tailieudientucntt CuuDuongThanCong.com https://fb.com/tailieudientucntt
  • 42. Tài liệu hướng dẫn thí nghiệm MSP‐EXP430FG4618 42 | P a g e Bộ môn Kỹ Thuật Điện Tử, khoa Điện‐Điện Tử, trường ĐHBK‐ĐHQG TP.HCM Soạn: Hoàng Trang, Bùi Quốc Bảo. 1.2.2.5 FLL_CTL1, FLL+ Control Register 1: CuuDuongThanCong.com https://fb.com/tailieudientucntt CuuDuongThanCong.com https://fb.com/tailieudientucntt
  • 43. Tài liệu hướng dẫn thí nghiệm MSP‐EXP430FG4618 43 | P a g e Bộ môn Kỹ Thuật Điện Tử, khoa Điện‐Điện Tử, trường ĐHBK‐ĐHQG TP.HCM Soạn: Hoàng Trang, Bùi Quốc Bảo. 1.3 Các chế độ hoạt động: MSP430 được thiết kế để hoạt động ở chế độ công suất thấp. Các chế độ hoạt động được cấu hình bởi các bit CPUOFF, OSCOFF, SCG0, và SCG1 trong thanh ghi trạng thái SR. CuuDuongThanCong.com https://fb.com/tailieudientucntt CuuDuongThanCong.com https://fb.com/tailieudientucntt
  • 44. Tài liệu hướng dẫn thí nghiệm MSP‐EXP430FG4618 44 | P a g e Bộ môn Kỹ Thuật Điện Tử, khoa Điện‐Điện Tử, trường ĐHBK‐ĐHQG TP.HCM Soạn: Hoàng Trang, Bùi Quốc Bảo. 2. Thực hành: 2.1 Lab 2A: Đảo LED sử dụng Basic Timer 1 File mẫu: Lab2_Timer_Toggle_LED Lab2_Timer_Toggle_LED_Solution.c Lab2_Timer_Toggle_LED Lab2_Timer_Toggle_LED_Solution.c Yêu cầu: Sinh viên viết chương trình đảo trạng thái LED1 và LED2 sau thời gian 1s, sử dụng ngắt Basic Timer 1 Interrupt. 2.1.1 Trả lời các câu hỏi: Vô hiệu hóa Watchdog Timer Để vô hiệu hóa Watchdog Timer, ta phải ghi vào thanh ghi WDTCTL giá trị gì? WDTCTL = ……………………………………………..; Câú hình FLL+: Một thạch anh tần số 32768 Hz đuợc nối vào bộ dao động LFXT1. Ta phải ghi vào thanh ghi FLL_CTL0 giá trị gì để chọn tụ bên trong có giá trị 8PF? FLL_CTL0 |= …………………………………………...; Với các thanh ghi khác ở giá trị mặc định, tần số của các tín hiệu xung nhịp sẽ bang bao nhiêu? ACLK = ………………………; MCLK = ………………………; SMCLK = ……………………..; Cấu hình GPIO LED1 và LED2 được nối vào chân P2.2 và P2.1. Ta phải ghi vào thanh ghi nào với giá trị gì để cấu hình cho 2 chân PORT này thành output, còn lại là input? …………………. = ……………………………….; Ta phải ghi vào thanh ghi nào với giá trị gì để làm cho LED1 sáng, LED2 tắt? …………………. = ……………………………….; CuuDuongThanCong.com https://fb.com/tailieudientucntt CuuDuongThanCong.com https://fb.com/tailieudientucntt
  • 45. Tài liệu hướng dẫn thí nghiệm MSP‐EXP430FG4618 45 | P a g e Bộ môn Kỹ Thuật Điện Tử, khoa Điện‐Điện Tử, trường ĐHBK‐ĐHQG TP.HCM Soạn: Hoàng Trang, Bùi Quốc Bảo. Cấu hình cho Basic Timer 1: Ta dùng Basic Timer 1 để tạo ngắt. Basic timer gồm 2 bộ đếm mắc nối tiếp, trong đó ngõ vào của BTCNT2 là ngõ ra của BTCNT1 chia cho 256. (Tham khảo hình 2.1). Ngõ vào của BTCNT1 là tín hiệu ACLK có tần số 32768 Hz. Ngõ ra của BTCNT2 phải được chia cho bao nhiêu để có ngắt Basic Timer 1 có chu kỳ là 1s? …………….. Giá trị phải ghi vào các thanh ghi sau là bao nhiêu để có số chia cho BTCNT2 như trên và cho phép ngắt? BTCTL = ………………………………; IE2 = …………………………………...; Chế độ công suất thấp: Chương trình đơn giản đảo trạng thái LED1 và LED2 trong ngắt. Chế độ công suất thấp nào nên được sử dụng? ………………………. (Tham khảo phần 1.4: Các chế độ hoạt động) Khi đó, nguồn xung nhịp nào sẽ được tích cực trong suốt quá trình hoạt động?............................................. 2.1.2 Hoàn tất chương trình: #include <msp430xG46x.h> //***************************************************************** // Basic Timer interrupt service routine: refresh LCD with 0.5 sec //***************************************************************** #pragma vector=BASICTIMER_VECTOR __interrupt void basic_timer_ISR(void) { P2OUT ^=0x06; // LED2 toogle } //***************************************************************** // Main routine //***************************************************************** CuuDuongThanCong.com https://fb.com/tailieudientucntt CuuDuongThanCong.com https://fb.com/tailieudientucntt
  • 46. Tài liệu hướng dẫn thí nghiệm MSP‐EXP430FG4618 46 | P a g e Bộ môn Kỹ Thuật Điện Tử, khoa Điện‐Điện Tử, trường ĐHBK‐ĐHQG TP.HCM Soạn: Hoàng Trang, Bùi Quốc Bảo. void main(void) { WDTCTL = ....................; // Stop WDT FLL_CTL0 |= .................; // Set load cap for 32k xtal // Basic Timer 1 Configuration BTCTL = ....................; // (ACLK/256)/64 IE2 |= .......................; // Enable BT interrupt with 0.5 period // LED1 & LED2 configuration P2DIR = ......................; // P2.2 and P2.1 as digital output P2OUT = ......................; // LED1 on and LED2 off __bis_SR_register(LPM3_bits + GIE); // Enter LPM3 w/ interrupt } CuuDuongThanCong.com https://fb.com/tailieudientucntt CuuDuongThanCong.com https://fb.com/tailieudientucntt
  • 47. Tài liệu hướng dẫn thí nghiệm MSP‐EXP430FG4618 47 | P a g e Bộ môn Kỹ Thuật Điện Tử, khoa Điện‐Điện Tử, trường ĐHBK‐ĐHQG TP.HCM Soạn: Hoàng Trang, Bùi Quốc Bảo. 2.2 Lab 2B: Hiển thị số đếm lên LCD: Yêu cầu: Sinh viên viết chương trình hiển thị giá trị lần lượt từ 0 -> 9 lên led 7 đoạn P7 của LCD. Giá trị hiển thị tăng lên 1 sau 1 s. Nếu ấn SW2, chương trình ngừng đếm (giá trị ngừng tăng lên). Nếu ấn SW1, chương trình hoạt động bình thường. Chương trình sử dụng ngắt timer để hiển thị LCD, ngắt ngoài trên chân P2.1 và P2.2 để cho phép chương trình dừng đếm hay tiếp tục hoạt động. 2.2.1 Hướng dẫn: LCD sử dụng trên board có các phần tử hiển thị như sau: Các segment 7 đoạn được đánh số từ P1 -> P8. Ta sẽ hiển thị các thông số giờ - phút – giây lên các segment 7 đoạn từ P7 -> P2. LCD được điều khiển bởi LCD Controller bên trong MSP430. Để cho đơn giản, sinh viên được cho sẵn các hàm khởi tạo LCD và các macro để hiển thị số lên LCD. Các macro điều khiển LCD được cho trong file LCD_defs.h. Trong đó: P1_NULL nghĩa là LED 7 đoạn P1 tắt. P1_A0 nghĩa là LED 7 đoạn P1 hiển thị số 0. Các macro khác hoàn toàn tương tự. P1 P7 CuuDuongThanCong.com https://fb.com/tailieudientucntt CuuDuongThanCong.com https://fb.com/tailieudientucntt
  • 48. Tài liệu hướng dẫn thí nghiệm MSP‐EXP430FG4618 48 | P a g e Bộ môn Kỹ Thuật Điện Tử, khoa Điện‐Điện Tử, trường ĐHBK‐ĐHQG TP.HCM Soạn: Hoàng Trang, Bùi Quốc Bảo. Hình 2.3: Sơ đồ kết nối SW1 và SW2 2.2.2 Trả lời các câu hỏi:  SW1 nối vào chân Port gì của CPU?  SW2 nối vào chân Port gì của CPU?  Khi Switch được nhấn, sẽ có chuyển trạng thái như thế nào trên chân PORT?  Để cho phép ngắt trên chân P1.0 và P1.1, ta phải ghi ……….. vào bit…….của thanh ghi …………….?  Để chọn cạnh xuống cho ngắt trên chân P1.0, ta phải ghi ……….. vào bit…….của thanh ghi …………….?  Trong chương trình phục vụ ngắt, dựa vào cờ ……………….. trong thanh ghi ……………………………. để phân biệt ngắt cho SW1 hay SW2?  Để xóa các cờ ngắt ngoài, ta phải ghi giá trị …………..vào các thanh ghi ………………?  Dừng đếm hoặc cho phép đếm được thực hiện bằng cách cho phép / cấm ngắt basic timer. Ta cho phép/cấm ngắt basic timer bằng cách ghi ……………/………….. vào thanh ghi gì? 2.2.3 Hoàn chỉnh chương trình bằng cách điền vào chỗ trống: High to Low Low to High CuuDuongThanCong.com https://fb.com/tailieudientucntt CuuDuongThanCong.com https://fb.com/tailieudientucntt
  • 49. Tài liệu hướng dẫn thí nghiệm MSP‐EXP430FG4618 49 | P a g e Bộ môn Kỹ Thuật Điện Tử, khoa Điện‐Điện Tử, trường ĐHBK‐ĐHQG TP.HCM Soạn: Hoàng Trang, Bùi Quốc Bảo. #include <msp430xG46x.h> #include "LCD_defs.h" //****************************************************************** // Global data //****************************************************************** unsigned char number; void LCD_write_number(char num) { switch (num) { case 1: P7_A1; break; case 2: ...................................; break; case 3: ...................................; break; case 4: ...................................; break; case 5: ...................................; break; case 6: ...................................; break; case 7: ...................................; break; case 8: ...................................; CuuDuongThanCong.com https://fb.com/tailieudientucntt CuuDuongThanCong.com https://fb.com/tailieudientucntt
  • 50. Tài liệu hướng dẫn thí nghiệm MSP‐EXP430FG4618 50 | P a g e Bộ môn Kỹ Thuật Điện Tử, khoa Điện‐Điện Tử, trường ĐHBK‐ĐHQG TP.HCM Soạn: Hoàng Trang, Bùi Quốc Bảo. break; case 9: ...................................; break; case 0: ...................................; break; } } //****************************************************************** //LCD clean. All segments are turnned off //****************************************************************** void LCD_all_off(void) { LCDM2 = 0x00; LCDM3 = 0x00; LCDM4 = 0x00; LCDM5 = 0x00; LCDM6 = 0x00; LCDM7 = 0x00; LCDM8 = 0x00; LCDM9 = 0x00; LCDM10 = 0x00; LCDM11 = 0x00; LCDM12 = 0x00; LCDM13 = 0x00; } //****************************************************************** CuuDuongThanCong.com https://fb.com/tailieudientucntt CuuDuongThanCong.com https://fb.com/tailieudientucntt
  • 51. Tài liệu hướng dẫn thí nghiệm MSP‐EXP430FG4618 51 | P a g e Bộ môn Kỹ Thuật Điện Tử, khoa Điện‐Điện Tử, trường ĐHBK‐ĐHQG TP.HCM Soạn: Hoàng Trang, Bùi Quốc Bảo. // Port1 interrupt service routine: toogle LCD page //****************************************************************** #pragma vector=PORT1_VECTOR __interrupt void PORT1_ISR (void) { int i; if (P1IFG & ......................) //check if P1IFG.0 = 1 { IE2 = ...............................; // disable basic timer 1 interrupt } if (P1IFG & ......................) //check if P1IFG.1 = 1 { IE2 = ..........................; // enable basic timer 1 interrupt } i=1500; //Delay, button debounce do (i--); while (i !=0); while (! (P1IN & 0x03)); //Wait for the release of the button i=1500; //Delay, button debounce do (i--); while (i !=0); P1IFG &= ......................;// clean Interrupt flag } //***************************************************************** // Basic Timer interrupt service routine: increase the number from 0->9 //***************************************************************** CuuDuongThanCong.com https://fb.com/tailieudientucntt CuuDuongThanCong.com https://fb.com/tailieudientucntt
  • 52. Tài liệu hướng dẫn thí nghiệm MSP‐EXP430FG4618 52 | P a g e Bộ môn Kỹ Thuật Điện Tử, khoa Điện‐Điện Tử, trường ĐHBK‐ĐHQG TP.HCM Soạn: Hoàng Trang, Bùi Quốc Bảo. #pragma vector=BASICTIMER_VECTOR __interrupt void basic_timer_ISR(void) { LCD_write_number(number); if (number == 9) number = ..................; else number = ..............................; } //***************************************************************** // Main routine //***************************************************************** void main(void) { WDTCTL = WDTPW | WDTHOLD; // Stop WDT FLL_CTL0 |= XCAP18PF; // Set load cap for 32k xtal // LCD COM0-COM1-COM2-COM3 configuration P5DIR |= 0x1E; // Ports P5.2, P5.3 and P5.4 as outputs P5SEL |= 0x1E; // Ports P5.2, P5.3 and P5.4 as special function (COM1, COM2 and COM3) // LCD_A S0-S21 configuration LCDAPCTL0 = LCDS24 | LCDS20 | LCDS16 | LCDS12 | LCDS8 | LCDS4; // LCD_A configuration LCDACTL = LCDFREQ_192 | LCD4MUX | LCDSON | LCDON; // (ACLK = 32768)/192, 4-mux LCD, LCD_A on, Segments on CuuDuongThanCong.com https://fb.com/tailieudientucntt CuuDuongThanCong.com https://fb.com/tailieudientucntt
  • 53. Tài liệu hướng dẫn thí nghiệm MSP‐EXP430FG4618 53 | P a g e Bộ môn Kỹ Thuật Điện Tử, khoa Điện‐Điện Tử, trường ĐHBK‐ĐHQG TP.HCM Soạn: Hoàng Trang, Bùi Quốc Bảo. LCDAVCTL0 = LCDCPEN; // Charge pump enable LCDAVCTL1 = VLCD_3_44; // VLCD = 3,44 V // clean LCD LCD_all_off(); // Basic Timer 1 Configuration BTCTL = .................................; // (ACLK/256)/128 IE2 |= ..................................; // Enable BT interrupt // LED1 e LED2 configuration P2DIR = .................................; // P2.2 and P2.1 as digital output P2OUT = ..................................; // LED1 on and LED2 off // SW1 and SW2 configuration P1SEL &= ................................; // P1.0 and P1.1 I/O ports P1DIR &= ..............................; // P1.0 and P1.1 digital inputs P1IFG = ...............................; // Clear P1 flags P1IES &= ...............................; // high-to-low transition interrupts for P1.0 & P1.1 P1IE |= ................................; // enable port interrupts for P1.0 & P1.1 number = 0; __bis_SR_register(LPM3_bits + GIE); // Enter LPM3 w/ interrupt } CuuDuongThanCong.com https://fb.com/tailieudientucntt CuuDuongThanCong.com https://fb.com/tailieudientucntt
  • 54. Tài liệu hướng dẫn thí nghiệm MSP‐EXP430FG4618 54 | P a g e Bộ môn Kỹ Thuật Điện Tử, khoa Điện‐Điện Tử, trường ĐHBK‐ĐHQG TP.HCM Soạn: Hoàng Trang, Bùi Quốc Bảo. Lab3: Sử dụng RealTime Clock Mục tiêu: Sau lab này, sinh viên sẽ nắm kiến thức cơ bản về đồng hồ thời gian thực 1. Lý thuyết: Trong Lab 2 ta đã nói về Basic Timer module và FLL+. Trong Lab 3, sinh viên sẽ làm việc với khối đồng hồ thời gian thực. 1.1. Realtime Clock module: Đồng hồ thời gian thực là 1 khối đếm thời gian giây, phút, giờ, ngày, tháng và năm. Ngoài ra, nó còn có thể được sử dụng như là 1 bộ đếm. Chế độ hoạt động của RTC được cấu hình bởi các bit RTCMODEx trong thanh ghi RTCCTL. Xung nhịp cho RTC có tần số 1Hz được lấy từ basic timer 1 module. Basic timer 1 vẫn có thể được cấu hình để tạo ngắt basic timer 1 như ở lab2. Ta thường cấu hình cho RTC hoạt động với kiểu BCD hơn là hexadecimal. Khi muốn thiết lập giá trị ban đầu cho RTC, ta dừng hoạt động của RTC bằng cách set bit RTCHOLD trong thanh ghi RTCCTL lên 1, sau đó ghi giá trị ban đầu vào các thanh ghi ngày, tháng, năm, giờ, phút, giây. Xóa bit RTCHOLD sẽ cho phép RTC hoạt động trở lại. 1.2 Các thanh ghi cho RTC: 1.2.1 RealTime Clock Control Register (RTCCTL): CuuDuongThanCong.com https://fb.com/tailieudientucntt CuuDuongThanCong.com https://fb.com/tailieudientucntt
  • 55. Tài liệu hướng dẫn thí nghiệm MSP‐EXP430FG4618 55 | P a g e Bộ môn Kỹ Thuật Điện Tử, khoa Điện‐Điện Tử, trường ĐHBK‐ĐHQG TP.HCM Soạn: Hoàng Trang, Bùi Quốc Bảo. 1.2.2 RTCDAY, RTC Day-of-Month Register, Calendar Mode with Hexadecimal Format: 1.2.3 RTCDAY, RTC Day-of-Month Register, Calendar Mode with BCD Format: 1.2.4 RTCDOW, RTC Day-of-Week Register, Calendar Mode: CuuDuongThanCong.com https://fb.com/tailieudientucntt CuuDuongThanCong.com https://fb.com/tailieudientucntt
  • 56. Tài liệu hướng dẫn thí nghiệm MSP‐EXP430FG4618 56 | P a g e Bộ môn Kỹ Thuật Điện Tử, khoa Điện‐Điện Tử, trường ĐHBK‐ĐHQG TP.HCM Soạn: Hoàng Trang, Bùi Quốc Bảo. 1.2.5 RTCHOUR, RTC Hours Register, Calendar Mode with Hexadecimal Format: 1.2.6 RTCHOUR, RTC Hours Register, Calendar Mode with BCD Format: 1.2.7 RTCMIN, RTC Minutes Register, Calendar Mode with Hexadecimal Format: 1.2.8 RTCMIN, RTC Minutes Register, Calendar Mode with BCD Format: 1.2.9 RTCMON, RTC Month Register, Calendar Mode with Hexadecimal Format: 1.2.10 RTCMON, RTC Month Register, Calendar Mode with BCD Format: CuuDuongThanCong.com https://fb.com/tailieudientucntt CuuDuongThanCong.com https://fb.com/tailieudientucntt
  • 57. Tài liệu hướng dẫn thí nghiệm MSP‐EXP430FG4618 57 | P a g e Bộ môn Kỹ Thuật Điện Tử, khoa Điện‐Điện Tử, trường ĐHBK‐ĐHQG TP.HCM Soạn: Hoàng Trang, Bùi Quốc Bảo. 1.2.11 RTCSEC, RTC Seconds Register, Calendar Mode with Hexadecimal Format: 1.2.12 RTCSEC, RTC Seconds Register, Calendar Mode with BCD Format: 1.2.13 RTCYEARH, RTC Year High-Byte Register, Calendar Mode with Hexadecimal Format: 1.2.14 RTCYEARH, RTC Year High-Byte Register, Calendar Mode with BCD Format: 1.2.15 RTCYEARL, RTC Year Low-Byte Register, Calendar Mode with Hexadecimal Format: 2. Thực hành: 2.1 Lab 3A: Thiết kế đồng hồ giờ-phút-giây. Yêu cầu: CuuDuongThanCong.com https://fb.com/tailieudientucntt CuuDuongThanCong.com https://fb.com/tailieudientucntt
  • 58. Tài liệu hướng dẫn thí nghiệm MSP‐EXP430FG4618 58 | P a g e Bộ môn Kỹ Thuật Điện Tử, khoa Điện‐Điện Tử, trường ĐHBK‐ĐHQG TP.HCM Soạn: Hoàng Trang, Bùi Quốc Bảo. SV viết chương trình hiển thị các giá trị giờ-phút-giây. Giá trị giờ hiển thị lên led P7-P6, phút hiển thị lên LED P5-P4 và giây hiển thị lên LED P3-P2. Nếu số giây là chẵn, hiển thị hai dấu 2 chấm tại led P3 và P5 (dùng 2 macro P3_DOT_ON và P5_DOT_ON). Nếu số giây là lẻ, tắt hai dấu 2 chấm tại led P3 và P5 (dùng 2 macro P3_DOT_OFF và P5_DOT_OFF). Chương trình cập nhật LCD sau mỗi 0.5 s sử dụng ngắt basic timer module. Khi bắt đầu, chương trình đặt giá trị ban đầu cho RTC là: 8h 30 p 0s ngày 28 tháng 10 năm 2011. File mẫu: Lab3_realtime_ClockLab3_realtime_Clock_Solution.c Lab3_Realtime_Clock_StudentLab3_Realtime_Clock_Student.c 2.1.1 Trả lời câu hỏi bằng cách điền vào chỗ trống. Ghi giá trị ………………….vào thanh ghi………………….. để đưa RTC vào trạng thái ngừng (hold), cấm ngắt và dữ liệu ở dạng BCD? Hoàn tất những câu lệnh dưới đây để đặt giá trị ban đầu cho RTC là: 8h 30 p 0s ngày 28 tháng 10 năm 2011. ……………………… = ……………………………; ……………………… = ……………………………; ……………………… = ……………………………; ……………………… = ……………………………; ……………………… = ……………………………; ……………………… = ……………………………; Hoàn thành câu lệnh dưới đây để đưa RTC vào chế độ hoạt động RTCCTL &= …………………………………; CuuDuongThanCong.com https://fb.com/tailieudientucntt CuuDuongThanCong.com https://fb.com/tailieudientucntt
  • 59. Tài liệu hướng dẫn thí nghiệm MSP‐EXP430FG4618 59 | P a g e Bộ môn Kỹ Thuật Điện Tử, khoa Điện‐Điện Tử, trường ĐHBK‐ĐHQG TP.HCM Soạn: Hoàng Trang, Bùi Quốc Bảo. Để tạo ngắt basic timer 1 sau mỗi 0.5 s, ta phải ghi giá trị ……………….. vào thanh ghi BTCTL? Chương trình có thể sử dụng chế độ tiết kiệm năng lượng nào?.............................. 2.1.2 Hoàn thành chương trình: #include <msp430xG46x.h> #include <LCD_defs.h> //****************************************************************** // Write Hour in LCD //****************************************************************** void LCD_hour() { switch (RTCHOUR & 0xF0) // switch to write hour first digit { case 0x10: P7_A1; break; case 0x20: P7_A2; break; case 0x00: P7_A0; break; } switch (.............. & 0x0F) // switch to write hour second digit { case ..........: ............; break; case ..........: ............; CuuDuongThanCong.com https://fb.com/tailieudientucntt CuuDuongThanCong.com https://fb.com/tailieudientucntt
  • 60. Tài liệu hướng dẫn thí nghiệm MSP‐EXP430FG4618 60 | P a g e Bộ môn Kỹ Thuật Điện Tử, khoa Điện‐Điện Tử, trường ĐHBK‐ĐHQG TP.HCM Soạn: Hoàng Trang, Bùi Quốc Bảo. break; case ..........: ............; break; case ..........: ............; break; case ..........: ............; break; case ..........: ............; break; case ..........: ............; break; case ..........: ............; break; case ..........: ............; break; case ..........: ............; break; } } //****************************************************************** // Write minutes in LCD //****************************************************************** void LCD_min() { switch (...................... & 0xF0) // switch to write minutes first digit CuuDuongThanCong.com https://fb.com/tailieudientucntt CuuDuongThanCong.com https://fb.com/tailieudientucntt
  • 61. Tài liệu hướng dẫn thí nghiệm MSP‐EXP430FG4618 61 | P a g e Bộ môn Kỹ Thuật Điện Tử, khoa Điện‐Điện Tử, trường ĐHBK‐ĐHQG TP.HCM Soạn: Hoàng Trang, Bùi Quốc Bảo. { case ..........: ............; break; case ..........: ............; break; case ..........: ............; break; case ..........: ............; break; case ..........: ............; break; case ..........: ............; break; } switch (..................... & 0x0F) // switch to write minutes second digit { case ..........: ............; break; case ..........: ............; break; case ..........: ............; break; case ..........: ............; break; case ..........: ............; CuuDuongThanCong.com https://fb.com/tailieudientucntt CuuDuongThanCong.com https://fb.com/tailieudientucntt
  • 62. Tài liệu hướng dẫn thí nghiệm MSP‐EXP430FG4618 62 | P a g e Bộ môn Kỹ Thuật Điện Tử, khoa Điện‐Điện Tử, trường ĐHBK‐ĐHQG TP.HCM Soạn: Hoàng Trang, Bùi Quốc Bảo. break; case ..........: ............; break; case ..........: ............; break; case ..........: ............; break; case ..........: ............; break; case ..........: ............; break; } } //****************************************************************** // Write seconds in LCD //****************************************************************** void LCD_sec() { switch (.................... & 0xF0) // switch to write seconds first digit { case ..........: ............; break; case ..........: ............; break; case ..........: ............; break; CuuDuongThanCong.com https://fb.com/tailieudientucntt CuuDuongThanCong.com https://fb.com/tailieudientucntt
  • 63. Tài liệu hướng dẫn thí nghiệm MSP‐EXP430FG4618 63 | P a g e Bộ môn Kỹ Thuật Điện Tử, khoa Điện‐Điện Tử, trường ĐHBK‐ĐHQG TP.HCM Soạn: Hoàng Trang, Bùi Quốc Bảo. case ..........: ............; break; case ..........: ............; break; case ..........: ............; break; } switch (............................. & 0x0F) // switch to write seconds second digit { case ..........: ............; break; case ..........: ............; break; case ..........: ............; break; case ..........: ............; break; case ..........: ............; break; case ..........: ............; break; case ..........: ............; break; case ..........: ............; break; CuuDuongThanCong.com https://fb.com/tailieudientucntt CuuDuongThanCong.com https://fb.com/tailieudientucntt
  • 64. Tài liệu hướng dẫn thí nghiệm MSP‐EXP430FG4618 64 | P a g e Bộ môn Kỹ Thuật Điện Tử, khoa Điện‐Điện Tử, trường ĐHBK‐ĐHQG TP.HCM Soạn: Hoàng Trang, Bùi Quốc Bảo. case ..........: ............; break; case ..........: ............; } } //****************************************************************** //LCD clean. All segments are turnned off //****************************************************************** void LCD_all_off(void) { LCDM2 = 0x00; LCDM3 = 0x00; LCDM4 = 0x00; LCDM5 = 0x00; LCDM6 = 0x00; LCDM7 = 0x00; LCDM8 = 0x00; LCDM9 = 0x00; LCDM10 = 0x00; LCDM11 = 0x00; LCDM12 = 0x00; LCDM13 = 0x00; } //***************************************************************** // Basic Timer interrupt service routine: refresh LCD with 0.5 sec //***************************************************************** CuuDuongThanCong.com https://fb.com/tailieudientucntt CuuDuongThanCong.com https://fb.com/tailieudientucntt
  • 65. Tài liệu hướng dẫn thí nghiệm MSP‐EXP430FG4618 65 | P a g e Bộ môn Kỹ Thuật Điện Tử, khoa Điện‐Điện Tử, trường ĐHBK‐ĐHQG TP.HCM Soạn: Hoàng Trang, Bùi Quốc Bảo. #pragma vector=BASICTIMER_VECTOR __interrupt void basic_timer_ISR(void) { P2OUT |=.......................; // LED1 turn on P2OUT ^=.......................; // LED2 toogle LCD_sec(); LCD_min(); LCD_hour(); if (RTCSEC & 0x01) // display the dot of P3 and P5 { ........................; ........................; } else { ........................; ........................; } P2OUT &=...................; // LED1 turn off } //***************************************************************** // Main routine //***************************************************************** void main(void) { CuuDuongThanCong.com https://fb.com/tailieudientucntt CuuDuongThanCong.com https://fb.com/tailieudientucntt
  • 66. Tài liệu hướng dẫn thí nghiệm MSP‐EXP430FG4618 66 | P a g e Bộ môn Kỹ Thuật Điện Tử, khoa Điện‐Điện Tử, trường ĐHBK‐ĐHQG TP.HCM Soạn: Hoàng Trang, Bùi Quốc Bảo. WDTCTL = WDTPW | WDTHOLD; // Stop WDT FLL_CTL0 |= XCAP18PF; // Set load cap for 32k xtal // LCD COM0-COM1-COM2-COM3 configuration P5DIR |= 0x1E; // Ports P5.2, P5.3 and P5.4 as outputs P5SEL |= 0x1E; // LCD_A S0-S21 configuration LCDAPCTL0 = LCDS24 | LCDS20 | LCDS16 | LCDS12 | LCDS8 | LCDS4; // LCD_A configuration LCDACTL = LCDFREQ_192 | LCD4MUX | LCDSON | LCDON; LCDAVCTL0 = LCDCPEN; // Charge pump enable LCDAVCTL1 = VLCD_3_44; // VLCD = 3,44 V // clean LCD LCD_all_off(); // RTC configuration RTCCTL = .............................; // BCD mode, RTC e BT disable // Interrupt disable, // Init Clock RTCSEC = ...............; // Set Seconds in BCD format RTCMIN = ...............; // Set Minutes in BCD format RTCHOUR = ...............; // Set Hours in BCD format // Init Calendar RTCDOW = ...............; // Set Day-of-Week in BCD format CuuDuongThanCong.com https://fb.com/tailieudientucntt CuuDuongThanCong.com https://fb.com/tailieudientucntt
  • 67. Tài liệu hướng dẫn thí nghiệm MSP‐EXP430FG4618 67 | P a g e Bộ môn Kỹ Thuật Điện Tử, khoa Điện‐Điện Tử, trường ĐHBK‐ĐHQG TP.HCM Soạn: Hoàng Trang, Bùi Quốc Bảo. RTCDAY = ...............; // Set Day in BCD format RTCMON = ...............; // Set Month in BCD format RTCYEAR = ...............; // Set Year in BCD format RTCCTL &= ...............; // Enable RTC // Basic Timer 1 Configuration BTCTL = ...............; // (ACLK/256)/64 IE2 |= ...............; // Enable BT interrupt with 0.5 periode // LED1 e LED2 configuration P2DIR = ...............; // P2.2 and P2.1 as digital output P2OUT = ...............; // LED1 on and LED2 off // LCD init LCD_sec(); LCD_min(); LCD_hour(); // SW1 and SW2 configuration P1SEL &= ...............; // P1.0 and P1.1 I/O ports P1DIR &= ...............; // P1.0 and P1.1 digital inputs __bis_SR_register(..........................); // Enter LPM3 w/ interrupt } CuuDuongThanCong.com https://fb.com/tailieudientucntt CuuDuongThanCong.com https://fb.com/tailieudientucntt
  • 68. Tài liệu hướng dẫn thí nghiệm MSP‐EXP430FG4618 68 | P a g e Bộ môn Kỹ Thuật Điện Tử, khoa Điện‐Điện Tử, trường ĐHBK‐ĐHQG TP.HCM Soạn: Hoàng Trang, Bùi Quốc Bảo. 2.2 Lab 3B: Thiết kế đồng hồ hiển thị giờ-phút-giây và ngày tháng năm. Yêu cầu: SV viết chương trình hiển thị các giá trị giờ-phút-giây hoặc ngày-tháng-năm. Giá trị giờ hiển thị lên led P7-P6, phút hiển thị lên LED P5-P4 và giây hiển thị lên LED P3- P2. Nếu số giây là chẵn, hiển thị hai dấu 2 chấm tại led P3 và P5 (dùng 2 macro P3_DOT_ON và P5_DOT_ON). Nếu số giây là lẻ, tắt hai dấu 2 chấm tại led P3 và P5 (dùng 2 macro P3_DOT_OFF và P5_DOT_OFF). Giá trị ngày hiển thị lên led P7-P6, phút hiển thị lên LED P5-P4 và giây hiển thị lên LED P3-P2. Nếu số giây là chẵn, hiển thị hai dấu 2 chấm tại led P3 và P5 (dùng 2 macro P3_DOT_ON và P5_DOT_ON). Nếu số giây là lẻ, tắt hai dấu 2 chấm tại led P3 và P5 (dùng 2 macro P3_DOT_OFF và P5_DOT_OFF). Chương trình cập nhật LCD sau mỗi 0.5 s sử dụng ngắt basic timer module. Khi reset, chương trình mặc định ở chế độ hiển thị giờ-phút-giây. Khi SW1 được nhấn, chương trình sẽ hoán đổi giữa chế độ hiển thị giờ-phút-giây và ngày-tháng-năm. Trong chương trình sử dụng biến toàn cục mode để lưu chế độ hiện hành. Khi SW1 được nhấn sẽ tạo một ngắt làm thay đổi giá trị của mode. Khi bắt đầu, chương trình đặt giá trị ban đầu cho RTC là: 8h 30 p 0s ngày 28 tháng 10 năm 2011. File mẫu: Calenda_SolutionCalenda_Solution.c Calenda_StudentCalenda_Student.c Hoàn tất chương trình: #include <msp430xG46x.h> #include <LCD_defs.h> //****************************************************************** // Global data //****************************************************************** unsigned char mode; //****************************************************************** // Write year decade CuuDuongThanCong.com https://fb.com/tailieudientucntt CuuDuongThanCong.com https://fb.com/tailieudientucntt
  • 69. Tài liệu hướng dẫn thí nghiệm MSP‐EXP430FG4618 69 | P a g e Bộ môn Kỹ Thuật Điện Tử, khoa Điện‐Điện Tử, trường ĐHBK‐ĐHQG TP.HCM Soạn: Hoàng Trang, Bùi Quốc Bảo. //****************************************************************** void LCD_year() { } //****************************************************************** // Write month in LCD //****************************************************************** void LCD_month() { } //****************************************************************** // Write day in LCD //****************************************************************** void LCD_day() { } //****************************************************************** // Write Hour in LCD //****************************************************************** void LCD_hour() { switch (RTCHOUR & 0xF0) // switch to write hour first digit { case 0x10: P7_A1; break; case 0x20: P7_A2; CuuDuongThanCong.com https://fb.com/tailieudientucntt CuuDuongThanCong.com https://fb.com/tailieudientucntt
  • 70. Tài liệu hướng dẫn thí nghiệm MSP‐EXP430FG4618 70 | P a g e Bộ môn Kỹ Thuật Điện Tử, khoa Điện‐Điện Tử, trường ĐHBK‐ĐHQG TP.HCM Soạn: Hoàng Trang, Bùi Quốc Bảo. break; case 0x00: P7_A0; break; } switch (RTCHOUR & 0x0F) // switch to write hour second digit { case 0x01: P6_A1; break; case 0x02: P6_A2; break; case 0x03: P6_A3; break; case 0x04: P6_A4; break; case 0x05: P6_A5; break; case 0x06: P6_A6; break; case 0x07: P6_A7; break; case 0x08: P6_A8; break; case 0x09: P6_A9; break; case 0x00: P6_A0; break; CuuDuongThanCong.com https://fb.com/tailieudientucntt CuuDuongThanCong.com https://fb.com/tailieudientucntt
  • 71. Tài liệu hướng dẫn thí nghiệm MSP‐EXP430FG4618 71 | P a g e Bộ môn Kỹ Thuật Điện Tử, khoa Điện‐Điện Tử, trường ĐHBK‐ĐHQG TP.HCM Soạn: Hoàng Trang, Bùi Quốc Bảo. } } //****************************************************************** // Write minutes in LCD //****************************************************************** void LCD_min() { switch (RTCMIN & 0xF0) // switch to write minutes first digit { case 0x10: P5_A1; break; case 0x20: P5_A2; break; case 0x30: P5_A3; break; case 0x40: P5_A4; break; case 0x50: P5_A5; break; case 0x00: P5_A0; break; } switch (RTCMIN & 0x0F) // switch to write minutes second digit { case 0x01: P4_A1; CuuDuongThanCong.com https://fb.com/tailieudientucntt CuuDuongThanCong.com https://fb.com/tailieudientucntt
  • 72. Tài liệu hướng dẫn thí nghiệm MSP‐EXP430FG4618 72 | P a g e Bộ môn Kỹ Thuật Điện Tử, khoa Điện‐Điện Tử, trường ĐHBK‐ĐHQG TP.HCM Soạn: Hoàng Trang, Bùi Quốc Bảo. break; case 0x02: P4_A2; break; case 0x03: P4_A3; break; case 0x04: P4_A4; break; case 0x05: P4_A5; break; case 0x06: P4_A6; break; case 0x07: P4_A7; break; case 0x08: P4_A8; break; case 0x09: P4_A9; break; case 0x00: P4_A0; break; } } //****************************************************************** // Write seconds in LCD //****************************************************************** void LCD_sec() { CuuDuongThanCong.com https://fb.com/tailieudientucntt CuuDuongThanCong.com https://fb.com/tailieudientucntt
  • 73. Tài liệu hướng dẫn thí nghiệm MSP‐EXP430FG4618 73 | P a g e Bộ môn Kỹ Thuật Điện Tử, khoa Điện‐Điện Tử, trường ĐHBK‐ĐHQG TP.HCM Soạn: Hoàng Trang, Bùi Quốc Bảo. switch (RTCSEC & 0xF0) // switch to write seconds first digit { case 0x10: P3_A1; break; case 0x20: P3_A2; break; case 0x30: P3_A3; break; case 0x40: P3_A4; break; case 0x50: P3_A5; break; case 0x00: P3_A0; break; } switch (RTCSEC & 0x0F) // switch to write seconds second digit { case 0x01: P2_A1; break; case 0x02: P2_A2; break; case 0x03: P2_A3; break; case 0x04: P2_A4; break; CuuDuongThanCong.com https://fb.com/tailieudientucntt CuuDuongThanCong.com https://fb.com/tailieudientucntt
  • 74. Tài liệu hướng dẫn thí nghiệm MSP‐EXP430FG4618 74 | P a g e Bộ môn Kỹ Thuật Điện Tử, khoa Điện‐Điện Tử, trường ĐHBK‐ĐHQG TP.HCM Soạn: Hoàng Trang, Bùi Quốc Bảo. case 0x05: P2_A5; break; case 0x06: P2_A6; break; case 0x07: P2_A7; break; case 0x08: P2_A8; break; case 0x09: P2_A9; break; case 0x00: P2_A0; } } //****************************************************************** //LCD clean. All segments are turnned off //****************************************************************** void LCD_all_off(void) { LCDM2 = 0x00; LCDM3 = 0x00; LCDM4 = 0x00; LCDM5 = 0x00; LCDM6 = 0x00; LCDM7 = 0x00; LCDM8 = 0x00; LCDM9 = 0x00; CuuDuongThanCong.com https://fb.com/tailieudientucntt CuuDuongThanCong.com https://fb.com/tailieudientucntt
  • 75. Tài liệu hướng dẫn thí nghiệm MSP‐EXP430FG4618 75 | P a g e Bộ môn Kỹ Thuật Điện Tử, khoa Điện‐Điện Tử, trường ĐHBK‐ĐHQG TP.HCM Soạn: Hoàng Trang, Bùi Quốc Bảo. LCDM10 = 0x00; LCDM11 = 0x00; LCDM12 = 0x00; LCDM13 = 0x00; } //****************************************************************** // Port1 interrupt service routine: toogle LCD mode //****************************************************************** #pragma vector=PORT1_VECTOR __interrupt void PORT1_ISR (void) { if (mode == 0) mode = 1; // toggle LCD mode else mode = 0; P1IFG &= ...................; // clean Interrupt flag } //***************************************************************** // Basic Timer interrupt service routine: refresh LCD with 0.5 sec //***************************************************************** #pragma vector=BASICTIMER_VECTOR __interrupt void basic_timer_ISR(void) { P2OUT |=....................; // LED1 turn on P2OUT ^=....................; // LED2 toogle if (mode == 0) // Display hour-minute-second { CuuDuongThanCong.com https://fb.com/tailieudientucntt CuuDuongThanCong.com https://fb.com/tailieudientucntt
  • 76. Tài liệu hướng dẫn thí nghiệm MSP‐EXP430FG4618 76 | P a g e Bộ môn Kỹ Thuật Điện Tử, khoa Điện‐Điện Tử, trường ĐHBK‐ĐHQG TP.HCM Soạn: Hoàng Trang, Bùi Quốc Bảo. ...........................; ...........................; ...........................; } else // Display year-month-day { LCD_year(); LCD_month(); LCD_day(); } if (RTCSEC & 0x01) // toogle clock dots { P3_DOT_ON; P5_DOT_ON; } else { P3_DOT_OFF; P5_DOT_OFF; } P2OUT &=~0x02; // LED1 turn off } //***************************************************************** // Main routine //***************************************************************** void main(void) CuuDuongThanCong.com https://fb.com/tailieudientucntt CuuDuongThanCong.com https://fb.com/tailieudientucntt
  • 77. Tài liệu hướng dẫn thí nghiệm MSP‐EXP430FG4618 77 | P a g e Bộ môn Kỹ Thuật Điện Tử, khoa Điện‐Điện Tử, trường ĐHBK‐ĐHQG TP.HCM Soạn: Hoàng Trang, Bùi Quốc Bảo. { WDTCTL = WDTPW | WDTHOLD; // Stop WDT FLL_CTL0 |= XCAP18PF; // Set load cap for 32k xtal // LCD COM0-COM1-COM2-COM3 configuration P5DIR |= 0x1E; // Ports P5.2, P5.3 and P5.4 as outputs P5SEL |= 0x1E; // Ports P5.2, P5.3 and P5.4 as special function (COM1, COM2 and COM3) // LCD_A S0-S21 configuration LCDAPCTL0 = LCDS24 | LCDS20 | LCDS16 | LCDS12 | LCDS8 | LCDS4; // LCD_A configuration LCDACTL = LCDFREQ_192 | LCD4MUX | LCDSON | LCDON; LCDAVCTL0 = LCDCPEN; // Charge pump enable LCDAVCTL1 = VLCD_3_44; // VLCD = 3,44 V // clean LCD LCD_all_off(); // RTC configuration RTCCTL = .............................. ; // BCD mode, RTC e BT disable, Interrupt disable, // // Init Clock RTCSEC = ..............................; // Set Seconds in BCD format RTCMIN = ..............................; // Set Minutes in BCD format RTCHOUR = ..............................; // Set Hours in BCD format // Init Calendar RTCDOW = ..............................; // Set Day-of-Week in BCD format RTCDAY = ..............................; // Set Day in BCD format CuuDuongThanCong.com https://fb.com/tailieudientucntt CuuDuongThanCong.com https://fb.com/tailieudientucntt
  • 78. Tài liệu hướng dẫn thí nghiệm MSP‐EXP430FG4618 78 | P a g e Bộ môn Kỹ Thuật Điện Tử, khoa Điện‐Điện Tử, trường ĐHBK‐ĐHQG TP.HCM Soạn: Hoàng Trang, Bùi Quốc Bảo. RTCMON = ..............................; // Set Month in BCD format RTCYEAR = ..............................; // Set Year in BCD format RTCCTL &= ..............................; // Enable RTC // Basic Timer 1 Configuration BTCTL = ..............................; // (ACLK/256)/64 IE2 |= ..............................; // Enable BT interrupt with 0.5 periode // LED1 e LED2 configuration P2DIR = 0x06; // P2.2 and P2.1 as digital output P2OUT = 0x04; // LED1 on and LED2 off // LCD init LCD_sec(); LCD_min(); LCD_hour(); mode = 0; // SW1 and SW2 configuration P1SEL &= ..............................; // P1.0 and P1.1 I/O ports P1DIR &= ..............................; // P1.0 and P1.1 digital inputs P1IFG = ..............................; // Clear P1 flags P1IES &= ..............................; // high-to-low transition interrupts P1IE |= ..............................; // enable port interrupts __bis_SR_register(..............................); // Enter LPM3 w/ interrupt } CuuDuongThanCong.com https://fb.com/tailieudientucntt CuuDuongThanCong.com https://fb.com/tailieudientucntt