You are on page 1of 22

Chương 7

TẠO SÓNG TRÊN NGÕ OCnx BẰNG PHẦN CỨNG

Bài giảng môn Vi xử lý


GV: Lê Thị Kim Anh
Chương 7
TẠO SÓNG TRÊN NGÕ OCnx BẰNG PHẦN CỨNG

Lưu ý: Phải thiết lập chức năng


OUTPUT cho ngõ OCnx.

Bài giảng môn Vi xử lý


GV: Lê Thị Kim Anh
Chương 7
TẠO SÓNG TRÊN NGÕ OCnx BẰNG PHẦN CỨNG
MODE NOR-CTC(Non PWM)
COMnA1:0 = 1

Tín hiệu trên các ngõ


OCnx sẽ đảo bằng phần
cứng khi đạt trạng thái
so sánh.(OCFnx =1)

𝒇𝑶𝑪𝒏𝒙 =
𝑭𝑶𝑺𝑪 𝑻𝑶𝑪𝒏𝒙 = 𝑭𝑵. 𝟐(𝟏 + 𝑻𝑶𝑷)
𝑵.𝟐(𝟏+𝑻𝑶𝑷) 𝑶𝑺𝑪

n
Bài giảng môn Vi xử lý Ttimern
GV: Lê Thị Kim Anh
Chương 7
TẠO SÓNG TRÊN NGÕ OCnx BẰNG PHẦN CỨNG
MODE NOR-CTC(Non PWM) COMnA1:0 = 1

𝑭𝑶𝑺𝑪 TIMER0, TIMER1: N={1,8,64,256,1024}


𝒇𝑶𝑪𝒏𝒙 =
𝑵.𝟐(𝟏+𝑻𝑶𝑷) TIMER2: N={1,8,32,64,128,256,1024}

KẾT LUẬN: Muốn tạo t/h xung có tần số f trên chân OCnx ở mode CTC thì cần
xác định các thông số sau:
- Từ f  T?  N? n? (n= 1+ OCRnA) {OCRnAmax=MAX($FF/$FFFF)}
- Suy ra số xung cần nạp vào thanh ghi OCRnA = n - 1.

Lưu ý:
COMnA1:0 = 10  OCnx=0 khi OCFnx=1
COMnA1:0 = 11  OCnx=1 khi OCFnx=1

Bài giảng môn Vi xử lý


GV: Lê Thị Kim Anh
Chương 7
TẠO SÓNG TRÊN NGÕ OCnx BẰNG PHẦN CỨNG
VD8: thực hiện lại VD6 sử dụng mode CTC tạo sóng bằng phần cứng
trên 2 ngõ PB3=OC0A và PB4=OC0B
TCNT0 T T T
OCF0A=1

OCF0B=1
PB3(OC0A)

PB4(OC0B)

HD:
Cần xác định giá trị nạp vào OCRnA và OCRnB để khi OCF0A=1,
OCF0B=1 thì Timer0 đếm được khoảng thời gian lần lượt là T/2
và T/4. Bài giảng môn Vi xử lý
GV: Lê Thị Kim Anh
Chương 7
TẠO SÓNG TRÊN NGÕ OCnx BẰNG PHẦN CỨNG
GIẢI THUẬT

Lưu ý: Khi sử dụng mode NOR với


VD này cần dừng Timer và xóa cờ
OCFnA khi bộ đếm đạt trạng thái
so sánh. Vì vậy mode NOR không
thích hợp trong các mode tạo sóng
bằng phần cứng.
Bài giảng môn Vi xử lý
GV: Lê Thị Kim Anh
Chương 7
TẠO SÓNG TRÊN NGÕ OCnx BẰNG PHẦN CỨNG
MODE NOR – CTC(PWM: Pulse Width Modulation )

Lưu ý:
Việc thay đổi độ rộng xung bằng cách nạp giá trị cho các thanh ghi
OCRnx tương ứng với thời gian ở mức cao và thấp trong mỗi một
chu kỳ. Thường được sử dụng bằng pp tra bảng.
Bài giảng môn Vi xử lý
GV: Lê Thị Kim Anh
Chương 7
TẠO SÓNG TRÊN NGÕ OCnx BẰNG PHẦN CỨNG
MODE NOR – CTC(PWM: Pulse Width Modulation )
VD9: sử dụng mode CTC tạo sóng bằng phần cứng trên ngõ
PD7=OC2A có dạng sau: (cho FOSC=8MHz, CKDIV8=1)

