(123doc) - Tim-Hieu-Ve-Vi-Dieu-Khien-Pic-18f4520-Va-Hoat-Dong-Timer-Cua-No

You might also like

Download as pdf or txt
Download as pdf or txt
You are on page 1of 37

Đại học Công Nghiệp Hà Nội

Khoa điện tử


***o0o***

BÁO CÁO THỰC TẬP

Đề tài : Tìm hiểu về vi điều khiển pic 18F4520 và hoạt động


timer của nó

Giáo viên hướng dẫn : Phạm Văn Chiến


Sinh viên thực hiện : Phạm Danh Trường

Hà nội ngày 15-12-2010


MỤC LỤC
CHƯƠNG I : TỔNG QUAN VỀ VI ĐIỀU KHIỂN PIC........................................................3
1.1 PIC là gì........................................................................................................................3
1.2 TẠI SAO LÀ PIC MÀ KHÔNG LÀ CÁC HỌ VI ĐIỀU KHIỂN KHÁC??.............3
1.3 KIẾN TRÚC PIC.........................................................................................................4
1.4 RISC và CISC..............................................................................................................5
1.5 PIPELINING................................................................................................................5
1.6 CÁC DÒNG PIC VÀ CÁCH LỰA CHỌN VI ĐIỀU KHIỂN PIC...........................7
1.7 NGÔN NGỮ LẬP TRÌNH CHO PIC.........................................................................7
1.8 MẠCH NẠP PIC.........................................................................................................8
CHƯƠNG II. TỔNG QUAN VỀ VI ĐIỀU KHIỂN PIC 18f4520.......................................10
1.Sơ đồ chân vi điều khiển pic18f4520.............................................................................12
2.Các thông số về vi điều khiển pic18f4520.....................................................................12
3.Sơ đồ khối của vi điều khiển pic18f4520.......................................................................13
CHƯƠNG III : TÌM HIỂU VỀ HOẠT ĐỘNG TIMER0.....................................................16
.........................................................................................................................................16
1.TIMER0 MODULE........................................................................................................16
1.1 Hoạt động Timer0 ..............................................................................................17
1.2 Các Timer0 Đọc và Ghi trong 16-Bit Mode.......................................................18
1.3 Prescaler ("bộ chia"or " bộ đếm gộp trước" ).....................................................19
1.4 Chuyển mạch prescaler.......................................................................................19
1.5 Ngắt Timer0........................................................................................................19
2.TIMER1 MODULE........................................................................................................20
2.1 Hoạt động timer1 ..............................................................................................21
2.2 Đọc / ghi 16-bit timer1......................................................................................22
2.3 Tạo dao động Timer1.........................................................................................23
2.4 Ngắt Timer1.......................................................................................................26
3.TIMER2 MODULE........................................................................................................26
3.1 Hoạt động Timer2.............................................................................................27
3.2 Ngắt Timer2.......................................................................................................28
3.3 Đầu ra Timer2....................................................................................................28
4.TIMER3 MODULE........................................................................................................29
4.1 Hoạt động Timer3..............................................................................................30
4.2 Đọc / ghi Timer3 16-Bit mode.........................................................................31
4.3 Sử dụng bộ tạo dao động timer1 là nguồn đồng hồ Timer3.............................32
4.4 Ngắt Timer3 .....................................................................................................32
4.5 Dùng Timer3 đặc biệt kích hoạt CCP...............................................................32
CHƯƠNG IV : TÌM HIỂU VỀ BỘ SO SÁNH ĐIỆN ÁP..................................................33
1.Bộ so sánh tham chiếu điện áp........................................................................................33
2.Cấu hình bộ so sánh tham chiếu Điện áp.......................................................................34
3.Điện áp tham chiếu chính xác / lỗi.................................................................................36
4.Thời gian hoạt động ngủ.................................................................................................36
5.Tác dụng ảnh hưởng của một Reset...............................................................................36
6. Connection Considerations( Xem xét kết nối ).............................................................36

Trang | 2
CHƯƠNG I : TỔNG QUAN VỀ VI ĐIỀU KHIỂN PIC

1.1 PIC là gì

PIC là viết tắt của “Programable Intelligent Computer”, có thể tạm dịch là “máy tính
thông minh khả trình” do hãng Genenral Instrument đặt tên cho vi điều khiển đầu tiên của
họ.
PIC1650 được thiết kế để dùng làm các thiết bị ngoại vi cho vi điều khiển CP1600. Vi
điều khiển này sau đó được nghiên cứu phát triển thêm và từ đó hình thành nên dòng vi
điều khiển PIC ngày nay.

1.2 TẠI SAO LÀ PIC MÀ KHÔNG LÀ CÁC HỌ VI ĐIỀU KHIỂN KHÁC??

Hiện nay trên thị trường có rất nhiều họ vi điều khiển như 8051, Motorola 68HC,
AVR, ARM,... Ngoài họ 8051 được hướng dẫn một cách căn bản ở môi trường đại học,
bản thân người viết đã chọn họ vi điều khiển PIC để mở rộng vốn kiến thức và phát triển
các ứng dụng trên công cụ này vì các nguyên nhân sau:

 Họ vi điều khiển này có thể tìm mua dễ dàng tại thị trường Việt Nam.
 Giá thành không quá đắt.
 Có đầy đủ các tính năng của một vi điều khiển khi hoạt động độc lập.
 Là một sự bổ sung rất tốt về kiến thức cũng như về ứng dụng cho họ vi điều khiển
mang tính truyền thống: họ vi điều khiển 8051.
 Số lượng người sử dụng họ vi điều khiển PIC. Hiện nay tại Việt Nam cũng như
trên thế giới, họ vi điều khiển này được sử dụng khá rộng rãi. Điều này tạo nhiều
thuận lợi trong quá trình tìm hiểu và phát triển các ứng dụng như: số lượng tài liệu,
số lượng các ứng dụng mở đã được phát triển thành công, dễ dàng trao đổi, học tập,
dễ dàng tìm được sự chỉ dẫn khi gặp khó khăn,…
 Sự hỗ trợ của nhà sản xuất về trình biên dịch, các 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 năng đa dạng của vi điều khiển PIC, và các tính năng này không ngừng
được phát triển.

Trang | 3
1.3 KIẾN TRÚC PIC

Cấu trúc phần cứng của một vi điều khiển được thiết kế theo hai dạng kiến trúc: kiến
trúc Von Neuman và kiến trúc Havard

