Tải bản đầy đủ (.pdf) (160 trang)

Lập trình vi điều khiển MSP430

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (13.2 MB, 160 trang )

MỤC LỤC
CHƯƠNG I: TỔNG QUAN VỀ VI ĐIỀU KHIỂN....................................................7
CHƯƠNG 2: CƠ SỞ LÝ THUYẾT .........................................................................11
2.1.

GIỚI THIỆU VI ĐIỀU KHIỂN MSP430FG4618.....................................11

2.1.1.

Các chế độ hoạt động........................................................................12

2.1.2.

CPU...................................................................................................13

2.1.3.

Tổ chức bộ nhớ..................................................................................14

2.1.4.

Hệ thống xung clock..........................................................................15

2.1.5.

Ngõ vào/ra số ....................................................................................19

2.1.6.

Timer_A và Timer_B .........................................................................21


2.1.7.

ADC và DAC .....................................................................................32

2.1.8.

Truyền thông UART ..........................................................................46

2.1.9.

LCD_A Controller.............................................................................54

2.2.

GIỚI THIỆU MSP-EXP430FG4618 KIT ................................................60

2.3.1.

Giới thiệu chung................................................................................60

2.3.2.

Các tính năng cơ bản ........................................................................61

2.3.

NẠP CHƯƠNG TRÌNH QUA BOOTSTRAP LOADER.........................64

2.3.1.


Giới thiệu Bootstrap Loader .............................................................64

2.3.2.

Khởi động và thoát khỏi Bootstrap Loader ......................................64

2.3.3.

Khái quát về giao thức UART trong giao tiếp BSL ..........................65

2.3.4.

Graphical user interface (GUI) dùng nạp chương trình qua BSL....66

CHƯƠNG 3: CÁC MODULE NGOẠI VI...............................................................67
3.1.

MODULE CHUYỂN ĐỔI ĐIỆN ÁP VÀ MẠCH NẠP BSL ...................67

3.1.1.

Giới thiệu các linh kiện sử dụng .......................................................67

3.1.2.

Module chuyển đổi điện áp ...............................................................70

3.1.3.

Module nạp chương trình qua Bootstrap loader ..............................72


3.1.4.

Mạch thực tế......................................................................................76

3.2.

SƠ ĐỒ NGUYÊN LÝ MẠCH ĐIỆN CÁC MODULE ỨNG DỤNG.......77

3.2.1.

Sơ đồ nguyên lý khối nguồn hệ thống ...............................................78

3.2.2.

Module hiển thị LED đơn và 4 LED 7 đoạn .....................................78

3.2.3.

Module ma trận phím và switch đơn.................................................79
Trang 1


3.2.4.

Module điều khiển động cơ DC có bộ cảm biến tốc độ quay ...........80

3.2.5.

Module điều khiển Relay, Speaker và động cơ bước ........................80


3.2.6.

Module điều khiển công suất AC vừa dùng TRIAC ..........................81

3.2.7.

Module led ma trận ...........................................................................81

CHƯƠNG 4 : HƯỚNG DẪN SỬ DỤNG PHẦN MỀM & MỘT SỐ CHƯƠNG
TRÌNH MẪU ĐƠN GIẢN........................................................................................82
4.1.
4.2.

Hướng dẫn sử dụng phần mềm .............................................................82
CƠ BẢN VỀ LẬP TRÌNH C .....................................................................87

4.2.1.

Các kiểu dữ liệu cơ bản trong lập trình C ........................................87

4.2.2.

Khai báo biến, hằng, mảng và con trỏ..............................................88

4.2.3.

Một số lệnh thường dùng trong lập trình C ......................................89

4.2.4.


Các toán tử trong lập trình C............................................................91

4.3.

LẬP TRÌNH CHO MSP430 BẰNG NGÔN NGỮ C TRÊN IAR .............93

4.3.1.

Cấu trúc chương trình C ...................................................................93

4.3.2.

Các thư viện thông dụng dùng cho lập trình MSP430......................94

4.3.3.

Các lệnh thường được sử dụng trong lập trình IAR cho MSP430....95

4.4.

MỘT SỐ CHƯƠNG TRÌNH MẪU ĐƠN GIẢN ......................................97

4.4.1.

Lập trình điều khiển Led đơn – Led 7 đoạn ......................................97

4.4.2.

Lập trình điều khiển phím đơn – phím ma trận ..............................100


4.4.3.

Lập trình sử dụng Timer và ngắt Timer ..........................................104

4.4.4.

Lập trình điều khiển motor DC, relay và motor bước ....................109

4.4.5.

Điều khiển LCDA4 ..........................................................................115

4.4.6.

Lập trình điều khiển Led ma trận....................................................118

4.4.7.

Giao tiếp UART...............................................................................121

4.4.8.

Sử dụng ADC – DAC.......................................................................126

4.4.9.

Chương trình tổng hợp....................................................................129

PHỤ LỤC................................................................................................................132

TÀI LIỆU THAM KHẢO.......................................................................................160

Trang 2


KÝ HIỆU VÀ VIẾT TẮT
ACLK

Auxiliary Clock See Basic Clock Module

ADC

Analog-to-Digital Converter

BOR

Brown-Out Reset See System Resets

BSL

Bootstrap Loader

CPU

Central Processing Unit

DAC

Digital-to-Analog Converter


DCO

Digitally Controlled Oscillator

DMA

Direct Memory Access

FET

Flash Emulation Tool

FLL

Frequency Locked Loop

GIE

General Interrupt Enable

GUI:

Graphical user interface

ISR

Interrupt Service Routine

LSB


Least-Significant Bit

LSD

Least-Significant Digit

LPM

Low-Power Mode

MCLK

Master Clock See FLL+ Module

