4 chuong 3 khao sat linh kien

29 20 0
  • Loading ...
1/29 trang

Thông tin tài liệu

Ngày đăng: 07/09/2017, 00:22

QUANG BÁO GIAO TIẾP MÁY TÍNH Chương CHƯƠNG KHẢO SÁT LINH KIỆN 3.1 VI ĐIỀU KHIỂN PIC16F877A 3.1.1 GIỚI THIỆU CHUNG VỀ PIC PIC viết tắt “Programable Intelligent Computer”, tạm dịch “máy tính thông minh khả trình” hãng Genenral Instrument đặt tên cho vi điều khiển họ: PIC1650 thiết kế để dùng làm thiết bị ngoại vi cho vi điều khiển CPU1600 Vi điều khiển sau nghiên cứu phát triển thêm từ hình thành nên dòng vi điều khiển PIC ngày 3.1.1.1 SỰ PHỔ BIẾN CỦA VI ĐIỀU KHIỂN PIC Trên thị trường có nhiều họ vi điều khiển 8051, Motorola 68HC, AVR, ARM Tuy nhiên, PIC sử dụng rộng rãi Việt Nam nguyên nhân sau: - Họ vi điều khiển tìm mua dễ dàng thị trường Việt Nam - Giá thành không đắt - Có đầy đủ tính vi điều khiển hoạt động độc lập - Là bổ sung tốt kiến thức ứng dụng cho họ vi điều khiển mang tính truyền thống: họ vi điều khiển 8051 - Hiện Việt Nam giới, PIC sử dụng rộng rãi Điều tạo nhiều thuận lợi trình tìm hiểu phát triển ứng dụng như: số lượng tài liệu, số lượng ứng dụng mở phát triển thành công, dễ dàng trao đổi, học tập, dễ dàng tìm dẫn gặp khó khăn… - Sự hỗ trợ nhà sản xuất trình biên dịch, công cụ lập trình, nạp chương trình từ đơn giản đến phức tạp… - Các tính đa dạng vi điều khiển PIC không ngừng phát triển 3.1.1.2 KIẾN TRÚC PIC Cấu trúc phần cứng vi điều khiển thiết kế theo hai dạng kiến trúc: kiến trúc Von-Neumann kiến trúc Harvard Trang 10 QUANG BÁO GIAO TIẾP MÁY TÍNH Chương Hình 3.1: Kiến trúc Harvard kiến trúc Von-Neuman Tổ chức phần cứng PIC thiết kế theo kiến trúc Harvard Điểm khác biệt kiến trúc Harvard kiến trúc Von-Neumann cấu trúc nhớ liệu nhớ chương trình Đối với kiến trúc Von-Neuman, nhớ liệu nhớ chương trình nằm chung nhớ, ta tổ chức, cân đối cách linh hoạt nhớ chương trình nhớ liệu Tuy nhiên điều có ý nghĩa tốc độ xử lí CPU phải cao,vì với cấu trúc đó, thời điểm CPU tương tác với nhớ liệu nhớ chương trình Như nói kiến trúc Von-Neumann không thích hợp với cấu trúc vi điều khiển Đối với kiến trúc Harvard, nhớ liệu nhớ chương trình tách thành hai nhớ riêng biệt Do thời điểm CPU tương tác với hai nhớ, tốc độ xử lí vi điều khiển cải thiện đáng kể Một điểm cần ý tập lệnh kiến trúc Harvard tối ưu tùy theo yêu cầu kiến trúc vi điều khiển mà không phụ thuộc vào cấu trúc liệu Ví dụ, vi điều khiển dòng 16Fxxx, độ dài lệnh 14 bit (trong liệu tổ chức thành byte), kiến trúc Von-Neumann, độ dài lệnh bội số byte (do liệu tổ chức thành byte) Đặc điểm minh họa cụ thể hình 3.1 3.1.1.3 RISC VÀ CISC Như trình bày trên, kiến trúc Harvard khái niệm so với kiến trúc Von-Neumann Khái niệm hình thành nhằm cải tiến tốc độ thực thi vi điều khiển Qua việc tách rời nhớ chương trình nhớ liệu, bus chương trình bus liệu, CPU lúc truy xuất nhớ chương trình nhớ liệu, giúp tăng tốc độ xử lí vi điều khiển lên gấp đôi Đồng thời cấu trúc lệnh không phụ thuộc vào cấu trúc liệu mà linh động điều chỉnh tùy theo khả tốc độ vi điều khiển Và để tiếp tục cải tiến tốc độ thực thi lệnh, tập lệnh họ vi điều khiển PIC thiết kế cho chiều dài mã lệnh cố định (ví dụ họ 16Fxxxx chiều dài mã lệnh 14 bit) cho phép thực thi lệnh chu kì xung clock ( ngoại trừ số trường hợp đặc biệt lệnh nhảy, lệnh gọi chương trình … cần hai chu kì xung đồng hồ) Điều có nghĩa tập lệnh vi điều khiển thuộc cấu trúc Harvard lệnh hơn, ngắn hơn, đơn giản để đáp ứng yêu cầu mã hóa lệnh số lượng bit định Vi điều khiển tổ chức theo kiến trúc Harvard gọi vi điều khiển RISC (Reduced Instruction Set Computer) hay vi điều khiển có tập lệnh rút gọn Vi điều khiển thiết kế theo kiến trúc Von-Neuman gọi vi điều khiển CISC (Complex Instruction Set Computer) hay vi điều khiển có tập lệnh phức tạp mã lệnh số cố định mà bội số bit (1 byte) Trang 11 QUANG BÁO GIAO TIẾP MÁY TÍNH Chương 3.1.1.4 PIPELINING Đây chế xử lí lệnh vi điều khiển PIC Một chu kì lệnh vi điều khiển bao gồm xung clock Ví dụ ta sử dụng oscillator có tần số MHZ, xung lệnh có tần số MHz (chu kì lệnh us) Giả sử ta có đoạn chương trình sau: MOVLW 55h MOVWF PORTB CALL SUB_1 BSFPORTA,BIT3 instruction @ address SUB_1 Ở ta bàn đến qui trình vi điều khiển xử lí đoạn chương trình thông qua chu kì lệnh Quá trình thực thi sau: TCY0: đọc lệnh TCY1:thực thi lệnh 1, đọc lệnh TCY2: thực thi lệnh 2, đọc lệnh TCY3: thực thi lệnh 3, đọc lệnh TCY4: lệnh lệnh thực thi theo qui trình thực thi chương trình (lệnh thực thi phải lệnh label SUB_1) nên chu thi lệnh dùng để đọc lệnh label SUB_1 Như xem lênh cần chu kì xung clock để thực thi TCY5: thực thi lệnh SUB_1 đọc lệnh SUB_1 Quá trình thực tương tự cho lệnh chương trình Thông thường, để thực thi lệnh, ta cần chu kì lệnh để gọi lệnh đó, chu kì xung clock để giải mã thực thi lệnh Với chế pipelining trình bày trên, lệnh xem thực thi chu kì lệnh Đối với lệnh mà trình thực thi làm thay đổi giá trị ghi PC (Program Counter) cần hai chu kì lệnh để thực thi phải thực việc gọi lệnh địa Trang 12 QUANG BÁO GIAO TIẾP MÁY TÍNH Chương ghi PC tới Sau xác định vị trí lệnh ghi PC, lệnh cần chu kì lệnh để thực thi xong 3.1.1.5 CÁC DÒNG PIC VÀ CÁCH LỰA CHỌN PIC * Các kí hiệu vi điều khiển PIC - PIC12xxxx: độ dài lệnh 12 bit - PIC16xxxx: độ dài lệnh 14 bit - PIC18xxxx: độ dài lệnh 16 bit - C: PIC có nhớ EPROM (chỉ có 16C84 EEPROM) - F: PIC có nhớ flash - LF: PIC có nhớ flash hoạt động điện áp thấp LV: tương tự LF, kí hiệu cũ Bên cạnh số vi điệu khiển có kí hiệu xxFxxx EEPROM, có thêm chữ A cuối flash (ví dụ PIC16F877 EEPROM, PIC16F877A flash).Ngoài có thêm dòng vi điều khiển PIC dsPIC Ở Việt Nam phổ biến họ vi điều khiển PIC hãng Microchip sản xuất *Cách lựa chọn PIC Trước hết cần ý đến số chân vi điều khiển cần thiết cho ứng dụng Có nhiều vi điều khiển PIC với số lượng chân khác nhau, chí có vi điều khiển có chân, có vi điều khiển 28, 40, 44 … chân Cần chọn vi điều khiển PIC có nhớ flash để nạp xóa chương trình nhiều lần Tiếp theo cần ý đến khối chức tích hợp sẵn vi điều khiển, chuẩn giao tiếp bên Sau cần ý đến nhớ chương trình mà vi điều khiển cho phép Ngoài thông tin cách lựa chọn vi điều khiển PIC tìm thấy sách “Select PIC guide” nhà sản xuất Microchip cung cấp 3.1.1.6 NGÔN NGỮ LẬP TRÌNH PIC Ngôn ngữ lập trình cho PIC đa dạng Ngôn ngữ lập trình cấp thấp có MPLAB (được cung cấp miễn phí nhà sản xuất Microchip), ngôn ngữ lập trình cấp cao bao gồm C, Basic, Pascal, … Ngoài có số ngôn ngữ lập trình phát triển dành riêng cho PIC PICBasic, MikroBasic… 3.1.2 PIC16F877A 3.1.2.1 HÌNH DẠNG VÀ SƠ ĐỒ CHÂN Trang 13 QUANG BÁO GIAO TIẾP MÁY TÍNH Chương Hình 3.2: Vi điều khiển PIC16F877A/PIC16F874A dạng sơ đồ chân 3.1.2.2 MỘT VÀI THÔNG SỐ VỀ PIC 16F877A Đây vi điều khiển thuộc họ PIC16Fxxx với tập lệnh gồm 35 lệnh có độ dài 14 bit Mỗi lệnh thực thi chu kì xung clock Tốc độ hoạt động tối đa cho phép 20 MHz với chu kì lệnh 200ns Bộ nhớ chương trình 8Kx14 bit, nhớ liệu 368 byte RAM nhớ liệu EEPROM với dung lượng 256 byte Số PORT I/O với 33 pin I/O Các đặc tính ngoại vi bao gồm khối chức sau: - Timer0: đếm bit với chia tần số bit - Timer1: đếm 16 bit với chia tần số, thực chức đếm dựa vào xung clock ngoại vi vi điều khiển hoạt động chế độ sleep - Timer2: đếm bit với chia tần số, postcaler - Hai Capture/so sánh/điều chế độ rông xung - Các chuẩn giao tiếp nối tiếp SSP (Synchronous Serial Port), SPI I2C - Chuẩn giao tiếp nối tiếp USART với bit địa - Cổng giao tiếp song song PSP (Parallel Slave Port) với chân điều khiển RD, WR, CS bên Các đặc tính Analog: - kênh chuyển đổi ADC 10 bit - Hai so sánh Bên cạnh vài đặc tính khác vi điều khiển như: - Bộ nhớ flash với khả ghi xóa 100.000 lần - Bộ nhớ EEPROM với khả ghi xóa 1.000.000 lần - Dữ liệu nhớ EEPROM lưu trữ 40 năm - Khả tự nạp chương trình với điều khiển phần mềm Trang 14 QUANG BÁO GIAO TIẾP MÁY TÍNH Chương - Nạp chương trình mạch điện ICSP (In Circuit Serial Programming) thông qua chân - Watchdog Timer với dao động - Chức bảo mật mã chương trình - Chế độ Sleep - Có thể hoạt động với nhiều dạng Oscillator khác 3.1.2.3 SƠ ĐỒ KHỐI CỦA PIC16F877A Trang 15 QUANG BÁO GIAO TIẾP MÁY TÍNH Chương Hình 3.3: Sơ đồ khối vi điều khiển PIC16F877A 3.1.2.4 TỔ CHỨC BỘ NHỚ Cấu trúc nhớ vi điều khiển PIC16F877A bao gồm nhớ chương trình (Program memory) nhớ liệu (Data Memory) * Bộ nhớ chương trình Bộ nhớ chương trình vi điều khiển PIC16F877A nhớ flash, dung lượng nhớ 8K word (1 word = 14 bit) phân thành nhiều trang (từ page0 đến page 3) Như nhớ chương trình có khả chứa 8*1024 = 8192 lệnh (vì lệnh sau mã hóa có dung lượng word (14 bit) Khi vi điều khiển reset, đếm chương trình đến địa 0000h (Reset vector) Khi có ngắt xảy ra, đếm chương trình đến địa 0004h (Interrupt vector) Bộ nhớ chương trình không bao gồm nhớ stack không địa hóa đếm chương trình * Bộ nhớ liệu Bộ nhớ liệu PIC nhớ EEPROM chia làm nhiều bank Đối với PIC16F877A nhớ liệu chia làm bank Mỗi bank có dung lượng 128 byte, bao gồm ghi có chức đặc biệt SFG (Special Function Register) nằm vùng địa thấp ghi mục đích chung GPR (General Purpose Register) nằm vùng địa lại bank Các ghi SFR thường xuyên sử dụng (ví dụ ghi STATUS) đặt tất cà bank nhớ liệu giúp thuận tiện trình truy xuất làm giảm bớt lệnh chương trình Sơ đồ cụ thể nhớ liệu PIC16F877A sau: Trang 16 QUANG BÁO GIAO TIẾP MÁY TÍNH Chương Hình 3.4: Sơ đồ bộ nhớ dữ liệu của PIC16F877A Trang 17 QUANG BÁO GIAO TIẾP MÁY TÍNH Chương ** THANH GHI CHỨC NĂNG ĐẶC BIỆT SFR: Đây ghi sử dụng CPU dùng để thiết lập điều khiển khối chức tích hợp bên vi điều khiển Có thể phân ghi SFR làm hai lọai: ghi SFR liên quan đến chức bên (CPU) ghi SRF dùng để thiết lập điều khiển khối chức bên (ví dụ ADC, PWM …) Thanh ghi STATUS (03h, 83h, 103h, 183h):thanh ghi chứa kết thực phép toán khối ALU, trạng thái reset bit chọn bank cần truy xuất nhớ liệu Thanh ghi OPTION_REG (81h, 181h): ghi cho phép đọc ghi, cho phép điều khiển chức pull-up chân PORTB, xác lập tham số xung tác động, cạnh tác động ngắt ngoại vi đếm Timer0 Thanh ghi INTCON (0Bh, 8Bh,10Bh, 18Bh):thanh ghi cho phép đọc ghi, chứa bit điều khiển bit cờ hiệu timer0 bị tràn, ngắt ngoại vi RB0/INT ngắt interrputon- change chân PORTB Thanh ghi PIE1 (8Ch): chứa bit điều khiển chi tiết ngắt khối chức ngoại vi Thanh ghi PIR1 (0Ch) chứa cờ ngắt khối chức ngoại vi, ngắt cho phép bit điều khiển chứa ghi PIE1 Thanh ghi PIE2 (8Dh): chứa bit điều khiển ngắt khối chức CCP2, SSP bus, ngắt so sánh ngắt ghi vào nhớ EEPROM Trang 18 QUANG BÁO GIAO TIẾP MÁY TÍNH Chương Thanh ghi PIR2 (0Dh): chứa cờ ngắt khối chức ngoại vi, ngắt cho phép bit điều khiển chứa ghi PIE2 Thanh ghi PCON (8Eh): chứa cờ hiệu cho biết trạng thái chế độ reset vi điều khiển ** THANH GHI MỤC ĐÍCH CHUNG GPR: Các ghi truy xuất trực tiếp gián tiếp thông qua ghi FSG (File Select Register) Đây ghi liệu thông thường, người sử dụng tùy theo mục đích chương trình mà dùng ghi để chứa biến số, số, kết tham số phục vụ cho chương trình * Stack Stack không nằm nhớ chương trình hay nhớ liệu mà vùng nhớ đặc biệt không cho phép đọc hay ghi Khi lệnh CALL thực hay ngắt xảy làm chương trình bị rẽ nhánh, giá trị đếm chương trình PC tự động vi điều khiển cất vào stack Khi lệnh RETURN, RETLW hat RETFIE thực thi, giá trị PC tự động lấy từ stack, vi điều khiển thực tiếp chương trình theo qui trình định trước Bộ nhớ Stack vi điều khiển PIC họ 16F87xA có khả chứa địa hoạt động theo chế xoay vòng Nghĩa giá trị cất vào nhớ Stack lần thứ ghi đè lên giá trị cất vào Stack lần giá trị cất vào nhớ Stack lần thứ 10 ghi đè lên giá trị cất vào Stack lần thứ Cần ý cờ hiệu cho biết trạng thái stack, ta stack tràn Bên cạnh tập lệnh vi điều khiển dòng PIC lệnh POP hay PUSH, thao tác với nhớ stack hoàn toàn điều khiển CPU 3.1.2.5 CÁC CỔNG XUẤT NHẬP CỦA PIC16F877A Cổng xuất nhập (I/O port) phương tiện mà vi điều khiển dùng để tương tác với giới bên Bên cạnh đó, vi điều khiển tích hợp sẵn bên đặc tính giao tiếp ngoại vi nên bên cạnh chức cổng xuất nhập Trang 19 QUANG BÁO GIAO TIẾP MÁY TÍNH Chương 3.1.2.8 TIMER Timer2 định thời bit hỗ trợ hai chia tần số prescaler postscaler Thanh ghi chứa giá trị đếm Timer2 TMR2 Bit cho phép ngắt Timer2 tác động TMR2ON (T2CON) Cờ ngắt Timer2 bit TMR2IF (PIR1) Xung ngõ vào (tần số ¼ tần số oscillator) đưa qua chia tần số prescaler bit (với tỉ số chia tần số 1:1, 1:4 1:16 điều khiển bit T2CKPS1:T2CKPS0 (T2CON)) Hình 3.7: Sơ đồ khối của Timer Ngoài ngõ Timer2 kết nối với khối SSP, Timer2 đóng vai trò tạo xung clock đồng cho khối giao tiếp SSP Các ghi liên quan đến Timer2 bao gồm: - INTCON (địa 0Bh, 8Bh, 10Bh, 18Bh): cho phép toàn ngắt (GIE PEIE) - PIR1 (địa 0Ch): chứa cờ ngắt Timer2 (TMR2IF) - PIE1 (địa chị 8Ch): chứa bit điều khiển Timer2 (TMR2IE) - TMR2 (địa 11h): chứa giá trị đếm Timer2 - T2CON (địa 12h): xác lập thông số cho Timer2 - PR2 (địa 92h): ghi hỗ trợ cho Timer2 Timer0 Timer2 đếm bit (giá trị đếm tối đa FFh), Timer1 đếm 16 bit (giá trị đếm tối đa FFFFh) Timer0, Timer1 Timer2 có hai chế độ hoạt động timer counter Xung clock có tần số ¼ tần số oscillator Xung tác động lên Timer0 hỗ trợ prescaler thiết lập nhiều chế độ khác (tần số tác động, cạnh tác động) thông số xung tác động lên Timer1 cố định Timer2 hỗ trợ hai chia tần số prescaler postcaler độc lập, nhiên cạnh tác động cố định cạnh lên Timer1 có quan hệ với khối CCP, Timer2 kết nối với khối SSP 3.1.2.9 ADC Trang 24 QUANG BÁO GIAO TIẾP MÁY TÍNH Chương ADC (Analog to Digital Converter) chuyển đổi tín hiệu hai dạng tương tự số PIC16F877A có ngõ vào analog (RA4:RA0 RE2:RE0) Hiệu điện chuẩn VREF lựa chọn VDD, VSS hay hiệu điện thể chuẩn xác lập hai chân RA2 RA3 Kết chuyển đổi từ tín tiệu tương tự sang tín hiệu số 10 bit số tương ứng lưu hai ghi ADRESH:ADRESL Các ghi liên quan đến chuyển đổi ADC bao gồm: - INTCON (địa 0Bh, 8Bh, 10Bh, 18Bh): cho phép ngắt (các bit GIE, PEIE) - PIR1 (địa 0Ch): chứa cờ ngắt AD (bit ADIF) - PIE1 (địa 8Ch): chứa bit điều khiển AD (ADIE) - ADRESH (địa 1Eh) ADRESL (địa 9Eh): ghi chứa kết chuyển đổi AD - ADCON0 (địa 1Fh) ADCON1 (địa 9Fh): xác lập thông số cho chuyển đổi AD - PORTA (địa 05h) TRISA (địa 85h): liên quan đến ngõ vào analog PORTA - PORTE (địa 09h) TRISE (địa 89h): liên quan đến ngõ vào analog PORTE 3.1.2.10 GIAO TIẾP NỐI TIẾP USART (Universal Synchronous Asynchronous Receiver Transmitter) hai chuẩn giao tiếp nối tiếp.USART gọi giao diện giao tiếp nối tiếp SCI (Serial Communication Interface) Có thể sử dụng giao diện cho giao tiếp với thiết bị ngoại vi, với vi điều khiển khác hay với máy tính Các dạng giao diện USART ngoại vi bao gồm: - Bất động (Asynchronous) - Đồng bộ_ Master mode - Đồng bộ_ Slave mode PIC16F877A tích hợp sẵn tạo tốc độ baud BRG (Baud Rate Genetator) bit dùng cho giao diện USART BRG thực chất đếm sử dụng cho hai dạng đồng bất đồng điều khiển ghi PSBRG Ở dạng bất đồng bộ, BRG điều khiển bit BRGH ( TXSTA) Ở dạng đồng tác động bit BRGH bỏ qua Tốc độ baud BRG tạo tính theo công thức sau: Trang 25 QUANG BÁO GIAO TIẾP MÁY TÍNH Chương Trong X giá trị ghi RSBRG ( X số nguyên 0
- Xem thêm -

Xem thêm: 4 chuong 3 khao sat linh kien , 4 chuong 3 khao sat linh kien , 4 chuong 3 khao sat linh kien

Gợi ý tài liệu liên quan cho bạn

Nhận lời giải ngay chưa đến 10 phút Đăng bài tập ngay