Developer_S
Oct 15 2008, 12:41
Здравствуйте, коллеги.
Напоролся на странную проблему. Написал функцию измерения периода входных импульсов для TIM0 с использованием Capture_1. Задействованы прерывания по "переполнению" и "захвату". Всё великолепно работает! Никаких претензий!
Затем решил задействовать для другого аналогичного сигнала Capture_2. Оказалось, что прерывание TIM_IT_IC2 не вызывается. Решил, что может со входом что случилось - ну, мало ли, к примеру, статикой прошило.
Решил временно задействовать TIM2 с запуском "захвата" по TIM_IT_IC1. В итоге: по переполнению прервание работает, а по "захвату" не хочет, хотя всё скопировал с рабочих процедур TIM0, которые нормально пашут. Проверил: TIM0 везде заменил на TIM2.
PS: пользуюсь последней версией библиотеки ST.
Warlockwolf
Oct 15 2008, 18:02
проверте настройку ножек на вход выход. IO которые.
у меня был интересный случай, переразвел плату, и в процессе поменял некоторые ноги (чтоб не тянуть далеко дорожки) чуть изменил пргограмму, зашил. и неработает. по порту спи на входе мусор. думал при перепайке сдохла микросхема. Но оказалось все проще, порт номер Хх, ножка 1 SPI MISO, ножка 2- оут таймера с частотой на выходе 7мегагерц. оказалось по невнимательности , оставил на ножке которая оут таймера --GPIO_Struct.GPIO_IPConnected = GPIO_IPConnected_Enable; и это както влияло на соседнюю ножку, на которой сидит спи мисо. исправил GPIO_Struct.GPIO_IPConnected = GPIO_IPConnected_Disable; и вуаля все заработало.
koyodza
Oct 17 2008, 17:23
Делал захват по разным таймерам (кажется 0, 1 и 2) - проблем с самим захватом не было, но прерывания по захвату я не использовал - меня интересовало только значение, которое считывалось асинхронно, а флаг захвата проверлся поллингом. Проверьте внимательно настройки пинов, как указывал коллега Warlockwolf.
Developer_S
Oct 20 2008, 08:32
Вроде все правильно сделал (Pin_6.0 для TIM0 и Pin_6.2 для TIM2)
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0 | GPIO_Pin_2;
GPIO_InitStructure.GPIO_Direction = GPIO_PinInput;
GPIO_InitStructure.GPIO_Type = GPIO_Type_PushPull;
GPIO_InitStructure.GPIO_IPInputConnected = GPIO_IPInputConnected_Enable;
GPIO_InitStructure.GPIO_Alternate = GPIO_InputAlt1;
Warlockwolf
Oct 20 2008, 11:48
Посмотрите настройки соседних ног 6 порта. не только 0 и 2, у меня спи тоже настроен был правильно, а вот выход таймера неправильно.
Usatyj
Oct 20 2008, 13:01
Цитата(Warlockwolf @ Oct 20 2008, 15:48)

Посмотрите настройки соседних ног 6 порта. не только 0 и 2, у меня спи тоже настроен был правильно, а вот выход таймера неправильно.
Бывает еще, перед настройкой ног порта забываешь обнулить GPIO_InitStructure и вот тогда таакое получается! проверь и на это тоже.
Для просмотра полной версии этой страницы, пожалуйста,
пройдите по ссылке.