MSB

Most-Significant Bit

MSP

Mixed-Signal Processors

PC

Program Counter

POR

Power-On Reset See System Resets


RAM

Random Access Memory

SCG

System Clock Generator

SFR

Special Function Register

SMCLK

Sub-System Master Clock

SR

Status Register

TI:

Texas Instruments

UART:

Universal Asynchronous Reciever/Transmitter

USART:


Universal Synchronous/Asynchronous Reciever/Transmitter

WDT

Watchdog Timer

Trang 3


DANH MỤC CÁC BẢNG
Bảng 2.1: Các chế độ hoạt động của MSP430FG4618.............................................13
Bảng 2.2: Chức năng các bit trong thanh ghi SCFI0 ................................................17
Bảng 2.3: chức năng các bit tring thanh ghi FLL_CTL0..........................................17
Bảng 2.4: Các bit trong thanh ghi TACTL ...............................................................23
Bảng 2.5: Các bit trong thanh ghi TACCTLx...........................................................24
Bảng 2.6: Các giá trị trong thanh ghi vector ngắt TAIV ..........................................26
Bảng 2.7: Chức năng các bit trong thanh ghi TBCTL ..............................................30
Bảng 2.8: Các bit trong thanh ghi TBCCTLx ...........................................................31
Bảng 2.9: Các chế độ hoạt động của Timer_B .........................................................32
Bảng 2.10: Các giá trị ngắt trong thanh ghi TBIV....................................................32
Bảng 2.11: Các Bit trong thanh ghi ADC12CTL0....................................................34
Bảng 2.12: Các bit trong thanh ghi ADC12CTL1 ....................................................35
Bảng 2.13: Các bit trong thanh ghi ADC12MCTLx.................................................36
Bảng 2.14: Các chế độ chuyể đổi của ADC12..........................................................38
Bảng 2.15: Giá trị chuyển đổi DAC ở chế độ 12 bit và 8 bit....................................42
Bảng 2.16: Các bit trong thanh ghi DAC12_xCTL ..................................................43
Bảng 2.17: Các kiểu định dạng dữ liệu trong thanh ghi ADC12_xDAT..................45
Bảng 2.18: Chức năng các bit trong thanh ghi UCA0CTL0.....................................48
Bảng 2.19: Các bit trong thanh ghi UCA0CTL1 ......................................................49
Bảng 2.20: Giá trị tốc độ baud thường sử dụng trong module USCI_A0 ...............51

Bảng 2.21: Giá trị tốc độ baud thường sử dụng trong module USCI_A0 ...............52
Bảng 2.22: Các bit trong thanh ghi LCDACTL........................................................55
Bảng 2.23: Bộ nhớ đệm hiển thị của LCD_A Controller dùng cho SBLCDA4.......57
Bảng 2.24: Các thông số cho UART sử dụng trong giao tiếp với BSL....................65
Bảng 3.1: Chức năng của các chân cổng nối tiếp trong giao tiếp với BSL ..............73
Bảng 4.2: Các kiểu dữ liệu thuộc kiểu số thực .........................................................87
Bảng 4.3:Một số kiểu dữ liệu thuộc kiểu số nguyên.................................................87
Bảng 4.4: Các toán tử quan hệ ..................................................................................91
Bảng 4.5: Các toán tử logic.......................................................................................91
Bảng 4.6: Các toán tử xử lý bit .................................................................................92
Bảng 4.7: Các toán tử số học ....................................................................................92
Trang 4


DANH MỤC CÁC HÌNH
Hình 2.1: Sơ đồ các khối chức năng của MSP430FG4618.......................................12
Hình 2.2: Thanh ghi trạng thái SR ............................................................................12
Hình 2.3: Sơ đồ tổ chức khối CPU trong MSP430FG4618......................................14
Hình 2.4: Tổ chức bộ nhớ của MSP430FG4618.......................................................15
Hình 2.5: Sơ đồ hệ thống xung clock........................................................................16
Hình 2.6: Sơ đồ khối Timer_A..................................................................................22
Hình 2.7: Chế độ Up Mode trong Timer A...............................................................25
Hình 2.8: Chế độ Continuous Mode trong Timer A .................................................25
Hình 2.9: Chế độ Up/Down trong Timer A ..............................................................25
Hình 2.10: Chức năng time interval ở chế độ Continuous Mode trong Timer A .....26
Hình 2.11: Sơ đồ khối Timer_B................................................................................29
Hình 2.12: Sơ dồ bộ chuyên đổi ADC12 trong MSP430FG4618 ............................33
Hình 2.13: Sơ đồ bộ chuyển đổi DAC12 trong MSP430FG4618 ............................41
Cấu trúc bộ chuyển đổi DAC trong MSP430FG4618 như hình 2.13. ......................42
Hình 2.14: Sơ đồ khối module USCI_A0 .................................................................47

Hình 2.15: Định dạng chuỗi dữ liệu của chế độ UART trong USCI_A0 .................50
Hình 2.16: Sơ đồ khối LCD_A Controller................................................................55
Hình 2.17: Bộ nhớ đệm hiển thị của LCD_A Controller..........................................57
Hình 2.18: Các ký tự trên SBLCDA4 .......................................................................58
Hình 2.19: Hình dạng thực tế và sơ đồ khối của MSP-EXP430FG4618 KIT ..........60
Hình 2.20: Sơ đồ kết nối nguồn cung cấp cho kit thí nghiệm...................................60
Hình 2.21: Sơ đồ khối mô tả hoạt động sử lý âm thanh trên kit thí nghiệm.............62
Hình 2.22: Sơ đồ mạch xử lý âm thanh trên MSP-EXP430FG4618 KIT ................62
Hình 2.23: Sơ đồ nguyên lý MSP-EXP430FG4618 KIT..........................................63
Hình 2.24: Tín hiệu khởi động BSL trên MSP430FG4618 ......................................64
Hình 2.25: Thoát khỏi BSL bằng tín hiệu RESET....................................................65
Hình 2.26: Cấu trúc tổng quát một khung dữ liệu. ...................................................66
Hình 3.1: Sơ đồ khối module chuyển đổi điện áp và mạch nạp BSL. ......................67
Hình 3.2: Sơ đồ chân và bảng sự thật IC74LVC4245. .............................................68
Hình 3.3: Sơ đồ cấu tạo bên trong IC74LVC4245....................................................68
Hình 3.4: Sơ đồ chân và cấu trúc bên trong của ULN2803. .....................................69
Trang 5