Tổ chức phần cứng của PIC được thiết kế theo kiến trúc Havard. Điểm khác biệt giữa
kiến trúc Havard và kiến trúc Von-Neuman là cấu trúc bộ nhớ dữ liệu và bộ nhớ chương
trình.
Đối với kiến trúc Von-Neuman, bộ nhớ dữ liệu và bộ nhớ chương trình nằm chung
trong một bộ nhớ, do đó ta có thể tổ chức, cân đối một cách linh hoạt bộ nhớ chương trình
và bộ nhớ dữ liệu. Tuy nhiên điều này chỉ có ý nghĩa khi tốc độ xử lí của CPU phải rất cao,
vì với cấu trúc đó, trong cùng một thời điểm CPU chỉ có thể tương tác với bộ nhớ dữ liệu
hoặc bộ nhớ chương trình. Như vậy có thể nói kiến trúc Von-Neuman không thích hợp với
cấu trúc của một vi điều khiển.
Đối với kiến trúc Havard, bộ nhớ dữ liệu và bộ nhớ chương trình tách ra thành hai bộ
nhớ riêng biệt. Do đó trong cùng một thời điểm CPU có thể tương tác với cả hai bộ nhớ,
như vậy tốc độ xử lí của vi điều khiển được cải thiện đáng kể.
Một điểm cần chú ý nữa là tập lệnh trong kiến trúc Havard có thể được tối ưu tùy theo
yêu cầu kiến trúc của vi điều khiển mà không phụ thuộc vào cấu trúc dữ liệu. Ví dụ, đối
với vi điều khiển dòng 16F, độ dài lệnh luôn là 14 bit (trong khi dữ liệu được tổ chức thành
từng byte), còn đối với kiến trúc Von-Neuman, độ dài lệnh luôn là bội số của 1 byte (do dữ

Trang | 4
liệu được tổ chức thành từng byte). Đặc điểm này được minh họa cụ thể trong hình 1.1.

1.4 RISC và CISC

Như đã trình bày ở trên, kiến trúc Havard là khái niệm mới hơn so với kiến trúc Von-
Neuman. Khái niệm này được hình thành nhằm cải tiến tốc độ thực thi của một vi điều
khiển.
Qua việc tách rời bộ nhớ chương trình và bộ nhớ dữ liệu, bus chương trình và bus dữ
liệu, CPU có thể cùng một lúc truy xuất cả bộ nhớ chương trình và bộ nhớ dữ liệu, giúp
tăng tốc độ xử lí của vi điều khiển lên gấp đôi. Đồng thời cấu trúc lệnh không còn phụ
thuộc vào cấu trúc dữ liệu nữa mà có thể linh động điều chỉnh tùy theo khả năng và tốc độ
của từng 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 của họ vi điều
khiển PIC được thiết kế sao cho chiều dài mã lệnh luôn cố định (ví dụ đối với họ 16Fxxxx
chiều dài mã lệnh luôn là 14 bit) và cho phép thực thi lệnh trong một chu kì của xung clock
( ngoại trừ một số trường hợp đặc biệt như lệnh nhảy, lệnh gọi chương trình con … cần hai
chu kì xung đồng hồ).
Điều này có nghĩa tập lệnh của vi điều khiển thuộc cấu trúc Havard sẽ ít lệnh hơn,
ngắn hơn, đơn giản hơn để đáp ứng yêu cầu mã hóa lệnh bằng một số lượng bit nhất định.
Vi điều khiển được tổ chức theo kiến trúc Havard còn được gọi là 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
được thiết kế theo kiến trúc Von-Neuman còn được gọi là 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 vì mã lệnh của nó không
phải là một số cố định mà luôn là bội số của 8 bit (1 byte).

1.5 PIPELINING

Đây chính là cơ chế xử lí lệnh của các vi điều khiển PIC. Một chu kì lệnh của vi điều
khiển sẽ bao gồm 4 xung clock. Ví dụ ta sử dụng oscillator có tần số 4 MHZ, thì xung lệnh
sẽ có tần số 1 MHz (chu kì lệnh sẽ là 1 us). Giả sử ta có một đoạn chương trình như sau:

Trang | 5
 TCY0: đọc lệnh 1
 TCY1: thực thi lệnh 1, đọc lệnh 2
 TCY2: thực thi lệnh 2, đọc lệnh 3
 TCY3: thực thi lệnh 3, đọc lệnh 4.
 TCY4: vì lệnh 4 không phải là lệnh sẽ được thực thi theo qui trình thực thi của
chương trình (lệnh tiếp theo được thực thi phải là lệnh đầu tiên tại label SUB_1)
nên chu kì thực thi lệnh này chỉ được dùng để đọc lệnh đầu tiên tại label SUB_1.
Như vậy có thể xem lênh 3 cần 2 chu kì xung clock để thực thi.
 TCY5: thực thi lệnh đầu tiên của SUB_1 và đọc lệnh tiếp theo của SUB_1.
Quá trình này được thực hiện tương tự cho các lệnh tiếp theo của chương trình.
Thông thường, để thực thi một lệnh, ta cần một chu kì lệnh để gọi lệnh đó, và một chu
kì xung clock nữa để giải mã và thực thi lệnh. Với cơ chế pipelining được trình bày ở trên,
mỗi lệnh xem như chỉ được thực thi trong một chu kì lệnh. Đối với các lệnh mà quá trình
thực thi nó làm thay đổi giá trị thanh ghi PC (Program Counter) cần hai chu kì lệnh để thực
thi vì phải thực hiện việc gọi lệnh ở địa chỉ thanh ghi PC chỉ tới. Sau khi đã xác định đúng

Trang | 6
vị trí lệnh trong thanh ghi PC, mỗi lệnh chỉ cần một chu kì lệnh để thực thi xong.

1.6 CÁC DÒNG PIC VÀ CÁCH LỰA CHỌN VI ĐIỀU KHIỂN PIC

Các kí hiệu của 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ó bộ nhớ EPROM (chỉ có 16C84 là EEPROM)


 F: PIC có bộ nhớ flash
 LF: PIC có bộ nhớ flash hoạt động ở điện áp thấp
 LV: tương tự như LF, đây là kí hiệu cũ

Bên cạnh đó một số vi điệu khiển có kí hiệu xxFxxx là EEPROM, nếu có thêm chữ A
ở cuối là flash (ví dụ PIC16F877 là EEPROM, còn PIC16F877A là flash).
Ngoài ra còn có thêm một dòng vi điều khiển PIC mới là dsPIC.
Ở Việt Nam phổ biến nhất là các họ vi điều khiển PIC do hãng Microchip sản xuất.

Cách lựa chọn một vi điều khiển PIC phù hợp:


Trước hết cần chú ý đến số chân của 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, thậm chí có vi điều khiển chỉ có 8 chân,
ngoài ra còn có các vi điều khiển 28, 40, 44, … chân.
Cần chọn vi điều khiển PIC có bộ nhớ flash để có thể nạp xóa chương trình được
nhiều lần hơn.
Tiếp theo cần chú ý đến các khối chức năng được tích hợp sẵn trong vi điều khiển,
các chuẩn giao tiếp bên trong.
Sau cùng cần chú ý đến bộ nhớ chương trình mà vi điều khiển cho phép.
Ngoài ra mọi thông tin về cách lựa chọn vi điều khiển PIC có thể được tìm thấy trong
cuốn sách “Select PIC guide” do nhà sản xuất Microchip cung cấp.

1.7 NGÔN NGỮ LẬP TRÌNH CHO PIC

Ngôn ngữ lập trình cho PIC rất đa dạng. Ngôn ngữ lập trình cấp thấp có MPLAB

Trang | 7
(được cung
cấp miễn phí bởi nhà sản xuất Microchip), các ngôn ngữ lập trình cấp cao hơn bao
gồm C, Basic, Pascal, … Ngoài ra còn có một số ngôn ngữ lập trình được phát triển dành
riêng cho PIC như PICBasic, MikroBasic,…

1.8 MẠCH NẠP PIC

