Giải pháp tốt cho nhiều ngắt hơn trên một arduino?


7

Tôi đang xây dựng một mạch với Arduino Mega và các chip IC đơn giản (ví dụ 7432) nhưng tôi có nhiều dòng để theo dõi các điều kiện ngắt và không đủ chân trên Atmel vì vậy tôi đang tìm cách mở rộng điều này. Các vấn đề xảy ra do tôi cần có thể chuyển điều kiện kích hoạt từ cạnh tăng sang cạnh giảm cho một số dòng dựa trên điều kiện và một số dòng sẽ vẫn ở mức cao sau khi được bảo trì, do đó, bộ mã hóa ưu tiên sẽ chịu điều kiện ưu tiên cao hơn ngắt sẽ che giấu một ưu tiên thấp hơn. Đối với vấn đề thứ hai, tôi nghĩ đến việc sử dụng một thanh ghi và một số cổng để cho phép vô hiệu hóa một số ngắt, nhưng tôi không có giải pháp tốt cho cái trước. Có ai có bất cứ đề nghị? Tôi đang nhận được chip mới khi cần thiết, vì vậy các giải pháp liên quan đến thêm 7400 IC series hoặc tương tự sẽ được đánh giá cao,


2
Một CPLD cơ bản như XC9536XL khá rẻ tiền, nhưng có một đường cong học tập.
Chris Stratton

Câu trả lời:



3

Bạn có thể sử dụng Bộ điều khiển ngắt lập trình (PIC) như 82C59A . Nó sẽ xếp tầng nếu bạn cần nhiều hơn tám ngắt mà nó cung cấp. Đó là một trường học hơi cũ nhưng tôi nghĩ rằng nó sẽ xử lý tất cả các yêu cầu của bạn. Từ những slide bài giảng này :

Sơ đồ khối của 82C59A

  • Nó được xử lý bởi bộ xử lý máy chủ như một thiết bị ngoại vi.
  • Nó được cấu hình bởi người quản lý máy chủ để chọn các chức năng.
  • Chip Chọn một lần nữa được sử dụng để giải quyết 82C59A khi cần thiết.
    • A0 địa chỉ chọn các từ lệnh khác nhau trong 8259
  • INTTôiNTMột¯ ared được sử dụng như giao diện bắt tay.
    • INT đầu ra kết nối với GIỚI THIỆU ghim từ chủ và được kết nối với chân IR chính trên nô lệ
    • Trong một hệ thống có chủ và nô lệ, chỉ có chủ TôiNTMột¯ tín hiệu được kết nối.
  • Ngắt đầu vào IR0 đến IR7có thể được cấu hình như là đầu vào nhạy cảm cấp hoặc kích hoạt cạnh . Đầu vào kích hoạt cạnh trở nên hoạt động trên các chuyển tiếp 0 đến 1.
  • Giao diện tầng CAS0 - CAS2SP¯/EN¯:
    • Giao diện tầng CAS0 - CAS2 mang địa chỉ của nô lệ để được phục vụ.
    • SP¯/EN¯ : = 1 chọn chip làm chủ trong chế độ xếp tầng.

Hiện được sản xuất bởi Intersil và trong kho tại Digikey .


3

Tôi sẽ sử dụng bộ mở rộng I / O như MCP23008 hoặc MCP23017 . Cả hai đều có phiên bản SPI và I 2 C; ngắt có thể được cấu hình (độ nhạy cạnh, độ nhạy) cho mỗi đầu vào.


Các bộ mở rộng I / O Semtech cũng có giá khá cao và linh hoạt, mặc dù chúng chỉ có các gói QFN, do đó, chip MCP dễ dàng hơn trong việc sử dụng.
Yann Vernier

0

Tôi biết câu trả lời này hơi muộn, nhưng tôi đang trả lời nó cho bất kỳ độc giả muộn nào cho câu hỏi này.

Phiên bản phần mềm của việc thêm nhiều ngắt sẽ là thực hiện "Ngắt thay đổi pin" . Có những thư viện cho phép bất kỳ pin nào có thể kích hoạt ngắt vì ATMega có khả năng mã hóa thông minh một chút.


1
Điều này thực sự có thể hữu ích như một câu trả lời, nếu nó chứa một số giải thích / mã mẫu về cách thực hiện các ngắt thay đổi pin và cách sử dụng chúng cho mục đích trong câu hỏi.
Anindo Ghosh

Mặc dù AVR có các ngắt thay đổi chân cho tất cả các chân, nhưng trạng thái câu hỏi ban đầu có "không đủ chân trên Atmel". Điều đó có nghĩa là có được bộ điều khiển khác hoặc bộ mở rộng I / O.
Yann Vernier
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.