ATmega 328 Pro Mini Есть задача мониторить сигналы, приходящие на микросхему-счетчик. Сигнал тактирования подключен к INT0, сигнал сброса - к INT1 (на картинке канал-0 и канал-1 соответственно, каналы 2 и 3 - данные) Сигнал сброса приходит с "помехой" - надо как-то его игнорировать. Возможно ли как-то в проекте назначить общую функцию для прерываний INT0 и INT1? И чтоб в этой функции определять чье это прерывание - тогда я смогу "помеху" легко отсечь.. В PIC-ах такое есть, поэтому надеюсь и тут такое должно быть...
ВЫ помеху "программно отсечете" - для софта. Но в реале - она же так и будет шпарить на счетчик. Тогда какой смысл в вопросе ?
Нет. Но можно через PCINT. Он отрабатывает сразу на порт. Если INT -ы висят на одном порту и на этих ногах есть PCINT. Вообще, все эти 328 и подобные - это уже как 8051. Устаревшие, жутко неудобные. Переходите уже на современные чипы. Если сигнал сброса асинхронный - от помехи не избавишься. Если сигнал сброса синхронный, то и опрашивай этот пин с периодом больше, чем период помехи.
Почему нет? А если в таблице векторов прописать для обоих прерываний одну и ту-же метку? Всё должно сработать. Но возникает вопрос, как различить откуда прерывание? Предлагаю такой вариант. По каждому прерыванию свой малюсенький обработчик в котором выставляем флаг в соответствии от того какое это прерывание (INT0 или INT1). Потом переадресация в "общую функцию".
А в этом плане...Я сперва не допер)) Это на асме. А на Сях можно вызвать одну и ту же функцию. Но зачем? Если надо Для каждого прерывания свой обработчик, а затем вызов общей функции. Но я не понимаю, зачем это всё... он и так аппаратно выставляется. Причём вне зависимости от того, разрешили мы прерывание или нет. Регистр, в котором живут эти флаги - EIFR
Выставляются, но при вызове прерывания аппаратно сбрасываются. Так, что в обработчике информация уже будет утрачена.
Спасибо за подсказку, сделаю флаги и общую функцию, в которой будет логика что за прерывание пришло и было ли другое! В пиках там немного проще сделано: для любого прерывания вызывается всегда одна функция, а в ней уже по флагам разгребаем что было... Я думал, что и тут похожее есть...