Đây cũng là một dòng sản phẩm rất đa dạng dành cho vi điều khiển PIC. Có thể sử
dụng các mạch nạp được cung cấp bởi nhà sản xuất là hãng Microchip như: PICSTART
plus, MPLAB ICD 2, MPLAB PM 3, PRO MATE II. Có thể dùng các sản phẩm này để
nạp cho vi điều khiển khác thông qua chương trình MPLAB. Dòng sản phẩm chính thống
này có ưu thế là nạp được cho tất cả các vi điều khiển PIC, tuy nhiên giá thành rất cao và
thường gặp rất nhiều khó khăn trong quá trình mua sản phẩm.
Ngoài ra do tính năng cho phép nhiều chế độ nạp khác nhau, còn có rất nhiều mạch
nạp được thiết kế dành cho vi điều khiển PIC. Có thể sơ lược một số mạch nạp cho PIC
như sau:

JDM programmer: mạch nạp này dùng chương trình nạp Icprog cho phép nạp các vi
điều khiển PIC có hỗ trợ tính năng nạp chương trình điện áp thấp ICSP (In Circuit Serial
Programming). Hầu hết các mạch nạp đều hỗ trợ tính năng nạp chương trình này.

WARP-13A và MCP-USB: hai mạch nạp này giống với mạch nạp PICSTART
PLUS do nhà sản xuất Microchip cung cấp, tương thích với trình biên dịch MPLAB, nghĩa
là ta có thể trực tiếp dùng chương trình MPLAB để nạp cho vi điều khiển PIC mà không
cần sử dụng một chương trình nạp khác, chẳng hạn như ICprog.

P16PRO40: mạch nạp này do Nigel thiết kế và cũng khá nổi tiếng. Ông còn thiết kế
cả chương trình nạp, tuy nhiên ta cũng có thể sử dụng chương trình nạp Icprog.
Mạch nạp Universal của Williem: đây không phải là mạch nạp chuyên dụng dành cho PIC
như P16PRO40.

Các mạch nạp kể trên có ưu điểm rất lớn là đơn giản, rẻ tiền, hoàn toàn có thể tự lắp
ráp một cách dễ dàng, và mọi thông tin về sơ đồ mạch nạp, cách thiết kế, thi công, kiểm tra

Trang | 8
và chương trình nạp đều dễ dàng tìm được và download miễn phí thông qua mạng Internet.
Tuy nhiên các mạch nạp trên có nhược điểm là hạn chế về số vi điều khiển được hỗ trợ,
bên cạnh đó mỗi mạch nạp cần được sử dụng với một chương trình nạp thích hợp.

Trang | 9
CHƯƠNG II. TỔNG QUAN VỀ VI ĐIỀU KHIỂN PIC
18f4520

Bộ vi điều khiển ghi tắt là Micro-controller là mạch tích hợp trên một chip có thể lập
trình được, dùng để điều khiển hoạt động của hệ thống. Theo các tập lệnh của người lập
trình, bộ vi điêu khiển tiến hành đọc, lưu trữ thông tin, xử lý thông tin, đo thời gian và tiến
hành đóng mở một cơ cấu nào đó .
Trong các thiết bị điện và điện tử các bộ vi điều khiển điều khiển hoạt động của ti vi,
máy giặt, đầu đọc lase, lò vi ba, điện thoại …Trong hệ thống sản xuất tự động, bộ vi điều
khiển sử dụng trong robot, các hệ thống đo lường giám sát .Các hệ thống càng thông minh
thì vai trò của vi điều khiển ngày càng quan trọng. Hiện nay trên thị trường có rất nhiều họ
vi điều khiển như: 6811 của Motorola, 8051 của Intel, Z8 của Zilog, PIC của Microchip
Technology …
Trong đề tài này nghiên cứu về pic18f4520 vì nó có nhiều ưu điểm hơn các loại vi
điều khiển các như : ADC 10 BÍT, PWM 10 BÍT, EEPROM 256 BYTE, COMPARATER,
…ngoài ra nó còn được các trường đại học trên thế giới đặc biệt là ở các nước Châu Âu
hầu hết xem PIC là 1 môn học trong bộ môn vi diều khiển nói vậy các bạn cũng thấy sự
phổ biến rộng rãi của nó. Ngoài ra PIC còn được rất nhiều nhà sản xuat phần mềm tạo ra
các ngôn ngữ hổ trợ cho việc lập trình ngoài ngôn ngữ Asembly như :MPLAB, CCSC,
HTPIC, MIRKROBASIC,…
Hiện nay có khá nhiều dòng PIC và có rất nhiều khác biệt về phần cứng, nhưng chúng
ta có thể điểm qua một vài nét như sau :

• 8/16 bít CPU, xây dựng theo kiến trúc trên kiến trúc Harvard sửa đổi, với tập lệnh
rút gọn (do vậy PIC thuộc loại RISC).
• Flash và Rom có thể tuỳ chọn 256 byte đến 256 kbybe
• Các cổng xuất/nhập (mức lôgic thường từ 0v đến 5v, ứng với mức logic 0 và 1)
• 8/16 bít timer
• Các chuẩn giao tiếp ngoại vi nối tiếp đồng bộ/ không đồng bộ

Trang | 10
• Bộ chuyển đổi ADC
• Bộ so sánh điện áp
• MSSP Pripheral dùng cho các giao tiếp I2C, SPI
• Bộ nhớ nội EEPROM - có thể ghi/ xoá lên tới hàng triệu lần
• Modul điều khiển động cơ, đọc encoder
• Hỗ trợ giao tiếp USB
• Hỗ trợ điều khiển Ethernet
• Hỗ trợ giao tiếp CAN
• Hỗ trợ giao tiếp LIN
• Hỗ trợ giao tiếp IRDA
DSP những tính năng xử lý tín hiệu số

Trang | 11
1. Sơ đồ chân vi điều khiển pic18f4520

2. Các thông số về vi điều khiển pic18f4520

• CPU tốc độ cao có 75 cấu trúc lệnh, nếu được cho phép có thể kéo dài đến 83 cấu
trúc lệnh.
• Hầu hết các cấu trúc lệnh chỉ mất một chu kỳ máy, ngoại trừ lệnh rẽ nhánh chương
trình mất hai chu kỳ máy
• Tốc độ làm việc: xung clock đến 40MHz, tốc độ thực thi lệnh 125ns
• Bộ nhớ chương trình ( flash program memory) là 32kbyte
• Bộ nhớ dữ liệu SRAM là 1536 byte
• Bộ nhớ dữ liệu EEPROM là 256 byte
• 5 port Vào hoặc ra
• 4 bộ timer

Trang | 12
• 1 capture/compare/PWM modules
• 1 enhanced capture/ compare/PWM modules

Giao tiếp nối tiếp : MSSP, enhanced USART.


Cổng giao tiếp song song.
13 bộ Analog to Digital module 10 bít
POR,BOR

Bên cạnh đó là một vài đặc tính khác của vi điều khiển như:
+ Bộ nhớ Flash có khả năng ghi xoá được 100.000 lần.
+ Bộ nhớ EEPROM với khả năng ghi xoá được 1.000.000 lần.
+ Flash/Dữ liệu bộ nhớ EEPROM có thể lưu trữ hàng 100 năm.
+ Khả năng tự nạp chương trình với sự điều khiển của phần mềm.
+ Watchdog timer với bộ dao động trong.
+ Chức năng 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 nhau