Hình 3.5: Sơ đồ chân và bảng hoạt động của IC SN74HC14 ...................................69
Hình 3.6: Sơ đồ cấu tạo bên trong của IC PS8802....................................................70
Hình 3.7: Dạng thực tế và vị trí các chân của Transistor MMBT5088 ....................70
Hình 3.8: Sơ đồ port dùng cho định hướng chiều chuyển đổi điện áp. ....................71
Hình 3.9: Sơ đồ nguyên lý các port chuyển đổi điện áp ...........................................71
Hình 3.11: Sơ đồ nguyên lý port dùng riêng cho phím ma trận ..............................72
Hình 3.13: Sơ đồ mạch giao tiếp BSL theo tài liệu của TI .......................................73
Hình 3.14: Sơ đồ mạch giao tiếp RS232 trên MSP-EXP430FG4618 KIT...............74
Hình 3.15: Phần mạch sử dụng lại trên MSP-EXP430FG4618 KIT ........................75
Hình 3.16: Sơ đồ phần mạch thiết kế thêm dùng cho giao tiếp BSL........................75
Hình 3.17: Mạch in chuyển đổi điện áp và mạch nạp BSL mặt dưới .......................76

Hình 3.18: Mạch in chuyển đổi điện áp - mạch nạp BSL mặt trên – Board trung tâm
...................................................................................................................................77
Hình 3.20: Sơ đồ nguyên lý khối nguồn trên board ET-LAB3.................................78
Hình 3.22: Sơ đồ nguyên lý module hiển thị LED đơn và 4 LED 7 đoạn................78
Hình 3.23: Sơ đồ nguyên lý module ma trận phím ...................................................79
Hình 3.24: Sơ đồ nguyên lý switch đơn....................................................................79
Hình 3.25: Sơ đồ nguyên lý module động cơ DC có cảm biến tốc độ quay.............80
Hình 3.26: Sơ đồ nguyên lý module điều khiển Relay, Speaker, motor bước..........80
Hình 3.27: Sơ đồ nguyên lý module điều khiển công suất AC dùng TRIAC...........81
Hình 3.28: Sơ đồ nguyên lý module led ma trận ......................................................81
Hình 4.3: Cửa sổ chương trình The IAR Embedded Workbench IDE .....................82
Hình 4.4: Tạo project mới trong IAR........................................................................83
Hình 4.5: Các thành phần trên màn hình soạn thảo IAR ..........................................83
Hình 4.6: Các bước thiết lập ban đầu cho project trong IAR ...................................84
Hình 4.7: Các bước thiết lập ban đầu cho project trong IAR (tt)..............................85
Hình 4.8: Giao diện của chương trình MSPFET.......................................................86
Hình 4.9: Thiết lập cho chương trình MSPFET........................................................86
Hình 4.10: Các bước thiết lập chương trình MSPFET .............................................87

Trang 6


Chương I: TỔNG QUAN VỀ VI ĐIỀU KHIỂN
Vi điều khiển là một mạch tích hợp trên đó tập hợp các phần tử chủ yếu của
máy tính: vi xử lý, bộ nhớ (bộ nhớ chương trình, bộ nhớ dữ liệu), các module ngoại
vi và các cổng vào/ra.
Đặc điểm của các họ Vi điều khiển là độ tích hợp cao, công suất tiêu thụ nhỏ
(vài milliwatts khi hoạt động, vài nanowattsen ở chế độ nghỉ), tốc độ xử lý thấp
(MHz mégahertz) và giá thành rẻ so với sử dụng các họ vi xử lý được sử dụng
trong các máy tính cá nhân.

So với các mạch điện tử trong các bài toán đo lường điều khiển xây dựng trên cơ
sở một vi xử lý và các linh kiện điện tử, các họ Vi điều khiển cho phép giảm kích
thước, công suất tiêu thị và giá thành.
Các họ Vi điều khiển được sử dụng rộng rãi trong các hệ thống nhúng
(embedded system, các bộ điều khiển trong ôtô, các bộ điều khiển từ xa, các máy
văn phòng, các máy điện gia đình).
Môi trường ứng dụng - hệ thống nhúng
Ngày nay, phần lớn các hệ thống thông tin đang được sử dụng đều là một hệ
nhúng: điện thoại di động, máy nghe nhạc, bộ thu GPS, đồ điện gia dụng (nồi cơm
điện, điều hòa, máy giặt, máy rửa bát), ôtô con.
Hệ nhúng khác với các hệ thông tin truyên thống qua các phương diện: Kích
thước, năng lượng tiêu thụ và yếu tố quan trọng là giá thành
Cho phép thực hiện chính xác một hoặc nhiều chức năng chuyên biệt, cụ thể
(trái ngược với máy tính mà chúng ta thường sử dụng cho nhiều chức năng và mục
đích khác nhau).
Kích thước chương trình và dung lượng cần thiết của bộ nhớ là phù hợp theo
yêu cầu ứng dụng cơ bản và trung bình. Các ứng dụng cơ bản như: thực hiện liên
lạc với các thiết bị vào/ra: nút bấm, rơle, biến trở, cách ly quang điện, động cơ điện,
LED, các mạch logic tích hợp, …. Hoặc trong một số trường hợp không có giao tiếp
người máy (không bàn phím, màn hình, ổ đĩa, máy in,…) như bộ điều khiển nhiệt
độ làm việc của động cơ ôtô và số lượng Vi điều khiển trong một ôtô hiện đại
không nhỏ hơn 50

