27

Click here to load reader

tài liệu tham khảo về PIC và một số vấn đề liên quan

Embed Size (px)

DESCRIPTION

tài liệu tham khảo về PIC và một số vấn đề liên quan

Citation preview

Page 1: tài liệu tham khảo về PIC và một số vấn đề liên quan

tài li ệ u tham kh ả o v ề PIC và m ộ t s ố v ấ n đ ề liên quan

gửi bởi viettran » Thứ 2 12/11/12 10:35

2.1 Vi điều khiển PIC 18F4431:2.1.1 Giới thiệu chung về họ vi điều khiển PIC của hãng Microchip:

Hình 2.3: Các họ vi điều khiển PICPIC (Programmable intelligent Controller) do hãng General Instrument đặt tên cho con vi điều khiển đầu tiên của họ: PIC 1650. Hãng Microchip tiếp tục phát triển sản phẩm này. Cho đến nay, các sản phẩm vi điều khiển PIC của Microchip đã có gần 100 loại sản phẩm từ 10Fxxx đến 12Cxxx, 12Fxxx, 16Cxxx, 17Cxx, 16Fxx, 16Fxxx, 16FxxA, 16FxxxA, 16LFxxxA, 18Fxxx, 18LFxxx, 18Fxxxx, 18LFxxxx….Cách phân loại PIC:  Theo chữ cái:- Các họ có chữ C như PIC xxCxxx thuộc nhóm OTP (One Time Programmable) chỉ có thể lập trình vàø nạp cho nó moat lần duy nhất.- Các họ có chữ F hoặc LF (thuộc nhóm Flash) cho phép ghi vàø xóa nhiều lần bằng các mạch điện tử thông thường. Theo hai chữ số đầu tiên:- 8 bit:  PIC10  PIC12  PIC16  PIC18 - 16 bit:  PIC24F  PIC24H  dsPIC30  dsPIC33 Tùy theo những ứng dụng cụ thể mà người dùng có thể chọn ra loại chip phù hợp. Trong đó PIC18F4431 làIC

Page 2: tài liệu tham khảo về PIC và một số vấn đề liên quan

chuyên dùng để điều khiển động cơ theo đề nghị của nhà sản xuất.2.1.2 Tổng quan về vi điều khiển PIC 18F4431:a. Những đặc điểm chung của PIC 18F4431:- Là CPU sử dụng tập lệnh RISC và có tốc độ xử lý cao, công suất thấp nhờ sử dụng công nghệ CMOS FLASH/EEPROM.- Tập lệnh gồm 75 lệnh.- Một chu kỳ lệnh bằng 4 chu kỳ xung clock. Tần số dao động cho phép tới 40Mhz. Cho phép chọn lựa chế độ dao động (nội/ngoại).- 8K x 14 word bộ nhớ FLASH lập trình.- Bộ nhớ SRAM 768 byte, bên cạnh đó bộ nhớ EEPROM lên đến 256 byte.- Trang bị 34 ngắt với 8 cấp độ ngắt.- 5 Port I/O.- Trang bị 3 bộ định thời (Timer): 2 bộ 8 bit, 1 bộ 16 bit.- module Capture/Compare/PWM.- Bộ chuyển đổi ADC 10 bit với 9 kênh, tốc độ 5 – 10 us.- Cổng serial đồng bộ với chế độ SPI (Master) và I2C (Master/Slave) thực hiện bằng phần cứng.- Cổng giao tiếp nối tiếp đồng bộ/bất đồng bộ với 9 bit địa chỉ kiểm tra.- Cổng giao tiếp song song (PSP) 8 bit.- Các chế độ định địa chỉ trực tiếp, gián tiếp và tương đối.- Cho phép đọc/ghi bộ nhớ chuwong trình.- Có chế độ bỏa vệ mã lập trình và chế độ SLEEP để tiết kiệm điện năng.- Tầm điện thế hoạt động rộng từ 2 đến 5.5V. Dòng cấp khoảng 25mA.b. Các module nổi bật của PIC 18F4431:- Module Power Control PWM 14 bit: Có đến 4 kênh Power Control PWM, mỗi kênh gồm 1 cặp PWM output xung đối. Có thể điều chỉnh thời gian dead-band một cách linh hoạt. Có thể cập nhật đồng thời chu kỳ và duty cycle linh hoạt

Page 3: tài liệu tham khảo về PIC và một số vấn đề liên quan

- Module Motion Feedback đọc tín hiệu hồi tiếp: Có 3 kênh capture độc lập bao gồm các chế độ hoạt động linh hoạt cho việc đo đạc độ rộng xung, hỗ trợ Hall Sensor, có thể tạo tín hiệu trigger output cho các module khác. Có khả năng giao tiếp với tín hiệu xung hồi tiếp từ Encoder bao gồm : 2 ngõ vào cho 2 pha A, B và 1 ngõ vào index (xung Z) từ encoder. Bên cạnh đó còn hỗ trợ việc đo đạc vận tốc motor.- Module A/D Converter 10-bit tốc độ cao (200Ksps): Có tới 9 kênh ADC kênh lấy mẫu đồng thời. Lấy mẫu liên tục: 1, 2 hoặc 4 kênh được lựa chọn.- Những tính năng nổi bật trong giao tiếp với ngoại vi: Chịu dòng sink/source cao: 25mA. Có 3 nguồn ngắt ngoài. module Capture/Compare/PWM (CCP) trong đó: Capture 16 bit, độ phân giải tối đa 6.25ns; Compare 16 bit, độ phân giải tối đa 100ns; PWM độ phân giải từ 1 đến 10 bit. Module giao tiếp nối tiếp bất đồng bộ (USART): hỗ trợ giao tiếp RS-485, RS-232 và LIN1.2; tự động kiểm tra tốc độ Baud. Giao tiếp RS-232 sử dụng khối dao động nội (không cần dùng thạnh anh ngoài).

