Tôi biết rằng ngắt RX rõ ràng được sử dụng để lưu phiếu bầu, nhưng tại sao TX cũng vậy?
Tôi biết rằng ngắt RX rõ ràng được sử dụng để lưu phiếu bầu, nhưng tại sao TX cũng vậy?
Câu trả lời:
Mục tiêu chính của ngắt TX (thực sự là END OF TX) là tự động gửi nội dung của bộ đệm (nhiều byte). Khi được thực hiện một cách thích hợp:
Các hành vi chính xác phụ thuộc vào vi điều khiển. Đó là một mô tả chung.
Ngắt TX chủ yếu là cho các datagram dài hơn. Bạn có thể bắt đầu chuyển cho một bộ đệm có độ dài đã biết (bytecount). Bây giờ bạn có thể đẩy con trỏ bộ đệm của mình thường xuyên như có byte để gửi, khi ngắt TX xảy ra. Điều này đảm bảo việc chuyển bộ đệm "càng nhanh càng tốt" mà không cần phải thăm dò bất kỳ "TransferComplete" -Flag / Statusbit nào.
Một số UARTS có bộ đệm bên trong lớn hơn một, sê-ri 16xxx cho một.
Thủ tục ở đây là
Điều này làm giảm tải CPU bằng cách giảm tải một số xử lý cho UART, do đó cho phép CPU chậm hơn để theo kịp và phục vụ các nhiệm vụ khác thay vì luôn bị gián đoạn.
Ngắt TX kích hoạt khi có không gian trong bộ đệm truyền.
Đối với các thiết bị không có bộ đệm truyền (tức là nơi bạn ghi một byte, được truyền ngay lập tức), ngắt được xác nhận khi thanh ghi truyền có thể được ghi bằng byte kế tiếp.
Đối với các thiết bị có bộ đệm, ngắt được xác nhận tại thời điểm xác định thực hiện. Đối với một số người, đó là khi bộ đệm trống một nửa, đối với một số người là khi việc truyền byte cuối cùng đã bắt đầu và bộ đệm hoàn toàn trống rỗng.
Một trường hợp sử dụng khác là khi bạn kết nối UART với một giao diện truyền thông khác như RS485. Bộ điều khiển phải giải phóng trình điều khiển bus ngay khi bit cuối cùng được chuyển ra khỏi bộ đệm TX. Điều này rất dễ xử lý trong ngắt TX, nhưng sẽ khó thực hiện nếu không có thời gian chính xác sau khi ghi byte cuối cùng vào bộ đệm đầu ra cũng thay đổi theo tốc độ truyền.