Ebook hướng dẫn sử dụng vi điều khiển 8 bit SG8V1 phần 1

98 334 0
Ebook hướng dẫn sử dụng vi điều khiển 8   bit SG8V1 phần 1

Đ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

Trang chủ:www.icdrec.edu.vn E-mail: info@icdrec.edu.vn Điện thoại: (84-8).37242171 (84-8).37242172 HƯỚNG DẪN SỬ DỤNG VI ĐIỀU KHIỂN 8-bit SG8V1 © 2012 ICDREC SG8V1Hướng dẫn sử dụng Nội dung Nội dung Nội dung Mục lục hình Mục lục bảng Danh Mục Thuật Ngữ Từ Viết Tắt Giới thiệu 12 1.1 Sơ đồ chân 14 1.2 Sơ đồ khối 16 Kiến trúc pipeline 17 2.1 Các bước thực lệnh 17 2.2 Kiến trúc pipeline tầng 17 2.3 Cách tính số chu lệnh 18 Chế độ tiết kiệm lượng (IDLE Mode) 21 3.1 Mô tả 21 3.2 Thanh ghi báo trạng thái CPU - CPUSTA 23 3.3 Bộ đếm chương trình (PC) 23 3.4 Stack 23 3.4.1 Truy xuất giá trị Stack (TS: Top of Stack) 24 3.4.2 Stack Pointer (SP) 24 Reset SG8V1 27 4.1 Tổng quan Reset 27 4.2 Reset người sử dụng (chân RST ) 27 4.3 Reset chọn lập trình Flash (chân SPCS) 27 4.4 Reset stack 28 4.5 Reset Watchdog 28 4.6 Định thời Reset 28 Tổ chức nhớ chương trình 30 5.1 Bộ đếm chương trình 30 5.2 Stack 31 5.2.1 Truy xuất giá trị Stack (TS: Top of Stack) 31 5.2.2 Stack Pointer (SP) 32 Tổ chức nhớ liệu 33 6.1 Thanh ghi chọn băng 33 6.2 Truy cập nhanh nhớ liệu 34 6.3 Thanh ghi mục đích chung 35 6.4 Thanh ghi chức đặc biệt 35 6.5 Các chế độ định địa nhớ 40 6.5.1 Kế thừa giá trị từ mã lệnh 40 6.5.2 Định địa trực tiếp 40 6.5.3 Định địa gián tiếp qua trỏ 40 Bộ nhân 8-bit 42 Ngắt 43 8.1 Thanh ghi quản lý ngắt toàn cục (GIC) 44 8.2 Thanh ghi điều khiển ngắt theo cạnh (INTEDG) 46 8.3 Thanh ghi cho phép ngắt (IE1) 46 8.4 Thanh ghi độ ưu tiên ngắt (IP1) 47 8.5 Thanh ghi lưu cờ ngắt (IF1) 48 © 2012 ICDREC SG8V1Hướng dẫn sử dụng Nội dung 8.6 Thanh ghi cho phép ngắt (IE2) 50 8.7 Thanh ghi độ ưu tiên ngắt (IP2) 51 8.8 Thanh ghi lưu cờ ngắt (IF2) 52 8.9 Thanh ghi cho phép ngắt (IE3) 54 8.10 Thanh ghi độ ưu tiên ngắt (IP3) 55 8.11 Thanh ghi lưu cờ ngắt (IF3) 55 Cổng truy xuất liệu (General Purpose Input/Output - GPIO) 57 9.1 GPIO PortA 59 9.2 GPIO PortB 60 9.3 GPIO PortC 63 9.4 GPIO PortD 66 10 Watchdog Timer 70 11 Timer 72 11.1 Mô tả Timer 72 11.2 Ngắt Timer0 73 11.3 Bộ chia tần trước 73 11.4 Thanh ghi 74 11.4.1 WT0CON 74 11.4.2 T0REG 75 12 Timer 76 12.1 Chức Timer 76 12.1.1 Tổng quan chức định thời Timer 76 12.1.2 Các chế độ Timer1 77 12.1.3 Đọc ghi 16-bit ghi đếm Timer1 78 12.2 Khối bắt so sánh kiện 78 12.2.1 Chế độ bắt kiện 79 12.2.2 Chế độ so sánh kiện 80 12.3 Thanh ghi 80 12.3.1 T1CON 81 12.3.2 T1RH 82 12.3.3 T1RL 82 12.3.4 CCRH 82 12.3.5 CCRL 82 13 Timer Timer (Timer_x) 83 13.1 Tổng quan Timer_x 83 13.2 Hoạt động Timer_x 83 13.3 Ngắt Timer_x 84 13.4 Đọc/ghi 10-bit Timer_x 84 13.5 Thanh ghi 85 13.5.1 TxCON 85 13.5.2 TxRH 85 13.5.3 TxRL 86 13.5.4 TxPRH 86 13.5.5 TxPRL 86 14 Bộ tạo xung PWM (The Pulse Width Modulation) 87 14.1 Tổng quan PWM_x 87 14.2 Chu kỳ xung PWM_x 87 14.3 Chu kỳ nhiệm vụ 88 14.4 Cấu hình hoạt động cho khối PWM_x 89 14.5 Thanh ghi 90 © 2012 ICDREC SG8V1Hướng dẫn sử dụng Nội dung 14.5.1 PWMxCON 90 14.5.2 PWMxRL 90 15 Serial Peripheral Interface (SPI) 91 15.1 Giới thiệu SPI 91 15.2 Các ghi SPI 92 15.2.1 Thanh ghi điều khiển SPI - SPICON 92 15.2.2 Thanh ghi trạng thái - SPISTA 93 15.3 Hoạt động SPI 94 15.4 Các bước lập trình SPI 96 15.4.1 Lập trình SPI chế độ master 96 15.4.2 Lập trình SPI chế độ slave 97 16 Inter-Integrated Circuit (I2C) 99 16.1 Thanh ghi I2C 99 16.1.1 I2CCON1 99 16.1.2 I2CCON2 101 16.1.3 I2CSTA 103 16.1.4 CNTH/ADDRH CNTL/ADDRL 105 16.1.5 I2CBUF 106 16.2 Hoạt động 107 16.3 Chế độ Master 108 16.3.1 Master Truyền 108 16.3.2 Master Nhận 111 16.3.3 Đồng clock 114 16.3.4 Phân xử 114 16.3.5 Định thời kiện Start 115 16.3.6 Định thời kiện Repeat Start 116 16.3.7 Định thời kiện Stop 117 16.3.8 Xung đột bus 117 16.4 Chế độ Slave 121 16.4.1 Định địa Slave 121 16.4.2 Mặt nạ địa 121 16.4.3 Địa 7-bit 122 16.4.4 Chế độ 10-bit địa 124 16.5 Kéo dài xung clock 125 16.6 Địa General Call 126 16.7 Dạng sóng 126 16.7.1 Dạng sóng I2C Master phát (chế độ 7-bit 10-bit địa chỉ) 127 16.7.2 Dạng sóng I2C Master nhận (chế độ 7-bit địa chỉ) 128 16.7.3 Dạng sóng I2C Slave nhận chế độ 7-bit địa 129 16.7.4 Dạng sóng I2C Slave phát chế độ 7-bit địa 130 16.7.5 Dạng sóng I2C Slave nhận chế độ 10-bit địa 131 16.7.6 Dạng sóng I2C Slave phát chế độ 10-bit địa 132 17 Ngoại vi UART 133 17.1 Tổng quan ngoại vi UART 133 17.2 Các ghi liên quan đến ngoại vi UART 133 17.2.1 Thanh ghi trạng thái ngoại vi UART thứ x (UxSTA) 134 17.2.2 Thanh ghi điều khiển UART thứ x 135 17.2.3 Thanh ghi tốc độ baud UART thứ x (UxBRL) 136 17.2.4 Thanh ghi lưu liệu truyền UART thứ x (UxTXREG) 137 17.2.5 Thanh ghi lưu liệu nhận UART thứ x (UxRXREG) 137 © 2012 ICDREC SG8V1Hướng dẫn sử dụng Nội dung 17.2.6 Thanh ghi cho phép ngắt thứ (IE2) 137 17.2.7 Thanh ghi thiết lập ưu tiên ngắt thứ (IP2) 138 17.2.8 Thanh ghi trạng thái ngắt thứ (IF2) 139 17.2.9 Thanh ghi cấu hình chiều liệu cho Port C (DIRC) 141 17.2.10 Thanh ghi cấu hình chiều liệu cho Port B (DIRB) 141 17.3 Bộ tạo tốc độ Baud (BRG) 142 17.3.1 Tính toán tốc độ Baud 143 17.3.2 Xung lấy mẫu xung dịch liệu bên UART 144 17.3.3 Lấy mẫu liệu 145 17.3.4 Dịch liệu 145 17.4 Bộ truyền UART 146 17.4.1 Cấu trúc truyền UART 146 17.4.2 Cấu hình sử dụng truyền ngoại vi UART 147 17.5 Bộ nhận UART 149 17.5.1 Cấu trúc nhận UART 149 17.5.2 Cấu hình sử dụng nhận ngoại vi UART 150 18 Ngoại vi ADC 153 18.1 Cấu trúc ADC 153 18.2 Các ghi liên quan đến hoạt động ADC 154 18.2.1 Thanh ghi điều khiển thứ ADC (ADCON1) 154 18.2.2 Thanh ghi điều khiển thứ ADC (ADCON2) 155 18.2.3 Thanh ghi lưu liệu ADC (ADBUF) 155 18.2.4 Thanh ghi cho phép ngắt số (IE3) 155 18.2.5 Thanh ghi ưu tiên ngắt số (IP3) 156 18.2.6 Thanh ghi trạng thái ngắt số (IF3) 156 18.3 Hoạt động ngoại vi ADC 157 18.4 Các ý sử dụng ngoại vi ADC 158 18.4.1 Nguồn xung clock cấp cho ngoại vi ADC 158 18.4.2 Các yêu cầu thông số kết nối 159 19 Tập lệnh 161 19.1 Giới thiệu 161 19.2 Thanh ghi cờ phép toán 163 19.3 Tóm tắt tập lệnh 163 19.4 Hoạt động lệnh 166 20 Bộ nhớ chương trình FLASH 197 20.1 Phân vùng FLASH 197 20.2 Chế độ bảo vệ chương trình 198 © 2012 ICDREC SG8V1Hướng dẫn sử dụng Nội dung Mục lục hình Hình 1-1: Sơ đồ chân 14 Hình 1-2: Sơ đồ khối SG8V1 16 Hình 2-1: Các bước thực lệnh 17 Hình 2-2: Hoạt động thực lệnh với kiến trúc pipeline 18 Hình 2-3: Thực lệnh với kiến trúc có pipeline 18 Hình 2-4: Thực lệnh thường với kiến trúc đường ống 18 Hình 2-5: Thực lệnh bypass với kiến trúc đường ống 19 Hình 2-6: Thực lệnh rẽ nhánh đơn chu kỳ với kiến trúc đường ống 19 Hình 2-7: Thực lệnh rẽ nhánh chu kỳ với kiến trúc đường ống 20 Hình 3-1: Mô tả clock chế độ nghỉ 21 Hình 3-2: Mô tả trường hợp CPU wake up thực tiếp tục trình trước 22 Hình 3-3: Mô tả trường hợp CPU wake up vào chương trình ngắt 22 Hình 3-4: Stack ghi liên quan 24 Hình 4-1: Mạch kết nối đến chân RST 27 Hình 4-2: Mạch reset 29 Hình 5-1: Bản đồ địa nhớ liệu 30 Hình 5-2: Stack ghi liên quan 32 Hình 6-1: Cấu trúc nhớ liệu 33 Hình 6-2: Sử dụng ghi BS để chọn băng 34 Hình 9-1: Cell chuẩn IO_PAD 57 Hình 9-2: Mô tả kết nối Port 59 Hình9-3: IO PortA 60 Hình9-4: IO PortB[0:1] PortB[4] - dùng chung với Timer0 61 Hình9-5: IO PortB[2:3] - dùng chung với UART 61 Hình9-6: IO PortB[5:7] - dùng chung với lập trình FLASH 62 Hình9-7: IO PortC[0:1] - dùng chung với UART1 64 Hình9-8: IO PortC[2:3] - dùng chung với PWM 64 Hình9-9: IO PortC[4:5] - dùng chung với SPI 64 Hình9-10: IO PortC[6:7] - dùng chung với SPI 65 Hình 9-11: IO PortD[0:3] - dùng chung với ngắt 67 Hình 9-12: IO PortD[4:5] - dùng chung với I2C 67 Hình 9-13: IO PortD[6] - dùng chung với Capture/Compare 68 Hình 9-14: IO PortD[7] - dùng chung với Timer1 68 Hình 10-1 : Mô tả khối Watchdog Timer 70 Hình 11-1: Mô tả sơ đồ khối Timer0 73 Hình 12-1: Mô tả sơ đồ khối Timer 77 Hình 12-2: Sơ đồ khối bắt kiện 80 Hình 12-3: Sơ đồ khối so sánh kiện 80 Hình 13-1: Sơ đồ khối Timer_x (Timer Timer 3) 83 Hình 14-1: Sơ đồ khối PWM_x 87 Hình 14-2: Dạng sóng PWM 89 Hình15-1: Sơ đồ khối SPI 91 Hình15-2: Sơ đồ kết nối SPI 95 Hình 15-3: chế độ truyền liệu SPI 95 Hình 15-4: dạng sóng SPI slave (CKP = 0, CKE = 1) 98 Hình 15-5: đồng tín hiệu SPI SSx 98 Hình 16-1: Kết nối thiết bị đến bus I2C 108 © 2012 ICDREC SG8V1Hướng dẫn sử dụng Nội dung Hình 16-2: Khung truyền với địa 7-bit chế độ Master truyền 109 Hình 16-3: Khung truyền với địa 10-bit chế độ Master truyền 110 Hình 16-4: Khung truyền với địa 7-bit chế độ Master nhận 111 Hình 16-5: Khung truyền với địa 10-bit chế độ Master nhận 113 Hình 16-6: Đồng clock 114 Hình 16-7: Phân xử 115 Hình 16-8: Định thời trình tạo kiện Start 116 Hình 16-9: Định thời trình tạo kiện Repeat Start 117 Hình 16-10: Định thời trình tạo kiện Stop 117 Hình 16-11: Xung độ bus tạo Start (1) 118 Hình 16-12: Xung độ bus tạo Start (2) 118 Hình 16-13: Xung độ bus tạo Repeat Start (1) 119 Hình 16-14: Xung độ bus tạo Repeat Start (2) 119 Hình 16-15: Xung độ bus tạo Repeat Start (3) 119 Hình 16-16: Xung độ bus tạo Stop 119 Hình 16-17: Xung đột bus trình truyền nhận liệu 120 Hình 16-18: Địa 7-bit 122 Hình 16-19: Định địa chế độ 10 bit 124 Hình 16-20: Dạng sóng I2C Master phát 127 Hình 16-21: Dạng sóng I2C Master nhận 128 Hình 16-22: Dạng sóng I2C Slave nhận chế độ 7-bit địa 129 Hình 16-23: Dạng sóng I2C Slave phát chế độ 7-bit địa 130 Hình 16-24: Dạng sóng I2C Slave nhận chế độ 10-bit địa 131 Hình 16-25: Dạng sóng I2C Slave phát chế độ 10-bit địa 132 Hình 17-1: Các thành phần ngoại vi UART 133 Hình 17-2: Xung lấy mẫu liệu xung dịch liệu tính theo hệ số N 144 Hình 17-3: Xung lấy mẫu liệu xung dịch liệu với N = 144 Hình 17-4: Xung lấy mẫu liệu xung dịch liệu với N = 145 Hình 17-5: Lẫy mẫu liệu với N ≠ 145 Hình 17-6: Lấy mẫu liệu với N = 145 Hình 17-7: Dịch liệu 146 Hình 17-8: Minh họa cấu trúc truyền UART 147 Hình 17-9: Truyền khung dư liệu 148 Hình 17-10: Truyền liên tục 149 Hình 17-11: Cấu trúc UART nhận 150 Hình 17-12: UART tiếp nhận 152 Hình 18-1: Sơ đồ khối ngoại vi ADC 153 Hình 18-2: Giản đồ thời gian cho hoạt động ADC 158 Hình 18-3: Lần chuyển đổi sau bit ADON (ADCON1[7]) tích cực 158 Hình 18-4: Mô hình ngõ vào ADC 160 Hình20-1: Sơ đồ kết nối nạp 197 © 2012 ICDREC SG8V1Hướng dẫn sử dụng Nội dung Mục lục bảng Bảng 1-1: Mô tả chân 15 Bảng 4-1: Điều kiện reset cho ghi đặc biệt 28 Bảng 6-1: Các ghi chức đặc biệt 36 Bảng 9-1: Mô tả chân IO_PAD 57 Bảng 9-2: Mô tả chiều 58 Bảng 9-3: Mô tả bảng nhận liệu 58 Bảng 9-4: Thanh ghi DIRA 60 Bảng 9-5: Mô tả ghi PORTA 60 Bảng 9-6: Chức PortB 62 Bảng 9-7: Thanh ghi DIRB 62 Bảng9-8: Mô tả ghi PORTB 63 Bảng 9-9: Chức PortC 65 Bảng 9-10: Thanh ghi DIRC 65 Bảng9-11: Chức PORTC 66 Bảng9-12: Chức PortD 68 Bảng 9-13: Thanh ghi DIRD 69 Bảng 9-14: Mô tả chức PORTD 69 Bảng 10-1 : Mô tả ghi WT0CON 70 Bảng 11-1: Mô tả ghi WT0CON 74 Bảng 11-2: Mô tả ghi T0REG 75 Bảng 12-1: Mô tả ghi T1CON 81 Bảng 12-2: Mô tả ghi T1RH 82 Bảng 12-3: Mô tả ghi T1RL 82 Bảng 12-4: Mô tả ghi CCRH 82 Bảng 12-5: Mô tả ghi CCRL 82 Bảng 13-1: Mô tả ghi TxCON 85 Bảng 13-2 Mô tả ghi TxRH 85 Bảng 13-3 Mô tả ghi TxRL 86 Bảng 13-4 Mô tả ghi TxPRH 86 Bảng 13-5 Mô tả ghi TxPRL 86 Bảng 14-1: Mô tả ghi PWMxCON 90 Bảng 14-2: Mô tả ghi PWMxRL 90 Bảng 15-1: Thanh ghi SPI 92 Bảng15-2: Thanh ghi điều khiển SPI- SPICON 92 Bảng 15-3: Thanh ghi trạng thái SPI- SPISTA 93 Bảng 16-1: Mô tả ghi I2CCON1 chế độ Master 99 Bảng 16-2: Mô tả ghi I2CCON1 chế độ Slave 100 Bảng 18-1 Một số giá trị cấu hình tham khảo cho xung clock ngoại vi ADC 159 Bảng 19-1: Mô tả cho trường mã lệnh 161 Bảng 19-2: Tập lệnh SG8V1 163 © 2012 ICDREC SG8V1Hướng dẫn sử dụng Nội dung Danh Mục Thuật Ngữ Từ Viết Tắt Thuật ngữ ký hiệu Mô tả RISC Viết tắt cụm từ “Reduced Instructions Set Computer” Một cấu trúc hay phương pháp thiết kế vi xử lý theo hướng “đơn giản hóa tập lệnh” Package Dạng đóng gói chip LQFP Viết tắt cụm từ “Low-profile Quad Flat Package” Một dạng đóng gói chip với hình dạng phẳng, dẹp, bốn cạnh FIFO Viết tắt cụm từ “First In First Out” Một dạng nhớ lưu liệu hoạt động theo nguyên tắc liệu đọc theo thứ tự liệu ghi vào full-duplex Truyền nhận song công Một ngoại vi hỗ trợ “full-duplex” vừa truyền nhận liệu thời điểm Pipeline Kỹ thuật “đường ống” Một kỹ thuật thiết kế vi xử lý cho phép lệnh thực thi theo kiểu gối đầu nhằm tận dụng thời gian rỗi công đoạn, qua làm tăng tốc độ thực lệnh vi xử lý MCU Viết tắt “Microcontroller Unit” Bộ vi điều khiển Reset Là thuật ngữ tác động hay hoạt động khôi phục lại trạng thái ổn định ban đầu (trạng thái gốc) Clock Là xung nhịp đồng CPU Viết tắt cụm từ “Central Processing Unit” Là đơn vị xử lý trung tâm thực giải mã, phân tích thực thi lệnh lập trình Flash Tên loại nhớ sử dụng làm nhớ chương trình Stack Bộ lưu trữ địa truy cập lệnh Watchdog Bộ định thời giám sát hoạt động CPU để tránh trường hợp CPU bị treo xử lý Wake up Là trạng thái sẵn sàng hoạt động UART Viết tắt cụm từ “Universal Asynchronous Receiver © 2012 ICDREC SG8V1Hướng dẫn sử dụng Nội dung Thuật ngữ ký hiệu Mô tả Transmitter” Ngoại vi truyền nhận nối tiếp bất đồng ADC Viết tắt cụm từ “Analog Digital Conveter” Ngoại vi chuyển đổi tín hiệu tương tự thành giá trị số Counter Bộ đếm kiện DIR Viết tắt “Direction” Chiều GPIO Viết tắt cụm từ “General Purpose Input/Output” Cổng truy xuất đa chức Port Cổng truy xuất PU Viết tắt “Pull-Up” Kéo lên Một chân giao tiếp hay tín hiệu “kéo lên” nghĩa chân giao tiếp hay tín hiệu có mức điện áp cao Postscaler Bộ chia tần sau Prescaler Bộ chia tần trước PWM Viết tắt cụm từ “Pulse Width Modulation” Điều chế độ rộng xung SPCS Viết tắt cụm từ “Special Program Chip Select” Chân chọn lập trình Timer Bộ định thời Watchdog timer Bộ định thời cảnh báo WDT Viết tắt cụm từ “WatchDog Timer” Bộ định thời cảnh báo OSC Dao động Weak pull-up Mức kéo lên yếu SPI Viết tắt cụm từ “Serial Peripheral Interface” Giao tiếp ngoại vi nối tiếp SCK Clock nối tiếp ngoại vi SPI SDI Viết tắt cụm từ “Serial data input” Ngõ vào liệu nối tiếp ngoại vi SPI © 2012 ICDREC SG8V1Hướng dẫn sử dụng 10 Timer1 Khi có tín hiệu reset, cặp ghi TxRH:TxRL reset 000h, cặp ghi TxPRH:TxPRL quay giá trị 3FFh Cả chia tần trước chia tần sau bị reset trường hợp sau:  Lệnh ghi vào ghi TxRL  Bất kỳ tín hiệu reset (reset hệ thống, Watchdog timeout…) Thanh ghi đếm Timer_x không bị xóa xóa bit T2CON 13.3 Ngắt Timer_x Ngõ Timer_x (tạo giá trị TxRH:TxRL với TxPRH:TxPRL) cung cấp tín hiệu đếm lên cho chia tần sau Khi giá trị đếm chia tần sau với giá trị cấu hình (bit TxPOS[3:0]) ngắt xảy cập nhật bit cờ ngắt TxIF Ngắt phát tới CPU bit cho phép ngắt TxIE Ngõ so sánh Timer_x (ứng với tần số so sánh) dùng chu kỳ xung PWM tạo từ tạo xung PWM Ngoài Timer_x dùng tạo xung dịch cho khối SPI Chú ý: Khi ngắt Timer phát có lệnh xóa bit cờ ngắt TxIF, cờ ngắt không bị xóa 13.4 Đọc/ghi 10-bit Timer_x Timer_x hỗ trợ đọc ghi 10-bit giá trị thời điểm ghi đếm (TxRH:TxRL) Khi lệnh đọc ghi TxRL xảy ra, giá trị TxRH đồng thời cập nhật vào đệm bit Do TxRH nhận giá trị đếm cao thời điểm đọc TxRL (khi đọc TxRH đọc giá trị ghi đệm phụ) Ngược lại, trình ghi vào TxRH ghi giá trị muốn ghi vào đệm, sau lệnh ghi vào TxRL đồng thời cập nhật giá trị đệm ghi trước vào ghi đếm cao Người sử dụng cần phải tuân theo bước mô tả phần ghi để nhận giá trị đếm Nếu không theo thứ tự mô tả, giá trị TxRH cập nhật lấy sai Chú ý: Nếu người sử dụng muốn ghi 10-bit giá trị vào TxRH:TxRL phải tuân theo bước sau: Ghi bit vào TxRH trước Sau tiếp tục ghi 8-bit vào TxRL © 2012 ICDREC SG8V1 - Hướng dẫn sử dụng 84 Timer1 Nếu người sử dụng muốn đọc 10-bit giá trị TxRH:TxRL phải tuân theo bước sau: Đọc 8-bit giá trị từ TxRL trước Sau đọc bit giá trị từ TxRH Do việc ghi vào TxRH không tác động trực tiếp vào ghi đếm (lúc ghi vào đệm), nên việc ghi vào TxRH không gây reset prescaler Chỉ có trình ghi vào TxRL với gây reset prescaler 13.5 Thanh ghi Thanh ghi đếm Timer_x cặp hai ghi đếm cao bit TxRH ghi đếm thấp 8-bit TxRL Hai ghi đọc ghi Thanh ghi đếm Timer_x tăng từ giá trị lập trình đến giá trị so sánh reset 000h tiếp tục trình đến giá trị so sánh Ngắt Timer_x phép phát ngắt ngõ chia tần sau 13.5.1 TxCON Bảng 13-1: Mô tả ghi TxCON Tên bit R/W TxON [7] R/W Mô tả Bit tắt/mở Timer_x 0: tắt/cấm Timer_x 1: mở/cho phép Timer_x Dự trữ [6] - Bit dự trữ TxPRES [5:4] R/W Tỉ số chia tần trước 00: tỉ lệ 1:1 01: tỉ lệ 1:4 10: tỉ lệ 1:16 11: tỉ lệ 1:64 TxPOS [3:0] Tỉ số chia tần sau 0000: tỉ lệ 1:1 0001: tỉ lệ 1:2 … 1111: tỉ lệ 1:16 13.5.2 TxRH Bảng 13-2 Mô tả ghi TxRH Tên bit R/W TxRH [1:0] © 2012 ICDREC R/W Mô tả Đây ghi lưu giá trị đếm cao Timer_x Thanh ghi SG8V1 - Hướng dẫn sử dụng 85 Timer1 đệm bit, giá trị ghi cập nhật giá trị đếm cao người sử dụng đọc ghi TxRL lưu giá trị mà CPU muốn ghi vào đếm cao Xem thêm phần “Đọc ghi 10-bit ghi đếm Timer_x” để biết thêm thông tin ghi 13.5.3 TxRL Bảng 13-3 Mô tả ghi TxRL Tên bit R/W TxRL [7:0] R/W Mô tả Đây 8-bit ghi đếm thấp Timer_x Thanh ghi kết hợp với ghi đếm cao thành đếm 10-bit 13.5.4 TxPRH Bảng 13-4 Mô tả ghi TxPRH Tên bit R/W TxPRH [7:0] R/W Mô tả Đây ghi lưu bit giá trị so sánh dùng để so sánh với bit TxRH đếm Timer_x 13.5.5 TxPRL Bảng 13-5 Mô tả ghi TxPRL Tên bit R/W TxPRL [7:0] R/W Mô tả Đây ghi lưu giá trị so sánh dùng để so sánh với 8-bit TxRL đếm Timer_x Chú ý: Xem phần 8.3, 8.4 8.5 để biết thêm chi tiết bit TxIE, TxIP TxIF © 2012 ICDREC SG8V1 - Hướng dẫn sử dụng 86 Bộ nhân 8-bit 14 Bộ tạo xung PWM (The Pulse Width Modulation) 14.1 Tổng quan PWM_x Chip SG8V1 thiết kế với hai tạo xung băm PWM: PWM PWM Tài liệu mô tả chung cho hai tạo xung gọi PWM_x (x=1, 2) Bộ tạo xung PWM_x sử dụng để tạo dạng xung băm dùng cho nhiều ứng dung điều khiển động cơ, quản lý công suất…Khối PWM_x dùng song song với Timer_x, người sử dụng lựa chọn kết nối với Timer Timer Dạng sóng PWM ngõ có chu kỳ hoạt động chu kỳ so sánh Timer_x chu kỳ nhiệm vụ ứng với thời gian mà ngõ mức cao PWM_x có hai ghi so sánh 10-bit tạo chu kỳ nhiệm vụ: 8-bit thấp PWMxRL hai bit cao PWMxRH Cả hai ghi cho phép đọc ghi Chú ý: Khi khối PWM_x không hoạt động (PWMxON = 0) ngõ tạo xung mặc định có giá trị PORTC[2]/PWM1 Timer_x output (reset) TxRH Output drive TxRL DIRC[2] comparator SPWM1RH SPWM1RL (update) PWM1RH PWM1RL Note: x = or x = From PWM1CON[1:0] Hình 14-1: Sơ đồ khối PWM_x 14.2 Chu kỳ xung PWM_x Chu kỳ xung PWM_x đặc trưng giá trị lưu cặp ghi so sánh TxPRH:TxPRL Timer_x Chu kỳ xung PWM_x tính theo công thức sau: Công thức 14-1: Công thức tính chu kỳ PWM_x PWM_x period (s) = [(TxPRH:TxPRL) + 1] * TOSC * (giá trị chia tần trước Timer_x) © 2012 ICDREC SG8V1 - Hướng dẫn sử dụng 87 Bộ nhân 8-bit Tần số xung băm định nghĩa 1/[PWM_x period] Khi giá trị ghi đếm Timer_x TxRH:TxRL với ghi chu kỳ so sánh TxPRH:TxPRL kiện sau xảy chu kỳ xung clock kế tiếp:  Thanh ghi đếm Timer_x TxRH:TxRL bị xóa 000h  Giá trị chu kỳ nhiệm vụ PWM_x chốt từ cặp ghi PWMxRH:PWMxRL vào ghi ảnh chúng SPWMxRH:SPWMxRL ghi dùng để so sánh  Ngõ tạo xung PWM_x đặt lên cao (trừ trường hợp chu kỳ nhiệm vụ 0) Chú ý: Bộ chia tần sau Timer_x không sử dụng để tạo dạng xung PWM 14.3 Chu kỳ nhiệm vụ Chu kỳ nhiệm vụ PWM_x đặc trưng giá trị cặp ghi PWMxRH:PWMxRL, PWMxRL chứa bit thấp PWMxRH chứa bit cao tạo thành 10 bit so sánh tạo chu kỳ nhiệm vụ Công thức sau mô tả cách tính chu kỳ nhiệm vụ: Công thức 14-2: Công thức tính chu kỳ nhiệm vụ PWM_x: PWM_x duty cycle (s) = (PWMxRH:PWMxRL) * Tosc * (giá trị chia tần trước Timer_x) PWM1RH:PWM1RL ghi thời điểm nào, giá trị cập nhật vào so sánh thời điểm ngõ Timer_x tích cực (xong chu kỳ PWM_x) Khi giá trị cặp ghi PWMxRH:PWMxRL giá trị đếm Timer_x TxRH:TxRL, ngõ PWM_x bị xóa Tỉ số PWM_X lớn (Max resolution) mô tả công thức sau: Công thức 14-3: Công thức tính “Max resolution” Max Resolution = log (Fosc/Fpwm) / log Chú ý: Nếu chu kỳ nhiệm vụ lớn chu kỳ xung PWM_x ngõ PWM_x giữ mức cao © 2012 ICDREC SG8V1 - Hướng dẫn sử dụng 88 Bộ nhân 8-bit Cập nhật giá trị Timer register = PWM1RH:PWM1RL Timer register = Period register Giá trị đếm Timer Dạng sóng PWM DC Period cycle Duty cycle(DC) DC Period cycle Period cycle DC = 0% Period cycle Hình 14-2: Dạng sóng PWM 14.4 Cấu hình hoạt động cho khối PWM_x Khi sử dụng chức tạo xung, người sử dụng nên tuân theo bước sau:  Cấu hình chu kỳ xung PWM cách ghi vào ghi TxPRH:TxPRL  Cấu hình chu kỳ nhiệm vụ cách ghi vào ghi PWMxRH:PWMxRL  Cấu hình PortC[2] PortC[3] ngõ cách đặt bit DIRC[2] bit DIRC[3] lên mức cao Người sử dụng nên xóa PORTC[2] PORTC[3] (trong ghi PORTC) để hệ thống hoạt động tốt (xem ý sau)  Cài đặt cho Timer_x: xác định tỉ lệ chia tần trước, bật Timer_x (TxON = 1)  Cho phép khối PWM_x hoạt động (PWMxON = 1) Chú ý: Khi khối PWM_x hoạt động (PWMxON = 1) khối PWM_x cấu hình sử dụng cho ứng dụng (ví dụ điều khiển động điện) PortC[2] PortC[3] sử dung làm ngõ tạo xung Bình thường khối PWM_x bị tắt PortC[2] PortC[3] cấu hình thành ngõ ngõ lúc giá trị bit [2] [3] ghi PORTC Khi khối PWM_x tắt từ trạng thái hoạt động, Port chức tương ứng chuyển nhiệm vụ ngõ lúc giữ “0” “1” tùy giá trị ghi PORTC Nếu lúc mạch chưa ngắt chức điều xung nhận tín hiệu điều xung nhỏ (= 0) lớn (= 1) bất chấp khối PWM_x tắt Khi hai khối PWM PWM sử dụng nguồn Timer, chúng có chu kỳ xung PWM, tần số cập nhật giống chu kỳ nhiệm vụ khác © 2012 ICDREC SG8V1 - Hướng dẫn sử dụng 89 Bộ nhân 8-bit 14.5 Thanh ghi Khối PWM_x điều khiển thông qua ghi PWMxCON register PWM_x có hai cặp ghi 10-bit: PWMxRH:PWMxRL SPWMxRH:SPWMxRL, dùng để chứa giá trị so sánh chu kỳ so sánh ghi so sánh 14.5.1 PWMxCON Bảng 14-1: Mô tả ghi PWMxCON Tên bit R/W PWMxON [7] R/W Mô tả Bit tắt/mở chức PWM 0: tắt/cấm PWM_x 1: mở/cho phép PWM_x PWMxST [6] R/W Bit chọn nguồn Timer 0: nguồn Timer Timer 1: nguồn Timer Timer Dự trữ [5:2] - Bit dự trữ PWMxRH [1:0]] R/W Thanh ghi chứa bit cao so sánh tạo chu kỳ nhiệm vụ Hai bit kết hợp với 8-bit PWMxRL tạo thành 10-bit so sánh với TxRH:TxRL 14.5.2 PWMxRL Bảng 14-2: Mô tả ghi PWMxRL Tên bit R/W PWMxRL [7:0] R/W Mô tả Thanh ghi chứa 8-bit thấp so sánh tạo chu kỳ nhiệm vụ Tám bit kết hợp với bit PWMxRH tạo thành 10-bit so sánh với TxRH:TxRL Chú ý: Xem phần 9.3 để biết thêm chi tiết bit cấu hình chiều PortC © 2012 ICDREC SG8V1 - Hướng dẫn sử dụng 90 SPI 15 Serial Peripheral Interface (SPI) 15.1 Giới thiệu SPI SPI khối truyền/nhận đồng nối tiếp Khối SPI hoạt động với chế độ master slave Ở chế độ slave, khối SPI giao tiếp với nhiều master Giao tiếp SPI sử dụng rộng rãi sống như: dùng để đọc ghi nhớ EEPROM-SPI, điều khiển hình LCD, đọc liệu từ chip đo nhiệt độ chuyên dụng SPIMS MODE[1:0] PortC[4] / SCK SCK_O TMR2 / Fsoc prescale 4, 16, 64 SCK_I clock select protocol controller PortC[7] / SSx PortC[5] / SDI Shift clock PortC[6] / SDO SPISR SPICON SPIBUF SPISTA internal data bus Hình15-1: Sơ đồ khối SPI Như mô tả hình trên, khối SPI có đệm 8-bit (SPIBUF) ghi dịch (SPISR) Khi bắt đầu trình truyền liệu, ghi SPISR cập nhật liệu từ ghi SPIBUF Khi có clock ghi SPISR nhận liệu từ SDI phát SDO Sau nhận phát xong byte liệu từ SPISR đưa đến SPIBUF bit SPIBF lên Giao tiếp khối SPI gồm có tín hiệu sau:  Ngõ nối tiếp (SDO) – PortC[6] /SDO  Ngõ vào nối tiếp (SDI) – PortC[5] /SDI  Clock nối tiếp (SCK) – PortC[4] /SCK  Trong chế độ slave sử dụng thêm chân: © 2012 ICDREC SG8V1 - Hướng dẫn sử dụng 91 SPI  Lựa chọn SPI slave (SSx) – PortC[7] /SSx 15.2 Các ghi SPI SPI có ghi Chúng sử dụng chung cho chế độ master slave Bảng 15-1: Thanh ghi SPI Tên ghi Địa SPICON 0x04F SPISTA 0x050 SPIBUF 0x051 Mô tả Thanh ghi điều khiển Thanh ghi trạng thái Thanh ghi đệm Thanh ghi SPICON SPISTA ghi điều khiển ghi trạng thái SPI Trong ghi SPISTA có bit BF đọc, bit lại đọc ghi Trong trình nhận liệu, ghi SPIBUF SPISR tạo thành đệm ghi Sau nhận xong byte liệu đưa đến SPIBUF Trong SPIBUF chờ CPU đọc liệu SPISR nhận byte thứ Nếu SPISR nhận xong byte thứ giá trị SPIBUF chưa đọc giá trị cũ bị đi, SPIBUF nhận giá trị từ SPISR cờ tràn bật lên (SPIOV = 1) Sau nhận xong byte cờ ngắt SPIIF bật lên để yêu cầu CPU đọc liệu từ ghi SPIBUF 15.2.1 Thanh ghi điều khiển SPI - SPICON Bảng15-2: Thanh ghi điều khiển SPI- SPICON Tên SPION Bit [7] Mô tả R/W R/W Bit bật/tắt SPI 0: Khối SPI không cho phép hoạt động 1: Khối SPI cho phép hoạt động Dự trữ [6:4] R Không sử dụng Giá trị đọc CKP [4] R/W Trạng thái nghỉ SCK 0: Trạng thái nghỉ SCK mức thấp 1: Trạng thái nghỉ SCK mức cao © 2012 ICDREC SG8V1 - Hướng dẫn sử dụng 92 SPI Tên CKE Bit [3] Mô tả R/W R/W Cạnh SCK sử dụng để nhận liệu 0: Nhận liệu cạnh thứ hai 1: Nhận liệu cạnh SPIMS [2] R/W Chế độ master hay slave 0: Chế độ master 1: Chế độ slave MODE [1:0] R/W Chế độ hoạt động SPI Chế độ slave, cho phép lập trình chế độ sử dụng SSx 00: Chân SSx sử dụng tín hiệu cho phép SPI 01: SPI hoạt động không cần tín hiệu SSx Chế độ master, hai bit sử dụng để lập trình tần số SCK cho SPI 00: SCK = Fosc/4 01: SCK = Fosc/16 10: SCK = Fosc/64 11: SCK = tmr2/2 Chú ý: SPICON phải lập trình trước lập trình bit SPION = Khi SPI chế độ slave sử dụng chân SSx, SSx =1 trình truyền liệu SPI bị reset 15.2.2 Thanh ghi trạng thái - SPISTA Bảng 15-3: Thanh ghi trạng thái SPI- SPISTA Tên Dự trữ Bit [7:3] Mô tả R/W R Không sử dụng Giá trị đọc SPIOV [2] © 2012 ICDREC R/W Bit tràn đệm, sử dụng chế độ slave SG8V1 - Hướng dẫn sử dụng 93 SPI Tên Bit Mô tả R/W 0: Không bị tràn đệm 1: Bị tràn đệm Khi SPI nhận xong byte liệu mà byte trước SPIBUF chưa đọc Dữ liệu ghi đè lên liệu trước bit SPIOV bật lên Ghi vào giá trị để xóa bit SPIWCOL [1] R/W Xung đột liệu trình phát 0: Không bị xung đột 1: Bị xung đột, ghi liệu vào ghi SPIBUF để phát bên ngoài, Nếu trình ghi xảy SPI truyền liệu trước bit SPIWCOL bật lên Dữ liệu SPIBUF bị SPISR ghi đè lên truyền xong byte Nên ghi liệu vào SPIBUF chuẩn bị truyền kết thúc byte truyền trước (SPIBF = 1) Ghi vào giá trị để xóa bit SPIBF [0] R Bit trạng thái ghi SPIBUF 0: Chưa nhận xong byte 1: Nhận xong byte Bit xóa đọc ghi SPIBUF Chú ý: Khi xung đột liệu xảy liệu phát bị sai 15.3 Hoạt động SPI Khi sử dụng ngoại vi SPI, người sử dụng cần ý đến điểm sau lập trình:  SCK: Nếu chế độ master SCK ngõ (SPIMS = 0) Nếu chế độ slave SCK ngõ vào (SPIMS = 1)  CKP: Trạng thái nghỉ SCK  CKE: Cạnh nhận liệu  MODE : Nếu chế độ master MODE sử dụng để lập trình tần số SCK Nếu chế độ slave MODE sử dụng để lập trình chế độ SSx © 2012 ICDREC SG8V1 - Hướng dẫn sử dụng 94 SPI Truyền liệu SPI SPISR SDI SDO SDO SDI SPISR SPIBUF SBIBUF SCK SCK MASTER CONTROL GPIO SSx SLAVE CONTROL MASTER SLAVE Hình15-2: Sơ đồ kết nối SPI Các trường hợp truyền nhận liệu:  Master gửi liệu thật – Slave gửi liệu thật  Master gửi liệu thật – Slave gửi liệu giả  Master gửi liệu giả – Slave gửi liệu thật Dữ liệu thật liệu muốn truyền Dữ liệu giả liệu không quan tâm SSx SCK (CKP=0, CKE=0) SCK (CKP=1, CKE=0) SCK (CKP=0, CKE=1) SCK (CKP=1, CKE=1) SDI/SDO bit bit bit bit bit bit bit bit SPIIF Hình 15-3: chế độ truyền liệu SPI Chú ý: Nếu ngắt SPI cho phép (SPIIE=1) cờ ngắt xảy SPI phát/nhận xong 8-bit © 2012 ICDREC SG8V1 - Hướng dẫn sử dụng 95 SPI 15.4 Các bước lập trình SPI 15.4.1 Lập trình SPI chế độ master Lập trình ghi SPICON  Chế độ master – SPIMS (SPICON [2] ) =  Chế độ SCK – SPICKP: SPICKE (SPICON [4:3])  Tốc độ truyền – SPIMODE [1:0] (SPICON [1:0]) Lập trình ngắt độ ưu tiên ngắt  SPIIE (IE2 [6]), cho phép cờ ngắt SPIIF  Lập trình SPIIP (IP2 [6]) để chọn mức ưu tiên ngắt Lập trình chân giao tiếp  PortC[5] /SDI ngõ vào  PortC[6] /SDO PortC[4] /SCK ngõ Bật SPION  SPION (SPICON [7]) = Sử dụng chân GPIO kéo xuống zero phép SPI slave Ghi liệu muốn gửi vào SPIBUF Kiểm tra bit trạng thái SPIBF  SPIBUF = 0: Chưa truyền xong byte  SPIBUF = 1: Truyền xong byte Khi SPIBUF = 1, đọc ghi SPIBUF để xóa bit SPIBUF Quay lại bước để tiếp tục trình truyền nhận Chú ý:  Chỉ ghi liệu vào SPIBUF mà slave sẵn sàng nhận liệu © 2012 ICDREC SG8V1 - Hướng dẫn sử dụng 96 SPI 15.4.2 Lập trình SPI chế độ slave Lập trình ghi SPICON  Chế độ slave – SPIMS (SPICON [2] ) =  Chế độ SCK – SPICKP: SPICKE (SPICON [4:3])  Chế độ điều khiển SSx – SPIMODE [1:0] (SPICON [1:0]) Lập trình ngắt độ ưu tiên ngắt  SPIIE (IE2 [6] = 1), cho phép cờ ngắt SPIIF  Lập trình SPIIP (IP2 [6]) để chọn mức ưu tiên ngắt Lập trình chân giao tiếp  PortC[5] /SDI PortC[4] /SCK ngõ vào  PortC[7] /SSx ngõ vào sử dụng chân lựa chọn slave  PortC[6] /SDO ngõ Bật SPION SPION (SPICON [7]) = Ghi liệu muốn gửi vào SPIBUF Kiểm tra bit trạng thái SPIBF  SPIBUF = 0: Chưa truyền xong byte  SPIBUF = 1: Truyền xong byte Khi SPIBUF = 1, đọc ghi SPIBUF để xóa bit SPIBUF Quay lại bước để tiếp tục trình phát nhận Nếu có trình nhận quay lại bước thứ © 2012 ICDREC SG8V1 - Hướng dẫn sử dụng 97 SPI byte TDC byte SCK SDI/ SDO bit bit bit bit bit bit bit bit bit bit bit bit bit bit bit bit Hình 15-4: dạng sóng SPI slave (CKP = 0, CKE = 1) Chú ý: Tần số SCK nhỏ nửa clock hệ thống (SCK < FOSC / 2) TDC lớn lần chu kỳ clock hệ thống Nếu tần số SCK nhỏ lần clock hệ thống (SCK < FOSC / 4) TDC không cần quan tâm Khi sử dụng SSx SSx bị kéo lên cao truyền byte, liệu bị không làm thay đổi bit trạng thái SPI SSx SCK (CKP=0, CKE=0) SCK (CKP=1, CKE=0) SCK (CKP=0, CKE=1) SCK (CKP=1, CKE=1) SDI/SDO bit bit bit bit bit bit bit bit bit bit bit SPIIF Hình 15-5: đồng tín hiệu SPI SSx Chú ý:  Trong trình truyền nhận liệu không thay đổi chế độ hoạt động (ghi liệu vào ghi SPICON © 2012 ICDREC SG8V1 - Hướng dẫn sử dụng 98 ... LQFP 48 chân © 2 012 ICDREC SG8V1 – Hướng dẫn sử dụng 12 Giới thiệu Ngoại vi  Watchdog Timer: 16 -bit, sử dụng xung clock hệ thống  Timer0: Timer/counter 8- bit, kết hợp với 8- bit prescaler; sử dụng. .. chuẩn cho ADC Chân nối tụ điện SG8V1 – Hướng dẫn sử dụng 15 Giới thiệu 1. 2 Sơ đồ khối Vi điều khiển SG8V1 bao gồm phần lõi vi xử lý 8- bit ngoại vi xung quanh Các ngoại vi bao gồm: IO Port (GPIO),... 15 0 18 Ngoại vi ADC 15 3 18 . 1 Cấu trúc ADC 15 3 18 . 2 Các ghi liên quan đến hoạt động ADC 15 4 18 . 2 .1 Thanh ghi điều khiển thứ ADC (ADCON1) 15 4 18 . 2.2 Thanh

Ngày đăng: 02/08/2017, 21:45

Từ khóa liên quan

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

Tài liệu liên quan