c. Sơ đồ chân PIC 18F4431:

Hình 2.13: Sơ đồ chân dạng DIP PIC18F4431 Tóm tắt chức năng các chân:- PORT A:  Là port I/O. Có tất cả 8 chân, từ RA0 đến RA7. Nội dung của thanh ghi TRISA sẽ qui định chân nào của port A là input hay output. Các chân RA<2:4> còn là các chân input cho Module Motion Feedback. Các chân RA<0:5> có thể được sử dụng là ngõ vào A/D

Page 4: tài liệu tham khảo về PIC và một số vấn đề liên quan

cho Module ADC. Chân RA6, RA7 còn được kết hợp là ngõ vào cho bộ dao động ngoài.- PORT B:  Là port I/O. Có tất cả 8 chân, từ RB0 đến RB7. Có thể được lập trình bởi phần mềm để sử dụng chức năng pull-up cho tất cả các ngõ vào. Việc thay đổi giá trị thanh ghi TRISB sẽ yết định chân nào của port B là Input, chân nào là output.  Bốn chân RB<4:7> có chức năng ngắt khi trạng thái thay đổi (chức năng này không hoạt động khi chân port được quy định là output). Sáu chân RB<0:5> còn được kết hợp sử dụng là các chân output của module Power Control PWM.- PORT C:  Là port I/O. Có tất cả 8 chân, từ RC0 đến RC7. Việc thay đổi giá trị thanh ghi TRISC sẽ quyết định chân nào của port C là Input, chân nào là output.  RC0 còn được dùng làm ngõ ra bộ dao động Timer1 hoặc ngõ vào bộ đếm couter 1. RC1 ,RC2 đều có thể được sử dụng cho module Capture/Compare/PWM  RC3, RC4, RC5 có thể làm chân ngõ vào các ngáêt ngoài INT0, INT1 và INT2  RC6, RC7 có thể được sử dụng làm chân TXD/RXD cho bộ giao tiếp bất đồng bộ hoặc đồng bộ.- PORT D:  Là port I/O. Có tất cả 8 chân, từ RD0 đến RD7. Việc thay đổi giá trị thanh ghi TRISD sẽ quyết định chân nào của port D là Input, chân nào là output. Ba chân RD<4:7> còn được sử dụng là chân phát xung cho module Power Control PWM.- PORT E:  Là port I/O. Có tất cả 4 chân, từ RE0 đến RE3. Việc thay đổi giá trị thanh ghi TRISE sẽ quyết định chân nào của port E là Input, chân nào là output., riêng chân RE3 chỉ có thể là chân Input.  Chân RE3 còn là chân ngõ vào reset (MCLR).

Page 5: tài liệu tham khảo về PIC và một số vấn đề liên quan

- Các chân nguồn : chân 11 và 32 nối nguồn dương Vdd; chân 12 và 31 nối nguồn âm Vss.d. Cấu trúc bộ nhớ của PIC 18F4431:Có 3 phần riêng biệt trong bộ nhớ của PIC18F4431 gồm: Bộ nhớ chương trình(Program memory), bộ nhớ dữ liệu(data RAM) vàø bộ nhớ EEPROM.i) Tổ chức bộ nhớ chương trình:Bộ nhớ chương trình của PIC18F4431 là bộ nhớ flash, dung lượng 16Kbytes và có thể chứa được 8192 lệnh đơn.Vectơ Reset đặt tại địa chỉ 000000h còn Vectơ ngắt thì tại địa chỉ 000008h và 000018h.

Hình 2.4: Sơ đồ bộ nhớ chương trình và ngăn xếp của PIC18F4431ii) Tổ chức bộ nhớ dữ liệu:Bộ nhớ dữ liệu thuộc loại bộ nhớ RAM tĩnh có thể chứa tới 4096 byte dữ liệu. Mỗi thanh ghi trong bộ nhớ được định địa chỉ 12-bit.Bộ nhớ dữ liệu được chia làm 16 bank thanh ghi, mỗi bank gồm 256 byte dữ liệu, 4 bit thấp của thanh ghi Bank Select Register được dùng để lựa chọn bank.Bộ nhớ dữ liệu bao gồm các thanh ghi chức năng đặc biệt – SFR(Special Function Register) và các thanh ghi đa dụng – GPR(General Purpose Register). Các thanh ghi SFR được sử dụng bởi CPU và các bộ nhớ ngoại vi để điều khiển các hoạt động được yêu cầu của thiết bị. Trong khi các thanh ghi GPR được sử dụng để chứa dữ liệu và thực hiện các chức năng theo yêu cầu của người sử dụng.Toàn bộ các thanh ghi đều có thể truy cập trực tiếp hoặc gián tiếp thông qua thanh ghi FSG(File Select Register) và BSR(Bank Select Register)iii) Tổ chức bộ nhớ EEPROM và FLASH:Vùng nhớ dữ liệu EEPROM vàø vùng nhớ chương trình FLASH là vùng nhớ ROM có thể đọc vàø ghi trong khi chương trình hoạt động chỉ với điện thế Vcc=+5V. Việc reset hệ thống cũng như mất điện không làm mất dữ liệu trong vùng nhớ này. Để truy xuất vùng nhớ này, ta phải thông qua các thanh ghi SFR sau: EEDATA, EEADR,

Page 6: tài liệu tham khảo về PIC và một số vấn đề liên quan

EECON1, EECON2.e. Module Power Control PWM:Power Control PWM Module đơn giản là tạo ra nhiều xung đồng bộ có độ rộng thay đổi được (PWM: pulse with modulation). Các ngõ ra PWM được ứng dụng trong điều khiển động cơ và các ứng dụng chuyển đổi công suất. Module này hỗ trợ điều khiển các ứng dụng sau:

- Động cơ không đồng bộ 1 pha và 3 pha- Động cơ kích từ- Động cơ DC không chổi than- Bộ cấp điện liên tục (UPS)- Động cơ DC có chổi thanCác thông số cơ bản của Module Power Control PWM:- Có 8 chân ngõ ra PWM chia làm 4 cặp xung đối, với 4 duty cycle độc lập nhau.- Độ phân giải 14-bit phụ thuộc vào chu kỳ xung PWM.- Có thể thay đổi chu kỳ xung PWM một cách linh hoạt.- Thời gian dead-time có thể lập trình được để chống hiện tượng trùng dẫn trong ứng dụng- Có 2 chế độ cho ngõ ra PWM là Edge-aligned và Center-aligned- Có chế độ phát xung đơn- Hỗ trợ ngắt cho update xung đối trong chế độ Center-alignedSơ đồ khối của module Power Control PWM:

Hình 2.5: Sơ đồ khối Module Power Control PWMTrong Module có 4 bộ tạo duty cyle riêng biệt, chúng được đánh số từ 0 đến 3. Module có 8 ngõ ra được đánh số từ 0 đến 8. Trong chế độ xung đối các pin chẵn – pin lẽ tạo thành 1 cặp. Ví dụ: PW0 sẽ xung đối với PWM1; PWM2 sẽ xung đối với PWM3… Bộ Dead-time sẽ chèn một khoảng thời gian “off” giữa lúc xung PWM của pin này đang ở cạnh xuống còn xung PWM xung đối tương ứng đang ở cạnh lên, điều này sẽ ngăn chặn hiện tượng trùng dẫn trong điều khiển đóng mở các khóa công suất.i) Các thanh ghi điều khiển:

Page 7: tài liệu tham khảo về PIC và một số vấn đề liên quan

Hoạt động của Module PWM được điều khiển thông qua 22 thanh ghi khác nhau. 8 trong số đó được dùng để điều chỉnh các thông số của module:- PWM timer control register 0 ( PTCON0) - PWM timer control register 1 ( PTCON1) - PWM control register 0 ( PWCON0) - PWM control register 1 ( PWCON1) - Dead time control register (DTCON) - Output overide register(OVDCOND) - Output state register (OVDCONS) - Fault configrration register (FLTCONFIG)7 cặp thanh ghi (14 thanh ghi) còn lại dùng để hiệu chỉnh các thông số đặc biệt:- PWM time base registers (PTMRH and PTMRL) - PWM periode registers (PTPERH and PTPERL) - PWM special event compare register ( SEVTCMPH and SEVTCMPL) - PWM duty cycle #0 register ( PDC0H and PDC0L) - PWM duty cycle #1 register ( PDC1H and PDC1L) - PWM duty cycle #2 register ( PDC2H and PDC2L) - PWM duty cycle #3 register ( PDC3H and PDC3L)ii) Các module chức năng:PWM module hỗ trợ nhiều chế độ hoạt động phù hợp cho yêu cầu điều khiển động cơ và các ứng dụng công suất. PWM module được tổng hợp từ các khối chức năng sau:- PWM Time Base - PWM Time Base Interrrupts - PWM Period - PWM Duty Cycle - Dead Time Generators - PWM Output Overrides - PWM Fault Inputs - PWM Special Event Trigger iii) PWM Time Base:PWM time baseđđược cung cấp 12 bit timer với chức năng prescaler and postcaler. Sơ đồ khối đơn giản của PWM time base được trình bày trong hình 3.7. PWM time base được hiệu chỉnh thông qua 2 thanh ghi PTCON0 và

Page 8: tài liệu tham khảo về PIC và một số vấn đề liên quan

