расширить прерывания невозможно?

whoim
Offline
Зарегистрирован: 03.11.2011

по даташиту на 32 атмеге три прерывания (int0, int1, int2) если я ничего не путаю. Расширить никак? 

whoim
Offline
Зарегистрирован: 03.11.2011

 подумал тут - в теории если бы микросхема - демультиплексор слала сигнал со входа на int, а на цйифровые входы - некий "код" сдвига, по которому можно было бы выяснить, какой из входов на микрухне среагировал - было бы рабочая штука. Может такое есть?

step962
Offline
Зарегистрирован: 23.05.2011

А какие состояния вы хотите отслеживать? Если переход на высокий/низкий уровень, то подавайте сигнал от источника прерывания на два пина - на один из INT-пинов и на обычный цифровой вход. После генерации прерывания оббегите все такие цифровые входы и выясните, "кто виноват". Возможно, перед INT-пином придется какую-нибудь логическую микросхему внедрить для защиты от возможных наводок - что-то из разряда "многоИ-НЕ" - но это уже детали реализации...

Что-то вроде:

whoim
Offline
Зарегистрирован: 03.11.2011

 Нужно именно прерывание, от датчика импульсы считать (скорость, тахометр, пульс потока топлива). Ваш вариант очень интересный! Пойду читать даташит на 7421N

step962
Offline
Зарегистрирован: 23.05.2011

Ну такие датчики, скорее всего, будут давать весьма широкие импульсы (как минимум десятки мкс), которые можно рассматнивать как прерывание по изменению состояния (переход в HIGH, например) и МК вполне успеет отработать задачу выявления источника прерывания.

step962
Offline
Зарегистрирован: 23.05.2011

Да, совсем упустил из виду, что возможна схема без цифровой логики. Для этого необходимо использовать прерывания по изменению состояния пинов - PCINT0 и PCINT1.

Вот тут обсуждается вопрос использования прерываний PCINTx, а тут приведена полная таблица всех возможных на Atmel'ах прерываний.