
Bài giảng Vi xử lý: Chương 7 - Nguyễn Lý Thiên Trường
lượt xem 1
download

Bài giảng "Vi xử lý" Chương 7 - Bộ định thì (Timer), được biên soạn gồm các nội dung chính sau: Giới thiệu; Lập trình Timer0; Lập trình Timer2 chế độ NOR và CTC; Timer1; Lập trình Timer chức năng đếm sự kiện; Lập trình tạo sóng với Timer0 và Timer2; Lập trình tạo sóng với Timer1. Mời các bạn cùng tham khảo!
Bình luận(0) Đăng nhập để gửi bình luận!
Nội dung Text: Bài giảng Vi xử lý: Chương 7 - Nguyễn Lý Thiên Trường
- Chương 7 Bộ định thì (Timer) Tài liệu tham khảo: 1. Chương 7: Bộ định thì (Timers) (Giáo trình VXL) 2. Muhammad Ali Mazidi, AVR Microcontroller and Embedded Systems: Using Assembly and C, Pearson New International Edition, 2014. 3. Datasheet ATmega324P 4. https://nicerland.com/avr/ 5. http://www.hocavr.com/ 6. https://www.youtube.com/watch?v=Fr2K9pzec8g&list=PLgwJf8NK- 2e55CdbY_WnY6pejPHoojCkJ Nguyễn Lý Thiên Trường 1
- 7.1 Giới thiệu 7.2 Lập trình Timer0 7.2.1 Normal mode 7.2.2 CTC mode 7.3 Lập trình Timer2 chế độ NOR và CTC 7.4 Timer1 7.4.1 Normal mode 7.4.2 CTC mode 7.4.3 Chức năng bắt ngõ vào (Input Capture) 7.5 Lập trình Timer chức năng đếm sự kiện 7.6 Lập trình tạo sóng với Timer0 và Timer2 7.7 Lập trình tạo sóng với Timer1 Nguyễn Lý Thiên Trường 2
- 7.1 Giới thiệu ▪ Bộ định thì được ứng dụng tạo thời gian trễ (delay time), tạo hàm, dạng sóng, đếm các sự kiện, biến cố… ▪ ATmega324P có 3 bộ định thì ký hiệu là: Timer0, Timer1, Timer2. o Timer0, Timer2 là 8 bit. o Timer1 là 16 bit. Oscillator 0 CK Counter register COUT External 1 source Flag Flag: Cờ báo Counter/Timer ▪ Xung CK kích mạch đếm có thể chọn từ mạch dao động chuẩn (Oscillator) khi dùng với chức năng Timer hoặc từ xung đếm ngoài (External source) khi dùng với chức năng Counter. Nguyễn Lý Thiên Trường 3
- Ngõ vào xung CK ngoài, chức năng đếm sự kiện (Counter) ở Counter0 và Counter1 Tạo chuyển biến logic hoặc chuỗi xung ngõ ra OC0A, OC0B trong các chế độ Timer0 có khai báo tạo sóng ngõ ra. ATmega324P Timer2 thay thế chức năng đếm xung ngoài bằng chức năng đếm thời gian thực, bằng cách gắn một bộ thạch anh FXTAL ở 2 ngõ TOSC1 và TOSC2. Tạo chuyển biến logic hoặc chuỗi xung ngõ ra OC1A, OC1B trong các chế độ Timer1 có khai báo tạo sóng ngõ ra. Timer1 có ngõ vào Input Capture dùng để phát hiện sự thay đổi mức logic (sự kiện), đo thông số sự kiện xảy ra trên chân ICP1. Tạo chuyển biến logic hoặc chuỗi xung ngõ ra OC2A, OC2B trong các chế độ Timer2 có khai báo tạo sóng ngõ ra. Nguyễn Lý Thiên Trường 4
- 7.1 Giới thiệu ▪ Hoạt động của các Timer trong MCU324P được quản lý và điều khiển bởi các thanh ghi như sau: Nguyễn Lý Thiên Trường 5
- 7.1 Giới thiệu Nguyễn Lý Thiên Trường 6
- 7.1 Giới thiệu Nguyễn Lý Thiên Trường 7
- 7.2 Lập trình Timer0 ▪ Là Timer 8 bit. ▪ Hoạt động của Timer0 trong MCU324P được quản lý và điều khiển bởi các thanh ghi nằm trong vùng địa chỉ I/O cơ bản, ngoại trừ thanh ghi TIMSK0 thuộc vùng I/O mở rộng. Nguyễn Lý Thiên Trường 8
- 7.2 Lập trình Timer0 = Fosc Sơ đồ khối (dạng rút gọn) Timer0/Counter0 Nguyễn Lý Thiên Trường 9
- 7.2 Lập trình Timer0 = Fosc Xung clock cung cấp cho Timer0/Counter0 Khối lựa chọn xung clock cho Timer0/Counter0 Sơ đồ khối (dạng rút gọn) Timer0/Counter0 Nguyễn Lý Thiên Trường 10
- 7.2 Lập trình Timer0 FOC0A FOC0B - - WGM02 CS02 CS01 CS00 TCCR0B 0x25 (0x45) ▪ CS02, CS01, CS00 (Clock Select): bit chọn xung clock cho Timer0. CS02 CS01 CS00 Tần số xung CLKT0 0 0 0 Không có xung CK (Timer0/Counter0 dừng) 0 0 1 CLKIO (không qua bộ chia đặt trước, N = 1) 0 1 0 CLKIO/8 (chia 8 từ bộ chia đặt trước, N = 8) 0 1 1 CLKIO/64 (chia 64 từ bộ chia đặt trước, N = 64) 1 0 0 CLKIO/256 (chia 256 từ bộ chia đặt trước, N = 256) 1 0 1 CLKIO/1024 (chia 1024 từ bộ chia đặt trước, N = 1024) 1 1 0 Nguồn CK ngoài từ chân T0, tác động cạnh xuống 1 1 1 Nguồn CK ngoài từ chân T0, tác động cạnh lên ▪ Nếu cho Timer0 làm việc như bộ đếm sự kiện (Counter): cài đặt CS02:CS00=110 hoặc 111, xung đếm ngoài đưa vào chân T0≡PB0. Chân PB0 tự động chuyển thành ngõ vào nhận xung đếm từ bên ngoài, cho dù trước đó ta không khai báo PB0 là ngõ vào. ▪ Timer0 đếm lên 1 đơn vị khi có cạnh xuống nếu CS02:CS00=110, hoặc khi có cạnh lên nếu CS02:CS00=111. Nguyễn Lý Thiên Trường 11
- 7.2 Lập trình Timer0 Chọn chế độ hoạt động cho Timer0 = Fosc Sơ đồ khối (dạng rút gọn) Timer0/Counter0 Nguyễn Lý Thiên Trường 12
- 7.2 Lập trình Timer0 TCCR0A, TCCR0B: Các thanh ghi A/B điều khiển Timer0 COM0A1 COM0A0 COM0B1 COM0B0 - - WGM01 WGM00 TCCR0A 0x24 (0x44) FOC0A FOC0B - - WGM02 CS02 CS01 CS00 TCCR0B 0x25 (0x45) ▪ WGM02, WGM01, WGM00 (Waveform Generation Mode): cài đặt chế độ hoạt động của Timer0. Chế độ OCR0x TOV0 Mode WGM02 WGM01 WGM00 TOP hoạt động cập nhật đặt = 1 0 0 0 0 NOR 0xFF Tức thời MAX 1 0 0 1 PCPWM 0xFF TOP BOTTOM 2 0 1 0 CTC OCR0A Tức thời MAX 3 0 1 1 FPWM 0xFF BOTTOM MAX 4 1 0 0 Dự trữ - - - 5 1 0 1 PCPWM OCR0A TOP BOTTOM 6 1 1 0 Dự trữ - - - 7 1 1 1 FPWM OCR0A BOTTOM TOP Nguyễn Lý Thiên Trường 13
- 7.2 Lập trình Timer0 Chế độ OCR0x TOV0 Mode WGM02 WGM01 WGM00 TOP hoạt động cập nhật đặt = 1 0 0 0 0 NOR 0xFF Tức thời MAX 1 0 0 1 PCPWM 0xFF TOP BOTTOM 2 0 1 0 CTC OCR0A Tức thời MAX 3 0 1 1 FPWM 0xFF BOTTOM MAX 4 1 0 0 Dự trữ - - - 5 1 0 1 PCPWM OCR0A TOP BOTTOM 6 1 1 0 Dự trữ - - - 7 1 1 1 FPWM OCR0A BOTTOM TOP ▪ NOR (Normal): bình thường. ▪ CTC (Clear Timer on Compare Match): xóa Timer theo kết quả ngõ ra. ▪ FPWM (Fast Pulse Width Modulation): điều chế độ rộng xung nhanh. ▪ PCPWM (Phase Correct Pulse Width Modulation): điều chế độ rộng xung hiệu chỉnh pha. ▪ Cột TOP: thể hiện giá trị đỉnh bộ đếm TCNT0 đếm tới. ▪ Cột OCR0x cập nhật: thể hiện thời điểm tại đó các thanh ghi OCR0A/OCR0B cập nhật giá trị mới. ▪ Cột TOV0 đặt = 1: thể hiện thời điểm tại đó cờ TOV0 được đặt lên 1. 14
- 7.2 Lập trình Timer0 Chế độ OCR0x TOV0 Mode WGM02 WGM01 WGM00 TOP hoạt động cập nhật đặt = 1 0 0 0 0 NOR 0xFF Tức thời MAX 1 0 0 1 PCPWM 0xFF TOP BOTTOM 2 0 1 0 CTC OCR0A Tức thời MAX 3 0 1 1 FPWM 0xFF BOTTOM MAX 4 1 0 0 Dự trữ - - - 5 1 0 1 PCPWM OCR0A TOP BOTTOM 6 1 1 0 Dự trữ - - - 7 1 1 1 FPWM OCR0A BOTTOM TOP ▪ BOTTOM: Timer đạt BOTTOM khi giá trị bộ đếm = 0x00 ▪ MAX: Timer đạt MAX khi giá trị bộ đếm = 0xFF (8 bit) hay 0xFFFF (16 bit). ▪ TOP: Timer đạt TOP khi bộ đếm có giá trị cao nhất trong chế độ hoạt động. Giá trị cao nhất có thể bằng MAX hay được đặt trước (ví dụ: TOP = giá trị đặt trước trong OCR0A trong chế độ CTC và một số chế độ PWM). Nguyễn Lý Thiên Trường 15
- 7.2 Lập trình Timer0 Chế độ OCR0x TOV0 Mode WGM02 WGM01 WGM00 TOP hoạt động cập nhật đặt = 1 0 0 0 0 NOR 0xFF Tức thời MAX 1 0 0 1 PCPWM 0xFF TOP BOTTOM 2 0 1 0 CTC OCR0A Tức thời MAX 3 0 1 1 FPWM 0xFF BOTTOM MAX 4 1 0 0 Dự trữ - - - 5 1 0 1 PCPWM OCR0A TOP BOTTOM 6 1 1 0 Dự trữ - - - 7 1 1 1 FPWM OCR0A BOTTOM TOP Ví dụ trong chế độ CTC (WGM02:WGM00=010): TOP = giá trị đặt trong OCR0A, OCR0A/OCR0B có thể cập nhật giá trị mới tức thời, cờ TOV0 = 1 khi Timer0 đếm tới MAX = 0xFF. Hay nói cách khác, trường hợp này phải đặt OCR0A = 0xFF mới có thể có cờ TOV0=1! Nguyễn Lý Thiên Trường 16
- 7.2 Lập trình Timer0 TCNT0: Thanh ghi 8 bit lưu nội dung định thì/đếm. = Fosc Sơ đồ khối (dạng rút gọn) Timer0/Counter0 Nguyễn Lý Thiên Trường 17
- 7.2 Lập trình Timer0 OCR0A, OCR0B: chứa giá trị tham chiếu để bộ đếm TCNT0 so sánh trong chế độ CTC và các chế độ PWM = Fosc kênh A, kênh B. Sơ đồ khối (dạng rút gọn) Timer0/Counter0 Nguyễn Lý Thiên Trường 18
- 7.2 Lập trình Timer0 TOV0, OCF0A, OCF0B: các cờ báo hiệu. = Fosc Các bit chưa được định nghĩa. TOV0, OCF0A, OCF0B: các cờ báo hiệu. - - - - - OCF0B OCF0A TOV0 TIFR0 0x15 (0x35) 19
- 7.2 Lập trình Timer0 COM0A1 COM0A0 COM0B1 COM0B0 - - WGM01 WGM00 TCCR0A 0x24 (0x44) FOC0A FOC0B - - WGM02 CS02 CS01 CS00 TCCR0B 0x25 (0x45) Các bit COM0A1:COM0A0, COM0B1:COM0B0 (Compare Match Output A/B Mode) và FOC0A/FOC0B (Force Output Compare A/B): dùng trong các chế độ tạo sóng (Xem thêm trong Chương 7 phần 7.7 Lập trình tạo sóng với Timer0, Timer2 giáo trình VXL). Nguyễn Lý Thiên Trường 20

