Цитата(BlackOps @ Sep 7 2012, 07:24)

Сейчас я например могу измерять ширину входного пульса и его период. Ну и по мере активности входного пульса срабатывается прерывание, и я внутри прерывания могу видеть значения периода и ширины пульса.
Но теперь мне нужно чтобы прерывание срабатывало только тогда когда скажем ширина пульса имеет определенное значение (или выше/ниже определенного значения).
Период импульса не важен?
Если нужна аппаратная реализация с генерацией прерывания при поступлении импулься широной от T1 до T2 без участия CPU, то самое простое что мне видится:
- нстроить таймер на запуск по фронту с входа;
- настроить первый канал на время T1 с генерацией DMA-запроса;
- настроить второй канал на время T2 с генерацией DMA-запроса;
- DMA-запрос от первого канала настроить на запись управляющего слова в регистр РАЗРЕШЕНИЯ прерывания от внешнего входа по спаду импульса;
- DMA-запрос от второго канала настроить на запись управляющего слова в регистр ЗАПРЕЩЕНИЯ прерывания от внешнего входа по спаду импульса;
- иметь ввиду, что DMA имеет "приличное" время отклика на событие (порядка 12 тактов), поэтому очень короткие импульсы (с точность 100нс) отловить не получится.
Читать TIMER, DMA, EXTI.
Надеюсь, ясно описал)
PS. Кстати, может и не получится(
Чисто аппаратная реализация (без участия CPU) не всегда возможна.
Почему нельзя использовать прерывания?