PD7

t(s)
75 25 50 50 60 40

HD:
- Chọn N=8  Ttimer=1s.
- Các giá trị lần lượt nạp cho OCR2A: 74,24,49,49,59,39
Bài giảng môn Vi xử lý
GV: Lê Thị Kim Anh
Chương 7
TẠO SÓNG TRÊN NGÕ OCnx BẰNG PHẦN CỨNG
MODE NOR – CTC(PWM: Pulse Width Modulation )
HD: OCF2A=1
TCNT2

COM2A1:0= 01
OCR2A= 74
59
49 49
39
24

BOTTOM

PD7

t(s)
75 25 50 50 60 40

Bài giảng môn Vi xử lý


GV: Lê Thị Kim Anh
Chương 7
TẠO SÓNG TRÊN NGÕ OCnx BẰNG PHẦN CỨNG
GIẢI THUẬT

Bài giảng môn Vi xử lý


GV: Lê Thị Kim Anh
Chương 7
TẠO SÓNG TRÊN NGÕ OCnx BẰNG PHẦN CỨNG
MODE FPWM(Fast PWM) – TIMER 8BIT
TCNTn=OCRnxOCRnx+1
OCFnx=1

TCNTn= TOP  0: TOVn=1


Lưu ý:COMnA1:0=01
FPWM3: OCnx là IO bình thường
TCNTn FPWM7: OCnA đảo bit OCFnA=1
OCnB không sử dụng

COMnx1:0= 10
OCnx

OCnx COMnx1:0= 11

Chu kỳ

Khi COMnx=10 ngõ OCnx=1 tại BOTTOM cho đến khi đạt trạng thái so sánh thì
xóa về 0, ngược lại với COMnx=11. Giá trị OCRnx cập nhật tại BOTTOM.

FPWM3: TOP=MAX=$FF FPWM7: TOP=OCRnA


Bài giảng môn Vi xử lý
GV: Lê Thị Kim Anh
Chương 7
TẠO SÓNG TRÊN NGÕ OCnx BẰNG PHẦN CỨNG
FPWM3: TOP=MAX
TIMER0: N={1,8,64,256,1024}
COMnA1:0= 10
TIMER2: N={1,8,32,64,128,256,1024}

TCNTn

1/fOCnx
OCFnB=1
(OCRnB+1)*Ttimern

OCnB
OCFnA=1

OCnA
0
(OCRnA+1)*Ttimern

Bài giảng môn Vi xử lý


GV: Lê Thị Kim Anh
Chương 7
TẠO SÓNG TRÊN NGÕ OCnx BẰNG PHẦN CỨNG
MODE FPWM(Fast PWM) – TIMER 8BIT
VD10: CT quan sát các dạng sóng được tạo trên 2 ngõ OC0A, 0C0B
với mode FPWM3. (FOSC=8MHz)

SBI DDRB,3
SBI DDRB,4
LDI R17,0B10100011 ;Timer0 mode FPWM3
OUT TCCR0A,R17 ;Kênh A không đảo, Kênh B không đảo
LDI R17,$2 ;N = 8{Ttimer0=1s}
OUT TCCR0B,R17
LDI R17,199 ;độ rộng xung kênh A 200 s
OUT OCR0A,R17
LDI R17,99 ;độ rộng xung kênh B 100 s
OUT OCR0B,R17
HERE:
RJMP HERE

Câu hỏi: CT trên tạo dạng sóng ở kênh A có tần số f ? và D?


Bài giảng môn Vi xử lý
GV: Lê Thị Kim Anh
Chương 7
TẠO SÓNG TRÊN NGÕ OCnx BẰNG PHẦN CỨNG

VD11: sử dụng mode FPWM3 tạo sóng bằng phần cứng trên ngõ
PB3=OC0A có dạng sau: (cho FOSC=8MHz)
TCNT0