3. Sơ đồ khối của vi điều khiển pic18f4520

Trang | 13
Trang | 14
4. Sơ đồ khối bộ nhớ dữ liệu pic18f4520

Trang | 15
CHƯƠNG III : TÌM HIỂU VỀ HOẠT ĐỘNG TIMER0

1. TIMER0 MODULE

Các module Timer0 kết hợp các tính năng sau đây:

• Phần mềm hoạt động như là một lựa chọn bộ đếm thời gian hoặc truy cập vào cả
hai bit-8 hoặc chế độ 16-bit
• có thể đọc và ghi thanh ghi
• chuyên dụng 8-bit, phần mềm lập trình prescaler
• đồng hồ lựa chọn mã nguồn (bên trong hoặc bên ngoài)
• Edge chọn cho đồng hồ bên ngoài
• ngắt-on-tràn

Việc ghi T0CON (Register 01/11) điều khiển tất cả các khía cạnh của hoạt động của
mô-đun, bao gồm cả việc lựa chọn prescale.Cả hai đều có thể đọc và ghi.
Một sơ đồ khối đơn giản của các mô-đun Timer0 ở chế độ 8-bit được thể hiện trong
hình 11-1. Hình 11-2 cho thấy một sơ đồ khối đơn giản của các mô-đun Timer0 ở chế độ
16-bit.

REGISTER 11-1: T0CON: TIMER0 CONTROL REGISTER

bit 7 TMR0ON: Timer0 On/Off Control bit


1 = chạy Timer0
0 = Dừng Timer0
bit 6 T08BIT: Timer0 8-Bit/16-Bit Điều khiển bit
1 = Timer0 được cấu hình như một bộ đếm thời gian 8-bit / truy cập
0 = Timer0 được cấu hình như một bộ đếm thời gian 16-bit / truy cập
bit 5 T0CS: Đồng hồ Timer0 bit Nguồn Lựa chọn

Trang | 16
1 = Chuyển đổi trên chân T0CKI
0 = Chỉ dẫn bên trong chu kỳ đồng hồ (CLKO)
bit 4 T0SE: Nguồn Timer0 bit Edge Lựa chọn
1 = Tăng trên quá trình chuyển đổi từ cao đến thấp trên T0CKI pin
0 = Tăng trên quá trình chuyển đổi từ thấp đến cao trên T0CKI pin
bit 3 PSA: Timer0 Prescaler Assignment bit
1 = TImer0 Prescaler không được giao. Timer0 đồng hồ đầu vào đi qua
prescaler.
0 = Timer0 Prescaler được phân công. Timer0 đồng hồ đầu vào đến từ đầu ra
prescaler.

bit 2-0 T0PS<2:0>: Lựa chọn Timer0 prescaler bit


111 = 1:256 giá trị Prescale
110 = 1:128 giá trị Prescale
101 = 1:64 giá trị Prescale
100 = 1:32 giá trị Prescale
011 = 1:16 giá trị Prescale
010 = 1:8 giá trị Prescale
001 = 1:4 giá trị Prescale
000 = 1:2 giá trị Prescale

1.1 Hoạt động Timer0

Timer0 có thể hoạt động như là một bộ định thời hoặc ngược lại, lựa chọn với các bit
T0CS (T0CON <5>). Trong chế độ hẹn giờ (T0CS = 0), các gia số module trên mỗi đồng
hồ theo mặc định, trừ khi một giá trị prescaler khác nhau được chọn (xem Phần 11,3
"prescaler"). Nếu ghi TMR0 được ghi vào, độ tăng được kìm hãm đối với hai chu trình
lệnh sau. Người sử dụng có thể làm việc này bằng cách viết một giá trị điều chỉnh cho ghi
TMR0.
Chế độ truy cập đang chọn bằng cách thiết lập bit T0CS (= 1). Trong chế độ này, số
gia Timer0 hoặc trên tất cả các góc lên và xuống của RA4/T0CKI pin. Cạnh độ tăng được
xác định bởi các Timer0 Source Edge Select, T0SE (T0CON <4>); xoá bit này lựa chọn
các góc lên. Các hạn chế trên đầu vào đồng hồ bên ngoài được tính sau.
Một nguồn clock bên ngoài có thể được sử dụng để cung cấp cho Timer0, tuy nhiên,
nó phải đáp ứng các yêu cầu nhất định để đảm bảo rằng đồng hồ từ bên ngoài có thể được
đồng bộ hóa với pha bên trong đồng hồ (TOSC). Một trễ pha giữa đồng bộ và bắt đầu tăng
dần của bộ hẹn giờ / truy cập.

Trang | 17
1.2 Các Timer0 Đọc và Ghi trong 16-Bit Mode

TMR0H không phải là byte cao thật sự của Timer0 ở chế độ 16-bit, nó thực tế là một
phiên bản có bộ đệm của byte cao của Timer0 mà không trực tiếp có thể đọc được và cũng
không thể xin lệnh (xem hình 11-2). TMR0H được updated với các nội dung của byte cao
của Timer0 trong một đọc của TMR0L. Điều này cung cấp khả năng đọc tất cả 16 bit của
Timer0 mà không cần phải xác minh rằng đọc của byte cao và thấp là có giá trị, do
Rollover giữa kế tiếp lần đọc của byte cao và thấp.
Tương tự, một ghi cho các byte cao của Timer0 cũng phải được thực hiện thông qua
việc ghi TMR0H bộ nhớ đệm. Các byte cao được cập nhật với các nội dung của TMR0H
khi ghi ra TMR0L. Điều này cho phép tất cả 16 bit của Timer0 để được cập nhật cùng một
lúc.

Trang | 18
1.3 Prescaler ("bộ chia"or " bộ đếm gộp trước" )

Một truy cập 8-bit có sẵn như một prescaler cho Timer0 module. Prescaler này không
thể trực tiếp đọc hoặc ghi, giá trị của nó được thiết lập bởi các PSA và T0PS <2:00> bit
(T0CON <3:00>) trong đó xác định việc giao prescaler và tỷ lệ prescale.
Xoá các bit PSA gán các prescaler cho Timer0 module. Khi nó được gán, giá trị
prescale từ 1:02 đến 1:256 trong điện của 2 số gia được lựa chọn.
Khi gán cho các module Timer0, tất cả chỉ dẫn ghi vào TMR0 ghi (ví dụ, CLRF
TMR0, MOVWF TMR0, BSF TMR0, vv) xóa số đếm prescaler.

1.4 Chuyển mạch prescaler


Việc giao prescaler là hoàn toàn dưới sự kiểm soát phần mềm và có thể được thay đổi
"on-the-fly" trong quá trình thực hiện chương trình.

1.5 Ngắt Timer0

Việc ngắt TMR0 được tạo ra khi ghi TMR0 tràn từ FFh đến 00h trong 8-bit mode,
hoặc từ FFFFh để 0000h ở chế độ 16-bit. Tràn này thiết lập bit cờ TMR0IF. Việc ngắt có
thể được ẩn bằng cách xóa bit TMR0IE (INTCON <5>). Trước khi cho phép tái ngắt, các
bit TMR0IF phải được xoá trong phần mềm của những lần định kỳ ngắt.

