Trích:
Nguyên văn bởi minhpic
Mình có thể giải thích thế này, nếu bạn thực hiện một lệnh nào đó ghi vào TMR0 khi mà prescaler đã gán cho TIMER0 thì không làm thay đổi chỉ định này mà chỉ xóa tỷ số đã ghi vào prescaler(ví dụ: bạn đang đặt 1:2 thì sau lệnh ghi vào TMR0 tỷ số này bị xóa, do đó muốn sử dụng bạn phải đặt lại nhưng prescaler vẫn gán cho TIMER0 nếu từ đầu bạn đã gán cho nó)
|
Không nên hiểu như vậy đâu.
Prescaler là một mạch chia tần số, thực sự chỉ là một bộ đếm xung (thường theo lũy thừa của 2 cho đơn giản phần cứng). Lấy ví dụ, prescaler 1:8 có nghĩa là 8 xung đầu vào thì mới có 1 xung ở đầu ra, tức là tốc độ xung đưa đến tải ở đầu ra của prescaler đã được giảm xuống (hay tần số đã bị chia nhỏ xuống). Người dùng có thể thắc mắc là nó sẽ bắt đầu đếm từ đâu, giả sử nó đếm từ 4 thì chỉ sau 4 xung đầu tiên đã có 1 xung ở ngõ ra của prescaler rồi. Microchip khẳng định bằng đoạn văn bản đó: Khi ghi vào thanh ghi TMR0 ở điều kiện prescaler được gán cho Timer0 thì số đếm của prescaler sẽ được xóa về 0, nhưng việc gán prescaler sẽ không thay đổi (có nghĩa là prescaler vẫn đang được gán cho Timer0). Thiết kế này đảm bảo trong mọi trường hợp bạn đều có tín hiệu ở ngõ ra của prescaler như mong muốn.
Thân,