giáo trình thí nghiệm vi xử lý

40 285 0
giáo trình thí nghiệm vi xử lý

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

MỤC TIÊU CỦA HỌC PHẦN Mục tiêu chung Rèn luyện cho sinh viên kỹ lập trình bằng ngôn ngữ Assembly ngôn ngữ bậc cao, giới thiệu tổng quan về thiết kế một hệ thống vi xử và việc sử dụng các công cụ hỗ trợ thiết kế hệ thống vi xử Mục tiêu cụ thể - Kiến thức: Tổ chức hệ thống vi xử lý, Kiến trúc tập lệnh và Tổ chức bộ nhớ, Ngôn ngữ lập trình, Thiết kế thuật toán - Kỹ năng: Lập trình cho xử ngôn ngữ ngôn ngữ Assembly/ C/ C++/ Java, thao tác Kit phát triển hệ thống, sử dụng các công cụ phần cứng và phần mềm dùng cho việc thiết kế hệ thống Vi xử lý - Thái độ: Có ý thức nâng cao khả năng, kiến thức Có ý thức tự tìm tài liệu có liên quan mơn học Tiêu chí đánh giá - Sinh viên phải tham gia đầy đủ buổi thí nghiệm theo lịch phòng đào tạo nghĩ từ ½ số buổi thí nghiệm trở lên khơng làm test - Sinh viên phải tìm hiểu đọc trước tài liệu thầy hướng dẫn yêu cầu - Sinh viên phải hoàn tất Lab thầy hướng dẫn - Thang đánh giá: o Chuyên cần : 10% o Thực hành : 20% o Thuyết trình : 70% ́ Tà i liê ̣u hương dan thı́ nghi m Vi xử lý và Vi đieu khien Kit MSP-EXP430FG4618 1.1 Giới thiệu chung: KIT MSP-EXP430FG4618 hãng TI bo mạch tích hợp chip MSP430FG4618 MSP430F2013 nên cung cấp ngoại vi phổ biến họ MSP430 Đặc biệt, chip 4618 2013 giao tiếp với (xem hình 2) giao tiếp với thiết bị bên Có thể sử dụng gói cơng cụ sau để lập trình debug: IAR Embeeded Workbench, TI Code Composer Essential (CCE) TI code Composer Studio (CCS) Thiết bị để lập trình debug cho chip TI TI USB Flash Emulation Tool (FET) Hình KIT MSP-EXP430FG4618 TI tài trợ cho môn Kỹ thuật Máy tính Biên soạn: Phạm Xn Trung, Bộ mơn Kỹ thuật Máy nh, Khoa Điện tử Viễn thông, Trường ĐH Bách khoa, ĐH Đà Nẵng ́ Tà i liê ̣u hương dan thı́ nghi m Vi xử lý và Vi đieu khien 1.2 Sơ đồ khối phân bổ linh kiện KIT MSP-EXP430FG4618 Hình Sơ đồ khối phân bổ linh kiện KIT MSP-EXP430FG4618 1.2.1 JTAG Hai header JTAG1 JTAG2 để lập trình debug MSP430 riêng biệt: JTAG1 cho MSP430FG4618 JTAG2 cho MSP430F2013 JTAG1 cho MSP430FG4618 dùng kiểu kết nối JTAG chuẩn dây, JTAG cho MSP430F2013 dùng kiểu giao tiếp JTAG Spy-Bi-Wire (2 dây) Điều cho phép chân port sử dụng trình debug 1.2.2 Microphone: Microphone (MIC) kết nối với MSP430FG4618 qua chân hình Microphone kích hoạt hay khơng qua chân MSP430FG4618 Hình Sơ đồ nguyên Microphone KIT MSP430FG4618 Biên soạn: Phạm Xuân Trung, Bộ môn Kỹ thuật Máy nh, Khoa Điện tử Viễn thông, Trường ĐH Bách khoa, ĐH Đà Nẵng ́ Tà i liê ̣u hương dan thı́ nghi m Vi xử lý và Vi đieu khien 1.2.3 Buzzer Buzzer kết nối với port I/O P3.5 MSP430FG4618 Buzzer hoàn toàn bị cách ly với jumper JP1 Lưu ý: q trình thí nghiệm, sau thử nghiệm thành công, sinh viên nên tháo JP1 để tránh làm ảnh hưởng người xung quanh 1.2.4 LCD LCD kit loại SoftBaugh SBLCDA4, có chế độ: tĩnh, 2-mux, 3-mux 4-mux LCD hỗ trợ giao tiếp với MSP430FG4618 qua LCD driver có sẵn 1.2.5 Nút nhấn S1 S2: Hai nút nhấn S1 S2 nối với cổng xuất/nhập số P1 có chức ngắt MSP430FG4618 Hình Sơ đồ nguyên kết nối nút nhấn S1 & S2 với MSP430FG4618 1.2.6 Các LED đơn KIT MSP430FG4618 có LED: LED1, LED2, LED4 kết nối với chip MSP430FG4618, LED3 kết nối với chip MSP430F2013 LED3 LED4 ngắt khỏi kết nối Jumper để tiết kiệm lượng cho kit (LED3 dùng jumper JP2, LED4 dùng JP3) LED LED1 LED2 LED3 LED4 Kết nối với chip MSP430FG4618 MSP430FG4618 MSP430F2013 MSP430FG4618 Port P2.2 P2.1 P1.0 P5.1 Ghi Jumper JP2 JP3 Bảng 1: Kết nối LED Hình Sơ đồ nguyên kết nối LED1, LED2 & LED4 với MSP430FG4618 Hình Sơ đồ nguyên kết nối LED3 với MSP430F2013 Biên soạn: Phạm Xuân Trung, Bộ môn Kỹ thuật Máy nh, Khoa Điện tử Viễn thông, Trường ĐH Bách khoa, ĐH Đà Nẵng ́ Tà i liê ̣u hương dan thı́ nghi m Vi xử lý và Vi đieu khien 1.2.7 Giao tiếp RS232 Chip MSP430FG4618 hỗ trợ chuẩn giao tiếp RS-232 chân thông qua ngoại vi USC chip (được cấu hình chế độ UART) Hình Sơ đồ nguyên giao tiếp cổng RS232 với MSP430FG4618 1.2.8 Jumper Hình Sơ đồ bố trí jumper KIT MSP430FG4618 Biên soạn: Phạm Xuân Trung, Bộ môn Kỹ thuật Máy nh, Khoa Điện tử Viễn thông, Trường ĐH Bách khoa, ĐH Đà Nẵng ́ Tà i liê ̣u hương dan thı́ nghi m Vi xử lý và Vi đieu khien Header Chức 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 sử dụng X JTAG2 Bộ FET để lập trình-debug F2013 F2013 không sử dụng X PWR1 Cung cấp nguồn cho FG4618 Ngồi ra, FG4618 khơng cung cấp nguồn dùng để đo dòng Cung cấp nguồn cho F2013 Ngồi ra, F2013 không cung cấp nguồn dùng để đo dòng Yêu cầu cần gắn jumper để sử dụng FG4618 Yêu cầu cần gắn jumper để sử dụng F2013 Cung cấp nguồn cho kit pin AAA Ngồi ra, dung để đo dòng tổng cộng kit Để sử dụng buzzer (nối với chân FG4618-P3.5) Pin không cung cấp nguồn cho chip MSP430 Yêu cầu cần dùng pin 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 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 dùng LED4 JP4 Suy hao mức điện áp audio (69%) 98% suy hao ngõ 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 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 VCC_1: chân phía Dùng cho FG4618/JTAG1 VCC_2: chân phía Dùng cho F2013/JTAG2 LCL: cung cấp Vcc đến FET FET: nguồn từ FET (jumper BATT không thiết lập) PWR2 BATT JP1 H1(1-2, 3-4, 56,7-8) Vcc Không giao tiếp qua I2C Yêu cầu cho giao tiếp bên processor Không giao tiếp qua SPI Yêu cầu cho giao tiếp bên processor Nguồn từ JTAG Yêu cầu sử dụng không cần pin Bảng Liệt kê chức jumper KIT MSP430FG4618 kết nối Biên soạn: Phạm Xuân Trung, Bộ môn Kỹ thuật Máy nh, Khoa Điện tử Viễn thông, Trường ĐH Bách khoa, ĐH Đà Nẵng ́ Tà i liê ̣u hương dan thı́ nghi m Vi xử lý và Vi đieu khien 1.3 Sơ đồ nguyên KIT MSP-EXP430FG4618 Hình Sơ đồ ngun tồn KIT MSP430FG4618 Biên soạn: Phạm Xuân Trung, Bộ môn Kỹ thuật Máy nh, Khoa Điện tử Viễn thông, Trường ĐH Bách khoa, ĐH Đà Nẵng ́ Tà i liê ̣u hương dan thı́ nghi m Vi xử lý và Vi đieu khien 2.Đặc tính cách cài đặt Debug MSP-FET430UIF 2.1 Giới thiệu công cụ FET FET (Flash Emulation Tool) cho phép lập trình - debug họ vi xử MSP430 qua chuẩn kết nối JTAG đầy đủ(4 dây) JTAG tiết kiệm chân (2 dây, Spy Bi-Wire) Do đó, FET dùng để phát triển ứng dụng họ MCU qua chế giao tiếp FET qua USB cổng song song, tương ứng với loại MSP-FET430UIF (Hình 10) MSP- FET430PIF Hiện tại, Công ty TI tài trợ loại MSP – FET430UIF cho mơn Kỹ thuật Máy tính nên tất thí nghiệm KIT MSP430FG4618 sử dụng loại Hình 10 Bộ Debug MSP-FET430UIF Đặc tính Hỗ trợ tất họ MSP430 dựa Flash (F1xx, F2xx, F4xx, F5xx) MSP-FET430UIF x MSP-FET430PIF x x x KHÔNG x x x x KHÔNG KHÔNG x x KHƠNG x x Cho phép cấu hình bảo mật JTAG để bảo vệ code Cho phép tạo nguồn cấp chỉnh 1.8V-3.6V 100mA Cố định tạo nguồn cấp 2.8V Debug dùng JTAG chuẩn dây Debug dùng JTAG chuẩn dây (Spy-Bi-Wire) Hỗ trợ CCE Hỗ trợ IAR Bảng So sánh vài tình loại MSP-FET430UIF MSP- FET430PIF 2.2.Cài đặt driver Debug MSP-FET430UIF lên PC Hiện tại, phòng thí nghiệmVi xử trang bị PC cài đặt windows nên việc thiết lập driver cho Debug MSP-FET430UIF tuân theo bước sau Bước 1: Download driver cho FET430UIF lưu vào PC Đố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 Đối với hệ điều hành khác, lựa chọn drive phù hợp địa chỉ: Biên soạn: Phạm Xuân Trung, Bộ môn Kỹ thuật Máy nh, Khoa Điện tử Viễn thông, Trường ĐH Bách khoa, ĐH Đà Nẵng ́ Tà i liê ̣u hương dan thı́ nghi m Vi xử lý và Vi đieu khien http://processors.wiki.ti.com/index.php/MSP430_JTAG_Interface_USB_Driver 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 cho cửa sổ sau Tiếp theo click vào Device Manager Bước 4: Click phải phần thiết bị mà chưa cài đặt, chọn Properties Tiếp đến chọn tab Driver / Update Driver… chọn đường dẫn đến file driver download bước Công cụ soạn thảo, mô phỏng, biên dịch nạp chương trình: Để lập trình debug, người phát triển ứng dụng sử dụng gói công cụ sau đây: IAR Embeeded Workbench, TI Code Composer Essential (CCE) TI Code Composer Studio (CCS) IAR chọn sử dụng tính đơn giản, gọn nhẹ Tham khảo website http://www.iar.com/ để biết thêm thơng tin IAR Download IAR Embedded Workbench Code size limited Kickstart version tại: http://www.ti.com/lit/zip/slac050 Cơ sử dụng IAR để tạo project lập trình MSP430 tuân theo bước sau Biên soạn: Phạm Xuân Trung, Bộ môn Kỹ thuật Máy nh, Khoa Điện tử Viễn thông, Trường ĐH Bách khoa, ĐH Đà Nẵng ́ Tà i liê ̣u hương dan thı́ nghi m Vi xử lý và Vi đieu khien Bước 1: chạy chương trình IAR Embedded Workbench IDE theo đường dẫn Start/All Programs/IAR Systems/ IAR Embeeded Workbench Kickstart for MSP430 4.21/ IAR Embeeded Workbench Hoặc click chuột vào Icon desktop hình Sau cửa sổ giao diện chương trình hiển thị Bước 2: Từ cửa sổ giao diện chính, chọn Project/ Create New Project … Bước 3: chọn ngơn ngữ sử dụng Trong thí nghiệm này, chọn Empty project C/main Asm/asm click OK Ở đây, lựa chọn Empty project sử dụng, sau click vào nút Biên soạn: Phạm Xuân Trung, Bộ môn Kỹ thuật Máy nh, Khoa Điện tử Viễn thông, Trường ĐH Bách khoa, ĐH Đà Nẵng 25 ́ Tà i liê ̣u hương dan thı́ nghi m Vi xử lý và Vi đieu khien Bài 2.1 Yêu cầu: Sinh viên viết chương trình đảo trạng thái LED1 Switch nhấn Trong chương trình sử dụng ngắt chân port giao tiếp Switch Câu hỏi 1: Các SW(switch) kết nối với MCU hình Điền vào chỗ trống để trả lời câu hỏi + SW1 nối vào chân Port CPU? Port 1.0 Trả lời:…………………………………………… + Khi Switch nhấn, có chuyển trạng thái chân PORT? + Để cho phép ngắt chân P1.0, ta phải ghi …… vào bit…….của ghi …………….? + Để chọn cạnh xuống cho ngắt chân P1.0, ta phải ghi ……vào bit…….của ghi ………? Câu hỏi 2: Hồn chỉnh chương trình cách điền vào chỗ trống: #include #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 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 } Biên soạn: Phạm Xuân Trung, Bộ môn Kỹ thuật Máy nh, Khoa Điện tử Viễn thông, Trường ĐH Bách khoa, ĐH Đà Nẵng 26 Tà i liê ̣u hương dan thı́ nghi m Vi xử lý và Vi đieu khien Bài 2.2 Yêu cầu: Sinh viên viết chương trình cho phép/khơng cho phép LED1 nhấp nháy Switch nhấn Hướng dẫn: Để thực thí nghiệm này, sinh viên cần thực việc cấu hình cho cổng I/O, thiết lập đường ngõ vào để đọc tín hiệu từ nút nhấn ngõ để điều khiển LED1 Sinh viên sử dụng số gợi ý sau để viết chương trình Để phát nút nhấn có nhấn hay không, sử dụng cấu trúc lệnh: if ( !P1IN & 0x01) Sau khai báo biến điều khiển chương trình phát LED nhấp nháy hay khơng, nút nhấn: - Định nghĩa biến thị LED nháy: Unsigned char blink_status = 1; - Thiết lập chương trình hoạt động phụ thuộc vào trạng thái biến while(1){ // Infinite loop if (blink_status == 1) { P2OUT ^= 0x04; // Toggle Port P2.2 i=15000; // Delay (i‐‐); while (i !=0); } if (!(P1IN & 0x01)) { // Detect S1 pressed i=1500; // Delay, button debounce (i‐‐); while (i !=0); while (!(P1IN & 0x01)); // Wait for the release of the button i=1500; // Delay, button debounce (i‐‐); while (i !=0); if (blink_status ==1){ // If led is blinking, stop it P2OUT&= _ 0x04; // Turn Led off blink_status=0; }else blink_status=1; Biên soạn: Phạm Xn Trung, Bộ mơn Kỹ thuật Máy tính, Khoa Điện tử Viễn thông, Trường ĐH Bách khoa, ĐH Đà Nẵng 27 Tà i liê ̣u hương dan thı́ nghi m Vi xử lý và Vi đieu khien Viết chương trình vào : ……………………………………………………………………………………………………………… ……………………………………………………………………………………………………………… ……………………………………………………………………………………………………………… ……………………………………………………………………………………………………………… ……………………………………………………………………………………………………………… ……………………………………………………………………………………………………………… ……………………………………………………………………………………………………………… ……………………………………………………………………………………………………………… ……………………………………………………………………………………………………………… ……………………………………………………………………………………………………………… ……………………………………………………………………………………………………………… ……………………………………………………………………………………………………………… ……………………………………………………………………………………………………………… ……………………………………………………………………………………………………………… ……………………………………………………………………………………………………………… ……………………………………………………………………………………………………………… ……………………………………………………………………………………………………………… ……………………………………………………………………………………………………………… ……………………………………………………………………………………………………………… ……………………………………………………………………………………………………………… ……………………………………………………………………………………………………………… ……………………………………………………………………………………………………………… ……………………………………………………………………………………………………………… ……………………………………………………………………………………………………………… ……………………………………………………………………………………………………………… ……………………………………………………………………………………………………………… ……………………………………………………………………………………………………………… ……………………………………………………………………………………………………………… ……………………………………………………………………………………………………………… ……………………………………………………………………………………………………………… ……………………………………………………………………………………………………………… ……………………………………………………………………………………………………………… ……………………………………………………………………………………………………………… ……………………………………………………………………………………………………………… ……………………………………………………………………………………………………………… ……………………………………………………………………………………………………………… ……………………………………………………………………………………………………………… ……………………………………………………………………………………………………………… ……………………………………………………………………………………………………………… ……………………………………………………………………………………………………………… Biên soạn: Phạm Xuân Trung, Bộ mơn Kỹ thuật Máy tính, Khoa Điện tử Viễn thông, Trường ĐH Bách khoa, ĐH Đà Nẵng 28 ƒư ‹Ž‹‡Ƹ ኇ—Šዛዓƴ‰†ƒች –ŠÇƴ ‰Š‹ ‹šዛትŽ›ƴ ˜ƒư ‹¯‹‡ቹ —Š‹‡ቻ  Bài 2.3 u cầu: Sinh viên viết chương trình cho phép/khơng cho phép LED1 nhấp nháy Switch nhấn Trong chương trình sử dụng ngắt chân port giao tiếp Switch Hướng dẫn: Sinh viên vận dụng kiến thức hướng dẫn có 2.1 2.2 để viết chương trình Viết chương trình vào : ……………………………………………………………………………………………………………… ……………………………………………………………………………………………………………… ……………………………………………………………………………………………………………… ……………………………………………………………………………………………………………… ……………………………………………………………………………………………………………… ……………………………………………………………………………………………………………… ……………………………………………………………………………………………………………… ……………………………………………………………………………………………………………… ……………………………………………………………………………………………………………… ……………………………………………………………………………………………………………… ……………………………………………………………………………………………………………… ……………………………………………………………………………………………………………… ……………………………………………………………………………………………………………… ……………………………………………………………………………………………………………… ……………………………………………………………………………………………………………… ……………………………………………………………………………………………………………… ……………………………………………………………………………………………………………… ……………………………………………………………………………………………………………… ……………………………………………………………………………………………………………… ……………………………………………………………………………………………………………… ……………………………………………………………………………………………………………… ……………………………………………………………………………………………………………… ……………………………………………………………………………………………………………… ……………………………………………………………………………………………………………… ……………………………………………………………………………………………………………… ……………………………………………………………………………………………………………… ……………………………………………………………………………………………………………… ……………………………………………………………………………………………………………… ……………………………………………………………………………………………………………… ……………………………………………………………………………………………………………… ……………………………………………………………………………………………………………… ……………………………………………………………………………………………………………… ……………………………………………………………………………………………………………… ……………………………………………………………………………………………………………… ……………………………………………………………………………………………………………… Biên soạn: Phạm Xuân Trung, Bộ mơn Kỹ thuật Máy tính, Khoa Điện tử Viễn thông, Trường ĐH Bách khoa, ĐH Đà Nẵng 30 ƒư ‹Ž‹‡Ƹ ኇ—Šዛዓƴ‰†ƒች –ŠÇƴ ‰Š‹ ‹šዛትŽ›ƴ ˜ƒư ‹¯‹‡ቹ —Š‹‡ቻ  Bài 2.4 Yêu cầu: Sinh viên viết chương trình cho phép LED1 không cho phép LED2 nhấp nháy Switch nhấn, không cho phép LED1 cho phép LED2 nhấp nháy Switch nhấn Hướng dẫn: Sinh viên vận dụng kiến thức hướng dẫn có 2.1 2.2 để viết chương trình Viết chương trình vào : ……………………………………………………………………………………………………………… ……………………………………………………………………………………………………………… ……………………………………………………………………………………………………………… ……………………………………………………………………………………………………………… ……………………………………………………………………………………………………………… ……………………………………………………………………………………………………………… ……………………………………………………………………………………………………………… ……………………………………………………………………………………………………………… ……………………………………………………………………………………………………………… ……………………………………………………………………………………………………………… ……………………………………………………………………………………………………………… ……………………………………………………………………………………………………………… ……………………………………………………………………………………………………………… ……………………………………………………………………………………………………………… ……………………………………………………………………………………………………………… ……………………………………………………………………………………………………………… ……………………………………………………………………………………………………………… ……………………………………………………………………………………………………………… ……………………………………………………………………………………………………………… ……………………………………………………………………………………………………………… ……………………………………………………………………………………………………………… ……………………………………………………………………………………………………………… ……………………………………………………………………………………………………………… ……………………………………………………………………………………………………………… ……………………………………………………………………………………………………………… ……………………………………………………………………………………………………………… ……………………………………………………………………………………………………………… ……………………………………………………………………………………………………………… ……………………………………………………………………………………………………………… ……………………………………………………………………………………………………………… ……………………………………………………………………………………………………………… ……………………………………………………………………………………………………………… ……………………………………………………………………………………………………………… ……………………………………………………………………………………………………………… ……………………………………………………………………………………………………………… Biên soạn: Phạm Xuân Trung, Bộ môn Kỹ thuật Máy tính, Khoa Điện tử Viễn thơng, Trường ĐH Bách khoa, ĐH Đà Nẵng 32 ƒư ‹Ž‹‡Ƹ ኇ—Šዛዓƴ‰†ƒች –ŠÇƴ ‰Š‹ ‹šዛትŽ›ƴ ˜ƒư ‹¯‹‡ቹ —Š‹‡ቻ  Bài 2.5 Yêu cầu: Sinh viên viết chương trình cho phép LED1 không cho phép LED2 nhấp nháy Switch nhấn, không cho phép LED1 cho phép LED2 nhấp nháy Switch nhấn Trong chương trình sử dụng ngắt chân port giao tiếp Switch Hướng dẫn: Sinh viên vận dụng kiến thức hướng dẫn có 2.1 2.2 để viết chương trình Viết chương trình vào : ……………………………………………………………………………………………………………… ……………………………………………………………………………………………………………… ……………………………………………………………………………………………………………… ……………………………………………………………………………………………………………… ……………………………………………………………………………………………………………… ……………………………………………………………………………………………………………… ……………………………………………………………………………………………………………… ……………………………………………………………………………………………………………… ……………………………………………………………………………………………………………… ……………………………………………………………………………………………………………… ……………………………………………………………………………………………………………… ……………………………………………………………………………………………………………… ……………………………………………………………………………………………………………… ……………………………………………………………………………………………………………… ……………………………………………………………………………………………………………… ……………………………………………………………………………………………………………… ……………………………………………………………………………………………………………… ……………………………………………………………………………………………………………… ……………………………………………………………………………………………………………… ……………………………………………………………………………………………………………… ……………………………………………………………………………………………………………… ……………………………………………………………………………………………………………… ……………………………………………………………………………………………………………… ……………………………………………………………………………………………………………… ……………………………………………………………………………………………………………… ……………………………………………………………………………………………………………… ……………………………………………………………………………………………………………… ……………………………………………………………………………………………………………… ……………………………………………………………………………………………………………… ……………………………………………………………………………………………………………… ……………………………………………………………………………………………………………… ……………………………………………………………………………………………………………… ……………………………………………………………………………………………………………… ……………………………………………………………………………………………………………… Biên soạn: Phạm Xuân Trung, Bộ môn Kỹ thuật Máy tính, Khoa Điện tử Viễn thơng, Trường ĐH Bách khoa, ĐH Đà Nẵng 34 ƒư ‹Ž‹‡Ƹ ኇ—Šዛዓƴ‰†ƒች –ŠÇƴ ‰Š‹ ‹šዛትŽ›ƴ ˜ƒư ‹¯‹‡ቹ —Š‹‡ቻ   Bài 3: TIMER ĈӇ cҩu 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 ÿó giá trӏ thích hӧp sӁ ÿѭӧc ÿѭa vào ghi cҩu hình cho timer ÿӇ làm timer hoҥt ÿӝng theo chӃ ÿӝ mong muӕn Timer cӫa MSP430x4xxx: - Basic Timer - Timer_A - Timer_B 6.2 Basic Timer Module: Hình 6.2.1: Sѫ ÿӗ khӕi cӫa Basic Timer 6.2.1 - 6.2.2 - Basic Timer1 Counter (BTCNT1): Dùng ÿӇ tҥo tҫn sӕ frame (frame frequency) cho bӝ ÿiӅu khiӇn LCD (LCD Controller) Là ghi bit, có thӇ ghi/ÿӑc Nguӗn clock: ACLK HӋ sӕ chia cho clock ngõ (fLCD) ÿѭӧc chӑn bӣi bit BTFRFQx ghi BTCTL fLCD = ACLK / x Basic Timer1 Counter (BTCNT2): Là bӝ chia tҫn sӕ có khҧ 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à ghi bit, có thӇ ghi/ÿӑc Nguӗn clock: ACLK, SMCLK, hoһc SMCLK/256 mҳc nӕi tiӃp vӟi BTCNT1 HӋ sӕ chia cho clock ngõ (fLCD) ÿѭӧc chӑn bӣi bit BTFRFQx ghi BTCTL Dùng ÿӇ tҥo ngҳt Basic Timer Interrupt BTIFG, thӡi gian ngҳt ÿѭӧc chӑn bӣi bit BTIPx ghi BTCTL 6.2.3 Các ghi cho Basic Timer Module: 6.2.3.1 BTCTL, Basic Timer Control Register: BiênsoҢn:PhҢmXuânTrung,BҾmônKӎthuҨtMáyơnh,KhoaiҵntӊViҴnthông,TrӇӁngHBáchkhoa,HàNҬng  35 ƒư ‹Ž‹‡Ƹ ኇ—Šዛዓƴ‰†ƒች –ŠÇƴ ‰Š‹ ‹šዛትŽ›ƴ ˜ƒư ‹¯‹‡ቹ —Š‹‡ቻ   6.2.3.2 IE2, Interrupt Enable Register 2: 6.2.3.3 IFG2, Interrupt Flag Register 2: 6.3 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 hay bӝ dao ÿӝng nӝi FLL+ gӗm có nguӗn : - LFXT1CLK: Bӝ dao ÿӝng có khҧ 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 vӟi tҫn sӕ tӯ 450Khz-8Mhz - XT2CLK: Bӝ dao ÿӝng có khҧ tҥo xung nhӏp tӕc ÿӝ cao vӟi thҥch anh, resonance hay nguӗn xung nhӏp vӟi tҫn sӕ tӯ 450Khz-8Mhz BiênsoҢn:PhҢmXuânTrung,BҾmônKӎthuҨtMáyơnh,KhoaiҵntӊViҴnthông,TrӇӁngHBáchkhoa,HàNҬng  36 ƒư ‹Ž‹‡Ƹ ኇ—Šዛዓƴ‰†ƒች –ŠÇƴ ‰Š‹ ‹šዛትŽ›ƴ ˜ƒư ‹¯‹‡ቹ —Š‹‡ቻ   - DCOCLK: Bӝ dao ÿӝng R-C nӝi, ÿѭӧc әn ÿӏnh tҫn sӕ bӣi FLL Có tín hiӋu xung nhӏp ÿѭӧc tҥo ra: - Master Clock (MCLK): Ĉѭӧc chӑn bӣi phҫn mӅm tӯ nguӗn LFXT1CLK, XT2CLK hoһc DCO MCLK có thӇ ÿѭӧc chia bӣi hӋ sӕ 1, 2, 4, trѭӟc sӱ dөng MCLK ÿѭӧc sӱ dөng bӣi CPU hӋ thӕng - Sub-System Main Clock (SMCLK): Ĉѭӧc chӑn bӣi phҫn mӅm giӳa XT2CLK DCOCLK SMCLK có thӇ ÿѭӧc chӑn bҵng phҫn mӅm cho ngoҥi vi - Auxiliary Clock (ACLK): ACLK ÿѭӧc taӑ tӯ LFXT1CLK, có thӇ ÿѭӧc chӑn bҵng phҫn mӅm cho ngoҥi vi - Buffered Auxiliary Clock (ACLK/n): Là ngõ ÿѭӧc ÿӋm cӫa ACLK ACLK/n ACLK chia cho hӋ sӕ chia 1, 2, 4, ÿѭӧc sӱ dөng cho ngoҥi vi bên Sau reset, MCLK 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 SMCLK sӁ 1.048576 Mhz 6.3.1 Hình 6.2.2: Sѫ ÿӗ khӕi bӝ tҥo xung nhӏp Các bӝ tҥo dao ÿӝng: 6.3.1.1 Low/High Frequency Oscillator (LFXT1): Bӝ dao ÿӝng 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 hoһc bӝ dao ÿӝng vӟi tҫm tӯ 450 Khz ÿӃn Mhz Bit XTS_FLL ghi FLL_CTL0 dùng ÿӇ chӑn lӵa chӃ ÿӝ hoҥt ÿӝng cӫa LFXT1 - XTS_FLL = : Low speed BiênsoҢn:PhҢmXuânTrung,BҾmônKӎthuҨtMáyơnh,KhoaiҵntӊViҴnthông,TrӇӁngHBáchkhoa,HàNҬng  37 ƒư ‹Ž‹‡Ƹ ኇ—Šዛዓƴ‰†ƒች –ŠÇƴ ‰Š‹ ‹šዛትŽ›ƴ ˜ƒư ‹¯‹‡ቹ —Š‹‡ቻ   - XTS_FLL = 1: High Speed Giá trӏ tө ÿiӋn bên cӫa bӝ dao ÿӝng (1, 6, 8, 10pF) ÿѭӧc chӑn bӣi bit XCAPxPF Bӝ dao ÿӝng LFXT1 có thӇ ÿѭӧc tҳt bҵng cách set bit OSCOFF lên nӃu LFXT1 không ÿѭӧc chӑn ÿӇ tҥo nguӗn cho MCLK (SELM # hoһc CPUOFF = 1) 6.3.1.2 Bӝ giao ÿӝng tҫn sӕ cao (High Frequency Oscillator) (XT2): Bӝ dao ÿӝng XT2 dùng thҥch anh ÿӇ tҥo dao ÿӝng tҫn sӕ cao XT2CLK Bӝ dao ÿӝng XT2 tө bên trong, vұy tө ngồi sӁ cҫn ÿѭӧc sӱ dөng giao tiӃp thҥch anh Bӝ dao ÿӝng XT2 có thӇ ÿѭӧc tҳt bҵng cách set bit XT2OFF lên nӃu XT2CLK không ÿѭӧc chӑn ÿӇ tҥo nguӗn cho MCLK (SELM # hoһc CPUOFF = 1) SMCLK (SELS = hoһc SMCLKOFF = 1) 6.3.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 bit thҩp cӫa 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, ÿѭӧc chӑn bӣi bit FLLDx Sau reset, DCOPLUS bҵng D bҵng - 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 bit FNx Ngѭӡi lұp trình phҧi ÿҧm bҧo tҫn sӕ cӫa MCLK không vѭӧt tҫn sӕ hoҥt ÿӝng cao nhҩt cӫa DCO 6.3.2 Các ghi ÿiӅu khiӇn clock: 6.3.2.1 SCFQCTL, System Clock Control Register : 6.3.2.2 SCFI0, System Clock Frequency Integrator Register : BiênsoҢn:PhҢmXuânTrung,BҾmônKӎthuҨtMáyơnh,KhoaiҵntӊViҴnthông,TrӇӁngHBáchkhoa,HàNҬng  38 ƒư ‹Ž‹‡Ƹ ኇ—Šዛዓƴ‰†ƒች –ŠÇƴ ‰Š‹ ‹šዛትŽ›ƴ ˜ƒư ‹¯‹‡ቹ —Š‹‡ቻ   6.3.2.3 SCFI1, System Clock Frequency Integrator Register 1: 6.3.2.4 FLL_CTLO, FLL+ Control Register 0: BiênsoҢn:PhҢmXuânTrung,BҾmônKӎthuҨtMáyơnh,KhoaiҵntӊViҴnthông,TrӇӁngHBáchkhoa,HàNҬng  39 ƒư ‹Ž‹‡Ƹ ኇ—Šዛዓƴ‰†ƒች –ŠÇƴ ‰Š‹ ‹šዛትŽ›ƴ ˜ƒư ‹¯‹‡ቹ —Š‹‡ቻ   6.3.2.5 FLL_CTL1, FLL+ Control Register 1: 6.4 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 bit CPUOFF, OSCOFF, SCG0, SCG1 ghi trҥng thái SR BiênsoҢn:PhҢmXuânTrung,BҾmônKӎthuҨtMáyơnh,KhoaiҵntӊViҴnthông,TrӇӁngHBáchkhoa,HàNҬng  40 ƒư ‹Ž‹‡Ƹ ኇ—Šዛዓƴ‰†ƒች –ŠÇƴ ‰Š‹ ‹šዛትŽ›ƴ ˜ƒư ‹¯‹‡ቹ —Š‹‡ቻ   BiênsoҢn:PhҢmXnTrung,BҾmơnKӎthuҨtMáyơnh,KhoaiҵntӊViҴnthơng,TrӇӁngHBáchkhoa,HàNҬng  41 ƒư ‹Ž‹‡Ƹ ኇ—Šዛዓƴ‰†ƒች –ŠÇƴ ‰Š‹ ‹šዛትŽ›ƴ ˜ƒư ‹¯‹‡ቹ —Š‹‡ቻ   Bài 3.1 Yêu cҫu:Sinh viên viӃt chѭѫng trình ÿҧo trҥng thái LED1 LED2 sau thӡi gian 1s, sӱ dөng ngҳt Basic Timer Interrupt Câu hӓi 1: ĈӇ vơ hiӋu hóa Watchdog Timer, ta phҧi ghi vào ghi WDTCTL mӝt giá trӏ bҵng bao nhiêu? WDTCTL = …………………………………………… ; Câu hӓi 2: Cҩu 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 ghi FLL_CTL0 giá trӏ ÿӇ chӑn tө bên có giá trӏ 8PF? BIT5 FLL_CTL0 |= ………………………………………… ; Vӟi ghi khác ӣ giá trӏ mһc ÿӏnh, tҫn sӕ cӫa tín hiӋu xung nhӏp sӁ bang bao nhiêu? ACLK = ………………………; MCLK = ………………………; SMCLK = …………………… ; Câu hӓi 3: Cҩu hình GPIO LED1 LED2 ÿѭӧc nӕi vào chân P2.2 P2.1 Ta phҧi ghi vào ghi vӟi giá trӏ ÿӇ cҩu hình cho chân PORT thành output, lҥi input? ………………… = ……………………………….; Ta phҧi ghi vào ghi vӟi giá trӏ ÿӇ làm cho LED1 sáng, LED2 tҳt? ………………… = ……………………………….; Câu hӓi 4: Cҩu hình cho Basic Timer 1: Ta dùng Basic Timer ÿӇ tҥo ngҳt Basic timer gӗm bӝ ÿӃm mҳc nӕi tiӃp, ÿó ngõ vào cӫa BTCNT2 ngõ cӫa BTCNT1 chia cho 256 (Tham khҧo hình 2.1) Ngõ vào cӫa BTCNT1 tín hiӋu ACLK có tҫn sӕ 32768 Hz Ngõ cӫa BTCNT2 phҧi ÿѭӧc chia cho ÿӇ có ngҳt Basic Timer có chu kǤ 1s? …………… Giá trӏ phҧi ghi vào ghi sau ÿӇ có sӕ chia cho BTCNT2 nhѭ cho phép ngҳt? BTCTL = ………………………………; IE2 = ………………………………… ; Câu hӓi 5: ChӃ ÿӝ cơng suҩt thҩp: Chѭѫng trình ÿѫn giҧn ÿҧo trҥng thái LED1 LED2 ngҳt ChӃ ÿӝ công suҩt thҩp nên ÿѭӧc sӱ dөng? ……………………… Khi ÿó, nguӗn xung nhӏp sӁ ÿѭӧc tích cӵc suӕt trình hoҥt ÿӝng? Câu hӓi 6: Hồn tҩt chѭѫng trình: #include // ***************************************************************** // 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 } //***************************************************************** BiênsoҢn:PhҢmXuânTrung,BҾmônKӎthuҨtMáyơnh,KhoaiҵntӊViҴnthông,TrӇӁngHBáchkhoa,HàNҬng  42 ƒư ‹Ž‹‡Ƹ ኇ—Šዛዓƴ‰†ƒች –ŠÇƴ ‰Š‹ ‹šዛትŽ›ƴ ˜ƒư ‹¯‹‡ቹ —Š‹‡ቻ   // Main routine // ***************************************************************** void main(void) { WDTCTL = ; // Stop WDT FLL_CTL0 |= .; // Set load cap for 32k xtal // Basic Timer Configuration BTCTL = ; // (ACLK/256)/64 IE2 |= ; // Enable BT interrupt with 0.5 period // LED1 & LED2 configuration P2DIR = ; //// P2.2 P2.1w/ asinterrupt digital output Enterand LPM3 P2OUT = ; // LED1 on and LED2 off ` bis_SR_register(LPM3_bits + GIE); Bài 3.2 Yêu cҫu:Sinh viên viӃt chѭѫng trình hiӇn thӏ giá trӏ lҫn lѭӧt tӯ -> lên led ÿoҥn P1 cӫa LCD Giá trӏ hiӇn thӏ tăng lên sau 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 chân P2.1 P2.2 ÿӇ cho phép chѭѫng trình dӯng ÿӃm hay tiӃp tөc hoҥt ÿӝng LCD sӱ dөng board có phҫn tӱ hiӇn thӏ nhѭ sau: P1 Sӱ dөng file lcd.h kèm theo Bài 3.3 Yêu cҫu: ThiӃt kӃ mӝt ÿӗng hӗ sӕ ÿѫn giҧn (cho phép lӵa chӑn giӳa real time hoһc sӱ dөng bӝ ÿӏnh thӡi) BiênsoҢn:PhҢmXuânTrung,BҾmônKӎthuҨtMáyơnh,KhoaiҵntӊViҴnthông,TrӇӁngHBáchkhoa,HàNҬng  ... thực thí nghiệm này, sinh vi n cần thực vi c cấu hình cho cổng I/O, thiết lập đường ngõ vào để đọc tín hiệu từ nút nhấn ngõ để điều khiển LED1 Sinh vi n sử dụng số gợi ý sau để vi t chương trình. .. ̣u hương dan thı́ nghi m Vi xử lý và Vi đieu khien Khi biên dịch nạp thành công, ta tiến hành debugger trực tiếp mạch Step Thiết lập cho thí nghiệm Sau bước mà người làm thí nghiệm phải nắm kỹ trước... Máy nh, Khoa Điện tử Vi n thông, Trường ĐH Bách khoa, ĐH Đà Nẵng 21 ́ Tà i liê ̣u hương dan thı́ nghi m Vi xử lý và Vi đieu khien Bài 1.1 Yêu cầu: Sinh vi n vi t chương trình cho LED1 LED2

Ngày đăng: 03/03/2018, 18:05

Từ khóa liên quan

Tài liệu cùng người dùng

Tài liệu liên quan