You are on page 1of 12

CHƯƠNG 8

BỘ CHUYỂN ĐỔI ADC


( Analog-to-Digital )
CHƯƠNG 8: BỘ CHUYỂN ĐỔI ADC

1. Giới thiệu
- Bộ ADC 10bit bao gồm 8 ngõ vào analog.

- Điện áp tham chiếu Vref có thể lấy từ nguồn bên


trong hay bên ngoài bởi phần mềm.

- Ngắt ADC xảy ra ngay khi hoàn thành chuyển đổi.

- Ngắt ADC sẽ đánh thức PIC khỏi trạng thái SLEEP.

ADC
Analog Digital
Input Output
CHƯƠNG 8: BỘ CHUYỂN ĐỔI ADC

2. Các thanh ghi sử dụng với ADC


Module ADC gồm 4 thanh ghi:

 2 thanh ghi điều khiển ADCON0 và ADCON1.

 2 thanh ghi chứa kết quả chuyển đổi 10bit:


ADRESH ADRESL
MSB - - - - - - - - LSB

Left Justified (ADFM = 0)


ADRESH ADRESL
MSB - - - - - - - - LSB

Right Justified (ADFM = 1)


CHƯƠNG 8: BỘ CHUYỂN ĐỔI ADC
LEFT RIGHT

Kết quả đọc về: Kết quả đọc về:

10bit = ADRESH*4 + ADRESL>>6 10bit = ADRESH*256 + ADRESL (*)

8bit = ADRESH (*) 8bit = ADRESH*64 + ADRESL>>2

ADRESH ADRESL
MSB - - - - - - - - LSB

Left Justified (ADFM = 0)


ADRESH ADRESL
MSB - - - - - - - - LSB

Right Justified (ADFM = 1)


CHƯƠNG 8: BỘ CHUYỂN ĐỔI ADC

2.1 Thanh ghi ADCON0


ADCS1 ADCS0 CHS2 CHS1 CHS0 GO/DONE - ADON

Bit Chöùc naêng


ADCS1 - ADCS0: Löïa chọn tần số chuyeån ñoåi
00= FOSC/2 10= FOSC/32
01= FOSC/8 01= FRC (Clock töø boä dao ñoäng
RC)
CHS2-CHS1 -CHS0 : Choïn keânh Analog cần chuyển đổi
000, 001, …, 111= 8 traïng thaùi töông öùng 8 keânh vaøo
Analog.
GO/DONE Bit baùo traïng thaùi quaù trình chuyeån ñoåi A/D (khi
ADON=1)
=1 Khi quaù trình ñang xaûy ra hoặc cho pheùp quaù trình
xaûy ra.
=0 (tự động) = Khi quaù trình khoâng xaûy ra hoaëc ñaõ
hoaøn taát.
CHƯƠNG 8: BỘ CHUYỂN ĐỔI ADC

2.2 Thanh ghi ADCON1


ADFM PCFG3 PCFG2 PCFG1 PCFG0

Bit Chöùc naêng


ADFM Löïa chọn kieåu thanh ghi chöùa keát quaû chuyeån ñoåi
10bit PCFG AN7 AN6 AN5 AN4 AN3 AN2 AN1
<3:0> Vdd AN0
0 = 10 bit traùi
1 = 10 bit phaûi
PCFG3 4 bit
PCFG2 Caáu hình
PCFG1 cho caùc
PCFG0 chaân ADC
CHƯƠNG 8: BỘ CHUYỂN ĐỔI ADC

3. Hoạt động của module ADC

Conversion
Fosc clock scaler

VREF+
pin
AN0
AN1
AN2 Start Conversion
AN3 Conversion Complete
AN4 ADC
AN5
AN6 00000011 11111111
AN7 Holding ADRESH ADRESL
Capacitor Right Justified

VREF-
pin

Vss
CHƯƠNG 8: BỘ CHUYỂN ĐỔI ADC

Conversion
Fosc clock scaler

VREF+
AN0
pin
AN1
AN2 Start Conversion
AN3 Conversion Complete
AN4 ADC
AN5
AN6 00000011 11111111
AN7 Holding ADRESH ADRESL
Capacitor Left Justified Right Justified

VREF-
pin
ADCON0
ADCS1 ADCS0 CHS2 CHS1 CHS0 GO/DONE ADON
Vss
ADCON1
ADFM ADCS2 PCFG3 PCFG2 PCFG1 PCFG0
CHƯƠNG 8: BỘ CHUYỂN ĐỔI ADC

- Khi quá trình chuyển đổi kết thúc:

+ Kết quả 10bit sẽ lưu lại trong cặp thanh ghi


ADRESH : ADRESL.

+ Bit GO/DONE = 0 và cờ ngắt ADIF = 1.

- Công thức tính kết quả chuyển đổi:


CHƯƠNG 8: BỘ CHUYỂN ĐỔI ADC

3.1 NGẮT ADC và chế độ SLEEP

- Ở chế độ SLEEP, hoạt động chuyển đổi vẫn diễn


ra, với nguồn xung Clock lấy từ bộ dao dộng RC
được cài đặt bởi 2 bit (ADCS1:ADCS0 = 11).

- Khi quá trình chuyển đổi hoàn thành, Ngắt ADC sẽ


xảy ra và làm PIC thoát khỏi trạng thái SLEEP.

- Nếu Ngắt không được cho phép, ADC sẽ ngưng


hoạt động mặc dù bit ADON=1.
CHƯƠNG 8: BỘ CHUYỂN ĐỔI ADC

3.2 Khởi tạo module ADC


ADC
-Bắt đầu chuyển đổi: GODONE = 1
-Khởi tạo chân Analog và Input: -Kiểm tra bộ ADC chuyển đổi xong ?
ANSx = 1, TRISx = 1 + GODONE = 0
-Chọn VREF: VCFG1:VCFG0 =… while (GODONE)

-Chọn tần số: ADCS1:ADCS0 =… + Xảy ra NGẮT (nếu dùng)


while (ADIF)
-Chọn kênh Analog: CHS<3:0> = …
-Đọc kết quả theo công thức sau:
-Chọn định dạng kết quả chuyển đổi:
ADFM = 0/1 + 8bit: = ADRESH (L)
-Cho phép module ADC: ADON = 1 + 10bit: = ADRESH*64+ADRESL (R)
-Khởi tạo NGẮT (nếu có). -Nếu sử dụng NGẮT thì xóa ADIF = 0
CHƯƠNG 8: BỘ CHUYỂN ĐỔI ADC

4. Các Ví dụ và Bài tập

You might also like