По сути, с аппаратным обеспечением, которое вы описали, выполнение проводных или прерываний НИКОГДА не будет работать правильно само по себе.
Если вы хотите сделать проводное или, вам действительно нужно использоватьчувствительные к уровню IRQ входы.Если это невозможно, возможно, вы можете добавить какой-нибудь контроллер прерываний.Это устройство будет иметь N чувствительных к уровню входов, иметь один выход и своего рода «очистить».Когда контроллер прерываний получает очистку, он понижает свой выходной сигнал, а затем повторно подтверждает выходной сигнал, если какой-либо из его входных сигналов все еще был подтвержден.
Со стороны программного обеспечения вы можете посмотреть, работает ли линия IRQ с другимвход процессора.Это позволило бы вам по крайней мере проверить состояние, но обработчик ISR ядра Linux ничего не узнает об этом, и поэтому вам придется что-то исправить, чтобы он проверил его и снова прошел через ISR.Кроме того, это означает, что в тяжелых ситуациях с прерыванием вы НИКОГДА не собираетесь выходить из этого ISR.Учитывая, что вы выполняете проводную связь или IRQ, я полагаю, что эти устройства не будут слишком часто прерывать работу.
Еще одна вещь - очень внимательно посмотреть на процессор.Может быть какая-то хитрость, которую вы можете использовать при настройке прерывания, чтобы заставить его снова распознать прерывание.
Я бы не стал делать что-то слишком хитрое, я бы либо разделил источники на отдельныеIRQ входы, переключитесь на чувствительный к уровню вход или добавьте микросхему контроллера прерываний.