Giới thiệu vi điều khiển PIC

32 181 0
Giới thiệu vi điều khiển PIC

Đ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

Đồ Án Tốt Nghiệp GVHD:Phan Duy Anh I.Giới thiệu vi điều khiển 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 CP1600 Vi điều khiển sau hãng Microchip 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 Cách phân lọai PIC theo chữ cái: Các họ PIC xxCxxx đưa vào nhóm, gọi OPT (One Time Programmable) : nạp chương trình cho lần Nhóm thứ hai có chữ F LF:chúng ta gọi nhóm nhóm Flash ,nhóm cho phép ghi xóa nhiều lần mạch điện tử thông thường Cách phân loại PIC theo hai số sản phẩm : -Loại thứ dòng PIC (Base_line), gồm PIC 12Cxxx, có độ dài lệnh 12 bit -Loại thứ hai dòng PIC 10F, 12F , 16F, gọi dòng phổ thông (Mid Range), có độ dài lệnh 14 bit -Loại thứ ba dòng PIC 18F (High End) , độ dài lệnh 16 bit PIC 16F877A dòng PIC phổ biến , đủ mạnh tính năng, nhớ đủ cho ứng dụng thông thường II Vi điều khiển PIC16F877A : II.1 Tổ chức phần cứng : Tổ chức phần cứng vi điều khiển thiết kế theo hai kiến trúc: Harvard Von Neumann.Tổ chức phần cứng PIC16F877A thết kế theo kiến trúc Harvard Hình I.1 : Kiến trúc Harvard Von Neumann SVTH: Lê Cao Thượng – Trần Thành Nghĩa Trang Đồ Án Tốt Nghiệp GVHD:Phan Duy Anh Trên hình vẽ, cấu trúc Von Neumann nhớ chương trình nhớ liệu nằm chung nhớ CPU truy cập vào hai nhớ thông qua bus, thời điểm CPU truy cập vào hai nhớ Đối với cấu trúc Harvard, nhớ liệu nhớ chương trình tổ chức riêng Do đó, thời điểm, CPU tương tác với hai nhớ, tốc độ xử lý vi điều khiển nhanh PIC16F877A thiết kế với kiến trúc Harvard nên có tập lệnh rút gọn RISC (Reduced Instruction Set Computer) nên tập lệnh PIC16F877A lệnh nhân, chia mà phép nhân chia thay thực liên tiếp nhiều phép cộng trừ cần lệnh ADD lệnh SUBB đủ II.2 Tính : Đâ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 256byte 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 SVTH: Lê Cao Thượng – Trần Thành Nghĩa Trang Đồ Án Tốt Nghiệp GVHD:Phan Duy Anh Khả tự nạp chương trình với điều khiển phần mềm 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 So sánh PIC với 8051: Chức AT9C51 PIC16F877A Bộ nhớ chương trình 4KB 8K x 14bit Bộ nhớ liệu 128B RAM 368B RAM, 256B EEPROM Port vào/ra port, với 32 chân port, với 33 chân vào/ra vào/ra Bộ định thời 16 bit bit, 16 bit Mạch giao tiếp UART USART giao tiếp song song PSP giao tiếp nối tiếp đồng SSP Capture/sosánh/PWM Không có Chuyển đổi tương tự sang số Không có 10 bit Tập lệnh 53 lệnh 35 lệnh Ngắt nguồn tạo ngắt có 15 nguồn tạo ngắt không ưu tiên ưu tiên SVTH: Lê Cao Thượng – Trần Thành Nghĩa Trang Đồ Án Tốt Nghiệp GVHD:Phan Duy Anh II.3 Sơ đồ khối tính chân PIC16F877A: II.3.1 Sơ đồ khối : Hình I.2 : Sơ đồ khối PIC16F877A Như nói , vi điều khiển PIC có kiến trúc Harvard, CPU truy cập chương trình liệu hai bus riêng biệt, nên làm tăng đáng kể băng thông so với kiến trúc Von Neumann CPU truy cập chương trình liệu bus Việc tách riêng nhớ chương trình nhớ liệu cho phép số bit từ lệnh khác với số bit liệu Ở PIC 16F877A, từ lệnh dài 14 bit , từ liệu bit PIC 16F877A chứa ALU bit ghi làm việc WR (Working Register) ALU đơn vị tính toán số học logic, thực hiên phép tình số đại số Boole ghi làm việc WR ghi liệu ALU thực phép cộng, trừ, dịch bit phép toán logic SVTH: Lê Cao Thượng – Trần Thành Nghĩa Trang Đồ Án Tốt Nghiệp GVHD:Phan Duy Anh II.3.2 Sơ đồ chân PIC16F877A: Hình I.3 : Sơ đồ chân PIC16F877A II.3.3 Tính chân : Tên Mô tả chức Chân Loại OSC1/CLKI 13 I Dao động tinh thể lối vào dao động OSC2/CLKO 14 O Dao động tinh thể lối xung nhịp MCLR/Vpp I/P RA0/AN0 I/O Vào/ số Lối vào analog RA1/AN1 I/O Vào/ số Lối vào analog Vào số lối vào analog Lối vào điện áp chuẩn V-ref ADC Lối Vref so sánh Lối vào reset Lối vào điện áp nạp trình Vpp RA2/AN2/V-reff/CVRef I/O RA3/AN3/V+Ref I/O Vào/ số Lối vào analog Lối vào điện áp chuẩn V-ref ADC RA4/TOCKI/C1OUT I/O Vào/ra số cực máng ngỏ Lối vào xung cho timer Lối so sánh RA5/SS/AN4/C2OUT I/O Vào/ra số lối vào chọn SOI Lối vào analog lối so sánh RB0/INT 33 I/O Vào/ra số Lối vào ngắt SVTH: Lê Cao Thượng – Trần Thành Nghĩa Trang Đồ Án Tốt Nghiệp GVHD:Phan Duy Anh RB1 34 I/O Vào/ra số RB2 35 I/O Vào/ra số RB3/PGM 36 I/O Vào/ra số Nạp trình LVP RB4 37 I/O Vào/ra số RB5 38 I/O Vào/ra số RB6 39 I/O Vào/ra số Xung nhịp nạp trình ICSP RB7 40 I/O Vào/ra số Dữ liệu nạp trình ICSP RC0/T1OSO/T1CKI 15 I/O Vào/ra số Tạo dao động timer Xung nhịp cho timer RC1/T1OSI/CCP2 16 I/O Vào/ra số Tạo timer1 Lối vào Capture Lối Compare2 Lối PWM2 RC2/CCP1 17 I/O Vào/ra số Lối vào Vào/ra số Capture1 Lối PWM1 RC3/SCK/SCL 18 I/O Vào/ra số Nhịp đồng choSPI I2C RC4/SDI/SDA 23 I/O Vào/ra số Vào liệu SPI Vào/ra liệu I2C RC5/SDO 24 I/O Vào/ra số Ra liệu SPI RC6/TX/CK 25 I/O Vào/ra số Cổng truyền thông không đồng Xung nhịp truyền đồng RC7/RX/DT 26 I/O Vào/ra số Cổng nhận không đồng Dữ liệu đồng RD0 19 I/O Vào/ra số Cổng song song tớ RD1 20 I/O Vào/ra số Cổng song song tớ RD2 21 I/O Vào/ra số Cổng song song tớ RD3 22 I/O Vào/ra số Cổng song song tớ RD4 27 I/O Vào/ra số Cổng song song tớ RD5 28 I/O Vào/ra số Cổng song song tớ RD6 29 I/O Vào/ra số Cổng song song tớ RD7 30 I/O Vào/ra số Cổng song song tớ RE0/RD/AN5 I/O Vào/ra số Điều khiển RD cổng song song RE1/WR/AN6 I/O Vào/ra số Điều khiển WR cổng song song RE2/CS/AN7 I/O Vào/ra số Điều khiển CS cổng song song SVTH: Lê Cao Thượng – Trần Thành Nghĩa Trang 10 Đồ Án Tốt Nghiệp GVHD:Phan Duy Anh Vss 12,31 I/O Đất chung cho lối vào/ra analog Vdd 11,32 I/O Cấp nguồn dương II.4 Tổ chức nhớ Có nhớ riêng biệt vi điều khiển PIC16F877A gồm: Bộ nhớ liệu, nhớ chương trình , nhớ EEPROM II.4.1 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ừ page đế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 Hình I.4 :Bộ nhớ chương trình PIC16F877A SVTH: Lê Cao Thượng – Trần Thành Nghĩa Trang 11 Đồ Án Tốt Nghiệp GVHD:Phan Duy Anh II.4.2 Bộ nhớ liệu Bộ nhớ liệu chia thành bank, bank có dung lượng 128 byte Mỗi bank bao gồm ghi có chức đặc biệt SFR (Special Function Register) nằm vùng địa thấp, ghi mục đích chung GPR (General Purpose Register) nằm vùng địa cao Các ghi SFR thường xuyên sử dụng STATUS, INTCON, FSR bố trí tất bank giúp thuận tiện trình truy xuất Hình I.5 : Sơ đồ tổ chức nhớ liệu PIC16F877A SVTH: Lê Cao Thượng – Trần Thành Nghĩa Trang 12 Đồ Án Tốt Nghiệp GVHD:Phan Duy Anh * 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ứ II.4.3 Bộ nhớ EEPROM Một nhớ liệu đặc biệt kiểu EEPROM dung lương 256 byte tích hợp PIC 16F877A xem thiết bị ngoại vi nối vào bus liệu, nhớ ghi đọc trình hoạt động điều khiển chương trình Bộ nhớ EEPROM thường dùng lưu trữ chương trình không bị thay đổi chuẩn, liệu người sử dụng không bị ngắt nguồn nuôi II.5 Các cổng xuất nhập 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 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 thông thường, số chân xuất nhập có thêm chức khác để thể tác động đặc tính ngoại vi nêu bên Vi điều khiển PIC16F877A có cổng xuất nhập, bao gồm PORTA, PORTB, PORTC, PORTD PORTE SVTH: Lê Cao Thượng – Trần Thành Nghĩa Trang 13 Đồ Án Tốt Nghiệp GVHD:Phan Duy Anh Hình I.6 : Cấu trúc chân port II.5.1 Port A PORTA bao gồm I/O pin ( RA0 –RA5) Đây chân “hai chiều” (bidirectional pin), nghĩa xuất nhập Chức I/O điều khiển ghi TRISA (địa 85h) Muốn xác lập chức chân PORTA input, ta “set” bit điều khiển tương ứng với chân ghi TRISA ngược lại, muốn xác lập chức chân PORTA output, ta “clear” bit điều khiển tương ứng với chân ghi TRISA Chân RA4 dùng chung với lối vào xung nhịp cho timer0 dùng đếm xung từ bên Các chân khác cổng A ghép lối vào so sánh tương tự biến đổi ADC kênh II.5.2 Port B PORTB (RPB) gồm pin I/O ( RB0 – RB7) Thanh ghi điều khiển xuất nhập tương ứng TRISB Bên cạnh số chân PORTB sử dụng trình nạp chương trình cho vi điều khiển với chế độ nạp khác PORTB liên quan đến ngắt ngoại vi Timer0 PORTB tích hợp chức điện trở kéo lên (20k ohm) điều khiển chương trình Chân RB0 lựa chọn lối vào ngắt Extint Có chân cổng B ghép lối với chức ICSP RB6, RB7, RB3 tương ứng với lối vào PGC, PGD, LVP nạp trình Lối vào RB4 RB7 làm phát sinh ngắt RBIF thay SVTH: Lê Cao Thượng – Trần Thành Nghĩa Trang 14 Đồ Án Tốt Nghiệp GVHD:Phan Duy Anh Hình I.13 : Sơ đồ khối truyền liệu USART Khi truyền liệu xong, ghi TSR rỗng cờ TRMT set Bit đọc không tạo ngắt Thanh ghi TSR không coq nhớ liệu điều khiển CPU Khối truyền liệu hoạt động đặt bit TXEN (TXSTA) Quá trình truyền liệu bắt đầu liệu ghi vào ghi TXREG xung baud tạo Nếu muốn truyền bit liệu bit TX9 (TXSTA) phải set bit liệu thứ đưa vào bit TX9D (TXSTA) Nên ghi bit thứ vào trước ghi liệu vào ghi TXREG Nếu liệu ghi vào ghi TXREG trước ghi bit thứ không gửi bit thứ hoạt động truyền bắt đầu liệu ghi vào ghi TXREG Các bước cần tiến hành để truyền liệu: Tạo xung truyền baud cách nạp giá trị vào ghi điều khiển RSBRD bit điều khiển tốc độ baud BRGH Cho chế độ bất đồng hoạt động cách xóa bit SYNC set bit SPEN Set bit TXIE cần sử dụng ngắt Set bit TX9 sử dụng chế độ truyền bit Set bit TXEN phép truyền liệu (lúc bit TXIF set) Nếu gửi bit liệu ghi bit thứ vào TX9D Đưa bit liệu vào ghi TXREG Nếu sử dụng ngắt truyền kiểm tra lại bit GIE PEIE ghi INTCON II.9.1.2 USART nhận bất đồng Dữ liệu đưa vào từ chân RC7/RX/DT kích hoạt khối phục hồi liệu Khối phục hồi liệu ghi dịch tốc độ cao có tần số hoạt động gấp 16 64 lần tần số baud SVTH: Lê Cao Thượng – Trần Thành Nghĩa Trang 22 Đồ Án Tốt Nghiệp GVHD:Phan Duy Anh Hình I.14 : Sơ đồ khối nhận liệu USART Bit điều khiển cho phép khối nhận liệu bit CREN (RCSTA) Trung tâm khối nhận ghi RSR (Receive Shift Register) Sau nhận bit stop liệu truyền tới, liệu nhận ghi RSR đưa vào ghi RCREG, sau cờ RCIF (PIR1) set ngắt kích hoạt Bit cờ RCIF bit đọc, tác động phần mềm RCIF xóa liệu ghi RCREG đọc ghi RCREG rỗng Thanh ghi RCREG ghi có đệm kép (doublebuffered register) hoạt động theo chế FIFO (First In First Out) cho phép nhận byte byte thứ đưa vào ghi RSR Nếu bit stop byte thứ nhận mà byte RCREG cờ báo tràn liệu OERR (RCSTA) set, liệu ghi RSR bị trình đưa liệu từ ghi RSR vào ghi RCREG bị gián đoạn Trong trường hợp này, liệu ghi RCREG cần lấy hết trước nhận liệu Bit OERR phải xóa phần mềm cách xóa set cờ CREN Bit FERR (RCSTA) set để báo lỗi khung liệu nhận tức không nhận bit stop Ở chế độ nhận bit, bit thứ đưa vào bit RX9D ghi RCSTA bit cần đọc trước đọc bit liệu ghi RCREG đọc ghi RCREG làm thay đổi giá trị bit RX9D Các bước cần tiến hành để nhận liệu: Tạo xung truyền baud cách nạp giá trị vào ghi điều khiển RSBRD bit điều khiển tốc độ baud BRGH Cho chế độ bất đồng hoạt động cách xóa bit SYNC set bit SPEN Set bit RCIE cần sử dụng ngắt SVTH: Lê Cao Thượng – Trần Thành Nghĩa Trang 23 Đồ Án Tốt Nghiệp GVHD:Phan Duy Anh Set bit RX9 sử dụng chế độ truyền bit Set bit CREN phép truyền liệu (lúc bit TXIF set) Sau liệu nhận, cờ RCIF set ngắt kích hoạt (nếu RCIE set) Đọc bit thứ ghi RCSTA chế độ bit liệu Đọc bit liệu ghi RCREG Nếu có lỗi truyền nhận, xóa lỗi cách xóa bit CREN 10 Nếu sử dụng ngắt nhận kiểm tra lại bit GIE PEIE ghi INTCON II.9.2 USART đồng USART đồng kích hoạt cách set bit SYNC hoạt động kiểu bán song công (half-duplex) Cổng giao tiếp chân RC7/RX/DT RC6/TX/CK cho phép bởằng cách set bit SPEN USART đồng có chế độ hoạt động Master chọn cách set bit CSRC TXSTA Slave chọn cách xóa bit CSRC TXSTA Điểm khác biệt hai chế độ chế độ Master lấy xung clock từ tạo xung baud BRG chế độ Slave lấy xung clock từ bên qua chân RC6/TX/CK Các ghi liên quan tới trình truyền nhận liệu USART: Thanh ghi INTCON (địa 0Bh, 8Bh,10Bh, 18Bh): cho phép tất ngắt Thanh ghi PIR1 (địa 0Ch): chứa cờ hiệu TXIF Thanh ghi PIE1 (địa 8Ch): chứa bit cho phép ngắt truyền TXIE Thanh ghi RCSTA (địa 18h): chứa bit cho phép cổng truyền liệu (chân RC7/RX/DT RC6/TX/CK) Thanh ghi TXREG (địa 19h): ghi chứa liệu cần truyền Thanh ghi TXSTA (địa 98h): ghi xác lập thông số cho việc truyền Thanh ghi SPBRG (địa 99h): xác định tốc độ baud II.9.2.1Truyền liệu chế độ Master Trình tự truyền liệu ghi, cờ hiệu giống chế độ USART truyền bất đồng Các bước cần tiến hành để truyền liệu: Tạo xung truyền baud cách nạp giá trị vào ghi điều khiển RSBRD bit điều khiển tốc độ baud BRGH Cho chế độ đồng hoạt động cách set bit SYNC set bit SPEN Set bit TXIE cần sử dụng ngắt Set bit TX9 sử dụng chế độ truyền bit Set bit TXEN phép truyền liệu (lúc bit TXIF set) SVTH: Lê Cao Thượng – Trần Thành Nghĩa Trang 24 Đồ Án Tốt Nghiệp GVHD:Phan Duy Anh Nếu gửi bit liệu ghi bit thứ vào TX9D Đưa bit liệu vào ghi TXREG Nếu sử dụng ngắt truyền kiểm tra lại bit GIE PEIE ghi INTCON II.9.2.2 Nhận liệu chế độ Master Trình tự nhận liệu ghi, cờ hiệu giống chế độ USART nhận bất đồng Các bước cần tiến hành để nhận liệu: Tạo xung truyền baud cách nạp giá trị vào ghi điều khiển RSBRD bit điều khiển tốc độ baud BRGH Cho chế độ bất đồng hoạt động cách xóa bit SYNC set bit SPEN Xóa bit CREN SREN Set bit RCIE cần sử dụng ngắt Set bit RX9 sử dụng chế độ truyền bit Nếu nhận word liệu set bit SREN, nhận chuỗi liệu set bit CREN Sau liệu nhận, cờ RCIF set ngắt kích hoạt (nếu RCIE set) Đọc bit thứ ghi RCSTA chế độ bit liệu Đọc bit liệu ghi RCREG 10 Nếu có lỗi truyền nhận, xóa lỗi cách xóa bit CREN 11 Nếu sử dụng ngắt nhận kiểm tra lại bit GIE PEIE ghi INTCON USART chế độ Slave Chế độ khác với chế độ truyền nhận USART chỗ họat động PIC16F877A chế độ ngủ (sleep mode), xung clock nhận từ chân RC6/TX/CK Truyền liệu chế độ Slave Nếu hai từ ghi vào ghi TXREG trước lênh ngủ (sleep) thực thi trình xảy sau: Từ liệu đưa vào ghi TSR để truyền Từ liệu thứ hai nằm ghi TXREG Cờ hiệu TXIF không set Sau từ dịch khỏi ghi TSR, ghi TXREG tiếp tục truyền từ thứ hai vào ghi TSR cờ hiệu TXIF set SVTH: Lê Cao Thượng – Trần Thành Nghĩa Trang 25 Đồ Án Tốt Nghiệp GVHD:Phan Duy Anh Nếu ngắt truyền cho phép ngắt đánh thức vi điều khiển, đếm chương trình tới địa chứa chương trình ngắt (0004h) Các bước tiến hành truyền liệu: Set bit SYNC, SPEN, xóa bit CSRC Xóa bit CREN, SREN Set bit TXIE sử dụng ngắt Nếu định dang liệu bit set bit TX9 Set bit TXEN Nếu gửi bit liệu ghi bit thứ vào TX9D Đưa bit liệu vào ghi TXREG Nếu sử dụng ngắt truyền kiểm tra lại bit GIE PEIE ghi INTCON Nhận liệu chế độ Slave Ở chế độ không chịu tác động bit SREN Khi bit CREN set trước lệnh ngủ thực thi, từ tiếp tục nhận Sau liệu đưa từ ghi RSR vào ghi RCREG bit RCIF set Nếu bit RCIE set, ngắt thực thi vi điều khiển đánh thức, đếm chương trình tới địa chứa chương trình ngắt (0004h) để thực thi ngắt Các bước tiến hành nhận liệu: Set bit SYNC, SPEN, xóa bit CSRC Set bit RCIE sử dụng ngắt Nếu định dang liệu bit set bit RX9 Set bit CREN để bắt đầu nhận liệu Cờ RCIF set nhận từ liệu, ngắt kích hoạt Nếu gửi bit liệu đọc bit thứ ghi RCSTA Đọc bit liệu vào ghi RCREG Nếu có lỗi xảy truyền nhận xóa bit CREN để xóa lỗi Nếu sử dụng ngắt truyền kiểm tra lại bit GIE PEIE ghi INTCON II.10 I²C PIC16F877A có giao tiếp đồng MSSP (Master Synchronous Serial Port) Bộ giao tiếp họat động theo kiểu SPI (Serial Peripheral Interface) I²C Bộ MSSP kiểu I²C hoạt động dạng chủ (Master) tớ (Slave), sử dụng chân RC3/SCK/SCL làm chân Serial clock (SCL) chân RC4/SDI/SDA làm chân Serial data (SDA) Ta phải cài đặt chế độ xuất nhập cho hai chân ghi TRISC Giao tiếp I²C sử dụng ghi PIC16F877A là: SVTH: Lê Cao Thượng – Trần Thành Nghĩa Trang 26 Đồ Án Tốt Nghiệp GVHD:Phan Duy Anh MSSP Control Register (SSPCON): điều khiển MSSP MSSP Control Register (SSPCON2): điều khiển MSSP MSSP Status Register (SSPSTAT): chứa trạng thái hoạt động MSSP Serial Receive/Transmit Buffer Register (SSPBUF): đệm MSSP Shift Register (SSPSR): ghi dịch truyền nhận liệu MSSP Address Register (SSPADD): chứa địa giao diện MSSP Thanh ghi SSPCON, SSPCON2 cho phép đọc ghi Thanh ghi SSPSTAT cho đọc ghi bit đầu Thanh ghi SSPBUF chứa liệu truyền nhận ghi đệm cho ghi SSPSR Thanh ghi SSPADD chứa địa thiết bị ngoại vi cần truy xuất liệu I²C hoạt động slave mode Ở master mode, ghi SSPADD chứa giá trị tạo tốc độ baud cho xung clock dùng cho truyền nhận Bộ MSSP hoạt động bit cho phép SSPEN (SSPCON) set, bốn bit cuối ghi SSPCON dùng để chọn chế độ hoạt động cho I²C là: I²C Master mode, clock = OSC/4 (SSPADD + 1) I²C Slave mode (7-bit địa chỉ) I²C Slave mode (10-bit địa chỉ) I²C Slave mode (7-bit địa chỉ) với cho phép ngắt start stop bit I²C Slave mode (10-bit địa chỉ) với cho phép ngắt start stop bit I²C Firmware Controlled Master mode * I²C Master mode I²C master mode xác lập cách đưa giá trị thích hợp vào bit SSPM ghi SSPCON set bit SSPEN Ở chế độ này, chân SCL SDA điều khiển phần cứng MSSP SVTH: Lê Cao Thượng – Trần Thành Nghĩa Trang 27 Đồ Án Tốt Nghiệp GVHD:Phan Duy Anh Hình I.15 : Sơ đồ khối MSSP (I²C master mode) Ở chế độ này, vi điều khiển tao xung start, stop xung giao tiếp nối tiếp Xung tạo từ BRG Giá trị xác định tần số baud lấy từ bit thấp ghi SSPADD Khi liệu đưa vào ghi SSPBUF, bit BF set vào BRG tự động đếm tự động nạp lại tràn Hình I.16 : Sơ đồ khối BRG I²C master mode SVTH: Lê Cao Thượng – Trần Thành Nghĩa Trang 28 Đồ Án Tốt Nghiệp GVHD:Phan Duy Anh * Điều kiện Start Để tạo điều kiện start, trước hết bit cho phép tạo điều kiện start SEN (Start Condition Enabled) (SSPCON2) chân SDA, SCL mức cao, tao tốc độ baud nạp giá trị từ bit thấp SSPADD bắt đầu đếm Sau khoảng thời gian TBRG, chân SDA đưa xuống mức thấp SCL mức cao – điều kiện start thực Khi bit S (SSPSTAT) set Sau tạo điều kiện start, bit SEN tự động xóa, BRG tự động nạp lại Hình I.17 : Giản đồ xung điều kiện start I²C master mode Trong trường hợp điều kiện start không hình thành cờ BCLIF (Bus Collision Interrupt Flag) set I²C trạng thái tạm ngưng hoạt động * Điều kiện Start lặp lại (Repeated Start) Để tao diều kiện start lặp lại, bit RSEN (Receive Enable ) (SSPCON2) phải set, I²C trạng thái tạm ngưng hoạt động, chân SCL đưa xuống mức thấp, chân SDA đưa lên mức cao, tao tốc độ baud nạp giá trị ghi SSPADD bắt đầu đếm Sau khoảng thời gian TBRG, chân SCL đưa lên mức cao khoảng thởi gian TBRG Trong khoảng thởi gian TBRG kế tiếp, chân SDA đưa xuống mức thấp SCL mức cao Tiếp theo, bit RSEN (SSPCON2) tự động xóa, BRG không nạp lại, SDA giữ mức thấp, điều kiện start lặp lại hình thành S (SSPSTAT) set Lúc đưa địa slave vào ghi SSPBUF SVTH: Lê Cao Thượng – Trần Thành Nghĩa Trang 29 Đồ Án Tốt Nghiệp GVHD:Phan Duy Anh Hình I.18 : Giản đồ xung điều kiện start lặp lại I²C master mode * Điều kiện Stop Khi muốn kết thúc trình truyền nhận liệu, vi điều khiển tạo xung stop cách set bit PEN (Stop Condition Enable) (SSPCON2), chân SDA đưa xuống mức thấp, tao tốc độ baud nạp giá trị ghi SSPADD bắt đầu đếm Sau truyền nhận xong bit thứ 9, chân SCL giữ mức thấp sau cạnh xuống thứ Sau khoảng thời gian TBRG, chân SCL đưa lên mức cao khoảng thởi gian TBRG Sau chân SDA đưa lên mức cao, bit P (Stop bit ) (SSPSTAT) set, sau khoảng thời gian TBRG bit PEN (SSPCON2) xóa cờ SSPIF set Hình I.19 : Giản đồ xung điều kiện stop I²C master mode * Điều kiện ACK (Acknowledge) Điều kiện ACK Not ACK dùng để bên nhận báo cho bên truyền biết bên nhận nhận bit liệu Nếu muốn gửi xung Not ACK set bit ACKDT (Acknowledge Data bit ) (SSPCON2) gửi xung ACK xóa bit Để gửi điều kiện phải set bit SVTH: Lê Cao Thượng – Trần Thành Nghĩa Trang 30 Đồ Án Tốt Nghiệp GVHD:Phan Duy Anh ACKEN (Acknowledge Sequence Enable) (SSPCON2) Khi bit set, chân SCL đưa xuống mức thấp, xung ACK đưa vào chân SDA, BRG bắt đầu đếm xuống Sau khoảng thời gian TBRG, chân SCL đưa lên mức cao khoảng thởi gian TBRG Sau bit ACKEN xóa, MSSP ngưng hoạt động, chờ lệnh Hình I.20 : Giản đồ xung điều kiện ACK I²C master mode II.10.1 Truyền liệu Xung clock phát từ chân SCL liệu đưa từ chân SDA Byte gửi phải byte địa xác định slave với bit Byte địa đưa vào ghi SSPBUF, cờ BF (Buffer Full Status) tự động set, BRG tự động đếm Khi đó, bit SSPBUF dịch theo cạng xuống xung clock sau điều kiện start Sau cạnh xuống xung clock thứ 8, cờ BF xóa, master ngưng tác động lên chân SDA để chờ tín hiệu ACK từ slave có địa trùng với địa vừa truyền Bit ACK đưa vào bit ACKSTAT (Acknowledge Status) (SSPCON2) Tại cạnh xuống thứ SCL, cờ SSPIF (Synchronous Serial Port Interrupt Flag) (PIR1) set Sau liệu đưa vào ghi SSPBUF để chuẩn bị gửi Quá trình gửi tương tự trình gửi byte địa SVTH: Lê Cao Thượng – Trần Thành Nghĩa Trang 31 Đồ Án Tốt Nghiệp GVHD:Phan Duy Anh Hình I.21 : Giản đồ xung truyền liệu I²C master mode Muốn kết thức trình truyền, sau nhận xung ACK, master gửi điều kiện stop để dừng trình truyền II.10.2 Nhận liệu Trước tiên, phải truyền địa slave với bit Quá trình truyền nói Tiếp theo, ta phải set bit RCEN (SSPCON2) phép nhận BRG bắt đầu đếm Sau slave truyền điều kiện ACK, bắt đầu truyền liệu Master nhận liệu vào ghi dịch SSPSR Sau cạnh xuống thứ – nhận đủ bit liệu, cờ hiệu cho phép nhận RCEN xóa, cờ BF SSPIF set, BRG dừng, SCL đưa mức thấp, MSSP ngưng hoạt động chờ lệnh Lúc liệu ghi SSPSR đưa vào ghi SSPBUF, cờ BF xóa, master gửi xung ACK cách set bit ACKEN Muốn dừng viện nhận liệu, sau nhận byte liệu cuối, master không truyền xung ACK mà truyền xung Not ACK cách set bit ACKDT set bit ACKEN SVTH: Lê Cao Thượng – Trần Thành Nghĩa Trang 32 Đồ Án Tốt Nghiệp GVHD:Phan Duy Anh Hình I.22 : Giản đồ xung nhận liệu I²C master mode SVTH: Lê Cao Thượng – Trần Thành Nghĩa Trang 33 Đồ Án Tốt Nghiệp GVHD:Phan Duy Anh Bit điều khiển ngắt RB0/INT nằm ghi INTCON, ghi chứa bit cho phép ngắt toàn cục GIE (Global Interrupt Enable) INTCON , bit cho phép ngắt ngoại vi PEIE (Peripheral Interrupt Enable) INTCON Bit điều khiển ngắt khác nằm ghi PIE1 PIE2, cờ ngắt nằm ghi PIR1 PIR2 Trong thời điểm có chương trình ngắt thực thi, chương trình ngắt kết thúc lệnh RETFIE (Return from Interrupt) để trở chương trình Khi chương trình ngắt thực thi, bit GIE tự động xóa, địa chương trình cất vào stack đếm chương trình đến địa 0004h Khi lệnh RETFIE thực thi bit GIE tự động set để tiếp tục cho phép ngắt Trước thực thi chương trình ngắt, nội dung số ghi SFR STATUS, PCLATH cần lưu lại nạp lại nội dung sau thực thi xong chương trình ngắt Ta phải làm thực chương trình ngắt, nội dung ghi thay đổi trở vể chương trình chính, chương trình hoạt động không xác Các cờ hiệu dùng để kiểm tra ngắt xảy cờ ngắt phải xóa phần phềm sau thực xong chương trình ngắt cờ SVTH: Lê Cao Thượng – Trần Thành Nghĩa Trang 34 Đồ Án Tốt Nghiệp GVHD:Phan Duy Anh II.11 Ngắt PIC16F877A có 15 nguồn ngắt điều khiển ghi INTCON, ngắt điều khiển bit cho phép cờ ngắt riêng Các cờ ngắt hoạt động bình thường thỏa mãn điều kiện ngắt, không phụ thuộc vào bit cho phép Hình I.23 : Sơ đồ logic tất ngắt PIC16F877A - Ngắt chân INT - Ngắt tràn Timer - Ngắt tràn Timer - Ngắt tràn Timer - Ngắt thay đổi trạng thái chân Port B - Ngắt so sánh điện - Ngắt Port song song - Ngắt USART - Ngắt nhận liệu - Ngắt truyền liệu - Ngắt chuyển đổi A/D - Ngắt hình LCD - Ngắt hoàn tất ghi EEPROM - Ngắt moduleCCS - Ngắt module SSP SVTH: Lê Cao Thượng – Trần Thành Nghĩa Trang 35 Đồ Án Tốt Nghiệp GVHD:Phan Duy Anh Bit điều khiển ngắt RB0/INT nằm ghi INTCON, ghi chứa bit cho phép ngắt toàn cục GIE (Global Interrupt Enable) INTCON , bit cho phép ngắt ngoại vi PEIE (Peripheral Interrupt Enable) INTCON Bit điều khiển ngắt khác nằm ghi PIE1 PIE2, cờ ngắt nằm ghi PIR1 PIR2 Trong thời điểm có chương trình ngắt thực thi, chương trình ngắt kết thúc lệnh RETFIE (Return from Interrupt) để trở chương trình Khi chương trình ngắt thực thi, bit GIE tự động xóa, địa chương trình cất vào stack đếm chương trình đến địa 0004h Khi lệnh RETFIE thực thi bit GIE tự động set để tiếp tục cho phép ngắt Trước thực thi chương trình ngắt, nội dung số ghi SFR STATUS, PCLATH cần lưu lại nạp lại nội dung sau thực thi xong chương trình ngắt Ta phải làm thực chương trình ngắt, nội dung ghi thay đổi trở vể chương trình chính, chương trình hoạt động không xác Bên cạnh ngắt có bit điều khiển cờ ngắt riêng Các cờ ngắt set bình thường thỏa mãn điều kiện ngắt xảy bất chấp trạng thái bit GIE, nhiên hoạt động ngắt phụ thuôc vào bit GIE bit điều khiển khác Bit điều khiển ngắt RB0/INT TMR0 nằm ghi INTCON, ghi chứa bit cho phép ngắt ngoại vi PEIE Bit điều khiển ngắt nằm ghi PIE1 PIE2 Cờ ngắt ngắt nằm ghi PIR1 PIR2 Trong thời điểm có chương trình ngắt thực thi, chương trình ngắt kết thúc lệnh RETFIE Khi chương trình ngắt thực thi, bit GIE tự động xóa, địa lệnh chương trình cất vào nhớ Stack đếm chương trình đến địa 0004h Lệnh RETFIE dùng để thoát khỏi chương trình ngắt quay trở chương trình chính, đồng thời bit GIE set phép ngắt hoạt động trở lại Các cờ hiệu dùng để kiểm tra ngắt xảy phải xóa chương trình trước cho phép ngắt tiếp tục hoạt động trở lại để ta phát thời điểm mà ngắt xảy Đối với ngắt ngoại vi ngắt từ chân INT hay ngắt từ thay đổi trạng thái pin PORTB (PORTB Interrupt on change), việc xác định ngắt xảy cần chu kì lệnh tùy thuộc vào thời đểm xảy ngắt SVTH: Lê Cao Thượng – Trần Thành Nghĩa Trang 36 ... độ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. .. Tổ chức nhớ Có nhớ riêng biệt vi điều khiển PIC1 6F877A gồm: Bộ nhớ liệu, nhớ chương trình , nhớ EEPROM II.4.1 Bộ nhớ chương trình Bộ nhớ chương trình vi điều khiển PIC1 6F877A nhớ flash, dung lượng... 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 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 thông