Trang 7


Phần mềm tích hợp
Chương trình viết trong Vi điều khiển được gọi firmware (chương trình lõi). Về
cơ bản, ngôn ngữ sử dụng để lập trình cho các họ Vi điều khiển (microcontroller) là
Assembler. Hiện nay, sử dụng ngày càng nhiều ngôn ngữ bậc cao điển hình là ngôn

ngữ lập trình C. Mỗi một họ Vi điều khiển sử dụng một trình biên dịch C hoặc ASM
riêng và mã code riêng biệt.
Một số họ Vi điều khiển có phần mềm mô phỏng dùng để: Phân tích phần cứng,
phần mềm của mạch và chương trình người dùng. Hiển thị các trạng thái các thanh
ghi bên trong, các cổng vào/ra của Vi điều khiển. Phần mềm mô phỏng các Vi điều
khiển đang được sử dụng phổ biến hiện nay là Protues
Các họ Vi điều khiển trên thị trường:












Họ AtmelAT91
Họ Atmel AVR
Họ C167 của Siemens / Infineon
Họ Hitachi H8
Họ Intel 8051, hạt nhân là bộ VXL
8051 cùng với các ngoại vi của
Intel 8085
Họ Freescale 68HC11
Họ Freescale 68HC08
Họ Freescale 68HC12
Họ PIC -Microchip

Họ dsPIC - Microchip

− Họ ST6, ST7, ST10, STR7, STR9
STMicroelectronics
− Họ ADuC - AnalogDevices
− Họ
PICBASICComfileTechnology
− Họ MSP430 - Texas Instruments
− Họ 8080, kế thừatừ VXL ZilogZ80
− Họ PSoCde Cypress
− Họ
LPC21xxARM7-TDMIde
Philips
− Họ V800 de NEC
− Họ K0 de NEC.

Hệ nhúng trong đo năng lực thể thao

Trang 8


Hệ nhúng trong y học

Hệ nhúng trong công nghệ ôtô

Hệ nhúng trong đời sống

Trang 9



Trang 10


CHƯƠNG 2: CƠ SỞ LÝ THUYẾT
2.1.

GIỚI THIỆU VI ĐIỀU KHIỂN MSP430FG4618

MSP430FG4618 thuộc dòng vi điều khiển MSP430 do công ty Texas
Intruments sản xuất. Ngoài những tính năng đặc trưng của dòng vi điều khiển siêu
tiết kiệm năng lượng, MSP430FG4618 còn được tích hợp nhiều ngoại vi như: bộ
biến đổi ADC, DAC, driver LCDA, bộ khuếch đại thuật toán
Op-Amp, Real Time Clock…MSP430FG4618 có kiến trúc RISC 16-bit và được
thiết kế theo CPU MSP430X. Vi điều khiển MSP430FG4618 thích hợp cho các ứng
dụng trong y tế và đo lường.
Một số tính năng đặc trưng của MSP430FG4618 bao gồm:
- Sử dụng nguồn thấp từ 1.8V-3.6V.
- Công suất tiêu thụ cực thấp:
Chế độ hoạt động (Active Mode): 400 µA ở 1MHz, 2.2 V
Chế độ nghỉ (Standby Mode): 1.3 µA
Chế độ tắt duy trì RAM (Off Mode): 0.22 µA
- Có năm chế độ tiết kiệm nguồn.
- Thời gian khởi động lại từ Standby Mode nhỏ hơn 6 µ s .
- CPU được thiết kế theo kiến trúc RISC 16-bit
- Tích hợp ba kênh DMA (Data Memmory Access).
- Bộ chuyển đổi ADC 12-Bit, có thể sử dụng điện thế tham chiếu trong.
- Tích hợp ba bộ khuếch đại Op-Amp có thể cấu hình được.
- Tích hợp hai kênh chuyển đổi DAC 12-Bit.
- Hai bộ Timer 16-Bit: Timer_A (với ba thanh ghi Capture/Compare) và
Timer_B (với bảy thanh ghi Capture/Compare).

- Có bộ theo dõi điện áp nguồn.
- Hỗ trợ 2 chuẩn truyền thông:
Serial Communication Interface (USART): UART và SPI.
Universal Serial Communication Interface (USCI): UART (có chế độ tự
động nhận tốc độ Baud và có bộ mã hóa và giải mã tín hiệu hồng ngoại
IrDA), SPI, I2C.
- Có thể lập trình trực tiếp trên chip thông qua boot memory.
- Tích hợp bộ Basic Timer với tính năng đồng hồ thời gian thực.
- Driver LCD lên đến 160 đoạn.
- Kích thước bộ nhớ: 116KB+256B bộ nhớ Flash, 8KB RAM.

Trang 11


Sơ đồ các khối chức năng trong vi điều khiển MSP430FG4618 được mô tả
trong hình 2.1:

Hình 2.1: Sơ đồ các khối chức năng của MSP430FG4618
2.1.1. Các chế độ hoạt động
Vi điều khiển MSP430FG4618 có một chế độ hoạt động và năm chế độ tiết
kiệm nguồn được lựa chọn bằng phần mềm bằng cách set hoặc clear các bit SCG1,
SCG0, OSCOFF, CPUOFF trong thanh ghi trạng thái SR. Khi có một sự kiện ngắt
thiết bị sẽ thoát khỏi chế độ tiết kiệm nguồn để thực hiện chương trình phục vụ ngắt
và quay lại chế độ tiết kiệm nguồn sau khi thoát khỏi chương trình phục vụ ngắt.
Thanh ghi trạng thái: SR