200 150 100 50


OC0A
t(s)
256 256 256
Lưu ý: mode FPWM tạo xung ngõ ra điều chế độ rộng xung tần số
cao thích hợp cho các ứng dụng điều khiển PWM tần số cao. Tham
khảo ví dụ ứng dụng 7.23 trong giáo trình.

Bài giảng môn Vi xử lý


GV: Lê Thị Kim Anh
Chương 7
TẠO SÓNG TRÊN NGÕ OCnx BẰNG PHẦN CỨNG
FPWM7: TOP=OCRnA
TIMER0: N={1,8,64,256,1024}
COMnA1:0= 10
TIMER2: N={1,8,32,64,128,256,1024}

TCNTn
(OCRnA+1)*Ttimern
OCRnA TOVn=1
OCFnA=1

OCRnB OCFnB=1

OCnB t(s)

(OCRnB+1)*Ttimern
OCnA
Bài giảng môn Vi xử lý
GV: Lê Thị Kim Anh
Chương 7
TẠO SÓNG TRÊN NGÕ OCnx BẰNG PHẦN CỨNG

VD12: sử dụng mode FPWM7 tạo sóng bằng phần cứng trên ngõ
PD6=OC2B có dạng sau:(cho FOSC=8MHz)
TCNT0
TOP=OCR0A OCF0A =1

OCF0B =1
OCR0B= 199
149
99
49

200 150 100 50


OC0B
t(s)
250 250 250
Bài giảng môn Vi xử lý
GV: Lê Thị Kim Anh
Chương 7
TẠO SÓNG TRÊN NGÕ OCnx BẰNG PHẦN CỨNG
MODE FPWM(Fast PWM) – TIMER 16BIT
MODE OCR0x TOV1
WGM13 WGM12 WGM11 WGM10 TOP
hoạt động cập nhật đặt=1
0 0 0 0 NOR 0xFFFF Tức thời MAX
0 0 0 1 PCPWM8 0x00FF TOP BOTTOM
0 0 1 0 PCPWM9 0x01FF TOP BOTTOM
0 0 1 1 PCPWM10 0x03FF TOP BOTTOM
0 1 0 0 CTC OCR1A Tức thời MAX
0 1 0 1 FPWM8 0x00FF TOP TOP
0 1 1 0 FPWM9 0x01FF TOP TOP
0 1 1 1 FPWM10 0x03FF TOP TOP
1 0 0 0 PFCPWM ICR1 BOTTOM BOTTOM
1 0 0 1 PFCPWM 0CR1A BOTTOM BOTTOM
1 0 1 0 PCPWM ICR1 TOP BOTTOM
1 0 1 1 PCPWM OCR1A TOP BOTTOM
1 1 0 0 CTC ICR1 Tức thời MAX
1 1 0 1 Dự trữ - - -
1 1 1 0 FPWM ICR1 TOP TOP
1 1 1 1 FPWM OCR1A TOP TOP
Bài giảng môn Vi xử lý
GV: Lê Thị Kim Anh
Chương 7
TẠO SÓNG TRÊN NGÕ OCnx BẰNG PHẦN CỨNG
MODE PCPWM(Phase Correct PWM) – TIMER 8BIT
TCNTn=TOP0: TOVn=1
OCRnx cập nhật tại TOP

BOTTOM

TCNTn

OCnx COMnA1:0= 10
OCnx COMnA1:0= 11
Chu kỳ

Khi TCNTn đếm xuống đạt trạng thái so sánh  đặt ngõ OCnx=1, cho đến khi
TCNTn đếm lên đạt trạng thái so sánh  xóa OCnx=0(COMnA1:0= 10).

PCPWM1: TOP=MAX=$FF PCPWM5: TOP=OCRnA


