Nội dung TCCR1A và TCCR1B để Timer1 hoạt động mode NORMAL, hệ số chia tần số N = 1024
Đáp án đúng: A
Câu hỏi liên quan
* Chế độ NORMAL: Để chọn chế độ NORMAL, cả hai bit WGM11 và WGM10 trong TCCR1A phải bằng 0, và cả hai bit WGM13 và WGM12 trong TCCR1B cũng phải bằng 0. Điều này có nghĩa là TCCR1A = 0x00 và các bit liên quan trong TCCR1B phải bằng 0.
* Hệ số chia tần số N = 1024: Để chọn hệ số chia 1024, ba bit CS12, CS11 và CS10 trong TCCR1B phải được đặt thành 101. Điều này có nghĩa là CS12 = 1, CS11 = 0 và CS10 = 1. Trong hệ thập lục phân, điều này tương ứng với giá trị 0x05.
Kết hợp cả hai yêu cầu trên, ta có TCCR1A = 0x00 và TCCR1B = 0x05. Do đó, đáp án đúng là A.
Các lựa chọn khác không đúng vì:
* Các lựa chọn B, C, D đều đưa ra các giá trị không phù hợp với chế độ NORMAL (WGM1x) hoặc hệ số chia tần số 1024 (CS1x).
* A. OCF1A = 1 khi TCNT1 = OCR1A: Phát biểu này đúng. Khi giá trị của thanh ghi TCNT1 bằng với giá trị của thanh ghi OCR1A, cờ OCF1A sẽ được thiết lập (đặt lên 1).
* B. Thanh ghi TCNT1 tiếp tục tăng khi OCF1B = 1: Phát biểu này sai. Trong chế độ CTC, khi TCNT1 bằng OCR1A (và OCF1A = 1), hoặc khi TCNT1 bằng OCR1B (và OCF1B = 1), thì TCNT1 sẽ được đặt lại về 0, chứ không tiếp tục tăng.
* C. Thanh ghi TCNT1 chuyển về 0 khi OCF1A = 1: Phát biểu này đúng. Đây là bản chất của chế độ CTC, khi TCNT1 đạt giá trị so sánh OCR1A, nó sẽ được đặt lại về 0.
* D. Thanh ghi TCNT1 chuyển về 0 khi OCF1B = 1: Phát biểu này đúng. Tương tự như OCR1A, khi TCNT1 đạt giá trị so sánh OCR1B, nó cũng sẽ được đặt lại về 0.
Do đó, phát biểu sai là B.
Sai lệch tối đa xảy ra do thời gian giữa thời điểm cờ ICF1 được bật và thời điểm các lệnh LDS (Load Direct from SRAM) được thực thi. Trong khoảng thời gian này, bộ đếm Timer1 vẫn tiếp tục tăng. Giả sử sau khi sự kiện Capture xảy ra (ICF1 được set), thì bộ đếm vẫn tiếp tục đếm cho đến khi lệnh LDS R18, ICR1L được thực thi. Tiếp theo đến lệnh LDS R19, ICR1H. Khoảng thời gian thực thi mỗi lệnh LDS là 2 chu kỳ xung clock. Vậy tổng thời gian trôi qua từ lúc xảy ra capture event đến khi R19 được load là 4 chu kỳ xung clock.
Tuy nhiên, câu hỏi yêu cầu "sai lệch giá trị tối đa giữa bộ đếm Timer1 và nội dung R19:R18 sau khi copy ICR1 vào R19:R18". Như vậy cần tính đến độ trễ tối đa của việc copy từ bộ đếm Timer1 vào thanh ghi ICR1.
Việc ghi vào ICR1 thực tế không xảy ra ngay lập tức khi sự kiện Capture xảy ra, cần một số clock cycle để hoàn thành. Thông thường con số này nhỏ (1-2 chu kỳ xung clock). Để đơn giản ta xem như việc copy này xảy ra tức thời.
Sau khi cờ ICF1 được set và giá trị bộ đếm được (giả sử) copy tức thời vào ICR1, chương trình thực hiện:
1. Đọc ICR1L vào R18 (2 chu kỳ xung clock).
2. Đọc ICR1H vào R19 (2 chu kỳ xung clock).
Trong quá trình này, Timer1 vẫn tiếp tục đếm. Do đó, giá trị của Timer1 có thể lớn hơn giá trị trong R19:R18. Sai lệch tối đa sẽ là số lượng xung clock mà Timer1 đếm được trong thời gian thực hiện hai lệnh LDS. Vì mỗi lệnh LDS mất 2 chu kỳ xung clock, tổng cộng là 4 chu kỳ xung clock. Tuy nhiên, cần phải xem xét cả thời gian cần thiết để CPU xử lý ngắt và thực hiện các lệnh liên quan đến việc đọc dữ liệu từ ICR1 vào các thanh ghi R18 và R19. Thông thường, quá trình này có thể mất từ 6 đến 8 chu kỳ xung clock tùy thuộc vào kiến trúc và tốc độ xung clock của vi điều khiển. Trong trường hợp này, sai lệch lớn nhất có thể là 8.
Đầu tiên, ta phân tích đoạn code:
- LDI R17,0\nSTS TCCR1A,R17
: Ghi giá trị 0 vào thanh ghi TCCR1A. Điều này có nghĩa là các bit COM1A1, COM1A0, COM1B1, COM1B0, WGM11, WGM10 đều bằng 0.
- LDI R17,$43\nSTS TCCR1B,R17
: Ghi giá trị 0x43 (0b01000011) vào thanh ghi TCCR1B. Điều này có nghĩa là các bit ICNC1, ICES1, WGM13, WGM12, CS12, CS11, CS10 có giá trị lần lượt là 0, 1, 0, 0, 0, 1, 1.
Từ đó, ta suy ra:
- WGM13 = 0, WGM12 = 0, WGM11 = 0, WGM10 = 0: Timer1 hoạt động ở chế độ NORMAL.
- CS12 = 0, CS11 = 1, CS10 = 1: Prescaler là 64. Do đó, CLK_T1 = 64 / Fck = 64 / 8MHz = 8µs.
- ICES1 = 1: Tín hiệu bắt ngõ vào kích khởi cạnh lên.
Vậy, Timer1 hoạt động ở chế độ NORMAL, CLK_T1 = 8 µs, tín hiệu bắt ngõ vào kích khởi cạnh lên.
1. Yêu cầu: Timer0 hoạt động ở chế độ CTC (Clear Timer on Compare Match) tạo sóng vuông ở chân OC0A, đảo bit khi có so sánh.
2. CLK_T0 = 8 µs: Chu kỳ xung clock của Timer0 là 8µs. Thông tin này có thể dùng để tính toán tần số (nếu cần), nhưng trong trường hợp này không cần thiết vì câu hỏi chỉ hỏi giá trị thanh ghi TCCR0A.
3. TCCR0B = $03: Giá trị này cho biết bộ chia tần số (prescaler) được sử dụng. Tra cứu bảng prescaler của Timer0 trong datasheet của vi điều khiển AVR (thường là ATmega328P hoặc tương tự), ta thấy $03 tương ứng với prescaler là 64. Như vậy, tần số xung clock đưa vào Timer0 sẽ giảm đi 64 lần so với tần số clock hệ thống.
4. TCCR0A = ?: Đây là thanh ghi điều khiển chính của Timer0. Để cấu hình Timer0 ở chế độ CTC và tạo sóng vuông ở chân OC0A, ta cần thiết lập các bit sau:
- WGM01 = 1: Chọn chế độ CTC (kết hợp với WGM00 trong TCCR0B).
- COM0A1 = 1, COM0A0 = 0: Chân OC0A đảo bit khi có so sánh (Toggle OC0A on Compare Match).
- Các bit còn lại (WGM00, COM0B1, COM0B0, WGM02) không ảnh hưởng đến yêu cầu bài toán và có thể để mặc định.
Từ các yêu cầu trên, ta xây dựng giá trị TCCR0A như sau:
- COM0A1 COM0A0 WGM01 WGM00 COM0B1 COM0B0 – –
- 1 0 1 0 0 0 0 0
Kết quả: TCCR0A = 0b10100000 = $A0. Tuy nhiên không có đáp án nào trùng khớp với kết quả tính toán, nên ta xét các đáp án khác.
- A. TCCR0A = $82: COM0A1 = 1, COM0A0 = 0, WGM01 = 0. Sai vì WGM01 phải bằng 1 để chọn chế độ CTC.
- B. TCCR0A = $22: COM0A1 = 0, COM0A0 = 1, WGM01 = 0. Sai vì COM0A1 phải bằng 1 và WGM01 phải bằng 1.
- C. TCCR0A = $42: COM0A1 = 0, COM0A0 = 1, WGM01 = 1. Sai vì COM0A1 phải bằng 1.
- D. TCCR0A = $12: COM0A1 = 0, COM0A0 = 0, WGM01 = 1. Sai vì COM0A1 phải bằng 1.
Kết luận: Không có đáp án nào đúng. Có thể có lỗi trong các phương án trả lời hoặc đề bài thiếu thông tin.

