Цитата(BlackOps @ Sep 10 2012, 11:43)

тут такое дело: нет, период не важен. Он всегда будет одинаковый. Но ширина пульса разная может быть. Например пока ширина входного пульса меньше 1.5мс я не хочу чтобы срабатывало прерывание, но если вдруг ширина превысит скажем 1.5мс, мне нужно чтобы сработало прерывание.
дело в том что я не хочу отвлекать процессор кажтые 1.5мс на прерывание чтобы проверять ширину импульса. т.е. пусть это дело аппаратно работает, но только при вышеуказанном условии отвлечет процессор прерыванием.
понятно, тогда покопаюсь дальше, напишу. а так если есть еще какие идеи будет интерестно узнать.
Для тактовой 168МГц 1.5мс это аж 252000 тактов.
Если процедура обработки займет 100 тактов, то проц будет нагружен на 0.04%.
Можно не заморачиваться и сделать обработку в прерывании.
Хотя есть одна уязвимость. Если на вход подать меандр с частотой мегагерц 10, то скорее всего все умрет.
Я бы сделал так:
1. У Вас уже есть механизим получения длительности и периода импульса аппаратно на таймере (правда, прерывания по первому и второму каналу нужно отключить).
2. Добавляете еще один (третий) канал сравнения на 1.5мс (и включаете ему прерывания).
3. При возникновении события по третьему каналу входим в прерывание и анализируем флаги в статусном регистре. Если флаг второго канала установлен, то спад от импульса пришел ранее 1.5мс и это короткий имульс - отбрасываем. Если флаг второго канала НЕ установлен, то спада импульса еще не было, и получается импульс шире 1.5мс - интересующий нас случай.
4. Можно показать, что сигналы короче 1.5мс (частота выше 666Гц) не будут вызывать прерывания. В самом хужшем случае прерывания будут каждые 1.5мс с указанной выше нагрузкой (порядка 0.04%).