PTCON1. Time base được enabled hay disabled bằng việc set hay clear bit PTEN trong thanh ghi PTCON1. Chú ý, cặp thanh ghi PTMR ( PTMRH:PTMRL) sẽ không bị clear khi bit PTEN bị clear bằng phần mềm.PWM Time Base có 4 chế độ hoạt động sau:- Free running mode => edge aligned PWM - Single shot mode => center aligned PWM - Continous Up/Down count mode => support electronically commtated motors - Continous Up/Down count mode with interrupts for double updates- chế độ trên được lựa chọn thông qua bit PTMOD1:PTMOD0 trong thanh ghi PTCON0.  PWM Time Base Presclaler :Có 4 lựa chọn Presclale(chia tần) cho ngõ vào xung Clock đưa vào bộ Timebase là: 1:1, 1:4, 1:16 hoặc 1:64. Việc lựa chọn này được quy định bởi các bit PTCKPS0 và PTCKPS1 trong thanh ghi PTCON0. Các bit này sẽ được xóa khi xảy ra một trong các sự kiện sau: - Có sự kiện ghi vào thanh ghi PTMR.- Có sự kiên ghi vào các thanh ghi PTCON (PTCON0 hoặc PTCON1).- Có sự kiện Reset thiết bị.iv) Chu kì xung PWM:PWM periode được định nghĩa bởi cặp thanh ghi PTPER ( PTPERH vàPTPERL). PWM period có độ phân giải 12 bit. PTPER là cặp thanh ghi double buffered sử dụng để set chế độ đếm của PWM time base.Nội dung của PTPER buffer được nạp vào thanh ghi PTPER ở các thời điểm sau:Free running mode vàSingle shot modes: thanh ghi PTMR được đưa về zero sau khi trùng giá trị với thanh ghi PTPER. Up/down counting mode: khi PTMR bằng zero. Giá trị được lưu trong PTPER buffer tự động nạp vào thanh ghi PTPER khi PWM time base được disabled ( PTEN=0).Chu kỳ xung PWM có thể được tính theo các công thức sau:

Page 9: tài liệu tham khảo về PIC và một số vấn đề liên quan

Hình 2.6: các công thức tinh chu kì và tần số PWMv) PWM duty cycle:PWM duty cycle đđược xác định bởi các thanh ghi PDCx ( PDCxH và PDCxL). Có tổng cộng 4 cặp thanh ghi PWM duty cycle cho 4 cặp xung PWM. - PDC0 (PDC0L và PDC0H) - PDC1 (PDC1L và PDC1H) - PDC2 (PDC2L và PDC2H) - PDC3 (PDC3L và PDC3H) Giátrị trong mỗi thanh ghi xãc định khoảng thời gian mà ngõ ra PWM đó tích cực. Trong chế độ Edge-aligned, PWM period bắt đầu tại Q1 và kết thúc khi thanh ghi duty cycle trùng với giá trị chứa trong cặp thanh ghi PTMR.Bộ đệm PWM duty cycle (PWM Duty Cycle Register Buffer):- thanh ghi PWM duty cycle đều được double buffered. Mỗi duty cycle block, đều có thanh ghi đóng vai trò bộ đệm(buffer) mà có thể được truy xuất bởi người dùng. Thanh ghi duty cycle buffer thứ hai sẽ giữ giá trị so sánh với PWM periode hiện tại. - Trong chế độ edge-aligned PWM output, giá trị duty cycle mới sẽ được update mỗi khi giá trị hai thanh ghi PTMR và PTPER trùng nhau. Sau đó PTMR sẽ được reset như trong hình 3.13. Nội dung của duty cycle buffer sẽ tự động cập nhật vào thanh ghi duty cycle khi PWM time base bị disable.vi) Bộ tạo thời gian dead time:Trong các bộ biến tần , khi các xung PWM ở chế độ đối nghịch để điều khiển các khĩa cơng suất phía cao và phía thấp trong cùng 1 nhánh, phải chèn 1 khoản thời gian dead time. Khoản thời gian dead time đĩ làm cho ngõ ra PWM xung đối đều ở trạng thái khơng tác động trong 1 khoảng thời gian ngắn => tránh hiện tượng trùng dẫn khi khĩa này đang ON cịn khĩa kia đang OFF. 

Page 10: tài liệu tham khảo về PIC và một số vấn đề liên quan

Mỗi cặp xung PWM đối nghịch đều cĩ một counter 6 bit đếm xuống, để chèn khoản dead time vào xung PWM. Mỗi bộ tạo dead time cĩ bộ phát hiện cạnh lên và cạnh xuống được kết nối vơi bộ so sánh duty cycle. Dead time được nạp vào timer khi phát hiện PWM ở cạnh lên hay cạnh xuống. Tùy vào xung PWM đang ở cạnh lên hay cạnh xuống, mà 1 khoản thời gian chuyển tiếp được làm trễ cho đến khi timer đếm về zero.

f. Motion Feedback Module:Motion Feedback Module là một ứng dụng chuyên biệt dành cho việc đọc tín hiệu chuyển động hồi tiếp. Cùng với module Power Control PWM, nó cung cấp rất nhiều giải pháp điều khiển dành cho các loại động cơ điện. Module này bao gồm 2 chế độ chức năng:- Chức năng Input Capture(IC)- Chức năng Quadrature Encoder Interface(QEI): xử lý xung hồi tiếp từ Encoder.Trong giới hạn ứng dụng của luận văn này, nên ở đây chỉ giới thiệu về chức năng thứ hai QEI.i) Khái quát về chức năng QEI của Module Motion Feedback:Chức năng QEI có khả năng giải mã được những thông tin vị trí, tốc độ cũng như sự di chuyển của động cơ từ Encoder hồi tiếp về. Cụ thể QEI gồm có:- ngõ vào QEI trong đó 2 ngõ vào pha A, B (QEA và QEB) và 1 ngõ vào Index.- Có các chức năng ngắt báo đổi chiều quay động cơ, ngắt của bộ đếm vị trí và ngắt điều khiển tốc độ- Bộ đếm xác định vị trí 16 bit.- Có 2 chế độ dò vị trí: chế độ chuẩn và chế độ chính xác cao.- chế độ update vị trí (x2 và x4)- Bộ đo tốc độ với Postscaler khả trình dành cho các ứng dụng đo tốc độ cao.Tóm lại bộ QEI gồm 3 thành phần chính: khối logic điều khiển QEI, bộ đếm vị trí và bộ postscaler dành cho việc đo tốc độ động cơ.

Page 11: tài liệu tham khảo về PIC và một số vấn đề liên quan

Khối logic điều khiển QEI sẽ kiểm tra có cạnh lên ở các chân ngõ vào pha QEA, QEB và phát ra tín hiệu để tăng bộ đếm vị trí lên. Khối còn có thể phát hiện tín hiệu ngõ vào Index (INDX), phát ra tín hiệu báo chiều quay và các tín hiệu đo tốc độ.Bộ đếm vị trí đĩng vai trị như là một bộ xác định quãng đường chuyển động. Các tín hiệu cạnh xung từ ngõ vào QEA và QEB sẽ được tích lũy tạo nên tín hiệu xung clock và được đưa vào thanh ghi đếm POSCNT (Position Counter Register). Thanh ghi POSCNT se tăng giá trị khi có xung cạnh từ ngõ vào QEA hoặc từ cả 2 ngõ vào QEA, QEB tùy thuộc vào việc chọn chế độ hoạt động. Giá trị thanh ghi sẽ được reset khi đạt đến giá trị của thanh ghi MAXCNT hoặc khi có xuất hiện một xung Index ở ngõ vào. Nếu được cho phép ngắt thì một sự kiện ngắt sẽ xảy ra khi POSCNT được reset.Bộ Postscaler tốc độ có chức năng là giảm tần số lấy mẫu xung tốc độ, được sử dụng để tăng khả năng của bộ đếm tốc độ. Bản chất là nó sẽ chia giảm số lượng xung mẫu đầu vào để cho một xung ở đầu ra.

Hình 2.7: Sơ đồ khối module chức năng QEI

ii) Cấu hình cho chức năng QEI:Module QEI sử dụng chung các chân ngõ vào với module Input Capture(IC) và các chân này chỉ phục vụ cho 1 chức năng ở cùng thời điểm. Chú ý là khi cả 2 chức năng IC và QEI đều được enabled thì chức năng QEI sẽ được ưu tiên hơn còn chức năng IC sẽ tự động disabled. Hoạt động của QEI được điều khiển bởi thanh ghi điều khiển QEICON:

Hình 2.8: Thanh ghi điều khiển QEICONBit 7: /VELM: bit chọn chế độ đo tốc độ1 = không sử dụng chế độ đo tốc độ0 = cho phép sử dụng chế độ đo tốc độBit 6: ERROR: bit báo lỗi QEI1 = báo bộ đếm bị tràn

Page 12: tài liệu tham khảo về PIC và một số vấn đề liên quan

0 = không trànBit 5: UP/DOWN: bit xác định chiều quay1 = quay tới0 = quay luiBit 4:2: QEIM2:QEIM0: nhóm bit chọn chế độ QEI 111 = Không sử dụng110 = Cho phép chạy QEI ở chế độ nhân 4; POSCNT được reset khi POSCNT = MAXCNT101 = Cho phép chạy QEI ở chế độ nhân 4; POSCNT được reset khi có xung INDX ở ngõ vào.100 = Không sử dụng010 = Cho phép chạy QEI ở chế độ nhân 2; POSCNT được reset khi POSCNT = MAXCNT001 = Cho phép chạy QEI ở chế độ nhân 2; POSCNT được reset khi có xung INDX ở ngõ vào.000 = Tắt QEIiii) Các chế độ QEI:Việc xác định vị trí động cơ phụ thuộc vào hoạt động đếm của thanh ghi POSCNT. Có 2 chế độ update QEI để xác định vị trí của động cơ là : QEI x2 và QEI x4.- Chế độ Update QEIx2 : (QEIM = 001;010)Ở chế độ này, bộ kiểm tra logic QEI chỉ xét mỗi cạnh của ngõ vào QEA thôi. Cứ mỗi cạnh lên và cạnh xuống của tín hiệu xung chân QEA sẽ làm tăng giá trị bộ đếm vị trí.- Chế độ Update QEIx4: (QEIM = 101;110)Ở chế độ này độ phân giải xác định vị trí sẽ tốt hơn vì bộ đếm vị trí sẽ tăng/giảm giá trị khi có cạnh lên và cạnh xuống của tín hiệu xung ở cả 2 chân QEA và QEB.iv) Ngắt QEI:Sự kiện ngắt QEI xảy ra và cờ ngăt IC2QEIF được set lên 1 dựa trên những tình huống sau: Giá trị POSCNT đạt giá trị đặt trong thanh ghi MAXCNT (QEIM=101 hoặc 110)Giá trị POSCNT có sự chuyển từ FFFFh thành 0000h (QEIM=010 hoặc 110)Xuất hiện một xung Index ở chân ngõ vào INDX.v) Thời gian lấy mẫu QEIChu kỳ tối thiểu cho phép của các xung ngõ vào QEI (QEA

Page 13: tài liệu tham khảo về PIC và một số vấn đề liên quan

và QEB) là 16 lần chu kỳ lệnh.Tần số đếm của bộ đếm vị trí, Fpos, phụ thuộc vào tốc độ quay của motor RPM (vòng/phút), hệ số đếm D và chế độ update QEI:

g. Ngắt:Pic 18f4431 có nhiều nguồn ngắt và một đặc điểm ưu tiên ngắt cho phép mỗi nguồn ngắt được quy định mức ưu tiên cao hoặc thấp. Vecto ưu tiên ngắt cao tại 000008h và vecto ưu tiên ngắt thấp tại 0000018h. Biến cố ưu tiên ngắt cao sẽ ngắt bất cứ ưu tiên ngắt thấp nào đó đang trong quá trình thực hiện.Có 13 thanh ghi được sử dụng để điều khiển chế độ ngắt. Những thanh ghi đó là:- RCON- INTCON- INTCON2- INTCON3- PIR1, PIR2, PIR3- PIE1, PIE2, PIE3- IPR1,IPR2,IPR3

Nhìn chung , mỗi ngắt có 3 bit để điều khiển.3 bit đó là:- Bit cờ ngắt để xác định biến cố ngắt xảy ra.- Bit enable cho phép chạy chương trình để chia nhanh vecto địa chỉa ngắt khi mà cờ nhớ được bật lên 1.- Bit ưu tiên để chọn mức ưu tiên cao hoặc ưu tiên thấp ( hầu hết ngắt đều có bit ưu tiên).

Hình 2.8: Sơ đồ khối bộ Interrupt Thanh ghi INTCON:Thanh ghi INTCON có thể đọc hoặc ghi với những giá trị bit cho phép, bit ưu tiên và bit ngắt

Hình 2.10: Thanh ghi INTCON

Hình 2.11: Thanh ghi INTCON2

Page 14: tài liệu tham khảo về PIC và một số vấn đề liên quan

Hình 2.12: Thanh ghi INTCON3

Thanh ghi PIR:Thanh ghi PIR chưa các bit cờ ngắt riêng cho mỗi ngắt ngoại vi. Vì số lượng ngắt ngoại vi, có 3 thanh ghi để điều khiển ngắt ngoài vi.

Hình 2.13: Thanh ghi PIR1

Hình 2.14: Thanh ghi PIR2

Hinhg 2.15: Thanh ghi PIR3 Thanh ghi PIE:Thanh ghi PIE chứa bit cho phép riêng mỗi ngắt ngoại vi. Do số ngắt ngoại vi, có 3 thanh ghi cho phép việc ngắt ngoại vi. Khi IPEN = 0, bit PEIE phải được bật đẻ cho phép bất cứ ngắt ngoại vi nào.

Hình 2.16: Thanh ghi PIE1

Hình 2.17: Thanh ghi PIE2

Hình 2.18: Thanh ghi PIE3

Thanh ghi IPR:Thanh ghi IPR chưa bit ưu tiên cho mỗi ngắt ngoại vi. Có 3 thanh ghi ưu tiên ngắt ngoại vi. Sử dụng bit ưu tiên đòi hỏi bi IPEN phải được bật.

Hình 2.19: Thanh ghi IPR1

Hình 2.20: Thanh ghi IPR2

Hình 2.21: Thanh ghi IPR3

Thanh ghi RCON:

Page 15: tài liệu tham khảo về PIC và một số vấn đề liên quan

Thanh ghi RCON chứ bit để quyết định những yếu tố của reset hoặc là khởi động từ chế độ quản lý nguồn. Thanh ghi cũng chưa bit cho phép ngắt ưu tiên IPEN.

Hình 2.22: Thanh ghi RCON Các chân ngắtNgắt ngoài trên các chân INT0, INT1, INT2 ở cạnh lên hoặc cạnh xuống. nếu các bit INTEDGx trong thanh ghi INTCON2 bằng 1, ngắt sẽ phát hiện ở cạnh lên. Nếu bit đó ở mức 0 thì ngắt khi có cạnh xuống.Khi có 1 xung xuất hiện ở chân INTx, cờ ngắt sẽ được lên mức 1, Việc ngắt này có thể cấm bằng cách cho bit enable tương ứng xuống mức 0, INTxIE. Trước khi được cho phép lại, cờ báo ngắt, INTxIF phải được xóa bằng phần mềm trong chương trình ngắtMột ngắt ngoài có thể khởi động vi xử lý từ chế độ nghỉ nếu bit INTxIE được xác lập ưu tiên trong các chế độ đó. Nếu bit cho phép ngắt toàn cục, GIE, được bật lên, vi xử lý sẽ chia các vecto ngắt khởi động.Ưu tiên ngắt cho ngắt ngoài 1 và 2 đượ xác định bởi giá trị chưa trong bit INT1IP (INTCON3<6>) và INT2IP (INTCON3<7>). Không có bit ưu tiên nào với ngắt ngoài 0, nó luôn được ưu tiên ở mức cao. Ngắt timer 0:Trong chế đọ 8 bit( mặc định). việc trang timer 0 sẽ đưa bit TMR0IF lên 1. Trong chế độ 16 bit, việc trang trong 2 thanh ghi TMR0H:TMR0L đưa bit TMR0IF lên 1. Việc ngắt có thể được cho phép hoặc cấm bằng việc bật hoặc xóa bitcho phép TMR0IE (INTCON<5>). Ngắt ưu tiên cho timer 0 được quyết định bởi giá trị trong TMR0IP (INTCON2<2>) Ngắt thay đổi portB:Một ngõ vào thay đổi trên portB<7:4> sẽ đưa bit RBIF(INTCON<0>) lên 1. Ngắt có thể được cho phép hoặc cấm bằng các bật hoặc xóa bit cho phép RBIE(INTCON<3>). Ưu tiên ngắt cho port B được quyết định bởi giá trị chưa trong bit ưu tiên ngắt RBIP(INTCON2<0>).

Page 16: tài liệu tham khảo về PIC và một số vấn đề liên quan

h. Các bộ định thời : Timer 0:Module timer 0 có những đặc điểm sau: - Có thể lựa chọn phần bộ đếm 8 bit hoặc 16 bit.- Có thể đọc hoặc ghi- Hệ số prescaler dùng cho bộ đếm 8bit- Nguồn clock có thể chọn bên trong hoặc bên ngoài- Ngắt tràn 8 bit (FFh-00h) và 16 bit (FFFFh-0000h)- Chọn cạnh cho nguồn clock ngoài

Hình 2.23: Thanh ghi T0CONBit 7 TMR0ON: Timer0 bit điều khiển on/off 1 = Enables Timer0 0 = Stops Timer0 Bit 6 T016BIT: Timer0 16-bit Control bit 1 = Timer0 được cấu hình như an 8-bit timer/counter 0 = Timer0 được cấu hình như a 16-bit timer/counter Bit 5 T0CS: Timer0 bit chọn nguồn clock cho timer 1 = Transition on T0CKI pin 0 = Internal instruction cycle clock (CLKO) Bit 4 T0SE: Timer0 Source Edge Select bit 1 = Increment on high-to-low transition on T0CKI pin 0 = Increment on low-to-high transition on T0CKI pin Bit 3 PSA: Timer0 Prescaler Assignment bit 1 = Timer0 prescaler is NOT assigned. Timer0 clock input bypasses prescaler. 0 = Timer0 prescaler is assigned. Timer0 clock input comes from prescaler output. Bit 2-0 T0PS2:T0PS0: Timer0 Prescaler Select bits 111 =1:256 prescale value 110 =1:128 prescale value 101 =1:64 prescale value 100 =1:32 prescale value 011 =1:16 prescale value 010 =1:8 prescale value 001 =1:4 prescale value 000 =1:2 prescale valueChế độ 8 bit:

Page 17: tài liệu tham khảo về PIC và một số vấn đề liên quan

Hoạt động ở chế độ này khi bit T0CON<6> =1.và cờ ngắt sẽ bật khi timer tràn từ ff->00h.Chế độ 16 bit:Hoạt động ở chế độ này khi bit T0CON<6>=0 và cờ ngắt sẽ bật khi timer tràn từ ffffh->0000h.Ở chế độ này dùng hai cặp thanh ghi là TMR0H và TMR0L nội dung của timer sẽ được cập nhật thông qua hai cặp thanh ghi này. Timer 1:Có các chức năng sau: - Timer/counter 16 bit - Có thể đọc hoặc xoá được - Lựa chọn nguốn xung clock bên ngoài hoặc bên trong - Ngắt tràn từ FFFFh->0000H - Thanh ghi điêu khiển là T1CON

Hình 2.24: Thanh ghi T1CONBit 7 RD16: 16-bit bit cho cheùp write/read 1 = Enables register read/write of TImer1 in one 16-bit operation 0 = Enables register read/write of Timer1 in two 8-bit operations Bit 6 T1RUN: Timer1 System Clock Status bit 1 = System clock is derived from Timer1 oscillator 0 = System clock is derived from another source Bit 5-4 T1CKPS1:T1CKPS0: Timer1 Input Clock Prescale Select bits 11 =1:8 Prescale value 10 =1:4 Prescale value 01 =1:2 Prescale value 00 =1:1 Prescale value Bit 3 T1OSCEN: Timer1 bit cho pheùp Oscillator 1 = Timer1 oscillator is enabled 0 = Timer1 oscillator is shut-off Bit 2 T1SYNC: Timer1 External Clock Input Synchronization Select bit When TMR1CS = 1 (External Clock): 1 = Do not synchronize external clock input 0 = Synchronize external clock input 

Page 18: tài liệu tham khảo về PIC và một số vấn đề liên quan

Bit 1 TMR1CS: Timer1 Clock Source Select bit1 = External clock from pin RC0/T1OSO/T1CKI (on the rising edge) 0 = Internal clock (FOSC/4) Bit 0 TMR1ON: Timer1 On bit 1 = Enables Timer1 0 = Stops Timer1 Timer 2:- Hoạt động ở chế độ 8 bit- Counter có thể đọc hoặc ghi- Phần mềm có thể lập trình bằng prescale- Phần mềm có thể lập trình bằng postscale

Hình 2.25: Thanh ghi T2CONBit 7 Unimplemented: Read as ‘0’ Bit 6-3 TOUTPS3:TOUTPS0: Timer2 Output Postscale Select bits 0000 = 1:1 Postscale 0001 =1:2 Postscale 1111 =1:16 Postscale Bit 2 TMR2ON: Timer2 On bit 1 = Timer2 is on 0 = Timer2 is off Bit 1-0 T2CKPS1:T2CKPS0: Timer2 Clock Prescale Select bits 00 = Prescaler is 1 01 = Prescaler is 4 1x = Prescaler is 16 Ngắt timer2: giá trị của TMP2 sẽ được so sánh với PR2 khi giá trị của hai thanh ghi bằng nhau cờ ngắt TMR2IF sẽ bật lên cho đến khi được xoá bằng phần mềm

i. Module I2C:Là công cụ đầy đủ cho chế độ clave,và cung cấp ngắt trên hai bit START và STOP trong phần cứng để dễ dàng thực thi trên chế độ master. Hai chân được sử dụng để chuyển dữ liệu:SDI và SDA pin.Và người dùng phải câu hình hai chân này là output

