Два канала для обоих фронтов импульсов, то есть один канал ловит восходящий фронт, второй - задний, в таком случае длительность равна |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 Неполучается сделать то ли инициализацию таймера, то ли захват импульсов. Приведенные примеры в ветке или приводят к зависанию мк или просто не работают
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 30
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения