Добрый день, вопрос в следующем:
Плата Altera Stratix II 2S180.
Допустим, есть кастомное устройство, предназначенное для работы в конфигурации с процессором и стандартной шиной, реализовано аппаратное прерывание по отработке устройства. В софте реализована функция, которая будет использоваться как обработчик. Есть определенный регистр прерывания, один из флагов в котором поднимается, когда нужно поймать и обработать прерывание; есть флаг, который нужно поднять чтобы сбросить прерывание.
Проблема вот в чем: Сразу после окончания регистрации обработчика прерывания начинается его постоянный вызов, причем вызов происходит настолько часто и лавинно, что даже вроде бы управление main()-у не отдается ни на такт. При этом значение на регистре прерывания - 0, то есть обработчик вызываться не должен. Изменение значения на регистре ни на что не влияет.
Вопросы:
1)Чем определяется, когда именно вызовется функция обработки прерывания? Значением какого бита или флага, или регистра? Регулируется ли это со стороны софта? Например, для стандартного устройства - ButtonPio - в файле system.h настраивается, будет прерывание срабатывать по фронту или по уровню пинов кнопок.
2)Почему вообще может быть такой лавинный вызов обработчика? Устройство кастомное, но код файлов *.v не документирован и понять принцип его работы сложно.
Спасибо!