Page 19: tài liệu tham khảo về PIC và một số vấn đề liên quan

hay input thông qua hai thanh ghi TRISC<4,5> và TRISD<2.3>. Khi sử dụng i2c để giao tiếp thì hai chân này phải được nối lên 5v với điên trở kéo lên,và giá tri điện trở này phụ thuộc vào tốc độ boud của pic. Chế độ clave: Trong chế độ này hai chân SCL SDA phải được cấu hình như là ngõ vào (TRISC<4.5> hoặc TRISD<2.3>được set).khi địa chỉ khớp hoặc dữ liệu chuyển sau khi address match được nhận,tự động phần cứng sẽ phát xung ACK và load về giá trị trong thanh ghi SSPBUF . Có hai điêu kiện là nguyên nhân module SSP không phát ACK xung: - Buffer full bit BF được set sau khi sự chuyển được nhận - Bit báo tràn SSPOV (SSPCON<6>) được set sau khi sự chuyển được nhận Trong trường hợp này ,thanh ghi SSPSR giá trị không load vào SSPBUF nhưng bit SSPIF được set Trình tự hoạt động này cho 10 bit_address: 1. Nhận byte cao của địa chỉ(bits SSPIF,BF,UA được set 2. update thanh ghi SSPADD với byte thứ hai của address(slow)_bit UA clear 3. Đọc thanh ghi SSPBUF và clear cờ SSPIF 4. Nhân byte thứ hai của địa chỉ(slow) SSPIF,BF UA được set 5. Update thanh ghi SSPADD với byte cao của ADDRESS 6. Đọc giá trị thanh ghi SSPBUF xoa bit BF và xoá SSPIF 7. Nhận lai điều kiện start 8. Nhận byte thứ 1 (high) của address SSPIF,BF được set 9. Đọc thanh ghi SSPBUF clear bit SSPIF,BF. Chế độ master: Vận hành chế độ này sử dụng ngắt khi phát hiên điêu kiện trên hai bit start và stop và trong chế độ này hai chân SCL SDA được cấu hình như ngõ output 

Hình 2.26: Thanh ghi SSPSTATBit7: SMP bit này phải được xoá trong chế độ i2c Bit6: CKE bit này cũng phải được xoá trong chế độ i2c

Page 20: tài liệu tham khảo về PIC và một số vấn đề liên quan

Bit5: D/A data/address bit chỉ vận hành ở chế độ i2c 1 = chính xác rằng byte cuối cùng được nhận là hoặc chuyển là data 0 = chính xác rằng byte cuối cùng được nhận là hoặc chuyển là address Bit4: P stop bit chỉ vận hành ở chế độ i2c, bit này được xoá khi module ssp được disable hoặc khi bit start được nhận thấy.Và SSPEN được xoá 1 = bit stop được phát hiện 0 = bit stop không được nhìn thấy Bit3: S start bit chỉ vận hành trong chế độ i2c 1 = bit start được nhận ra 0 = bit start không được nhận ra Bit 2: R/W bit thông tin về read và write(chỉ vận hành trong chế độ i2c) 1 = read 0 = write Bit 1: UA bit update địa chỉ 1 = chính sác rằng người dùng cần update address trong thanh ghi SSPADD 0 = address không cần update Bit 0: BF trạng thái buffer Trong chế độ nhận: 1 = nhận hoàng thành SSPBUF đầy 0 = nhận không hoàn thành SSPBUF chưa đầy Trong chế độ chuyển 1 = đang chuyển SSPBUF đầy 0 = chuyển đã hoàn thành,SSPBUF trống 

Hình 2.27: Thanh ghi SSPCONBit 7:WCOL 1 = thanh ghi SSPBUF được viết 0 = không có va chạm Bit 6: SSPOV bit nhận báo tràn 1 = 1 byte được nhận trong khi vẫn giử data trước,trong trường hợp tràn data in sspsr sẽ bị mất 0 = không bị tràn Bit 5: SSPEN bit cho phép truyền đồng bộ 

Page 21: tài liệu tham khảo về PIC và một số vấn đề liên quan

1 = cho phép port nối tiếp,cấu hình chân SDA SCL như port nối tiếp 0 = diable port nối tiếp Bit 3-0:bit chọn chế độ truyền port nối tiếp đồng bộ 0000= SPI master mode,Fosc/4 0001= SPI master mode,Fosc/160010= SPI master mode,Fosc/64 0011= SPI master mode,clock=TMR2 output/2 0100= SPI sclave mode,clock=SCK pin,SS pin control enable 0101= SPI sclave mode,clock=SCK pic,SS pin control disable 0110= I2C sclave mode 7-bit address 0111=I2C sclave mode 10-bit address 1011=i2c firmware controlled master mode 1110=i2c sclave mode 7 bit address với start stop enabled bit 1111=i2c sclave mode 10 bit address với start stop enabled bit

tài liệu tham khảo:

PIC16F877A DATASHEET http://WWW.MICROCHIP.COMMIDRANGE PICmicro FAMILY http://WWW.MICROCHIP.COM

CAÙC TRANG WEBhttp://WWW.MICROCHIP.COMhttp://WWW.DIENDANDIENTU.COMhttp://WWW.PICVIETNAM.NETVAØ CAÙC TRANG WEB KHAÙC