Kể từ khi Timer0 bị dừng tại mode Sleep “quá trình nghỉ”, các TMR0
ngắt không thể hoạt động bộ vi xử lý từ quá trình nghỉ.

Trang | 19
2. TIMER1 MODULE

Các bộ đếm thời gian timer1 / counter module kết hợp các tính năng này:

• Phần mềm có thể lựa chọn hoạt động như một bộ đếm thời gian 16-bit hoặc truy
cập
• có thể đọc và ghi 8-bit có khả năng ghi (TMR1H
• và TMR1L)
• xung lựa chọn mã nguồn (bên trong hay bên ngoài) với xung điện hoặc timer1 tùy
chọn dao động bên trong
• ngắt-on-tràn
• Thiết lập lại trên CCP. Kích hoạt đặc biệt
• Thiết bị xung nhịp trạng thái cờ (T1RUN)

Một sơ đồ khối đơn giản của các mô-đun timer1 được thể hiện trong hình 12-1. Một
sơ đồ khối của các hoạt động của mô-đun tại mode Đọc Ghi / được thể hiện trong hình 12-
2.
Module này kết hợp dao động riêng giảm năng lượng của nó để cung cấp một xung
clocking bổ sung. Các bộ dao động timer1 cũng có thể được sử dụng như một nguồn xung
năng lượng thấp cho bộ vi điều khiển trong hoạt động quản lý điện năng.
Timer1 cũng có thể được sử dụng để cung cấp cho Real-Time Clock (RTC) với các
tính năng ứng dụng.
Timer1 được điều khiển thông qua ghi T1CON Control (Đăng ký 01/12). Nó cũng bao
gồm các timer1
Cho phép tạo dao động bit (T1OSCEN). Timer1 có thể được kích hoạt hay vô hiệu hóa
bằng cách cài đặt hoặc xoá bit điều khiển, TMR1ON (T1CON <0>).

bit 7 RD16: 16-Bit Đọc / ghi Kích hoạt chế độ bit


1 Cho phép = ghi đọc / ghi của timer1 hoạt động 16-bit một
0 Cho phép = ghi đọc / ghi của timer1 trong hai hoạt động 8-bit
Trang | 20
bit 6 T1RUN: timer1 hệ thống Clock trạng thái bit
1 = xung nhịp thiết bị có nguồn gốc từ bộ dao động timer1
0 = xung nhịp thiết bị có nguồn gốc từ một nguồn khác
bit 5-4 T1CKPS <1:00>: timer1 đầu vào Clock prescale Chọn bit
11 = 01:08 prescale giá trị
10 = 01:04 prescale giá trị
01 = 01:02 prescale giá trị
00 = 01:01 prescale giá trị

bit 3 T1OSCEN: timer1 tạo dao động Cho phép bit


1 = timer1 bộ dao động được kích hoạt bộ dao động 0 = timer1 là tắt
Biến tần bộ dao động và điện trở phản hồi sẽ được tắt để loại bỏ năng lượng.
bit 2
T1SYNC: timer1 External Clock Synchronization Chọn Input bit
Khi TMR1CS = 1:
1 = Không đồng bộ hóa đầu vào xung nhịp bên ngoài
0 = Đồng bộ hóa xung nhịp bên ngoài đầu vào
Khi TMR1CS = 0:
Bit này được bỏ qua. Timer1 sử dụng các xung nhịp bên trong khi TMR1CS = 0.

bit 1 TMR1CS: timer1 Clock Nguồn Chọn bit


1 = ngoài xung nhịp từ RC0/T1OSO/T13CKI pin (trên các góc lên)
0 = nội bộ xung nhịp (FOSC / 4)
bit 0 TMR1ON: timer1 Ngày bit
1 = Cho phép timer1
0 = Dừng timer1

2.1 Hoạt động timer1

Timer1 có thể hoạt động ở một trong các chế độ này:


• Timer
• đồng bộ truy cập
• Số lượt truy cập không đồng bộ
Các mode hoạt động được xác định bởi các bit chọn xung nhịp, TMR1CS (T1CON
<1>). Khi TMR1CS là xoá (= 0), timer1 số gia trên tất cả các chỉ dẫn bên trong chu trình
(FOSC / 4). Khi bit được thiết lập, timer1 số gia trên mỗi cạnh tăng của đầu vào timer1
xung nhịp bên ngoài hoặc bộ dao động trong timer1, nếu được kích hoạt.
Khi timer1 được kích hoạt, các RC1/T1OSI và RC0 / T1OSO/T13CKI chân trở thành
đầu vào. Điều này có nghĩa các giá trị của TRISC <1:00> được bỏ qua và các chân được
đọc như "0".

Trang | 21
2.2 Đọc / ghi 16-bit timer1

Timer1 có thể được cấu hình cho bit-16 đọc và viết (xem hình 12-2). Khi điều khiển
RD16 bit (T1CON <7>) được thiết lập, địa chỉ của TMR1H được sắp xếp tới có bộ đệm
đăng ký byte cao của timer1. Một đọc từ TMR1L sẽ tải về nội dung của byte cao của
timer1 vào bộ đệm timer1 byte cao. Điều này cung cấp cho người dùng khả năng đọc một

Trang | 22
cách chính xác tất cả 16 bit của timer1 mà không cần phải xác định xem có đọc của byte
cao, tiếp theo là đọc của byte thấp, có bị sai do Rollover giữa đọc.
Một ghi các byte cao của timer1 cũng phải được thực hiện thông qua việc ghi TMR1H
bộ nhớ đệm. Các byte timer1 cao được cập nhật với các nội dung của TMR1H khi viết ra
cho TMR1L. Điều này cho phép một người sử dụng để ghi tất cả16 bit cho cả các byte cao
và thấp của timer1 cùng một lúc.
Các byte cao của timer1 không trực tiếp có thể đọc được hoặc ghi trong chế độ này.
Tất cả đọc và ghi phải được thực hiện thông qua các timer1 ghi cao Byte bộ nhớ đệm. Ghi
tới TMR1H không xóa các prescaler timer1. Prescaler này duy nhất bị xóa trên ghi cho
TMR1L.

2.3 Tạo dao động Timer1

Một con chip vi mạch bộ dao động tinh thể được kết hợp giữa chân T1OSI (đầu vào)
và T1OSO (bộ khuếch đại ra đặt). Nó được kích hoạt bằng cách thiết lập bit timer1 Cho
phép tạo dao động, T1OSCEN (T1CON <3>). bộ dao động này là mạch công suất thấp của
32 tinh thể kHz. Nó sẽ tiếp tục chạy trong tất cả chế độ năng lượng quản lý. Các vi mạch
cho một bộ dao động LP điển hình được thể hiện trong hình 12-3. Bảng 12-1 cho thấy việc
lựa chọn tụ điện của các bộ dao động timer1.
Người sử dụng phải cung cấp một phần mềm trễ thời gian để bảo đảm khởi động của
các bộ dao động timer1.

Trang | 23
2.3.1 Sử dụng time1 là nguồn CLOCK

