Cấu hình cho khối UART

Một phần của tài liệu Thiet ke va xay dung mach dieu khien (Trang 49 - 60)

Thanh ghi điều khiển UART

PENA Bit 7 Cho phép chẵn lẻ

0 không cho phép chẵn lẻ 1 cho phép chẵn lẻ

PEV Bit 6 Lựa chọn chẵn lẻ. PEV không được sử dụng khi bit chẵn lẻ

không cho phép. 0 chẵn lẻ lẻ 1 chẵn lẻ chẵn

SPB Bit 5 Lựa chọn bit stop

0 một bit stop 1 hai bit stop

CHAR Bit 4 Chiều dài kí tự

0 dữ liệu là 7 bit 1 dữ liệu là 8 bit

LISTEN Bit 3 Cho phép lắng nghe

0 không cho phép 1 cho phép

SYNC Bit 2 Cho phép chế độ đồng bộ

0 chế độ UART 1 chế độ SPI

Thanh ghi UxTCTL, thanh ghi điều khiển truyền

Unused Bit 7 Bit này không được sử dụng

CKPL Bit 6 Lựa chọn xung chẵn lẻ

0 UCLKI = UCLK 1 UCLKI = đảo UCLK

SSELx Bits

5-4

Lựa chọn nguồn xung. Những bit này lựa chọn nguồn xung BRCLK

00 UCLKI 01 ACLK 10 SMCLK 11 SMCLK

URXSE Bit 3 Sườn xung bắt đầu nhận UART.

0 không cho phep 1 cho phép

TXEPT Bit 0 Cờ bộ truyển trống

0 UART thực hiện truyền dữ liệu và/hay đợi trong UxTXBUF

1 thanh ghi dịch của bộ truyền và UxTXBUF rỗng hay SWRST = 1

Thanh ghi điều khiển nhận USART

FE Bit 7 Cờ báo lỗi khung truyền

0 không lỗi

1 kí tự nhận được với bit stop là mức thấp

PE Bit 6 Cờ báo lỗi chẵn lẻ. Khi PENA = 0, PE được đọc như là 0. 0 không báo lỗi (adsbygoogle = window.adsbygoogle || []).push({});

1 kí tự nhận được với bit chẵn lẻ lỗi

Ví dụ chương trình truyền nhận USART của vi điều khiển MSP430F167

#include <msp430x16x.h> void UART1_init(void) { P3DIR |= BIT6; P3SEL |= 0xC0; // P3.6,7 = USART1 TXD/RXD //UCTL1 &= ~SWRST;

ME2 |= UTXE1 + URXE1; // Enable USART1 TXD/RXD

UCTL1 |= CHAR; // 8-bit character, No parity, 1 start bit, 1 stop bit UTCTL1 |= SSEL1; // UCLK = SMCLK = 8.00 MHz

UBR01 = 139; // 8.00M/57600 -> 139 UBR11 = 0x00; //

// UMCTL1 = 0x45; // Modulation = 0.375 UCTL1 &= ~SWRST; // Initialise USART1

//IE2 |= URXIE1; // Enable USART1 RX interrupt }

3.2.3 Kết luận

Việc cấu hình cho các khối trong khối xử lý trung tâm không quá phức tạp. Chúng ta cần hai yếu tố: nguyên lý hoạt động từng khối và các thanh ghi điều khiển của chúng. Từ đó chúng ta cấu hình tuỳ theo mục đích yêu cầu của cấu hình là gì. Việc cấu hình bằng ngôn ngữ phần với câu lệnh đơn giản gọn nhẹ. Đây cũng là một trong những ưu điểm lớn của công cụ phần mềm này. Nó giúp chúng ta dễ tiếp cận hơn với vi điều khiển MSP430F167 cũng như họ MSP430x1xx của loại vi điều khiển này.

Chương 4

Kết luận

Sau một thời gian tìm hiểu lý thuyết và thực nghiệm, khóa luận đã thu được một số kết quả như sau:

Về lý thuyết:

Tìm hiểu tổng quan về cấu trúc của vi kẹp có gắn cảm biến. Đặc điểm của bộ chấp hành điện nhiệt, mối liên hệ giữa độ dịch chuyển miệng của vi kép với điện áp cung cấp. Độ dịch chuyển tối đa giữa hai miệng của vi kẹp là 32 µm khi cung cấp một điện thế 4.5 V và tương ứng với công suất tiêu thụ trung bình cần 5 mW cho 1 µm dịch chuyển của miệng vi kẹp.

Tìm hiểu tổng quan về họ vi điều khiển MSP430x1xx với một CPU kiến trúc theo kiểu RISC 16 bit. Hệ thống giao tiếp ngoại vi, hệ thống đồng hồ linh hoạt. Bộ chuyển đổi tương tự-số (ADC12) và bộ chuyển đổi số-tương tự (DAC)12 bit. Ứng dụng vi điều khiển MSP430F167 cho mạch điều khiển vi kẹp có gắn cảm biến.

Về thực nghiệm:

Khóa luận đã thiết kế, chế tạo được mạch điều khiển vi kẹp có gắn cảm biến. Bo mạch này có khối khuếch đại tín hiệu vi sai từ cảm biến kiểu áp trở của vi kẹp, khối xử lý trung tâm, khối giao tiếp máy tính và khối điều khiển vi kẹp. Thí nghiệm điều khiển vi kẹp bằng bo mạch cho thấy mạch có khả năng cung cấp đủ công suất cho vi kẹp hoạt động theo như thông số kĩ thuật.

Hạn chế:

Tuy mạch đã điều khiển được vi kẹp chuyển động, đã có sự thay đổi giữa hai miệng của vi kẹp nhưng do khả năng hạn chế về mặt công cụ đo hỗ trợ nên trong quá trình thí nghiệm chưa khảo sát được chi tiết đặc tuyến phụ thuộc giữa điện áp cung cấp và dịch chuyển của miệng vi kẹp.

Phụ lục A

Mã nguồn chương trình điều khiển vi kẹp có gắn cảm biến từ PC

//********************************************************************** * // MAIN PROGRAM * //********************************************************************** * #include<msp430x16x.h> void delay(long time){

while(time--){}; }

void main(){

WDTCTL = WDTPW + WDTHOLD; P6SEL = 0x41;

ADC12CTL0 = SHT0_4 + REFON + REF2_5V; ADC12CTL1 = SHP + ADC12SSEL_1 + CONSEQ_1; delay(10000);

ADC12CTL0 |= ENC; ADC12CTL0 |= ADC12SC;

DAC12_0CTL = DAC12IR + DAC12AMP_5 + DAC12ENC; delay(10000); while(1){ DAC12_0DAT = ADC12MEM0; } } //********************************************************************************* ***

//Chương trình nhận và truyền tín hiệu giữa PC và vi điều khiển MSP430F167 * //********************************************************************************* *** #ifndef __UART169 #define __UART169 #include <msp430x16x.h> void UART1_init(void) { (adsbygoogle = window.adsbygoogle || []).push({});

UTCTL1 |= SSEL1; // UCLK = SMCLK = 8.00 MHz

UBR01 = 0x41; // 8.00M/57600 -> 139 UBR11 = 0x03; //

// UMCTL1 = 0x45; // Modulation = 0.375 UCTL1 &= ~SWRST; // Initialise USART1

//IE2 |= URXIE1; // Enable USART1 RX interrupt

}

void send_char_1(unsigned int s) {

while (!(IFG2 & UTXIFG1)); // USART1 TX buffer ready?

TXBUF1 = s; // char to TXBUF0 --> send

}

unsigned int get_char_1(void) {

while (!(IFG2 & URXIFG1)); return RXBUF1;

}

unsigned int get_char_0(void) {

while (!(IFG1 & URXIFG0)); return RXBUF0;

}