Ngày đăng: 07/09/2017, 08:49

Hình ảnh liên quan

Hình I. 1: Kiến trúc Harvard và Von Neumann. - Giới thiệu vi điều khiển PIC

nh.

I. 1: Kiến trúc Harvard và Von Neumann Xem tại trang 1 của tài liệu.
Hình I. 2: Sơ đồ khối PIC16F877A - Giới thiệu vi điều khiển PIC

nh.

I. 2: Sơ đồ khối PIC16F877A Xem tại trang 4 của tài liệu.
Hình I.3 : Sơ đồ chân PIC16F877A - Giới thiệu vi điều khiển PIC

nh.

I.3 : Sơ đồ chân PIC16F877A Xem tại trang 5 của tài liệu.
Hình I.4 :Bộ nhớ chương trình PIC16F877A - Giới thiệu vi điều khiển PIC

nh.

I.4 :Bộ nhớ chương trình PIC16F877A Xem tại trang 7 của tài liệu.
Hình I.5 : Sơ đồ tổ chức bộ nhớ dữ liệu PIC16F877A - Giới thiệu vi điều khiển PIC

nh.

I.5 : Sơ đồ tổ chức bộ nhớ dữ liệu PIC16F877A Xem tại trang 8 của tài liệu.
Hình I.6 : Cấu trúc cơ bản của chân port. - Giới thiệu vi điều khiển PIC