Các bộ dao động timer1 cũng có sẵn như một nguồn năng lượng xung trong các chế
độ quản lý. Bằng cách thiết lập các bit chọn xung , SCS <1:00> (OSCCON <1:00>), tới '01
', công tắc sẽ chuyển sang mode SEC_RUN; cả CPU và thiết bị ngoại vi có tốc độ từ bộ
dao động timer1. Nếu bit IDLEN (OSCCON <7>) là xoá và một chỉ dẫn SLEEP được thực
thi, thiết bị nhập vào mode SEC_IDLE. Thêm chi tiết có tại mục 3.0 "Power-Chế độ quản
lý"
Bất cứ khi nào các bộ dao động timer1 đang cung cấp nguồn đồng hồ, các hệ thống
xung timer1 trạng thái cờ, T1RUN (T1CON <6>), được thiết lập. Điều này có thể được sử
dụng để xác định mode clocking hiện hành của điều khiển. Nó cũng có có thể chỉ ra các
nguồn xung đang được sử dụng bởi các Clock Fail-Safe Monitor.
Nếu màn hình Clock được kích hoạt và các bộ dao động timer1 bị lỗi trong khi cung
cấp xung đồng hồ, các bit T1RUN sẽ cho biết nếu đồng hồ đang được cung cấp bởi các bộ
dao động timer1 hoặc một nguồn khác.

2.3.2 Lựa chọn nguồn điện cho TIMER1

Các bộ dao động timer1 có thể hoạt động ở hai cấp độ khác biệt về tiêu thụ điện năng
dựa trên cấu hình thiết bị. Khi bit LPT1OSC cấu hình được thiết lập, các bộ dao động

Trang | 24
timer1 hoạt động trong một mode công suất thấp. Khi LPT1OSC không được thiết lập,
timer1 hoạt động ở mức năng lượng cao hơn. Điện năng tiêu thụ cho một mode cụ thể là
tương đối ổn định, không phân biệt mode hoạt động của thiết bị. Cấu hình mặc định là
timer1 chế độ năng lượng cao hơn.
Khi công suất thấp timer1 mode có xu hướng nhạy cảm hơn tới nhiễu, môi trường
tiếng ồn cao có thể gây ra một số sự bất ổn định bộ dao động. Lựa chọn công suất thấp, do
đó, tốt nhất cho ứng dụng nhiễu ít.

2.3.3 Lưu ý thiết kế bộ dao động TIMER1

Các vi mạch bộ dao động timer1 thu hút năng lượng rất ít trong quá trình hoạt động.
Do tính chất công suất thấp của bộ dao động, nó cũng có thể nhạy cảm tới tín hiệu nhanh
chóng thay đổi gần.
Các vi mạch bộ dao động, thể hiện trong hình 12-3, nên được đặt càng gần càng tốt
với vi điều khiển. Không nên có mạch đi qua trong phạm vi vi mạch bộ dao động khác với
VSS hoặc VDD.
Một vi mạch tốc độ cao phải được đặt gần tor-oscilla (chẳng hạn như pin CCP1 trong
đầu ra so sánh hoặc mode PWM, hoặc bộ dao động chính bằng cách sử dụng pin OSC2),
một vòng bảo vệ nối đất trên vi mạch bộ dao động, như hình 04/12, có thể hữu ích khi sử
dụng trên một PCB duy nhất mặt hoặc bổ sung tới một nối mặt đất.

Trang | 25
2.4 Ngắt Timer1

Những cặp ghi TMR1 (TMR1H: TMR1L) số gia


từ 0000h tới FFFFh và cuộn qua tới 0000h. Các ngắt timer1, nếu được kích hoạt, được
tạo ra về tràn, là chốt trong bit cờ ngắt, TMR1IF (PIR1 <0>). Điều này ngắt có thể được
kích hoạt hay vô hiệu hóa bằng cách thiết lập hoặc xoá bit timer1 Cho phép ngắt, TMR1IE
(PIE1 <0>).

3. TIMER2 MODULE

Các module giờ Timer2 kết hợp các tính năng sau đây:
• 8-Bit Timer và giai đoạn ghi (TMR2 và PR2, tương ứng)
• có thể đọc và ghi (cả ghi)
• Phần mềm lập trình prescaler (1:1, 01:04
và 1:16)
• Phần mềm lập trình postscaler (1:1 thông qua
1:16)
• ngắt trên TMR2 để phù hợp PR2
• Tùy chọn dùng như là xung nhịp thay đổi cho các MSSP
module
Module này được điều khiển thông qua ghi T2CON (Register 13-1), cho phép hoặc vô
hiệu hóa bộ đếm thời gian và cấu hình các prescaler và postscaler. Timer2 có thể được ngắt
bằng cách xóa bit điều khiển, TMR2ON (T2CON <2>), để giảm thiểu điện năng tiêu thụ.

Trang | 26
Một sơ đồ khối đơn giản của mô-đun được hiển thị trong
Hình 13-1.

3.1 Hoạt động Timer2

Trong hoạt động bình thường, TMR2 được tăng lên từ 00h trên mỗi xung nhịp
(FOSC / 4). Một truy cập 4-bit / prescaler trên xung nhịp vào cho đầu vào trực tiếp, chia-
by-4 và phân chia-by-
16 tùy chọn prescale; đây là những lựa chọn prescaler các điều khiển bit, T2CKPS
<1:00> (T2CON <1:00>). Giá trị của TMR2 được so với các ghi giai đoạn, PR2, trên mỗi
chu trình xung nhịp. Khi hai giá trị phù hợp, các parator com-tạo ra một tín hiệu phù hợp
như đầu ra hẹn giờ. Tín hiệu này cũng sẽ xác định lại giá trị của TMR2 để 00h vào các chu
trình tiếp theo và ổ đĩa các postscaler xuất / counter (xem Phần 13,2 "Timer2 ngắt").
Việc ghi TMR2 và PR2 là cả hai có thể đọc được và ghi trực tiếp. Việc ghi TMR2 là
xóa trên bất kỳ Reset thiết bị, trong khi ghi PR2 tạo giá trị đầu tại FFh. Cả hai bộ đếm
prescaler và postscaler được xoá về các sự kiện sau đây:
• một ghi vào thanh ghi TMR2

Trang | 27
• một ghi vào ghi T2CON
• Thiết lập lại bất kỳ thiết bị (Power-on Reset, MCLR Reset, Watchdog Timer Thiết
lập lại hoặc Brown-out Reset)
TMR2 sẽ không bị xóa khi T2CON được ghi.

3.2 Ngắt Timer2

Timer2 cũng có thể tạo ra một thiết bị tùy ý ngắt. Các tín hiệu đầu ra Timer2 (TMR2
để phù hợp PR2) pro-vides đầu vào cho các đầu ra 4-bit truy cập / postscaler. Truy cập này
tạo ra các cờ ngắt TMR2 được bám vào TMR2IF (PIR1 <1>).
Có nhiều về lựa chọn postscale 16 (từ 01:01 đến 01:16 bao gồm) Có thể lựa chọn với
các bit điều khiển postscaler, T2OUTPS <3:00> (T2CON <6:03>).

3.3 Đầu ra Timer2

Đầu ra unscaled của TMR2 dùng chủ yếu cho các module CCP, mà nó được dùng như
một căn thời gian cho các hoạt động vào chế độ PWM.
Timer2 tùy ý có thể được sử dụng như là mã nguồn chuyển đổi xung cho các hoạt
động mô-đun MSSP trong chếđộ SPI. Thông tin Add-tional được quy
định tại Mục 17,0 "Master đồng bộ Serial Port(MSSP) Module".