Bài giảng môn Vi xử lý
GV: Lê Thị Kim Anh
Chương 7
TẠO SÓNG TRÊN NGÕ OCnx BẰNG PHẦN CỨNG
MODE PCPWM(Phase Correct PWM) – TIMER 16BIT
MODE OCR0x TOV1
WGM13 WGM12 WGM11 WGM10 TOP
hoạt động cập nhật đặt=1
0 0 0 0 NOR 0xFFFF Tức thời MAX
0 0 0 1 PCPWM8 0x00FF TOP BOTTOM
0 0 1 0 PCPWM9 0x01FF TOP BOTTOM
0 0 1 1 PCPWM10 0x03FF TOP BOTTOM
0 1 0 0 CTC OCR1A Tức thời MAX
0 1 0 1 FPWM8 0x00FF TOP TOP
0 1 1 0 FPWM9 0x01FF TOP TOP
0 1 1 1 FPWM10 0x03FF TOP TOP
1 0 0 0 PFCPWM ICR1 BOTTOM BOTTOM
1 0 0 1 PFCPWM 0CR1A BOTTOM BOTTOM
1 0 1 0 PCPWM ICR1 TOP BOTTOM
1 0 1 1 PCPWM OCR1A TOP BOTTOM
1 1 0 0 CTC ICR1 Tức thời MAX
1 1 0 1 Dự trữ - - -
1 1 1 0 FPWM ICR1 TOP TOP
1 1 1 1 FPWM OCR1A TOP TOP
Bài giảng môn Vi xử lý
GV: Lê Thị Kim Anh
Chương 7
TẠO SÓNG TRÊN NGÕ OCnx BẰNG PHẦN CỨNG
MODE PCPWM(Phase Correct PWM) – TIMER 16BIT

TCNT1

OC1x COM1x1:0= 10
Chu kỳ

Khi Timer đang chạy, việc thay đổi OCR1x có thể làm xung ngõ ra bị mất đối xứng về
mặt tần số/chu kỳ, mặc dù độ rộng xung vẫn đối xứng quanh điểm BOTTOM.

Lưu ý: Giá trị đặt trước tối thiểu cho OCR1x hay ICR1 = 0x0003

Bài giảng môn Vi xử lý


GV: Lê Thị Kim Anh
Chương 7
TẠO SÓNG TRÊN NGÕ OCnx BẰNG PHẦN CỨNG
MODE PFCPWM(Frequency Phase Correct PWM) – TIMER 16BIT
TOP

- OCRnx cập nhật


tại BOTTOM
- TOV1 =1 tại
TCNTn BOTTOM

COM1x1:0= 10
OCnx
COM1x1:0= 11
OCnx

Chu kỳ

PFCPWM8: TOP=ICR1 PFCPWM9: TOP=0CR1A

MODE PFCPWM hiệu chỉnh được cho cả pha và tần số.


Bài giảng môn Vi xử lý
GV: Lê Thị Kim Anh
Chương 7
TẠO SÓNG TRÊN NGÕ OCnx BẰNG PHẦN CỨNG
MODE PFCPWM(Frequency Phase Correct PWM) – TIMER 16BIT
MODE OCR0x TOV1
WGM13 WGM12 WGM11 WGM10 TOP
hoạt động cập nhật đặt=1
0 0 0 0 NOR 0xFFFF Tức thời MAX
0 0 0 1 PCPWM8 0x00FF TOP BOTTOM
0 0 1 0 PCPWM9 0x01FF TOP BOTTOM
0 0 1 1 PCPWM10 0x03FF TOP BOTTOM
0 1 0 0 CTC OCR1A Tức thời MAX
0 1 0 1 FPWM8 0x00FF TOP TOP
0 1 1 0 FPWM9 0x01FF TOP TOP
0 1 1 1 FPWM10 0x03FF TOP TOP
1 0 0 0 PFCPWM ICR1 BOTTOM BOTTOM
1 0 0 1 PFCPWM 0CR1A BOTTOM BOTTOM
1 0 1 0 PCPWM ICR1 TOP BOTTOM
1 0 1 1 PCPWM OCR1A TOP BOTTOM
1 1 0 0 CTC ICR1 Tức thời MAX
1 1 0 1 Dự trữ - - -
1 1 1 0 FPWM ICR1 TOP TOP
1 1 1 1 FPWM OCR1A TOP TOP
Bài giảng môn Vi xử lý
GV: Lê Thị Kim Anh

You might also like