Два канала для обоих фронтов импульсов, то есть один канал ловит восходящий фронт, второй - задний, в таком случае длительность равна |CCR2 - CCR1|. Конкретно в вашей реализации (у меня тоже так сделано) немного не так, первый канал является источником триггерного сигнала, по которому происходит сброс счетчика таймера, второй ловит конец импульса и в регистре CCR2 лежит результат (примерно так).
UPD: Мне вот ЭТА статья помогла разобраться, как на таймере сделать ИК-приемник.
Для TIM14 и TIM16 у меня компилируется норм, даже не ругается не на что, но не заводится... наверное всё-так потому что одноканальные, как сказали выше, только не понял зачем два канала?
Регистры и константы из расчета на самый жирный таймер определены, если дополнительно ничего не проверять, то можно спокойно использовать регистры которых для конкретного таймера нет, все нормально скомпилируется А два канала нужны потому что в режиме PWM input два регистра CCRx задействованы, для периода и скважности.
То-есть нужно угадывать чтоб оно просто собралось???
Вот же пример zenon перед глазами, когда пытаются подставить TIM14/16 при этом код компилируется и не работает, а почему не понятно. Может нужен таймер минимум двухканальный, может пин неправильный или AF, может с частотами что-то не то или вообще припаял не туда... Это и есть гадание, а были бы там проверки, типа как у меня, то TIM14/16 сразу бы отпали, а кроме них там TIM17, с которым тоже не соберется, и рабочие 4-х канальные.
ps. Zenon, ты же в курсе, что у F030K6T6 есть TIM2 поскольку по факту это F031?
...а потом гадать, почему же не скомпилировалось? Н-да, те же яйки, но с другой стороны. Один фик - в мануал смотреть. А вот Куб как инструмент полезен для визуализации при подборе вариантов распиновок. И тем более, у него очень правильная идеология - генерация готового кода, не содержащего посторонних портянок. Кодогенератор просто не сгенерирует неподходящий код исходя из выбранных настроек, а разрешенные настройки сразу же отображаются. Именно такой принцип исповедуют матерые программисты издревле - "много раз повторяешь одни и те же операции в различных вариантах? создай кодогенератор".
Reflector, упс, тут я не в курсе на счёт F031 и TIM2. Вот его как раз ни в stm32f030x6.h, ни в stm32f030f4.pdf нет, ну собственно и не должно, или предлагаешь 031-ые хедеры подсунуть?
...а потом гадать, почему же не скомпилировалось? Н-да, те же яйки, но с другой стороны. Один фик - в мануал смотреть.
Если не компилируется, то получим ошибки говорящие о том, что таймеру не хватает SlaveCtrl или пин для конкретного канала указан не верно, а для AF не будет ошибки, он автоматически подставляется.
Zenon, ты же в курсе, что у F030K6T6 есть TIM2 поскольку по факту это F031?
А есть ли где сводная таблица таких "недокументированных возможностей"? Скажем, те же F100, у которых как бы нет USB, китайцы отлично в st-linkv2 пихали, и эта USB там работала! Здесь вот у человека "недокументированный" таймер начал ШИМ выдавать... Ну и интересно, насколько можно полагаться на эти "недокументированные возможности"? А то вдруг - бац, и партия, где все это не работает??
_________________ Linux rules! Windows must die. Здравомыслящий человек добровольно будет пользоваться мастдаем лишь в двух случаях: под дулом автомата или под влиянием анального зонда. Я на гитхабе, в ЖЖ
Заголовок сообщения: Re: STM32 библиотека работы с ИК пультом (NEC)
Добавлено: Ср сен 04, 2024 23:10:05
Родился
Зарегистрирован: Ср сен 04, 2024 19:07:56 Сообщений: 1
Рейтинг сообщения:0
Всем привет. Помогите пожалуйста осилить тему ИК приемника. Имеется CH32v003f4p6 Неполучается сделать то ли инициализацию таймера, то ли захват импульсов. Приведенные примеры в ветке или приводят к зависанию мк или просто не работают
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения