Sự khác biệt giữa Ngắt thay đổi và Ngắt bên ngoài trên PIC


11

Sự khác biệt về chức năng giữa IOC và EXT Interrupt trên PIC là gì? Tôi hiện đang sử dụng PIC12F1822 và ngoài lớp kiểm tra bổ sung mà bạn phải thực hiện với IOC (tức là pin nào gây ra ngắt), cả hai đều giống hệt nhau.

Sự khác biệt thực tế nếu có là gì? Khi nào bạn sẽ sử dụng cái này hay cái kia?

Câu trả lời:


8

Nhìn vào tài liệu này trong đó nêu:

Ngắt thay đổi
Tính năng này tương tự như thiết bị ngắt bên ngoài , ngoại trừ việc ngắt thay đổi cổng sẽ được kích hoạt bởi bất kỳ thay đổi nào (không chỉ một loại chuyển đổi) trên bất kỳ chân nào được bật. Điều này làm cho nó linh hoạt hơn (có sẵn trên nhiều chân hơn), nhưng cũng khó xử lý chính xác hơn.


5

Điều này có thể được thực hiện để đơn giản hóa kiến ​​trúc ngắt của chip bằng cách có ít mục hơn trong bảng vectơ ngắt. Ngắt thay đổi có thể được thiết lập để kích hoạt khi thanh ghi cổng thay đổi và có thể hữu ích cho một cái gì đó như ma trận bàn phím nơi bạn không muốn viết Định tuyến dịch vụ ngắt (ISR) cho mỗi pin. Bạn có thể viết chỉ một cái có thể kiểm tra giá trị của toàn bộ cổng, đây có thể là điều bạn thực sự quan tâm tùy thuộc vào ứng dụng.


5

Ba điểm khác biệt lớn nhất giữa thay đổi ngắt và chân ngắt ngoài:

  1. Các chân ngắt ngoài cho phép phần mềm chỉ định xem ngắt nên được kích hoạt bởi cạnh tăng hay cạnh giảm; nếu ví dụ: một pin thấp và chỉ quan tâm đến các cạnh rơi xuống, một ngắt sẽ không được kích hoạt cho đến khi pin tăng và giảm dần. Sử dụng ngắt thay đổi, người ta sẽ phải thức dậy trên cả hai sự kiện.
  2. Các chân ngắt ngoài có các bit trạng thái chốt riêng lẻ. Ngay cả khi một xung đầu vào đến và đi trước khi phần mềm có cơ hội đáp ứng với nó, phần mềm vẫn có thể phát hiện ra rằng nó đã xảy ra và phản ứng phù hợp.
  3. Đọc cổng I / O có ngắt thay đổi pin được bật chính xác tại thời điểm thay đổi đầu vào có thể dẫn đến ngắt thay đổi pin không kích hoạt. Ngược lại, đọc cổng I / O được kết nối với chân ngắt ngoài không có tác dụng đối với ngắt.

Các ngắt ngoài của PIC linh hoạt và đáng tin cậy hơn các ngắt thay đổi pin cho mục đích chung. Tôi đề nghị sử dụng trước đây khi thực tế.


3

Về cơ bản, ngắt ngoài sẽ được kích hoạt trên một cạnh cụ thể (tăng hoặc giảm, do người dùng xác định), trong khi ngắt thay đổi sẽ được kích hoạt ở bất kỳ cạnh nào (cả tăng và giảm).


Ít nhất là đối với PIC12F1822 mà OP đã đề cập, IOC cũng có thể được cấu hình (do người dùng xác định) để kích hoạt ở cạnh tăng, cạnh giảm hoặc cả hai (phần 13). Vì vậy, với tôi sự khác biệt duy nhất dường như là, ngắt ngoài chỉ có thể được cấu hình để kích hoạt trên một trong hai phát hiện cạnh.
PetPaulsen

2

Ngắt khi thay đổi thường là một nửa byte I / O, trong đó các ngắt ngoài thường dành cho các bit riêng lẻ. Như bạn đã nói, một điều bạn cần làm trong IOC ISR là tìm ra bit (hoặc bit) nào đã thay đổi.

IOC cũng khó sử dụng hơn một chút, thậm chí còn hơn thế. Bắt buộc phải đọc cổng sớm trước khi cho phép ngắt, và điều quan trọng hơn nữa là ĐỌC CẢNG bên trong ISR! Nếu bạn có tín hiệu thay đổi chậm và nghĩ rằng bạn có thể đặt cờ bên trong ISR và đọc lại sau, ngoài ISR, hãy suy nghĩ lại! Việc đọc cổng (hoặc bất kỳ bit nào trên cổng, nếu tôi nhớ lại chính xác), đặt lại chốt trên bộ so sánh kích hoạt ngắt. Nếu bạn không xóa nó bên trong ISR, nó sẽ lập tức truy xuất lại khi bạn thoát khỏi ISR. Nếu bạn nhớ làm điều này, tất cả đều tốt, nhưng nếu bạn quên và nghĩ rằng bạn có thể đọc cổng khi bạn tiếp cận nó, bạn sẽ có một chút thất vọng cho đến khi bạn nhớ đọc trong ISR.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.