Trang | 28
4. TIMER3 MODULE

Các module đếm thời gian Timer3 / truy cập kết hợp các tính năng này:
• Phần mềm có thể lựa chọn thao tác như một bộ đếm thời gian16-bit hoặc truy cập
• có thể đọc và ghi 8-bit cho phép ghi (TMR3H
và TMR3L)
• xung nhịp lựa chọn mã nguồn (bên trong hay bên ngoài) với xung
nhịp điện hoặc timer1 tùy chọn bộ dao động bên trong
• ngắt-on-tràn
• Module thiết lập kích hoạt đặc biệt trên CCP
Một sơ đồ khối đơn giản của các mô-đun Timer3 được thể hiện trong hình 14-1. Một sơ
đồ khối trong hoạt động của mô-đun tại chế độ đọc ghi / được thể hiện trong hình 14-2.
Các module Timer3 được điều khiển thông qua ghi T3CON(Register 14-1). Nó cũng lựa
chọn mã nguồn đồng hồ cho các mô-
đun CCP (xem phần 15.1.1 "CCP Modules và Timer lực"để biết thêm thông tin).

Trang | 29
bit 7 RD16: 16-Bit Đọc / ghi Kích hoạt chế độ bit
1 = Cho phép ghi đọc / ghi trong Timer3 tại một bit-16 thao tác
0 = Cho phép ghi đọc / ghi trong Timer3 tại hai hoạt động 8-bit
bit 6,3 T3CCP <2:01>: Timer3 và timer1 để CCPx bit Kích hoạt
1x = Timer3 là thu / so sánh với mã nguồn xung cho các mô-đun CCP
01 = Timer3 là thu / so sánh mã nguồn xung cho CCP2;
Timer1 là thu / so sánh xung mã nguồn cho CCP1
00 = timer1 là thu / so sánh mã nguồn xung cho CCP module
bit 5-4 T3CKPS <1:00>: Timer3 đầu vào Clock prescale
11 = 01:08 giá trị prescale
10 = 01:04 giá trị prescale
01 = 01:02 giá trị prescale
00 = 01:01 giá trị prescale
bit 2 T3SYNC: Timer3 bên ngoài điều khiển đầu vào bit đồng bộ Clock
(Không thể sử dụng
được nếu các xung điện đến từTimer1/Timer3.) Khi TMR3CS = 1:
1 = Không đồng bộ hóa đầu vào xung bên ngoài
0 = Đồng bộ hóa xung bên ngoài đầu vào
Khi TMR3CS = 0:
Bit này được bỏ qua. Timer3 sử dụng các xung bên trong khiTMR3CS = 0.
bit 1 TMR3CS: Timer3 Clock Nguồn Chọn bit
1 = ngoài xung nhập từ timer1 bộ dao động hoặc T13CKI(trên cạnh tăng sau
khi giảm biên thứ nhất)
0 = bên trong xung (FOSC / 4)
bit 0 TMR3ON: Timer3 Ngày bit
1 = Bật Timer3
0 = Dừng Timer3

4.1 Hoạt động Timer3

Timer3 có thể hoạt động tại một trong ba chế độ:


• Timer
• truy cập đồng bộ
• Số lượt truy cập không đồng bộ
Các chế độ hoạt động được xác định
bởi các bit chọn xung,TMR3CS (T3CON <1>). Khi TMR3CS là xóa (= 0), Timer3 gia
tăngtrên mỗi chu kỳ lệnh bên trong (FOSC / 4). Khi bit được đặt, số giaTimer3 trên tất
cả biên tăng trong đầu vào timer1 bên ngoài hoặc bộ dao động trong timer1, nếu được kích
hoạt.
Như với timer1, các RC1/T1OSI và RC0/T1OSO / T13CKI chân trở thành đầu
vào khi bộ dao động timer1 được kích hoạt. Điều này có nghĩa các giá
trị trong TRISC <1:00> được bỏ qua và các chânđược đọc là "0".

Trang | 30
4.2 Đọc / ghi Timer3 16-Bit mode

Timer3 có thể được cấu hình đọc và ghi cho bit-16 (xem hình 14-2).Khi điều
khiển RD16 bit (T3CON <7>) được thiết lập, địa chỉ củaTMR3H được ánh xạ tới một bộ
đệm Timer3 ghi byte cao . Một đọc từ TMR3L sẽ tải các nội dung Timer3 byte cao vào bộ
đệm ghi của Timer3 Byte cao. Điều này cung cấp cho người dùng khả năng đọc chính
xác tất cả timer1 16 bit mà không phải xác định xem đọc được bytecao hay không, tiếp

Trang | 31
theo là một đọc của byte thấp.
Một ghi vào các byte cao của Timer3 cũng phải được thực hiện thông qua bộ
đệm TMR3H ghi. Các byte Timer3 cao được cập nhật với các nội dung của TMR3H khi
ghi xảy ra cho TMR3L. Điều này giúp người sử dụng ghi tất cả 16 bit cho cả hai byte cao
và thấp của Timer3 một lúc.
Các byte cao của Timer3 không trực tiếp thể đọc hoặc ghi ở chế độ này. Tất cả đọc và
ghi phải được thực hiện thong qua việc ghi Timer3. Ghi choTMR3H không xóa các
prescaler Timer3. Prescaler là chỉ bị xóa trên ghi cho TMR3L

4.3 Sử dụng bộ tạo dao động timer1 là nguồn đồng hồ Timer3

Có thể được sử dụng như nguồn xung clock của Timer3. Các bộ dao động Timer1
được kích hoạt bằng cách thiết lập T1OSCEN (T1CON <3>). Để sử dụng nó như là nguồn
clock Timer3, các bit TMR3CS cũng cần được thiết lập. Như đã ghi nhận, điều này cũng
được cấu hình cho Timer3 tăng dần trên mỗi góc lên của nguồn dao động. Các bộ dao động
Timer1 được mô tả trong phần “Timer1 Module”

4.4 Ngắt Timer3

Những thanh ghi TMR3 (TMR3H: TMR3L) gia tăng từ 0000h tới FFFFh và tràn cho
0000h. Các Timer3 bị ngắt, nếu được kích hoạt, được tạo về tràn và được chốt ở bít cờ
ngắt, TMR3IF (PIR2 <1>). Điều này ngắt có thể được kích hoạt hay vô hiệu hóa bằng cách
thiết lập hoặc xóa bit cho phép ngắt Timer3, TMR3IE(PIE2 <1>).

4.5 Dùng Timer3 đặc biệt kích hoạt CCP


Nếu một trong các mô-đun CCP được cấu hình để sử dụng Timer3 và tới tạo ra một
trường hợp đặc biệt của Trigger trong so sánh (CCP1M <3;00> hoặc CCP2M
<3:00>=1011), tín hiệu này sẽ thiết lập lại Timer3.
Nó cũng sẽ khởi động một A / D conver-sion nếu A / Dmodule được kích hoạt
(xem phần 15.3.4 " Special Event Trigge " biết thêm chi tiết).