Hình 2.2: Thanh ghi trạng thái SR
Thanh ghi trạng thái được sử dụng như một thanh ghi nguồn hoặc một thanh
ghi đích gồm hệ thống các cờ (là các bit độc lập).
Chức năng một số bit trong thanh ghi SR:

- Cờ tràn V: bit này được set khi kết quả của một phép toán số học bị tràn.
- SCG1: System clock generator 1. Bit này khi được set lên sẽ làm tắt bộ dao
động DCO nếu DCOCLK không được sử dụng cho MCLK hoặc SMCLK.
- SCG0: System clock generator 1. Bit này được set lên sẽ làm tắt bộ FLL+
loop control.

Trang 12


- OSCOFF: Oscillator Off. Bit này được set lên sẽ làm tắt dao động thạch
anh LFXT1 khi LFXT1CLK không được sử dụng cho MCLK hoặc
SMCLK.
- CPUOFF: Bit này được set lên sẽ làm tắt CPU.
- GIE: Bit cho phép ngắt. Khi bit này được set lên thì sẽ cho phép tất cả các
ngắt, khi reset tất cả các ngắt điều bị vô hiệu hóa.
- Cờ N: Bit này được set lên khi kết quả một phép toán là số âm, được clear
khi kết quả là số dương.
- Cờ Z: Bit này được set lên khi kết quả một phép toán là 0, ngược lại được
clear khi kết quả phép toán khác 0.
- Cờ C: Bit này được set lên khi kết quả một phép toán có số nhớ, ngược lại
được clear khi không có nhớ.
Các chế độ hoạt động và đặc điểm của từng chế độ được trình bày trong bảng
sau:
Bảng 2.1: Các chế độ hoạt động của MSP430FG4618

Cách thiết lập chế độ hoạt động cho MSP430
Chế độ Active: mạch định khi cấp nguồn thì tất cả các bit trong thanh ghi SR
đều được reset nên MSP430 sẽ hoạt động ở chế độ Active.
Để vào một chế độ tiết kiệm nguồn ta thực hiện lệnh:
_BIS_SR(LPMx_bits) hoặc _BIS_SR(LPMx)

Để thoát chế độ tiết kiệm nguồn ta thực hiện lệnh:
_BIC_SR_IRQ(LPM0_bits) hoặc _BIC_SR_IRQ(LPMx)
2.1.2. CPU
Vi điều khiển MSP430FG4618 có kiến trúc RISC 16-bit và được thiết kế
theo CPU MSP430X, bao gồm 16 thanh ghi, kích thước mỗi thanh ghi là 20 bit,
ngoại trừ thanh ghi trạng thái SR có kích thước 16 bit (4 thanh ghi đầu là các thanh
ghi Program Counter, Pointer Stack, Status Register, Constant Gennerator các thanh

Trang 13


ghi còn lại là các thanh ghi thông dụng). khối ALU có thể tính toán với dữ liệu 16
hoặc 20 bit. Bus dữ liệu có kích thước 16 bit, bus địa chỉ có kích thước 20 bit để có
thể xử lý đối với các vùng nhớ có địa chỉ lớn hơn FFFFh. MSP430X CPU hoàn toàn
tương thích với MSP430 CPU, tuy nhiên kiến trúc MSP430X CPU được sử dụng
trong các vi điều khiển MSP430 có bộ nhớ lớn hơn 64KB như MSP430FG4618.

Hình 2.3: Sơ đồ tổ chức khối CPU trong MSP430FG4618
2.1.3. Tổ chức bộ nhớ
Bộ nhớ của vi điều khiển MSP430FG4618 có tổng cộng 128KB, trong đó bộ
nhớ Flash chiếm 116KB, có thể lập trình qua cổng JTAG hoặc thông qua Bootstrap
loader.
Phân vùng bộ nhớ và chức năng của từng vùng được mô tả như hình sau:

Trang 14


Hình 2.4: Tổ chức bộ nhớ của MSP430FG4618
2.1.4. Hệ thống xung clock
Xung clock được sử dụng trong MSP430FG4618 được thiết kế với module

FLL+ (Frequency-Locked Loop) hỗ trợ các bộ tạo dao động: thạch anh đồng hồ
(watch crystal) 32768 Hz, bộ tạo dao động kĩ thuật số (DCO), thạch anh tạo dao
động tần số cao. Các tín hiệu xung clock được tạo ra bao gồm:
- Auxiliary (ACLK): được cung cấp từ thạch anh 32768Hz hoặc từ một thạch
anh tạo dao động tần số cao.
- Main clock (MCLK): có thể lựa chọn nguồn cung cấp từ thạch anh 32768Hz,
từ thạch anh dao động tần số cao hoặc từ bộ tạo dao động kỹ thuật số DCO,
MCLK dùng cung cấp cho CPU.
- Sub-Main clock (SMCLK): được cung cấp một thạch anh dao động tần số
cao hoặc từ bộ dao động kỹ thuật số DCO, SMCLK dùng cung cấp cho các
module ngoại vi.
- Ngoài ra còn có các tín hiệu xung lock ACLK/n được chia nhỏ từ ACLK.
Sơ đồ hệ thống xung clock trong MSP430FG4618:

Trang 15


Hình 2.5: Sơ đồ hệ thống xung clock
Một số thanh ghi điều khiển thường được sử dụng:
System Clock Control Register(SCFQCTL):

