Phần mềm của bạn có thăm dò ý kiến đầu vào này không, hoặc bạn có sử dụng sơ đồ ngắt để xử lý nó không?
Nếu bạn đang bỏ phiếu, có lẽ bạn đã đọc đầu vào với tốc độ cao hơn nhiều so với những thay đổi dự kiến trong tín hiệu. Nếu tiếng ồn được phân tách tốt, các tần số rất cao, thì chúng sẽ trông giống như các mẫu bị cô lập của cực 'sai'. Bạn có thể giảm thiểu điều này bằng cách giữ các mẫu N gần đây nhất và quyết định đọc đầu vào vì phần lớn phân cực chiếm đa số. Tức là, nếu N = 5, thì nếu bạn có 3, 4 hoặc 5 '1' bit, đầu vào của bạn là '1'; nếu bạn có các bit 0, 1 hoặc 2 '1', đầu vào của bạn là '0'. Đây thực sự chỉ là một loại bộ lọc thông thấp trong phần mềm.
Nếu bạn đang sử dụng đầu vào để kích hoạt ngắt khi thay đổi (cả hai cạnh), bạn có thể có thói quen ngắt (ISR) khởi động bộ hẹn giờ để gây gián đoạn thứ hai một thời gian ngắn sau đó, nhưng lâu hơn thời gian tăng nhiễu. Thay vì có ISR chân đầu vào tích lũy trực tiếp các bit tín hiệu, bạn có bộ định thời ISR làm điều đó. Ví dụ: nếu tín hiệu ở mức thấp và tăng đột biến, cạnh tăng sẽ khởi động bộ hẹn giờ, nhưng trước khi bộ đếm thời gian hết hạn, cạnh rơi của bộ tăng tốc đặt lại, vì vậy khi ngắt hẹn giờ cuối cùng cũng tắt, bạn Đang nhìn vào tín hiệu, không phải tiếng ồn. Mặt khác, tín hiệu sẽ khởi động bộ hẹn giờ chỉ một lần và bộ đếm thời gian ISR sẽ có thể lấy mức tín hiệu mới.
Trong hai trường hợp này, Polled vs Interrupt, cá nhân tôi muốn sử dụng phương pháp thăm dò ý kiến, các ngắt b / c (1) phức tạp hơn và (2) một cặp gai được đặt theo bệnh lý vẫn có thể cung cấp cho bạn đầu vào sai.