nh.

I.6 : Cấu trúc cơ bản của chân port Xem tại trang 10 của tài liệu.
Hình I. 7: Chân dao động OSC1-OSC2 - Giới thiệu vi điều khiển PIC

nh.

I. 7: Chân dao động OSC1-OSC2 Xem tại trang 12 của tài liệu.
Hình I.8 : Reset của PIC16f877a - Giới thiệu vi điều khiển PIC

nh.

I.8 : Reset của PIC16f877a Xem tại trang 12 của tài liệu.
Hình I.9 : Sơ đồ khối Timer0. - Giới thiệu vi điều khiển PIC

nh.

I.9 : Sơ đồ khối Timer0 Xem tại trang 13 của tài liệu.
Hình I.1 0: Sơ đồ khối của Timer1: - Giới thiệu vi điều khiển PIC

nh.

I.1 0: Sơ đồ khối của Timer1: Xem tại trang 14 của tài liệu.
Hình I.11: Sơ đồ khối của Timer2 - Giới thiệu vi điều khiển PIC

nh.

I.11: Sơ đồ khối của Timer2 Xem tại trang 15 của tài liệu.
Hình I.1 2: khối ADC - Giới thiệu vi điều khiển PIC

nh.

I.1 2: khối ADC Xem tại trang 16 của tài liệu.
Hình I.13 : Sơ đồ khối của bộ truyền dữ liệu USART. - Giới thiệu vi điều khiển PIC