-

Bit SCFQ_M: dùng để cho phép bộ điều chế khi bit này được set lên.

-

Các bit N: dùng để thiết lập giá trị nhân cho DCO, tùy thuộc vào bit
DCOPLUS mà tần số DCO được tính theo một trong hai công thức sau:
Khi bit DCOPLUS = 0 thì f DCOCLK = ( N + 1) × f ACLK

Khi bit DCOPLUS = 1 thì f DCOCLK = D × ( N + 1) × f ACLK
System Clock Frequency Integrator Register 0(SCFI0)

Trang 16


Bảng 2.2: Chức năng các bit trong thanh ghi SCFI0
Tên Bit

Chức năng
Chọn bộ chia cho vòng lập FLL+.

FLLDx

00

Chia 1

01

Chia 2

10

Chia 4

11

Chia 8


DCO range control.
FN_x

MODx(LSBs)

0000

0.65 to 6.1 MHz

01xx

2.8 to 26.6 MHz

0001

1.3 to 12.1 MHz

1xxx

4.2 to 46 MHz

001x

2 to 17.9 MHz

Các bit này dùng để chỉ trạng thái của bộ điều chế, nếu bằng 0
thì bộ điều chế là LSB. Bit này sẽ tự động thay đổi bởi FLL+

FLL+ Control Register 0 (FLL_CTL0):


Bảng 2.3: chức năng các bit tring thanh ghi FLL_CTL0
Tên Bit

Chức năng
Chọn ngõ ra cho DCO.

DCOPLUS

0

Ngõ ra được chia

1

Ngõ ra không được chia

Chọn chế độ hoạt động cho LFTX1
XTS_FLL

XCAPxPF

0

Low frequency mode

1

High frequency mode

Chọn tụ cho bộ dao động.

Trang 17


00

~ 1 pF

10

~ 8 pF

01

~ 6 pF

11

~ 10 pF

Kiểm tra lỗi dao động XT2.
XT2OF

0

Không có lỗi trong dao động hiện tại

1

Có lỗi trong dao động hiện tại


XT1OF

Bit này được set lên khi có lỗi dao động tần số cao.

LFOF

Bit này được set lên khi có lỗi dao động tần số thấp.

DCOF

Bit này được set lên khi có lỗi dao động DCO.

Hoạt động của bộ tạo dao động kĩ thuật số DCO:
Mặc định khi khởi động, MCLK và SMCLK được cấp từ nguồn dao động kỹ
thuật số (fDCOCLK), giá trị này bằng 32 lần ACLK (32768 Hz). Như vậy
fMCLK=fSMCLK=1048576 Hz.
Khi cần thiết chúng ta có thể thiết lập lại tần số fDCOCLK. Tần số của tín hiệu
được tạo ra từ nguồn dao động kĩ thuật số phụ thuộc vào các bit N (7 bit cuối trong
thanh ghi SCFQCTL) và các bit FLLDx trong thanh ghi SCFI0. Khi bit
DCOPLUS=1, fDCOCLK được lấy từ tín hiệu fDCO. Khi bit DCOPLUS=0, fDCOCLK
được lấy từ tín hiệu fDCO/D (với D = 1/2/4/8 và được xác định bằng 2 bit
FLLDx).
Cách thiết lập hoạt động của FLL+ để chọn tần số cho DCO:
Để thiết lập được tần số hoạt động của DCO ta phải thiết lập cấu hình cho
FLL+, cách thiết lập như sau:
Xác định tần số hoạt động của DCO, dựa vào công thức sau:
Nếu bit DCOPLUS = 0:

f DCOCLK = ( N + 1) × f ACLK


Ngược lại nếu bit DCOPLUS = 1:

f DCOCLK = D × ( N + 1) × f ACLK

Ví dụ: Để tần số hoạt động của DCO là 2 MHz ta thiết lập giá trị cho các
thành phần như sau: DCOPLUS=0, fACLK=32768Hz và N=64 hoặc DCOPLUS=1,
fACLK =32768Hz, D=2 và N=32. Tùy vào cách chọn các giá trị cho DCPLUS, fACLK,
D và N mà ta thiết lập giá trị cho các thanh ghi.
Thiết lập các thanh ghi có liên quan để tạo tần số hoạt động của DCO. Đối
với ví dụ trên ta thiết lập giá trị cho các thanh ghi như sau:
SCFQCTL = 64;

// N=64

SCFI0

//range=1.3-12.1MHz

= FN_2

FLL_CTL0 = XCAP14PF;

//Đặt giá trị cho tụ = ~14pF

Trang 18


Hoặc:
SCFQCTL = 32;


// N=32

SCFI0

//D=2, range=1.3 -12.1MHz

= FLLD_2 | FN_2

FLL_CTL0 = XCAP14PF;

//Đặt giá trị cho tụ = ~14pF

2.1.5. Ngõ vào/ra số
MSP430FG4618 được thiết kế với 10 Port, ngoài chức năng xuất nhập số các
Port này còn được sử dụng làm ngõ vào/ra cho các module ngoại vi. Port P1 và P2
còn được sử dụng cho chức năng ngắt ngoài, các Port P7-P8 và P9-P10 có thể được
sử dụng như 2 Port 16-bit ứng với PortA và PortB.
Chức năng cơ bản của các thanh ghi vào/ra số:
- PxDIR: các bit trong mỗi thanh ghi này dùng để định hướng chức năng
vào/ra cho các chân của Port tương ứng. Với bit = 0 thì chân tương ứng của
Port là ngõ vào, bit = 1 thì chân tương ứng của Port là ngõ ra.
- PxOUT: các bit trong mỗi thanh ghi này là giá trị của các ngõ ra tương ứng
của các chân trong Port tương ứng, khi được định hướng là ngõ ra. Với bit =
0 thì ngõ ra ở mức thấp, bit = 1 thì ngõ ra ở mức cao.
- PxIN: Các bit trong thanh ghi này cho biết mức logic của tín hiệu cấp cho
các chân tương ứng khi được định hướng là ngõ vào. Khi bit = 0 thì ngõ vào
đang ở mức thấp, ngược lại khi bit = 1 thì ngõ vào đang ở mức cao. Lưu ý,
thanh ghi này không thể gán giá trị, chỉ được sử dụng để đọc giá trị ở ngõ
vào.
- PxSEL: các bit trong mỗi thanh ghi này dùng để lựa chọn chức năng cho

các chân của Port tương ứng. Với bit = 0 thì chân được chọn dùng cho chức
năng vào/ra, bit = 1 thì chân được chọn dùng cho ngoại vi.
Ngoài ra, Port P1 và P2 còn được sử dụng cho chức năng ngắt ngoài và được
cấu hình từ các thanh ghi PxIFG, PxIE, PxIES.
- P1IFG và P2IFG: mỗi bit trong các thanh ghi này là một cờ ngắt tương ứng
với các chân vào/ra, các cờ này được set lên khi có cạnh tín hiệu tác động
đến các chân này. Khi cờ này được set lên thì sẽ yêu cầu một ngắt khi bit
PxIE tương ứng và bit GIE được set. Cờ ngắt này phải được reset bằng
phần mềm trước khi nhận một sự kiện ngắt mới.
- P1IES và P2IES: mỗi bit trong thanh ghi PxIES dùng để chọn cạnh tác
động của tín hiệu bên ngoài. Với bit = 0 thì cờ ngắt PxIFG sẽ được set lên
khi có cạnh lên của tín hiệu tác động, ngược lại khi bit = 1 thì cờ ngắt
PxIFG sẽ được set lên khi có một cạnh xuống của tín hiệu tác động.
- P1IE và P2IE: mỗi bit trong hai thanh ghi này dùng để cho phép hoặc cấm
ngắt từ bên ngoài ở các chân tương ứng. Với bit = 0 thì không cho phép
ngắt, bit = 1 thì cho phép ngắt.

Trang 19


Các thiết lập hoạt động cho Port với chức năng in/out:
Thiết lập chức năng vào/ra:
Để thiết lập chức năng là ngõ ra cho port ta tiến hành set các bít tương ứng
trên thanh ghi PxDIR, ngược lại để đặt port là ngõ vào thì ta phải clear bit tương
ứng trong thanh ghi PxDIR.
Ví dụ: Để thiết lập P1.0 là ngõ ra ta có thể làm như sau:
P1DIR |= BIT0;

hay: P1DIR |=0x01;


Để thiết lập P1.2 và P1.3 là ngõ vào ta có thể thực hiện như sau:
P1DIR &= ~(BIT2 + BIT3);

hay: P1DIR &=~0x06;

Sau khi thiết lập định hướng cho các port ta có thể tiến hành sử dụng chức
năng in/out cho các port này. Khi port được định hướng là ngõ ra, ta có thể xuất giá
trị ở ngõ ra cho port tương ứng bằng thanh ghi PxOUT; khi port được định hướng là
ngõ vào ta có thể tiến hành đọc dữ liệu từ ngõ vào thông qua thanh ghi PxIN, trong
trường hợp này do MSP430FG4618 không hỗ trợ điện trở kéo lên/xuống bên trong
nên khi sử dụng chúng ta cần mắc thêm điện trở kéo lên/xuống bên ngoài.
Ví dụ: Để set P1.2 ta có thể tiến hành như sau:
P1DIR |= BIT2;
P1OUT |= BIT2;
Hoặc:
P1DIR |=0x02;
P1OUT |=0x02;
Để đọc giá trị tại ngõ vào P1.3 và xuất ra P1.1 ta có thể tiến hành như sau:
P1DIR |= BIT1;

//P1.1 là ngõ ra

P1OUT|=0x00;

//Giá trị ban đầu của P1