Trang | 32
Module này cần được cấu hình như một bộ định thời hoặc đồng bộ để tận dụng tính
năng này. Khi được sử dụng theo cách này, các CCPRxH: CCPRxL ghi trở thành
một ghép nối thời hạn ghi của Timer3.

Nếu Timer3 đang chạy trong chế độ truy cập không đồng bộ, các thao rác Reset sẽ
không thể hoạt động. Trong trường hợp có ghi vào Timer3 trùng với một trường hợp đặc
biết Trigger của một mô đun CCP, ghi sẽ được ưu tiên

CHƯƠNG IV : TÌM HIỂU VỀ BỘ SO SÁNH ĐIỆN ÁP

1. Bộ so sánh tham chiếu điện áp

Các tham chiếu so sánh điện áp là một mạng điện trở bậc thang 16-tap cung cấp một
điện áp tham chiếu có thể lựa chọn. Mặc dù mục đích chính của nó là cung cấp một tài liệu
tham khảo cho các so sánh tương tự, nó cũng có thể được sử dụng độc lập của chúng.

Một sơ đồ khối của module được hiển thị trong hình 21-1. Các bậc thang điện trở là
phân đoạn để cung cấp hai dãy các giá trị CVREF và có một chức năng điện xuống để tiết
kiệm năng lượng khi tham chiếu là không bị sử dụng. Cung cấp tham chiếu của module có

Trang | 33
thể được cung cấp từ một trong hai thiết bị VDD / VSS hoặc điện áp một tham chiếu ngoài.

2. Cấu hình bộ so sánh tham chiếu Điện áp


Các module điện áp tham chiếu được điều khiển thông qua việc ghi CVRCON
(Register 21-1). Các tham chiếu bộ so sánh hai dãy điện áp cung cấp công suất đầu ra -volt,
mỗi với 16 mức độ khác nhau. Phạm vi đó sẽ được sử dụng được lựa chọn bởi các bit
CVRR (CVRCON <5>). Sự khác biệt chính giữa các dãy là kích thước của các bước lựa
chọn với các bit chọn CVREF (CVR <3:00>), với một độ phân giải phạm vi cung cấp tốt
hơn. Các phương trình được sử dụng để tính toán đầu ra của điện áp tham chiếu bộ so sánh
như sau:

If CVRR = 1:
CVREF = ((CVR<3:0>)/24) x CVRSRC

If CVRR = 0:
CVREF = (CVRSRC x 1/4) + (((CVR<3:0>)/32) x CVRSRC)

Các tham chiếu bộ so sánh điện áp cung cấp có thể đến từ cả hai VDD và VSS, hoặc
từ bên ngoài VREF + và VREF-được ghép với RA2 và RA3. Các nguồn điện thế được
chọn bởi các bit CVRSS (CVRCON <4>).

Thời gian chỉnh lý của điện áp tham chiếu bộ so sánh phải được xem xét khi thay đổi
CVREF (xem bảng 26-3 tại Mục 26,0 "Đặc điểm điện").

Trang | 34
bit 7 CVREN: Kích hoạt tính năng so sánh điện áp tham chiếu bit
1 = CVREF mạch cấp nguồn
0 = CVREF mạch nguồn ra
bit 6 CVROE: Kích hoạt tính năng so sánh VREF ra bit (1)
1 = CVREF cấp điện áp đầu ra trên chân RA2/AN2/VREF-/CVREF
0 = CVREF điện áp được ngắt kết nối từ các chân RA2/AN2/VREF-/CVREF
bit 5 CVRR: Khoảng lựa chọn so sánh VREF bit
1 = 0 to 0.667 CVRSRC, với kích thước bước CVRSRC/24 (thấp nhiều)
0 = 0.25 CVRSRC to 0.75 CVRSRC, với kích thước bước CVRSRC/32 (cao
tầm)
bit 4 CVRSS: Nguồn lựa chọn so sánh VREF bit
1 = so sánh nguồn tham chiếu, CVRSRC = (VREF +) - (VREF-)
0 = so sánh nguồn tham chiếu, CVRSRC = VDD - VSS
bit 3-0 CVR3:CVR0: lựa chọn giá trị so sánh VREF bit (0 ≤ (CVR<3:0>) ≤ 15) Khi
CVRR = 1:
CVREF = ((CVR<3:0>)/24) • (CVRSRC)
When CVRR = 0:
CVREF = (CVRSRC/4) + ((CVR<3:0>)/32) • (CVRSRC)

Lưu ý 1: CVROE ghi đèTRISA<2> bit thiết lập.

Hình 21-1: BỘ SO SÁNH ĐIỆN ÁP THAM CHIẾU SƠ ĐỒ BLOCK

Trang | 35
3. Điện áp tham chiếu chính xác / lỗi

Các tham chiếu điện áp đầy đủ có thể không được nhận ra do việc xây dựng các
module. Các bóng bán dẫn trên đầu và cuối của mạng điện trở bậc thang (hình 21-1) giữ
CVREF khỏi tiếp cận đường ray nguồn tham khảo-ence. Các tham chiếu điện áp có nguồn
gốc từ các nguồn tham chiếu, vì vậy, các thay đổi đầu ra CVREF bằng biến động trong
nguồn đó. Các thử nghiệm tuyệt đối chính xác của các điện áp tham chiếu có thể được tìm
thấy trong mục 26,0 " Đặc tính Điện ".

4. Thời gian hoạt động ngủ

Khi thiết bị đánh thức từ Sleep thông qua một ngắt hoặc một thời gian Watchdog
Timer ngoài, nội dung ghi CVRCON không bị ảnh hưởng. Để giảm thiểu mức tiêu thụ hiện
tại trong chế độ ngủ, các tham chiếu điện áp nên được vô hiệu hóa

5. Tác dụng ảnh hưởng của một Reset

Reset vô hiệu hóa các thiết bị tham chiếu bằng cách xóa điện áp của bit, CVREN
(CVRCON <7>). Reset này cũng ngắt kết nối các tham chiếu khỏi các chân RA2 bằng
cách xóa bit, CVROE (CVRCON <6>) và lựa chọn phạm vi cao điện áp bằng cách xóa bit,
CVRR (CVRCON <5>). Giá trị CVR bit chọn cũng được xóa.

6. Connection Considerations( Xem xét kết nối )

Các module tham chiếu điện áp hoạt động một cách độc lập trong các module bộ so
sánh. Đầu ra của máy phát điện tham chiếu có thể được kết nối với các chân RA2 nếu bit
CVROE được thiết lập. Cho phép tham chiếu điện áp ra đưa vào RA2 khi nó được cấu
hình như một đầu vào kỹ thuật số sẽ gia tăng mức tiêu thụ hiện nay. Kết nối RA2 như là
một đầu ra kỹ thuật số bằng CVRSS kích hoạt cũng sẽ tăng mức tiêu thụ hiện thời.
Các chân RA2 có thể được sử dụng như là một đầu ra ổ đĩa đơn giản D/A với khả
năng hạn chế. Do dung lượng ổ đĩa bị hạn chế hiện hành, bộ đệm được sử dụng vào đầu ra
điện áp tham chiếu cho các kết nối từ bên ngoài cho VREF. Hình 21-2 hiển thị một ví dụ

Trang | 36
đệm kỹ thuật.

Trang | 37

You might also like