Приветствую.
На (+)-вход компаратора поступают импульсы, (-)-вход внутри подключен к DAC и задаёт уровень, выше которого компаратор выделяет импульсы. Выход компаратора назначен на Input Capture 4 второго таймера. 4-й вход таймера настроен на регистрацию фронта. 3-й вход таймера настроен на регистрацию спада, а в качестве входа у него установлен 4-й канал + на него срабатывает прерывание.
Всё это сделано чтобы можно было измерять длину импульса. В прерывании я читаю из TIM2->CCR4 счётчик таймера на момент фронта импульса, а из TIM2->CCR3 - счётчик в момент спада. По разнице TIM2->CCR3 - TIM2->CCR4 определяю длительность импульса.
Всё это работает и претензий к этому у меня нету.Теперь понадобилось прикрутить DMA так, чтобы в память сохранялась только длительность импульса. Для этого по даташиту настроил для режима slave mode вот что:
1. Выставил вход триггера - TI1FP1
2. При срабатывании триггера должен сбрасываться счётчик таймера
3. Включил режим slave mode
После этого у меня в TIM2->CCR3 должна сохраняться длительность импульса, а в TIM2->CCR4 - период. Но этого не происходит. Счётчик не сбрасывается и всё работает по старому. Вообще, возможен ли режим PWM Input, если в качестве источника работает встроенный компаратор?
Эх, похоже что 3-й и 4-й входы таймера можно мапить только на TI4 и TI3, а на вход триггера можно назначать только TI1 или TI2. Так что затея не взлетит
Интересно, почему сделали такое ограничение?
Сообщение отредактировал ArtDenis - Jun 9 2015, 10:51