P1DIR &=~ BIT3; //P1.3 là ngõ vào
if (P1IN & BIT3) //Kiểm tra ngõ vào P1.3
{


P1OUT |=BIT1;

// Nếu P1.3 bằng 1 thì set P1.1 }

else
{

P1OUT &=~ BIT1; //P1.3 = 0 thì clear P1.1

}

Thiết lập chức năng ngắt:
P1 và P2 trong MSP430FG4618 có khả năng ngắt ngoài, ngắt ngoài được
cho phép khi ta thiết lập các thanh ghi điều khiển ngắt PxIE, PxIES và bit GIE trong
thanh ghi SR. Khi có ngắt ngoài tác động thì cờ ngắt PxIFG tương ứng sẽ được set
lên 1 và tạo ra yêu cầu ngắt.
Ví dụ: Để viết chương trình sử dụng ngắt ngoài dùng P1.0 ta có thể thiết lập
như sau:

Trang 20


P1IE |= 0x01;

// P1.0 Cho phép ngắt tại P1.0

P1IES |= 0x01;

// P1.0 Chọn sườn tác động cạnh xuống


P1IFG &= ~0x01;

// P1.0 Xóa cờ ngắt IFG

Chương trình phục vụ ngắt P1.0 được viết như sau:
#pragma vector=PORT1_VECTOR
__interrupt void <ten chuogn trinh ngat> (void)
{

If (P1IFG & 0x01)
{…

//Lệnh cần thực hiện.}

P1IFG &= ~0x01;

// Xóa cờ ngắt P1.0 IFG

}
Thiết lập chức năng cho các module ngoại vi:
Ngoài chức năng In/Out các Port trong MSP430 còn được dùng cho các
module ngoại vi được tích hợp bên trong. Để sử dụng các chân này cho module
ngoại vi ta cần thiết lập giá trị cho thanh ghi PxSEL. Tùy thuộc vào chức năng của
các chân mà ta có các cách thiết lập lựa chọn khác nhau.
Ví dụ: Để chọn chức năng chân TXD và RXD cho module UART trong
module USCI_A0 ta thiết lập như sau:
P2SEL |=BIT4 + BIT5 ;

//P2.4,P2.5 = USCI_A0 TXD/RXD


2.1.6. Timer_A và Timer_B
Timer_A
Timer_A trong MSP430FG4618 (còn được gọi là Timer A3). Các tính năng
của Timer_A trong MSP430FG4618 bao như sau:
- Là bộ timer/counter 16 bit với 4 chế độ hoạt động.
- Có thể lựa chọn nguồn xung clock từ MSCLK, ACLK hoặc cung cấp từ bên
ngoài.
- Có 3 bộ capture/compare.
- Thiết lập ngõ ra phát tín hiệu PWM.
- Thanh ghi vectơ ngắt cho phép giải mã nhanh các ngắt.

Trang 21


Hình 2.6: Sơ đồ khối Timer_A
Các thanh ghi quan trọng Timer_A
Timer_A Control Register (TACTL): là thanh ghi điều khiển hoạt động
của Timer A.

Trang 22


Bảng 2.4: Các bit trong thanh ghi TACTL
Tên bit

Chức năng
Chọn nguồn xung clock

TASSELx


00

TACLK (nguồn xung ngoài)

01

ACLK

10

SMCLK

11

Inverted TACLK

Chọn chế độ chia nguồn xung clock được chọn từ các bit TASSELx
Idx

00

Chia 1

10

Chia 4

01

Chia 2


11

Chia 8

Chọn chế độ hoạt động cho Timer_A.
MCx

00

Stop mode

10

Continuous mode

01

Up mode

11

Up/down mode

TACLR

Cho phép reset Timer_A

TAIE


Cho phép ngắt khi cờ TAIFG được set lên

TAIFG

Cờ ngắt Timer_A, cờ này được set lên mỗi khi TAR đếm về 0 và phải
được xóa bằng phần mềm.

Capture/Compare Control Registers (TACCTLx): đây là các thanh ghi
điều khiển các khối Capture/Compare tương ứng.

Trang 23


Bảng 2.5: Các bit trong thanh ghi TACCTLx
Tên bit

Chức năng
Chọn các chế độ capture

CMx

00 Không capture

10 Capture khi có cạnh xuống

01 Capture khi có cạnh lên

11 Capture khi có cạnh lên lẫn
cạnh xuống


Chọn tín hiệu capture input trong chế độ Capture
CCISx

00

Tín hiệu capture input được lấy từ chân CCIxA tương ứng

01

Tín hiệu capture input được lấy từ chân CCIxB tương ứng

10

GND

11

VCC

SCS

Đồng bộ tín hiệu capture input và timer clock khi bit này được set

SCCI

Bit này cho biết mức logic của capture input khi tín hiệu EQUx

CAP

Chế độ capture được chọn khi bit này được set lên.


OUTMODx

Chọn các chế độ để tạo tín hiệu OUTPUT UNIT

CCIE

Khi CCIE=1:cho phép ngắt khi có cờ CCIFG tương ứng được set

CCI

Chúng ta có thể đọc giá trị của capture input thông qua bit này

OUT

Khi sử dụng chế độ Out put mode 0 bit này được dùng để điều khiển
trực tiếp trạng thái ngõ ra

COV

Cờ tràn capture, cờ này được set lên khi giá trị capture mới được lưu
vào thanh ghi TACCRx khi giá trị cũ chưa được đọc, cờ này phải
được xóa bằng phần mềm

CCIFG

Cờ ngắt Capture/Compare, cờ này được set lên khi TAR bằng
TACCRx tương ứng (trong chế độ Compare) hoặc khi giá trị trong
TAR được lưu trữ vào TACCRx tương ứng (trong chế độ Capture)


Các chế độ hoạt động của Timer_A
Chúng ta có thể chia Timer_A thành 2 phần chính như sau:

Trang 24


− Khối Timer: Gồm có một thanh ghi TAR có kích thước 16 bit, đây là thanh
ghi counter của Timer_A. Nguồn xung (timer clock) cung cấp cho khối
Timer có thể được chọn từ: ACLK, SMCLK, TACLK (xung ngoài) hoặc
TACLK . Giá trị trong TAR tăng 1 khi có cạnh lên của timer clock. Trong
khối Timer còn có cờ TAIFG, cờ này được set lên mỗi khi TAR đếm về 0.
Bốn chế độ hoạt động chính của Timer_A được lựa chọn bằng các bit MCx,
bao gồm:
Stop (MCx=00): timer dừng lại, giá trị trong thanh ghi TAR được giữ
nguyên.
Up (MCx=01): TAR đếm lên từ 0 đến giá trị được lưu trong TACCR0.

Hình 2.7: Chế độ Up Mode trong Timer A
Continuous (MCx=10): TAR đếm lên từ 0 đến 0xFFFF.

Hình 2.8: Chế độ Continuous Mode trong Timer A
Up/Down (MCx=11): TAR đếm lên từ 0 đến giá trị trong thanh ghi
TACCR0 sau đó đếm ngược về 0.

Hình 2.9: Chế độ Up/Down trong Timer A
− Các khối Capture/Compare: mỗi khối có một thanh ghi TACCRx và một
thanh ghi điều khiển TACCTLx. Các khối này hoạt động giống nhau và có
thể thực hiện 2 chức năng cơ bản sau:

Trang 25



×