Câu trả lời:
Chúng không xung đột khi millis()
đọc nghiêm ngặt giá trị ngay lập tức trong TCNT0
khi PWM thông qua bộ định thời 0 sử dụng khả năng của phần cứng để so sánh giá trị TCNT0
với các giá trị trong OCR0x
mà không ảnh hưởng đến giá trị của bất kỳ giá trị nào trong số chúng.
Chỉ cần thêm vào câu trả lời của @ Ignacio đã trả lời trực tiếp câu hỏi của bạn. "Xung đột" mà bạn nói đến có liên quan đến bộ tổng hợp Timer0
.
Đối với hầu hết các phần, bạn có thể sử dụng các chân đó (chân 5 và 6 ngẫu nhiên trên UNO) mà không gặp sự cố và đọc giá trị chính xác của millis()
(cũng như nhận được độ trễ dự kiến từ delay
)
Trường hợp bạn gặp vấn đề là nếu bạn muốn thay đổi bộ đếm gộp (thường là để sửa đổi tần số của tín hiệu PWM). Nếu bạn thay đổi điều này, thì bạn sẽ ảnh hưởng trực tiếp đến việc tính toán và báo cáo millis()
và độ dài của delay(x)
.
millis ()
delay ()
millis()
chỉ sử dụng số đếm tràn Timer 0.micros()
đọc giá trị ngay lập tức trongTCNT0
.