You are on page 1of 24

MECHLAB

Timer/Counter 0

Nguyễn Đăng Khoa, Nguyễn Ngọc Thắng, Nguyễn Hữu Thắng


Nội dung
1. Tổng quan
2. Mô tả thanh ghi
3. Các chế độ làm việc
4. Một vài ví dụ
1. Tổng quan

H.1. Sơ đồ khối của


Timer/Counter 0
2. Mô tả thanh ghi
1. TCCR0A – Timer/Counter Control Register A
2. TCCR0B – Timer/Counter Control Register B
3. TCNT0 – Timer/Counter Register
4. OCR0A – Output Compare Register A
5. OCR0B – Output Compare Register B
6. TIMSK0 – Timer/Counter Interrupt Mask Register
7. TIFR0 – Timer/Counter 0 Interrupt Flag Register
1. TCCR0A – Timer/Counter Control Register A

 Bit 7:6: điều khiển chế độ đầu ra của chân OC0A


 Bit 5:4: điều khiển chế độ đầu ra của chân OC0B
 Bit 1:0: kết hợp với bit 3 của thanh ghi TCCR0B để chọn chế độ
tạo xung
2. TCCR0B – Timer/Counter Control Register B

 Bit 2:0: Chọn nguồn đồng hồ.


2. TCCR0B – Timer/Counter Control Register B

Hình 2. Mô tả các bit chọn nguồn đồng hồ


6. TIMSK0 – Timer/Counter Interrupt Mask Register

 Bit 2:1: Output compare interrupt enable A/B


 Bit 0: Timer/Counter 0 overflow interrupt enable
7. TIFR0 – Timer/Counter 0 Interrupt Flag Register

 Bit 2:1: Output compare interrupt flag A/B


 Bit 0: Timer/Counter 0 overlow flag
4. Các chế độ làm việc
1. Normal mode
2. CTC mode
3. Fast-PWM
4. Phase-Correct PWM
1. Normal mode
- Giá trị của thanh ghi TCNT0 sẽ tăng lên 1 cho tới khi chạm
MAX (0xFF) sau đó được restart về BOTTOM (0x00). Cờ tràn
TOV 0 sẽ được kích hoạt trong thời gian TCNT0 chuyển giá trị
từ TOP về BOTTOM.

- Sử dụng tín hiệu tràn để tạo ra ngắt tại thời điểm nhất định

- Không khuyến khích sử dụng chế độ Nomal để tạo Waveform


Generator vì chiếm nhiều thời gian của CPU.
2. CTC mode
2.1.Nguyên tắc hoạt động CTC mode

 Bộ đếm xóa về 0 khi giá trị bộ đếm (TCNT0) bằng

giá trị trong thanh ghi OCR0x.

 Thanh ghi OCR0x xác định giá trị TOP ,giá trị này

luôn được so sánh với giá trị trong thanh ghi

TCNT0.
2.2. Các chức năng
2.2.1. Tạo ngắt

 Một ngắt có thể được tạo ra mỗi khi giá trị bộ đếm đạt giá trị TOP bằng

cách sử dụng cờ OCF0x.

 Các bước :

• Khai báo thanh ghi TCCR0x.

• Đặt giá trị cho thanh ghi OCR0x.

• Set bit OCE0x =1.

• sei();
2.2.2. Tạo waveform output

 Để tạo waveform output ,đầu ra OC0x được đặt ở chế độ toggle.

 Tần số sẽ được xác định theo phương trình :


3. Fast-PWM mode
PWM
Sub-modes

Output mode
Sub-modes

Waveform Generation Mode


WGM03:1 = 3
 Giá trị TOP = 0xff
 TCNT0 tăng từ BOTTOM đến TOP rồi lại trở về BOTTOM.
 Tần số PWM:

 Chế độ đảo và không đảo


WGM03:1 = 7
 Giá trị TOP = OCR0A
 Toggle khi Compare match
4. Một số ví dụ
1. Đồng hồ thời gian thực
2. Dim LED bằng PWM
4. Một số ví dụ
1. Đồng hồ thời gian thực
4. Một số ví dụ
2. Dim LED bằng PWM
Thảo luận
 Chức năng double buffer trong fast-PWM?
 Phase correct PWM ?

You might also like