nh.

I.13 : Sơ đồ khối của bộ truyền dữ liệu USART Xem tại trang 18 của tài liệu.
Hình I.1 4: Sơ đồ khối của bộ nhận dữ liệu USART. - Giới thiệu vi điều khiển PIC

nh.

I.1 4: Sơ đồ khối của bộ nhận dữ liệu USART Xem tại trang 19 của tài liệu.
Hình I.16 : Sơ đồ khối BRG của I²C master mode. - Giới thiệu vi điều khiển PIC

nh.

I.16 : Sơ đồ khối BRG của I²C master mode Xem tại trang 24 của tài liệu.
Hình I.15 : Sơ đồ khối MSSP (I²C master mode) - Giới thiệu vi điều khiển PIC

nh.

I.15 : Sơ đồ khối MSSP (I²C master mode) Xem tại trang 24 của tài liệu.
Hình I.1 7: Giản đồ xung điều kiện start ở I²C master mode. - Giới thiệu vi điều khiển PIC

nh.

I.1 7: Giản đồ xung điều kiện start ở I²C master mode Xem tại trang 25 của tài liệu.
Hình I.19 : Giản đồ xung điều kiện stop ở I²C master mode. - Giới thiệu vi điều khiển PIC

nh.

I.19 : Giản đồ xung điều kiện stop ở I²C master mode Xem tại trang 26 của tài liệu.
Hình I.18 : Giản đồ xung điều kiện start lặp lại ở I²C master mode. - Giới thiệu vi điều khiển PIC

nh.

I.18 : Giản đồ xung điều kiện start lặp lại ở I²C master mode Xem tại trang 26 của tài liệu.
Hình I.2 0: Giản đồ xung điều kiện ACK ở I²C master mode. - Giới thiệu vi điều khiển PIC

nh.

I.2 0: Giản đồ xung điều kiện ACK ở I²C master mode Xem tại trang 27 của tài liệu.
Hình I.2 1: Giản đồ xung truyền dữ liệu ở I²C master mode. - Giới thiệu vi điều khiển PIC

nh.

I.2 1: Giản đồ xung truyền dữ liệu ở I²C master mode Xem tại trang 28 của tài liệu.
Hình I.2 2: Giản đồ xung nhận dữ liệu ở I²C master mode - Giới thiệu vi điều khiển PIC

nh.

I.2 2: Giản đồ xung nhận dữ liệu ở I²C master mode Xem tại trang 29 của tài liệu.
Hình I.23 : Sơ đồ logic của tất cả các ngắt trong PIC16F877A. - Giới thiệu vi điều khiển PIC

nh.

I.23 : Sơ đồ logic của tất cả các ngắt trong PIC16F877A Xem tại trang 31 của tài liệu.