CÓ THỂ BẠN MUỐN DOWNLOAD
-
Bài giảng vi xử lý: Chương 1 - Hồ Trung Mỹ
135 p |
251 |
20
-
Bài giảng vi xử lý: Chương 3 (3.1, 3.2, 3.3) - Hồ Trung Mỹ
101 p |
93 |
8
-
Bài giảng vi xử lý: Chương 3 (3.6) - Hồ Trung Mỹ
39 p |
88 |
7
-
Bài giảng Vi xử lý - Chương 0: Giới thiệu học phần
4 p |
21 |
6
-
Bài giảng Vi xử lý - Chương 1: Giới thiệu Vi xử lý
104 p |
15 |
5
-
Bài giảng Vi xử lý - Chương 4: Các chức năng họ 8051
99 p |
20 |
5
-
Bài giảng Vi xử lý - Chương 2: Phần cứng 8051
91 p |
19 |
5
-
Bài giảng Vi xử lý - Chương 3: Lập trình 8051
126 p |
22 |
5
-
Bài giảng Vi xử lý - Chương 5: Giao tiếp
166 p |
12 |
4
-
Bài giảng Vi xử lý: Chương 2 - Nguyễn Lý Thiên Trường
50 p |
2 |
1
-
Bài giảng Vi xử lý: Chương 6 - Nguyễn Lý Thiên Trường
92 p |
2 |
1
-
Bài giảng Vi xử lý: Chương 10 - Nguyễn Lý Thiên Trường
87 p |
3 |
1
-
Bài giảng Vi xử lý: Chương 3 - Nguyễn Lý Thiên Trường
28 p |
2 |
1
-
Bài giảng Vi xử lý: Chương 8 - Nguyễn Lý Thiên Trường
83 p |
1 |
1
-
Bài giảng Vi xử lý: Chương 1 - Lưu Phú
29 p |
1 |
1
-
Bài giảng Vi xử lý: Chương 3 - Nguyễn Trọng Luật
62 p |
3 |
1
-
Bài giảng Vi xử lý: Chương 9 - Nguyễn Lý Thiên Trường
67 p |
3 |
1


Chịu trách nhiệm nội dung:
Nguyễn Công Hà - Giám đốc Công ty TNHH TÀI LIỆU TRỰC TUYẾN VI NA
LIÊN HỆ
Địa chỉ: P402, 54A Nơ Trang Long, Phường 14, Q.Bình Thạnh, TP.HCM
Hotline: 093 303 0098
Email: support@tailieu.vn