Bộ Đồ Án Tốt Nghiệp Ngành Trí Tuệ Nhân Tạo Và Học Máy

Bộ 120+ Đồ Án Tốt Nghiệp Ngành Hệ Thống Thông Tin

Bộ Đồ Án Tốt Nghiệp Ngành Mạng Máy Tính Và Truyền Thông

Bộ Luận Văn Tốt Nghiệp Ngành Kiểm Toán

Bộ 370+ Luận Văn Tốt Nghiệp Ngành Kế Toán Doanh Nghiệp

Bộ Luận Văn Tốt Nghiệp Ngành Quản Trị Thương Hiệu
ĐĂNG KÝ GÓI THI VIP
- Truy cập hơn 100K đề thi thử và chính thức các năm
- 2M câu hỏi theo các mức độ: Nhận biết – Thông hiểu – Vận dụng
- Học nhanh với 10K Flashcard Tiếng Anh theo bộ sách và chủ đề
- Đầy đủ: Mầm non – Phổ thông (K12) – Đại học – Người đi làm
- Tải toàn bộ tài liệu trên TaiLieu.VN
- Loại bỏ quảng cáo để tăng khả năng tập trung ôn luyện
- Tặng 15 ngày khi đăng ký gói 3 tháng, 30 ngày với gói 6 tháng và 60 ngày với gói 12 tháng.