void send_12bit_1(unsigned int w) {

/*gui data 12 bit, thap truwoc, cao sau */ //lay 12 bit data

w &= 0x0FFF ; // 0000 xxxx xxxx xxxx data 12 bit //send Low_byte

send_char_1(w&0x3F); //00xx xxxx: low byte MSB = 0 // Delay(20);

//send Hi_byte

send_char_1((w>>6) | 0x40); //01xx xxxx Hight byte MSB = 1 }

unsigned int get_12bit(void){ unsigned int low,high,nhan;

low = get_char_1(); high = get_char_1(); if((low & 0xC0) == 0) { if((high & 0xC0) == 0xC0) { high &= 0x3F;

return (high*64 + low); }

} }

void UART0_init(void) {

P3SEL |= (BIT4+BIT5); //UCTL0 &= ~SWRST;

ME1 |= UTXE0 + URXE0; // Enable USART1 TXD UCTL0 |= CHAR; // 8-bit char, SWRST=1 UTCTL0 |= SSEL1; // UCLK = SMCLK

UBR00 = 0x8B; // 19200 from 8.00MHz = 416

UBR10 = 0x00; (adsbygoogle = window.adsbygoogle || []).push({});

UMCTL0 = 0x45; // Modulation = 0.375 UCTL0 &= ~SWRST; // Initialise USART0 //IE1 |= URXIE0; // Enable USART0 RX interrupt

}

void send_char_0(unsigned int s) {

// IE2 &= (~URXIE1);

while (!(IFG1 & UTXIFG0)); // USART1 TX buffer ready?

TXBUF0 = s; // char to TXBUF0 --> send

// IE2 |= URXIE1; // Enable USART1 RX interrupt

}

void send_10bit(unsigned int w) {

/*gui data 10 bit, thap truwoc, cao sau */ //lay 10 bit data

w &= 0x03FF ; // 0000 00xx xxxx xxxx data 10 bit //send Low_byte

send_char_0(w); //000x xxxx: low byte MSB = 0 //send Hi_byte

// Delay(20);

send_char_0((w>>5) | 0x20); //001x xxxx Hight byte MSB = 1 }

//****************************************************************** ************

void send_12bit_0(unsigned int w) {

// disable USART1 RX interrupt /*gui data 12 bit, thap truwoc, cao sau */

//lay 12 bit data

w &= 0x0FFF ; // 0000 xxxx xxxx xxxx data 12 bit //send Low_byte

Phụ lục B

Tài liệu tham khảo

[1] Ngô Diên Tập, Kĩ thuật ghép nối máy tính. NXB khoa học và kĩ thuật, 2005.

[2] Chử Đức Trình, Sensing Microgripper for Microparticle Handling. Luận văn TS, 2007.

[3] Trần Quang Vinh, Chử Văn An, Nguyên lý kĩ thuật điện tử. NXB ĐH QGHN, 2005.

[4] AD620 Low Cost,Low Power Instrumentation Amplifier.http://www.analog.com

[5] MSP430x1xx family User’s Guide(Re.F). http://www.focus.ti.com [6] MSP430f167 datasheet.http://www.datasheetcatalog.com

[7] William D.Stanly. Bộ khuếch đại và xử lý IC tuyến tính. NXB Khoa hoc- kĩ thuật, 1994.

[8] http://www.dientuvietnam.com [9] http://www.imagecraft.com

MỤC LỤC ... 1 HÀ NỘI - 2008 ... 1 ...3 Chương 1 ...1 Giới thiệu...1 1.1 Vi kẹp có gắn cảm biến...1 1.1.1 Giới thiệu ... 1 1.1.2 Chế tạo ... 1

1.1.3 Vi chấp hành điện nhiệt polymer-silicon ... 1 (adsbygoogle = window.adsbygoogle || []).push({});

1.1.4 Thông số kỹ thuật của vi kẹp có gắn cảm biến ... 3

1.2 Bài toán xây dựng hệ thống điều khiển...7

1.3 Yêu cầu thiết kế hệ thống điều khiển...7

Chương 2...8

GIỚI THIỆU HỌ VI ĐIỀU KHIỂN MSP430x1xx...8

2.1 Giới thiệu...8

2.2 Không gian địa chỉ...8

2.2.1 Flash/ROM ... 9

2.2.2 RAM ... 9

2.2.3 Những khối ngoại vi ... 9

2.2.4 Những thanh ghi chức năng đặc biệt ( SFR ) ... 10

2.2.5 Truy cập bộ nhớ ... 10

2.3 Cổng vào/ra số...11

2.3.1 Giới thiệu vào/ra số ... 11

2.3.2 Hoạt động vào/ra số ... 11

2.3.3 Thanh ghi đầu vào PxIN ... 11

2.3.4 Thanh ghi ra PxOUT ... 11

2.3.5 Thanh ghi điều khiển PxDIR ... 11

... 11

2.3.6 Thanh ghi lựa chọn chức năng PxSEL ... 12

2.4 USART giao tiếp ngoại vi, chế độ UART...12

2.4.1 Chế độ hoạt động của UART ... 12

2.4.2 Khởi tạo và xác lập lại chế độ hoạt động USART ... 13

2.4.3 Dạng kí tự khung truyền ... 14

2.4.4 Định dạng truyền không đồng bộ ... 15

2.4.5 USART cho phép nhận ... 17

2.4.6 USART cho phép truyền ... 17

2.5 Bộ chuyển đổi tương tự số 12 bit ADC12...18

2.5.1 Giới thiệu ADC12 ... 18 (adsbygoogle = window.adsbygoogle || []).push({});

2.5.2 Hoạt động của ADC12 ... 20

2.5.2.1 Nhân 12 bit của ADC12...20

2.5.2.2 Các đầu vào của ADC12 và bộ hợp kênh...20

2.5.2.3 Điện áp tham chiếu ...20

2.5.3 Các chế độ chuyển đổi ADC12: ... 23

2.5.3.1 Chế độ kênh-đơn chuyển đổi-đơn...24

2.5.3.4 Chế độ lặp lại kênh tuần tự...27

2.6 Bộ chuyển đổi số-tương tự DAC12...28

2.6.1 Giới thiệu về DAC12 ... 28

2.6.2 Hoạt động DAC12 ... 30

2.6.2.1 Nhân của DAC12...30

2.6.2.2 Lựa chọn cổng cho DAC12...31

2.6.2.3 Điện áp tham chiếu DAC12...31

2.6.2.4 Cập nhật đầu ra điện áp DAC12...31

Chương 3...32 THIẾT KẾ MẠCH...32 Phần 1...32 3.1 THIẾT KẾ PHẦN CỨNG...32 3.1.1 Đặt vấn đề ... 32 3.1.2 Đặc điểm kĩ thuật ... 32

3.1.3 Sơ đồ khối mạch thiết kế ... 32

3.1.4 Chức năng và sơ đồ nguyên lý từng khối ... 33

3.1.4.1 Khối khuếch đại tín hiệu từ sensor...33

3.1.4.2 Khối xử lý trung tâm...35

3.1.4.3 Khối ghép nối máy tính...35

3.1.4.4 Khối điều khiển vi kẹp...35

3.1.5 Thiết kế mạch bằng Protel 99SE ... 37

3.1.5.1 Mạch nguyên lý...37

3.1.5.2 Mạch in...37

3.1.6 Kết luận ... 37

Phần 2 ...38

3.2 LẬP TRÌNH NHÚNG CHO KHỐI ĐIỀU KHIỂN TRUNG TÂM...38

3.2.1 Công cụ phần mềm lập trình ... 38

3.2.2 Lập cấu hình hoạt động cho khối điều khiển trung tâm ... 38

3.2.2.1 Cấu hình cho khối ADC12...38 (adsbygoogle = window.adsbygoogle || []).push({});

3.2.2.2 Cấu hình cho khối DAC12...42

3.2.2.3 Cấu hình cho khối UART...45

3.2.3 Kết luận ... 48

Chương 4 ...49

Kết luận...49

Phụ lục A...50

Mã nguồn chương trình điều khiển vi kẹp có gắn cảm biến từ PC...50

Phụ lục B...53

Một phần của tài liệu Thiet ke va xay dung mach dieu khien (Trang 49 - 60)