Giao trinh PIC vi điều khiển

135 1K 72
Giao trinh PIC vi điều khiển

Đ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

ĐẠI HỌC ĐÀ NẴNG TRƯỜNG ĐẠI HỌC BÁCH KHOA KHOA CƠ KHÍ – BỘ MƠN CƠ ĐIỆN TỬ Lưu hành nội DANH MỤC HÌNH ẢNH Hình 1.1: Intel 4004, vi xử lý bit thương mại năm 1971 [1] Hình 1.2: Cấu trúc chip vi xử lý Hình 1.3: Cấu trúc chip vi điều khiển [2] Hình 1.4: Chip vi điều khiển PIC16F877A hãng Microchip Hình 1.5: Chương trình biên dịch CCS Hình 1.6: Chương trình nạp PICkit Hình 1.7: Mạch nạp PICkit hãng Microchip [11] Hình 2.1: Sơ đồ chân họ PIC16F877A dạng PDIP [4] 12 Hình 2.2: Sơ đồ chân họ PIC16F877A dạng TQFP [4] 12 Hình 2.3: Sơ đồ khối PIC16F87XA [4] 13 Hình 2.4: Cấu trúc nhớ theo kiểu Von Neumann Harvard [6] 14 Hình 2.5: Sơ đồ nhớ chương trình v{ ngăn xếp [4] 16 Hình 2.6: Sơ đồ ghi chức đặc biệt [4] 17 Hình 2.7: Xuất nhập I/O [7] 19 Hình 2.8: Thạch anh 4Mhz nối vào hai chân OSC1 OSC2 vi điều khiển 19 Hình 2.9: Các chân port A PIC16F877A [4] 20 Hình 2.10: C|c ghi liên quan đến Port A [4] 21 TS Đặng Phước Vinh – TS Võ Như Thành i Danh mục hình ảnh Hình 2.11: Bit RBPU nằm ghi OPTION_REG 22 Hình 2.12: Các chân port B PIC16F877A [4] 22 Hình 2.13: C|c ghi liên quan đến Port B [4] 23 Hình 2.14: Các chân port C PIC16F877A [4] 23 Hình 2.15: C|c ghi liên quan đến Port C [4] 25 Hình 2.16: Các chân port D PIC16F877A [4] 25 Hình 2.17: C|c ghi liên quan đến Port D [4] 26 Hình 2.18: Các chân port E PIC16F877A [4] 27 Hình 2.19: C|c ghi liên quan đến Port E [4] 27 Hình 2.20: Đặc tính ngoại vi chip vi điều khiển PIC16F877A [8] 28 Hình 3.1: Cấu trúc chương trình biểu diễn lưu đồ thuật tốn 30 Hình 3.2: Lưu đồ thuật toán dùng cấu trúc điều kiện “if” 34 Hình 3.3: Lưu đồ thuật toán dùng cấu trúc điều kiện “if - else” 35 Hình 3.4: Lưu đồ thuật toán dùng cấu trúc điều kiện “switch” 37 Hình 3.5: Lưu đồ thuật tốn dùng vòng lặp “ while” 40 Hình 3.6: Cấu trúc vòng lặp “while” 40 Hình 3.7: Lưu đồ thuật tốn dùng vòng lặp “do – while” 41 Hình 3.8: Sơ đồ mạch nhấp nh|y LED đơn 46 Hình 3.9: Sơ đồ mạch hiển thị LED đoạn anode chung 48 Hình 3.10: Sơ đồ chân LED đoạn (bên trái) hình ảnh thực tế LED đoạn (bên phải) 49 Hình 3.11: LED đoạn hiển thị số từ đến 49 Hình 3.12: LED đoạn hiển thị ký tự Alpha 49 Hình 3.13: LED đoạn loại Anode chung (Common Anode – CA) 50 Hình 3.14: LED đoạn loại Anode chung (Common Cathode – CA) 51 Hình 4.1: Sơ đồ khối Timer0 [5] 55 Hình 4.2: Thanh ghi OPTION_REG 55 Hình 4.3: Thanh ghi T1CON 57 Hình 4.4: Sơ đồ khối Timer1 [4] 59 TS Đặng Phước Vinh – TS Võ Như Thành ii Danh mục hình ảnh Hình 4.5: Counter phải nhận xung cạnh xuống trước có xung đếm [4] 59 Hình 4.6: Sơ đồ khối Timer2 [4] 61 Hình 4.7: Thanh ghi T2CON 61 Hình 4.8: Sơ đồ mạch hiển thị LED đoạn anode chung 63 Hình 4.9: Sơ đồ khối capture [4] 65 Hình 4.10: Sơ đồ khối Compare [4] 65 Hình 4.11: Điều chế độ rộng xung [4] 66 Hình 4.12: Sơ đồ khối PWM [4] 67 Hình 4.13: Thanh ghi CCPxCON 67 Hình 5.1: Thực thi chương trình khơng có ngắt (a) có ngắt (b) 71 Hình 5.2: Thanh ghi INTCON 72 Hình 5.3: Thanh ghi PIE1 73 Hình 5.4: Thanh ghi PIE2 73 Hình 5.5: Thanh ghi PIR1 74 Hình 5.6: Thanh ghi PIR2 75 Hình 6.1: Sơ đồ khối ADC PIC [4] 79 Hình 6.2: Thanh ghi ADCON0 80 Hình 6.3: Thanh ghi ADCON1 81 Hình 6.4: Các kiểu định dạng kết [4] 81 Hình 6.5: Chu kỳ chuyển đổi ADC [4] 83 Hình 6.6: Sơ đồ mạch đo v{ hiển thị nhiệt độ sử dụng cảm biến nhiệt độ LM35 84 Hình 7.1: Thanh ghi TXSTA 87 Hình 7.2: Thanh ghi RCSTA 87 Hình 7.3: Sơ đồ khối chế độ truyền [4] 89 Hình 7.4: Sơ đồ khối chế độ nhận [4] 91 Hình 7.5: Giao tiếp simplex 92 Hình 7.6: Giao tiếp half-duplex 92 Hình 7.7: Giao tiếp full-duplex 93 TS Đặng Phước Vinh – TS Võ Như Thành iii Danh mục hình ảnh Hình 7.8: Cổng COM chân [10] 94 Hình 7.9: Cổng COM 25 chân [10] 95 Hình 7.10: Sơ đồ kết nối IC MAX232 máy tính 98 Hình 7.11: Ảnh thực tế IC MAX232 (trái) mạch sử dụng MAX232 (phải) 98 Hình 7.12: Sơ đồ nối dây dùng giao tiếp UART – RS232 98 Hình 7.13: Cáp chuyển đổi từ giao tiếp cổng USB sang cổng COM 99 Hình 7.14: Sơ đồ khối giao diện SPI [4] 101 Hình 7.15: Thanh ghi SSPCON1 101 Hình 7.16: Thanh ghi SSPSTAT 102 Hình 7.17: Sơ đồ kết nối chuẩn giao tiếp SPI [4] 104 Hình 7.18: Giản đồ xung SPI chế độ Master [4] 105 Hình 7.19: Giản đồ xung SPI chế độ Slave với CKE = [4] 106 Hình 7.20: Giản đồ xung SPI chế độ Slave với CKE = [4] 107 Hình 7.21: Khái niệm giao tiếp I2C 108 Hình 7.22: Các chế độ hoạt động tốc độ hoạt động giao tiếp I2C 110 Hình 7.23: Gi~n đồ thời gian giao tiếp I2C 111 Hình 7.24: Quá trình tạo điều kiện START [4] 111 Hình 7.25: Quá trình tạo điều kiện STOP [4] 112 Hình 7.26: Quá trình tạo điều kiện START liên tục [4] 112 Hình 7.27: Qu| trình đọc byte 114 Hình 7.28: Qu| trình đọc nhiều byte 115 Hình 7.29: Quá trình ghi byte 115 Hình 7.30: Quá trình ghi nhiều byte 116 Hình 7.31: Thanh ghi SSPCON1 116 Hình 7.32: Thanh ghi SSPCON2 117 Hình 7.33: Thanh ghi SSPSTAT 118 Hình 7.34: Sơ đồ khối giao tiếp I2C chế độ master [4] 119 TS Đặng Phước Vinh – TS Võ Như Thành iv DANH MỤC CÁC BẢNG Bảng 1.1: So sánh chip vi xử lý v{ chip vi điều khiển Bảng 1.2: So sánh loại nhớ Bảng 2.1: Lựa chọn bank ghi 15 Bảng 3.1 Các ký hiệu lưu đồ thuật toán 30 Bảng 3.2 Các kiểu khai báo biến vi điều khiển PIC 31 Bảng 3.3 Các kiểu khai báo biến vi điều khiển PIC 32 Bảng 3.4 Các phép toán số học PIC 32 Bảng 3.5: Mã hiển thị LED đoạn Anode chung 50 Bảng 3.6: Mã hiển thị LED đoạn Cathode chung 51 Bảng 4.1 Chọn tỉ lệ chia trước Timer0 56 Bảng 4.2 Chọn tỉ lệ chia trước Timer1 58 Bảng 4.3 Lựa chọn ngõ postscaler Timer2 61 Bảng 4.4 Lựa chọn ngõ chia trước Timer2 62 Bảng 4.5 So sánh ba định thời PIC16F877A 62 Bảng 4.6 Dùng Timer chế độ CCP 68 Bảng 6.1 Lựa chọn xung chuyển đổi ADC 80 Bảng 6.2 Lựa chọn kênh ADC 80 TS Đặng Phước Vinh – TS Võ Như Thành v Bảng 6.3 Lựa chọn cấu hình cổng ADC [4] 82 Bảng 7.1: Công thức tính tốc độ baud [4] 86 Bảng 7.2: Đặc điểm giao tiếp cổng nối chuẩn RS232 93 Bảng 7.3: Chức chân cổng COM 25 chân chân 95 TS Đặng Phước Vinh – TS Võ Như Thành vi MỤC LỤC DANH MỤC HÌNH ẢNH i DANH MỤC CÁC BẢNG v MỤC LỤC vii GIỚI THIỆU CHUNG 1.1 Vi xử lý v{ vi điều khiển 1.1.1 Vi xử lý 1.1.2 Vi điều khiển 1.1.3 Sự khác vi xử lý v{ vi điều khiển 1.2 Vi điều khiển PIC 1.3 Các loại nhớ 1.3.1 ROM (Read-Only Memory) 1.3.2 EPROM (Erasable Programmable Read-Only Memory) 1.3.3 EEPROM (Electrically Erasable Programmable Read-Only Memory) 1.3.4 Bộ nhớ FLASH 1.4 Trình biên dịch nạp cho vi điều khiển PIC 1.4.1 Trình biên dịch cho PIC 1.4.1.1 Ngơn ngữ bậc thấp – Lập trình hợp ngữ 1.4.1.2 Ngơn ngữ bậc cao – trình biên dịch CCS 1.4.2 Chương trình nạp cho PIC TS Đặng Phước Vinh – TS Võ Như Thành vii Mục lục CẤU TRÚC PHẦN CỨNG PIC 16F877A .10 2.1 Tổng quan chip PIC16F877A 10 2.2 Tổ chức nhớ 13 a Kiến trúc Von Neumann 14 b Kiến trúc Harvard 14 2.2.2 Cấu trúc nhớ chương trình 14 2.2.3 Cấu trúc nhớ liệu 15 2.2.4 Thanh ghi chức đặc biệt 15 2.2.5 Ngăn xếp Stack 17 2.3 Xuất nhập I/O 18 2.3.1 Điều khiển hướng xuất/nhập 18 2.3.2 Chức c|c ch}n 19 2.3.2.1 Các chân nối nguồn thạch anh dao động 19 2.3.2.2 Port A 20 2.3.2.3 Port B 21 2.3.2.4 Port C 23 2.3.2.5 Port D 25 2.3.2.6 Port E 26 2.4 C|c đặc tính ngoại vi 28 TẬP LỆNH, CHỈ THỊ TIỀN XỬ LÝ 29 3.1 Lưu đồ thuật toán 29 3.2 Khai báo biến 31 3.3 Các phép toán 32 3.4 Toán tử biểu thức điều kiện 33 3.5 Toán tử chuyển kiểu 33 3.6 Các cấu trúc điều kiện 34 3.6.1 Lệnh “if” 34 3.6.2 Cấu trúc điều kiện “switch” 36 3.6.2.1 Không dùng lệnh default 36 3.6.2.2 Có dùng lệnh default 37 3.6.3 Cấu trúc vòng lặp “for” 38 3.6.4 Vòng lặp “while” 39 TS Đặng Phước Vinh – TS Võ Như Thành viii Giao diện đồng nối tiếp MSSP Hình 7.20: Giản đồ xung SPI chế độ Slave với CKE = [4] 7.2.2 Giao tiếp I2C (Inter-Intergrated Circuit) Đầu năm 1980 Phillips đ~ ph|t triển chuẩn giao tiếp nối tiếp d}y gọi I2C I2C tên viết tắt cụm từ Inter-Intergrated Circuit Đ}y l{ đường Bus giao tiếp IC với I2C phát triển bới Philips, đ~ nhiều nhà sản xuất IC giới sử dụng I2C trở thành chuẩn cơng nghiệp cho giao tiếp điều khiển, kể đ}y vài tên tuổi ngo{i Philips như: Texas Intrument(TI), MaximDallas, analog Device, National Semiconductor Bus I2C sử dụng làm bus giao tiếp ngoại vi cho nhiều loại IC kh|c c|c loại Vi điều khiển 8051, PIC, AVR, ARM chip nhớ như: RAM tĩnh (Static Ram), EEPROM, chuyển đổi tương tự số (ADC), số tương tự(DAC), IC điểu khiển LCD, LED Một giao tiếp I2C gồm có dây (xem Hình 7.21): Serial Data (SDA) Serial Clock (SCL) SDA l{ đường truyền liệu hướng, SCL l{ đường truyền xung đồng hồ để đồng theo hướng Như ta thấy hình vẽ trên, thiết bị ngoại vi kết nối v{o đường bus I2C chân SDA nối với dây SDA bus, chân SCL nối với dây SCL Mỗi d}y SDA hay SCL nối với điện |p dương nguồn cấp thông qua điện trở kéo lên (pullup resistor) Sự cần thiết c|c điện trở kéo chân giao tiếp I2C thiết bị ngoại vi thường dạng cực máng hở (opendrain hay opencollector) Giá trị c|c điện trở khác tùy vào thiết bị chuẩn giao tiếp, thường dao động khoảng 1kΩ đến 4.7k Ω TS Đặng Phước Vinh – TS Võ Như Thành 107 Chương GIAO TIẾP NỐI TIẾP Định địa thiết bị: 7-bit or 10 bit Rkéo: 1.8 – 47kΩ 1.8kΩ , 4.7kΩ ,10kΩ Rp +5V +3.3V Master 128 thiết bị Cần: 16 địa dự trữ  Tối đa 112 nút giao tiếp bus 127 Slaves VCC Master 111 Slaves khác Serial Clock SCL I2C bus MCU Master Sensor Slave ADC Slave EEPROM Slave MCU Slave SDA Serial Data Line Hình 7.21: Khái niệm giao tiếp I2C Từ Hình 7.21 ta thấy có nhiều thiết bị (ICs) kết nối vào bus I2C, nhiên không xảy chuyện nhầm lẫn thiết bị, thiết bị nhận địa với quan hệ chủ/tớ tồn suốt thời gian kết nối Mỗi thiết bị hoạt động thiết bị nhận truyền liệu hay vừa truyền vừa nhận Hoạt động truyền hay nhận tùy thuộc vào việc thiết bị chủ (master) tớ (slave) Một thiết bị hay IC kết nối với bus I2C, địa (duy nhất) để phân biệt, cấu hình thiết bị chủ hay tớ Nguyên nhân bus I2C quyền điều khiển thuộc thiết bị chủ Thiết bị chủ nắm vai trò tạo xung đồng hồ cho toàn hệ thống, hai thiết bị chủ-tớ giao tiếp thiết bị chủ có nhiệm vụ tạo xung đồng hồ quản lý địa thiết bị tớ suốt trình giao tiếp Thiết bị chủ giữ vai trò chủ động, thiết bị tớ giữ vai trò bị động việc giao tiếp Các ICs tớ (salve) định địa giao tiếp với IC chủ (master) Địa ICs nhà sản xuất IC quy định (có thể tìm thấy datasheet IC đó) Có hai cách định địa cho ICs tớ (slave): định địa bit 10 bit, cách định địa bit phổ biến Đối với cách định địa bit giao tiếp I2C cho phép 27 = 128 thiết bị hoạt động Nếu đường truyền I2C có IC chủ giao tiếp với 127 ICs tớ Tuy nhiên, theo quy định chế độ I2C 16 đường địa phải sử dụng cho chế độ dự trữ, với chế độ định bit ta kết nối tối đa IC chủ 11 ICs tớ TS Đặng Phước Vinh – TS Võ Như Thành 108 Giao diện đồng nối tiếp MSSP 7.2.2.1 Các chế độ hoạt động chế độ I2C a Chế độ hoạt động Chuẩn giao tiếp I2C có hai chế độ: Master Slave Chế độ I2C sử dụng hai ch}n RC3 v{ RC4 để truyền nhận tín hiệu:   RC3/SC /SCL: ch}n truyền dẫn xung clock RC4/SDI/SDA: ch}n truyền dẫn liệu Các khối sơ đồ khối giao tiếp I2C khơng có nhiều khác biệt so với giao tiếp SPI Ngoài giao tiếp I2C có thêm khối phát bit START bit STOP liệu khối xác định địa Giáo trình đề cập đến giao tiếp I2C chế độ Master Một bus I2C hoạt động nhiều chế độ khác nhau:    Một chủ tớ (one master - one slave) Một chủ nhiều tớ (one master - multi slave) Nhiều chủ nhiều tớ (Multi master - Multi slave) Dù chế độ nào, giao tiếp I2C dựa vào quan hệ chủ/tớ Giả thiết thiết bị A muốn gửi liệu đến thiết bị B, trình thực sau:    Thiết bị A (chủ) xác định địa thiết bị B (tớ), với việc xác định địa chỉ, thiết bị A định việc đọc hay ghi vào thiết bị tớ Thiết bị A gửi liệu tới thiết bị B Thiết bị A kết thúc trình truyền liệu Khi A muốn nhận liệu từ B, trình diễn trên, khác A nhận liệu từ B Trong giao tiếp này, A chủ B tớ b Tốc độ hoạt động Các bus I2C hoạt động ba chế độ, hay nói cách khác liệu bus I2C truyền ba chế độ khác nhau: Chế độ tiêu chuẩn (Standard mode)  Đ}y chế độ tiêu chuẩn ban đầu phát hành vào đầu năm 80  Nó có tốc độ liệu tối đa 100kbps  Nó sử dụng 7-bit địa chỉ, 112 địa tớ Chế độ nhanh (Fast mode)  Tốc độ liệu tối đa tăng lên đến 400 kbps  Để ngăn chặn gai tiếng ồn, ngõ vào thiết bị Fast-mode Schmitt-triggered  Chân SCL SDA thiết bị tớ I2C trạng thái trở kháng cao không cấp nguồn Chế độ cao tốc High-Speed (Hs) mode TS Đặng Phước Vinh – TS Võ Như Thành 109 Chương GIAO TIẾP NỐI TIẾP  Chế độ đ~ tạo chủ yếu để tăng tốc độ liệu lên đến 36 lần nhanh so với chế độ tiêu chuẩn Nó cung cấp 1,7 Mbps (với Cb = 400 pF), 3.4Mbps (với Cb = 100pF) Mode Master – Slave Master – multi-Slave Multi-Master – Multi-Slave Speed Standard Mode: 100 kbit/s Low-speed Mode: 10 kbit/s Fast Mode: 400 kbit/s Fast Mode Plus: Mbit/s High-speed Mode : 3.4 Mbit/s Hình 7.22: Các chế độ hoạt động tốc độ hoạt động giao tiếp I2C 7.2.2.2 Giản đồ thời gian chế độ I2C Ban đầu chưa thực trình giao tiếp, hai đường SDA SCL mức cao (SDA = SCL = HIGH) Lúc bus I2C coi rỗi (“bus free”), sẵn sàng cho giao tiếp Hai điều kiện START STOP thiếu việc giao tiếp thiết bị I2C với START điều kiện khởi đầu,báo hiệu bắt đầu giao tiếp, STOP báo hiệu kết thúc giao tiếp Hình đ}y mơ tả điều kiện START STOP TS Đặng Phước Vinh – TS Võ Như Thành 110 Giao diện đồng nối tiếp MSSP Idle Status Idle Status Stop Start Transper data Start sequence Hình 7.23: Giãn đồ thời gian giao tiếp I2C a Điều kiện START Một chuyển đồi trạng thái từ cao xuống thấp đường SDA đường SCL mức cao (cao = 1; thấp = 0) báo hiệu điều kiện START Điều kiện START khơng hình thành nếu:  Chân SCL SDA mức thấp  Trong trình tạo điều kiện START, ch}n SCL đưa trạng thái logic thấp trước ch}n SDA đưa mức logic thấp Hình 7.24: Quá trình tạo điều kiện START [4] TS Đặng Phước Vinh – TS Võ Như Thành 111 Chương GIAO TIẾP NỐI TIẾP b Điều kiện STOP Một chuyển đổi trạng thái từ mức thấp lên cao đường SDA đường SCL mức cao Cả hai điều kiện START STOP tạo thiết bị chủ Sau tín hiệu START, bus I2C coi trạng thái làm việc (busy) Bus I2C rỗi, sẳn sàng cho giao tiếp sau tín hiệu STOP từ phía thiết bị chủ Hình 7.25: Quá trình tạo điều kiện STOP [4] c Điều kiện START liên tục Sau có điều kiện START, q trình giao tiếp, có tín hiệu START lặp lại thay tín hiệu STOP bus I2C tiếp tục trạng thái bận Tín hiệu START lặp lại START (Repeated START) có chức giống khởi tạo giao tiếp Hình 7.26: Quá trình tạo điều kiện START liên tục [4] TS Đặng Phước Vinh – TS Võ Như Thành 112 Giao diện đồng nối tiếp MSSP Mỗi xung clock có bit liệu truyền Mức tín hiệu SDA thay đổi xung clock mức thấp, ổn định xung clock mức cao Thiết bị tớ lấy mẫu liệu xung clock mức cao 7.2.2.3 Quá trình đọc dùng giao tiếp I2C a Quá trình đọc byte Qu| trình đọc byte sử dụng giao tiếp I2C chế độ Master Mode mơ tả Hình 7.27 Để bắt đầu qu|t trình đọc, thiết bị chủ (sau n{y để đơn giản gọi Master) gởi tín hiệu Start cho thiết bị tớ (sau n{y để đơn giản gọi Salve) để yêu cầu bắt đầu trình giao tiếp Tiếp đó, Master gởi byte liệu bao gồm bit địa thiết bị (địa Slave mà Master muốn giao tiếp) bit Write để x|c định Slave sử dụng cho giao tiếp I2C Địa thiết bị nhà sản xuất quy định Sau Slave tương ứng nhận bit gởi lại cho Master tín hiệu ACK (Acknowledge) để xác nhận đ~ nhận yêu cầu từ Master Sau đó, Master gởi bit chứa địa ghi mà Master muốn đọc từ Slave đ}y l{ qu| trình đọc liệu, nên sau nhận bit ACK từ Slave, Master gởi tín hiệu Re-Start, bit địa thiết bị bit Read Chú ý l{ bit địa thiết bị phải trùng với bit địa m{ Master đ~ gởi lần trước đó, khơng chương trình khơng thực qu| trình đọc liệu Sau Slave nhận yêu cầu Read từ Master, bit ACK bit liệu gởi cho Master Để kết thúc trình đọc, Master gởi bit NAC (Not Acknowledge) kèm theo l{ bit Stop Ở Hình 7.27, c|c đường tín hiệu từ xuống Master gởi cho Slave v{ điều khiển phần mềm; c|c đường tín hiệu từ lên Slave gởi cho Master v{ gởi phần cứng TS Đặng Phước Vinh – TS Võ Như Thành 113 Chương GIAO TIẾP NỐI TIẾP  Master gởi cho Slave  ằng phần mềm Start Sequence Re-Start Sequence Write ST Device Add (7 bit) W Stop Sequence Read SR Device Add (7 bit) R Register Add (8 bit) NAK NAK SP Master AK AK AK Data (8 bit) AK AK AK Slave  Slave gởi cho Master  Tự động gởi Hình 7.27: Quá trình đọc byte b Quá trình đọc nhiều byte Tương tự qu| trình đọc byte, sau nhận bit liệu từ Slave, Master gởi tín hiệu AC để yêu cầu đọc thêm byte liệu Byte liệu nằm ghi ghi m{ Slave đ~ gởi lần trước Qu| trình đọc diễn liên tục Master gởi tín hiệu NAC (NA ) v{ Stop để kết thúc trình đọc nhiều byte (xem Hình 7.28) TS Đặng Phước Vinh – TS Võ Như Thành 114 Giao diện đồng nối tiếp MSSP Start Re-Start Write ST Device Add (7 bit) W Read AK SR Device Add (7 bit) R Register Add (8 bit) AK Master Slave AK AK AK Data (8 bit) AK AK AK NAK AK AK Stop NAK SP Master Data (8 bit) Data (8 bit) Data (8 bit) Slave Hình 7.28: Quá trình đọc nhiều byte 7.2.2.4 Quá trình ghi dùng giao tiếp I2C a Quá trình ghi byte Quá trình ghi đơn giản qu| trình đọc, Master khơng phải gởi tín hiệu ReStart (xem Hình 7.29) Sau tín hiệu Start gởi cho Slave để báo hiệu bắt đầu trình giao tiếp I2C, Master gởi bit địa thiết bị kèm theo bit Write Tiếp đó, bit địa ghi Slave mà Master muốn ghi liệu vào gởi xuống cho Slave Sau byte liệu ghi vào Slave, Master gởi tín hiệu Stop để kết thúc q trình ghi Start Sequence Master Slave Stop Sequence Write ST Device Add (7 bit) W SP Data (8 bit) Register Add (8 bit) AK AK AK AK AK AK Hình 7.29: Quá trình ghi byte TS Đặng Phước Vinh – TS Võ Như Thành 115 Chương GIAO TIẾP NỐI TIẾP b Quá trình ghi nhiều byte Ho{n to{n tương tự qu| trình ghi byte, qu| trình ghi nhiều byte diễn Master gởi tín hiệu Stop để báo hiệu kết thúc trình ghi liệu vào Slave (xem Hình 7.30) Start Sequence Stop Sequence Write ST Device Add (7 bit) W Register Add (8 bit) SP Data (8 bit) Data (8 bit) Master AK AK AK AK AK AK AK AK Slave Hình 7.30: Quá trình ghi nhiều byte 7.2.2.5 Các ghi liên quan a Thanh ghi điều khiển SSPCON1, SSPCON2  Điều khiển MSSP  Cho phép đọc ghi WCOL SSPOV SSPEN CKP SSPM3 SSPM2 SSPM1 SSPM0 Hình 7.31: Thanh ghi SSPCON1 bit WCOL: Write Collision Detect Bit 1: đưa liệu truyền v{o ghi SSPBUF chế độ truyền liệu I2C chưa sẵn sàng 0: khơng có tượng diễn bit SSPOV: Receive Overflow Indicator bit (bit có tác dụng nhận liệu) 1: liệu đưa v{o SSPBUF liệu cũ chưa đọc 0: khơng có tượng xảy bit SSPEN: Synchronous Serial Port Enable bit 1: cho phép cổng giao tiếp nối tiếp MSSP (chân SDA SCL) 0: không cho phép cổng giao tiếp nối tiếp MSSP TS Đặng Phước Vinh – TS Võ Như Thành 116 Giao diện đồng nối tiếp MSSP bit CKP: khơng có tác dụng chế độ I2C Master Mode bit 3-0 SSPM: Synchronous Serial Port Mode Select bits 1000 I2C Master mode, xung clock = FOSC/(4*(SSPADD + 1)) GCEN ACKSTAT ACKDT ACKEN RCEN PEN RSEN SEN Hình 7.32: Thanh ghi SSPCON2 bit GCEN: General Call Enable bit 1: cho phép ngắt địa 0000h nhận vào SSPSR 0: không cho phép chế độ địa bit ACKSTAT: Acknowledge Status bit (chỉ có tác dụng truyền liệu chế độ I2C Master Mode) 1: chưa nhận xung ACK từ I2C Slave 0: nhận xung ACK từ I2C Slave bit ACKDT: Acknowledge Data bit (chỉ có tác dụng nhận liệu chế độ I2C Master Mode) 1: Not Acknowledge 0: Acknowledge bit ACKEN: Acknowledge Sequency Enable bit (chỉ có tác dụng nhận liệu chế độ I2C Master Mode) 1: Cho phép xung ACK xuất chân SDA SCL kết thúc q trình nhận liệu Tự động xóa phần cứng 0: không cho phép chế độ bit RCEN: Receive Enable bit (chỉ có tác dụng chế độ Master) 1: cho phép nhận liệu chế độ I2C 0: không cho phép bit PEN: Stop Condition Enable bit 1: Cho phép thiết lập điều kiện STOP chân SDA SCL 0: không cho phép chế độ bit RSEN: Repeated Start Condition Enable bit 1: cho phép thiết lập điều kiện START lặp lại liên tục chân SDA SCL 0: không cho phép bit SEN: Start Condition Enable bit 1: Cho phép thiết lập điều kiện START chân SDA SCL 0: không cho phép chế độ TS Đặng Phước Vinh – TS Võ Như Thành 117 Chương GIAO TIẾP NỐI TIẾP b Thanh ghi SSPSTAT  Chứa trạng thái hoạt động MSSP  Chỉ cho phép đọc & ghi bit đầu, bit lại đọc SMP CKE D/A P S R/W UA BF Hình 7.33: Thanh ghi SSPSTAT bit SMP: Slew Rate Control bit 1: dùng tốc độ chuẩn (100 kHz and MHz) 0: dùng tốc độ cao (400 kHz) bit CKE: SMBus Select bit Không quan tâm chế độ bit D/A: Data/Address Không quan tâm chế độ bit P: Stop bit 1: vừa nhận bit STOP 0: chưa nhận bit STOP bit S: Start bit 1: vừa nhận bit START 0: chưa nhận bit START bit R/W: Read/Write bit information 1: truyền liệu 0: không truyền liệu bit UA: Update Address Không quan tâm chế độ bit BF: Buffer Full Status bit 1: ghi SSPBUF chứa liệu truyền nhận 0: ghi SSPBUF khơng có liệu c SSPBUF: chứa liệu truyền nhận nối tiếp d SSPSR: ghi dịch dùng để truyền nhận liệu e SSPADD: chứa giá trị tạo tốc độ baud cho xung clock dùng để truyền nhận liệu chân SCL TS Đặng Phước Vinh – TS Võ Như Thành 118 Giao diện đồng nối tiếp MSSP Sơ đồ khối giao tiếp I2C chế dộ master thể Hình 7.34 RC4 RC3 Hình 7.34: Sơ đồ khối giao tiếp I2C chế độ master [4] TS Đặng Phước Vinh – TS Võ Như Thành 119 TÀI LIỆU THAM KHẢO [1] https://vi.wikipedia.org/wiki/Vi_x%E1%BB%AD_l%C3%BD [2] https://learn.mikroe.com/ebooks/picbasicprogramming/chapter/introduction/ [3] https://vi.wikipedia.org/wiki/Vi_%C4%91i%E1%BB%81u_khi%E1%BB%83n [4] Datasheet PIC 16F877A: http://www.alldatasheet.com/datasheetpdf/pdf/115039/MICROCHIP/PIC16F877A.html [5] https://xcvn.blogspot.com/2016/01/bai-7-timer-0-pic16f887-xc8.html [6] http://www.teachict.com/as_as_computing/ocr/2016/AS2016/1.1.1/architecture/miniweb/pg6.h tm [7] http://ytuongnhanh.vn/chi-tiet/giao-tiep-spi-voi-vi-dieu-khien-pic-phan-1144.html [8] https://learn.mikroe.com/ebooks/picmicrocontrollersprogramminginassembly /chapter/pic16f887-microcontroller-device-overview/ [9] https://vi.wikipedia.org/wiki/Vi_%C4%91i%E1%BB%81u_khi%E1%BB%83n_ PIC [10] https://sites.google.com/site/theworldofplc/bang-gia-2012/tu-lam-cap-laptrinh [11] http://www.microchip.com [12] Nguyễn Đình Phú Giáo trình Vi xử lý Trường Đại học Sư phạm ỹ thuật th{nh phố Hồ Chí Minh Năm 2007 TS Đặng Phước Vinh – TS Võ Như Thành 120 Tài liệu tham khảo [13] Vũ Đức Lung, Lê Quang Minh, Phan Đình Duy Giáo trình vi điều khiển Nh{ xuất Đại học Quốc gia th{nh phố Hồ Chí Minh Năm 2016 [14] Tống Văn On, Ho{ng Đức Hải Họ vi điều khiển 8051 Nh{ xuất Lao động v{ X~ hội Năm 2009 [15] Tống Văn On, Ho{ng Đức Hải Thiết kế hệ thống với họ 8051 Nh{ xuất Phương Đông Năm 2006 [16] Ngô Diên Tập Vi điều khiển với lập trình C Nh{ xuất khoa học v{ kỹ thuật Năm 2006 [17] Nguyễn Trường Thịnh, Nguyễn Tấn Nó Vi điều khiển PIC 16F ngơn ngữ lập trình HI-TECH C Nh{ xuất Đại học Quốc gia th{nh phố Hồ Chí Minh Năm 2015 [18] Lê Duy Phi Lập trình vi điều khiển PIC 16F84A Năm 2006 [19] Bohdan Borowik Interfacing PIC Microcontrollers to Peripherial Devices Springer Dordrecht Heidelberg London New York 2011 [20] MPLAB IDE User’s Guide, DS51519A Published by Microchip Technology Inc., 2005 [21] Dogan Ibrahim Advanced PIC Microcontroller Projects in C From USB to RTOS with the PIC18F Series ISBN: 978-0-7506-8611-2 Published by Elsevier Ltd 2008 [22] Dogan Ibrahim Designing Embedded Systems with 32-Bit PIC Microcontrollers and MikroC ISBNe13: 978-0-08-097786-7 Published by Elsevier Ltd 2015 [23] Myke Predko Programming and Customizing the PIC Microcontroller 3rd Edition [24] Di Jasio, Wilmshurst, Ibrahim, Morton, Bates, J Smith, D.W Smith, Hellebuyck PIC Microcontrollers - Know It All Published by Elsevier [25] Lucio Di Jasio Programming 16-Bit PIC Microcontrollers in C, Second Edition: Learning to Fly the PIC 24 2nd Edition ISBN-13: 978-1856178709 [26] John Iovine PIC Microcontroller Project Book: A True Beginner's Guide to the Popular PIC Microcontroller Published May 18th 2000 by Tab Books [27] Milan Verle PIC Microcontrollers - Programming in C Published MikroElektronika; 1st edition (2009) ISBN-13: 978-8684417178 TS Đặng Phước Vinh – TS Võ Như Thành by 121 ... nạp cho vi điều khiển PIC 1.4.1 Trình biên dịch cho PIC Sự đời loại vi điều khiển kèm với vi c phát triển phần mềm ứng dụng cho vi c lập trình cho vi điều khiển Vi điều khiển hiểu làm vi c với... thành: So s|nh vi điều khiển vi xử lý chi phí khơng hợp lý Chắc chắn vi điều khiển rẻ so với vi xử lý Tuy nhiên vi điều khiển sử dụng thay cho vi xử lý v{ ngược lại vi điều khiển vi xử lý có tầm... vii GIỚI THIỆU CHUNG 1.1 Vi xử lý v{ vi điều khiển 1.1.1 Vi xử lý 1.1.2 Vi điều khiển 1.1.3 Sự khác vi xử lý v{ vi điều khiển

Ngày đăng: 23/01/2018, 18:33

Từ khóa liên quan

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

Tài liệu liên quan