STM32 библиотека работы с ИК пультом (NEC)

Кто любит RISC в жизни, заходим, не стесняемся.
Ответить
Встал на лапы
Аватара пользователя
Сообщения: 145
Зарегистрирован: Пн апр 02, 2012 15:56:23

Сообщение azhel12 »

Два канала для обоих фронтов импульсов, то есть один канал ловит восходящий фронт, второй - задний, в таком случае длительность равна |CCR2 - CCR1|. Конкретно в вашей реализации (у меня тоже так сделано) немного не так, первый канал является источником триггерного сигнала, по которому происходит сброс счетчика таймера, второй ловит конец импульса и в регистре CCR2 лежит результат (примерно так).

UPD: Мне вот ЭТА статья помогла разобраться, как на таймере сделать ИК-приемник.
Реклама
Поставщик валерьянки для Кота
Сообщения: 2089
Зарегистрирован: Вс июн 19, 2016 09:32:03

Сообщение Reflector »

[uquote="zenon",url="/forum/viewtopic.php?p=4358576#p4358576"]Для TIM14 и TIM16 у меня компилируется норм, даже не ругается не на что, но не заводится... наверное всё-так потому что одноканальные, как сказали выше, только не понял зачем два канала?[/uquote]
Регистры и константы из расчета на самый жирный таймер определены, если дополнительно ничего не проверять, то можно спокойно использовать регистры которых для конкретного таймера нет, все нормально скомпилируется :) А два канала нужны потому что в режиме PWM input два регистра CCRx задействованы, для периода и скважности.
Реклама
Прорезались зубы
Аватара пользователя
Сообщения: 202
Зарегистрирован: Сб янв 09, 2016 15:51:17

Сообщение AVI-crak »

[uquote="Reflector",url="/forum/viewtopic.php?p=4358514#p4358514"]Скомпилируется только если подставить подходящий таймер, канал и пин.[/uquote]
То-есть нужно угадывать чтоб оно просто собралось???

Добавлено after 5 minutes 56 seconds:
[uquote="zenon",url="/forum/viewtopic.php?p=4358576#p4358576"]Ноги поменять глянув в даташит вообще труда не составляет.[/uquote]
Приятно слышать. Однако отказываться от удобного инструмента всё-же не стоит.
Контактная информация:
Поставщик валерьянки для Кота
Сообщения: 2089
Зарегистрирован: Вс июн 19, 2016 09:32:03

Сообщение Reflector »

[uquote="AVI-crak",url="/forum/viewtopic.php?p=4359121#p4359121"]То-есть нужно угадывать чтоб оно просто собралось???[/uquote]
Вот же пример zenon перед глазами, когда пытаются подставить TIM14/16 при этом код компилируется и не работает, а почему не понятно. Может нужен таймер минимум двухканальный, может пин неправильный или AF, может с частотами что-то не то или вообще припаял не туда... Это и есть гадание, а были бы там проверки, типа как у меня, то TIM14/16 сразу бы отпали, а кроме них там TIM17, с которым тоже не соберется, и рабочие 4-х канальные.

ps. Zenon, ты же в курсе, что у F030K6T6 есть TIM2 поскольку по факту это F031?
Реклама
Эиком - электронные компоненты и радиодетали
Опытный кот
Аватара пользователя
Сообщения: 848
Зарегистрирован: Ср авг 03, 2022 05:22:56

Сообщение MLX90640 »

...а потом гадать, почему же не скомпилировалось? Н-да, те же яйки, но с другой стороны. Один фик - в мануал смотреть.
А вот Куб как инструмент полезен для визуализации при подборе вариантов распиновок. И тем более, у него очень правильная идеология - генерация готового кода, не содержащего посторонних портянок. Кодогенератор просто не сгенерирует неподходящий код исходя из выбранных настроек, а разрешенные настройки сразу же отображаются. Именно такой принцип исповедуют матерые программисты издревле - "много раз повторяешь одни и те же операции в различных вариантах? создай кодогенератор".
Реклама
Собутыльник Кота
Аватара пользователя
Сообщения: 2562
Зарегистрирован: Вт май 01, 2018 19:44:47

Сообщение VladislavS »

[uquote="AVI-crak",url="/forum/viewtopic.php?p=4359121#p4359121"]То-есть нужно угадывать чтоб оно просто собралось???[/uquote]Не обязательно. Я вот так стараюсь делать. Уже на этапе редактирование доступны только существующие в конкретном контроллере сущности.
СпойлерИзображение

Изображение

Изображение

Изображение

Изображение
tm1.png
(20 КБ) 574 скачивания
tm2.png
(12 КБ) 573 скачивания
tm3.png
(25.1 КБ) 576 скачиваний
tm4.png
(18.33 КБ) 573 скачивания
tm5.png
(8.85 КБ) 566 скачиваний
Реклама
Сверлит текстолит когтями
Аватара пользователя
Сообщения: 1274
Зарегистрирован: Вт окт 23, 2007 10:01:42
Откуда: Волгоград

Сообщение zenon »

Reflector, упс, тут я не в курсе на счёт F031 и TIM2. Вот его как раз ни в stm32f030x6.h, ни в stm32f030f4.pdf нет, ну собственно и не должно, или предлагаешь 031-ые хедеры подсунуть?
Контактная информация:
Встал на лапы
Аватара пользователя
Сообщения: 145
Зарегистрирован: Пн апр 02, 2012 15:56:23

Сообщение azhel12 »

[uquote="VladislavS",url="/forum/viewtopic.php?p=4359200#p4359200"]Я вот так стараюсь делать.[/uquote]
А внутри как, сами таймеры понятно, через ifdef TIMx using TimerX = ..., а вот каналы я что-то смог угадать :(

Как-то распарсили SVD-шки и нагенерировали из них код соответствующий?
Собутыльник Кота
Аватара пользователя
Сообщения: 2562
Зарегистрирован: Вт май 01, 2018 19:44:47

Сообщение VladislavS »

azhel12, тут это злобный офф. Напишу в личку. Вкратце, всё на основе заголовочного файла контроллера, в нём всё необходимое есть.
Поставщик валерьянки для Кота
Сообщения: 2089
Зарегистрирован: Вс июн 19, 2016 09:32:03

Сообщение Reflector »

[uquote="zenon",url="/forum/viewtopic.php?p=4359204#p4359204"]или предлагаешь 031-ые хедеры подсунуть?[/uquote]
Я в подобных случаях сразу проект для F031 создаю.

Добавлено after 20 minutes 26 seconds:
[uquote="MLX90640",url="/forum/viewtopic.php?p=4359180#p4359180"]...а потом гадать, почему же не скомпилировалось? Н-да, те же яйки, но с другой стороны. Один фик - в мануал смотреть.[/uquote]
Если не компилируется, то получим ошибки говорящие о том, что таймеру не хватает SlaveCtrl или пин для конкретного канала указан не верно, а для AF не будет ошибки, он автоматически подставляется.
Сверлит текстолит когтями
Аватара пользователя
Сообщения: 1274
Зарегистрирован: Вт окт 23, 2007 10:01:42
Откуда: Волгоград

Сообщение zenon »

Во блин как, создал проект для F031K6 (stm32f031x6.h).
Поискал TIM2_CH1... нету, есть TIM2_CH1_ETR на PA0, ну пусть думаю будет так.
Ну и в инит:

Код: Выделить всё

RCC->APB1ENR  |= RCC_APB1ENR_TIM2EN;
RCC->AHBENR   |= RCC_AHBENR_GPIOAEN;
GPIOA->MODER  |= _VAL2FLD(GPIO_MODER_MODER0, 2); 
GPIOA->AFR[0] |= _VAL2FLD(GPIO_AFRL_AFSEL0, 2);
... и вы же посмотрите на эту ять - работает. :)
Спасибо!

ы. А раз пошла такая гульба - случаем нет ли у 031-го в 32-х ногом теле недокументированная возможность подключить внешнюю опору? :)
Контактная информация:
Собутыльник Кота
Аватара пользователя
Сообщения: 2516
Зарегистрирован: Пт июл 12, 2019 22:52:01

Сообщение Eddy_Em »

[uquote="Reflector",url="/forum/viewtopic.php?p=4359148#p4359148"]Zenon, ты же в курсе, что у F030K6T6 есть TIM2 поскольку по факту это F031?[/uquote]
А есть ли где сводная таблица таких "недокументированных возможностей"? Скажем, те же F100, у которых как бы нет USB, китайцы отлично в st-linkv2 пихали, и эта USB там работала! Здесь вот у человека "недокументированный" таймер начал ШИМ выдавать...
Ну и интересно, насколько можно полагаться на эти "недокументированные возможности"? А то вдруг - бац, и партия, где все это не работает??
Linux rules! Windows must die. Здравомыслящий человек добровольно будет пользоваться мастдаем лишь в двух случаях: под дулом автомата или под влиянием анального зонда.
Я на гитхабе, в ЖЖ
Контактная информация:
Собутыльник Кота
Аватара пользователя
Сообщения: 2562
Зарегистрирован: Вт май 01, 2018 19:44:47

Сообщение VladislavS »

[uquote="Eddy_Em",url="/forum/viewtopic.php?p=4359375#p4359375"]Скажем, те же F100, у которых как бы нет USB, китайцы отлично в st-linkv2 пихали[/uquote]Таки не F100, а F102.
Поставщик валерьянки для Кота
Сообщения: 2089
Зарегистрирован: Вс июн 19, 2016 09:32:03

Сообщение Reflector »

F101, У F102 и так USB есть по документации. А F100 у меня и на 72MHz не работал.

Добавлено after 2 minutes 30 seconds:
[uquote="Eddy_Em",url="/forum/viewtopic.php?p=4359375#p4359375"]Ну и интересно, насколько можно полагаться на эти "недокументированные возможности"? А то вдруг - бац, и партия, где все это не работает??[/uquote]
Если прям вся партия не работает, значит китайцы клон сделали, без всего лишнего :)
Прорезались зубы
Аватара пользователя
Сообщения: 202
Зарегистрирован: Сб янв 09, 2016 15:51:17

Сообщение AVI-crak »

[uquote="zenon",url="/forum/viewtopic.php?p=4359358#p4359358"]Во блин как, создал проект для F031K6 (stm32f031x6.h).
Поискал TIM2_CH1... нету, есть TIM2_CH1_ETR на PA0, ну пусть думаю будет так.[/uquote]
Внезапно есть.
Temp.jpg
(193.23 КБ) 124 скачивания
Контактная информация:
Сверлит текстолит когтями
Аватара пользователя
Сообщения: 1274
Зарегистрирован: Вт окт 23, 2007 10:01:42
Откуда: Волгоград

Сообщение zenon »

Изумительно выходит в кубе есть, в мануалах - нет.
Или считать TIM2_CH1 = TIM2_CH1_ETR? (собственно я так и сделал).
Надо ещё в reference глянуть.
Вложения
tim2_ch1_pdf-2.jpg
(137.58 КБ) 88 скачиваний
tim2_ch1_pdf-1.jpg
(138.01 КБ) 85 скачиваний
Контактная информация:
Поставщик валерьянки для Кота
Сообщения: 2089
Зарегистрирован: Вс июн 19, 2016 09:32:03

Сообщение Reflector »

[uquote="zenon",url="/forum/viewtopic.php?p=4359444#p4359444"]Или считать TIM2_CH1 = TIM2_CH1_ETR?[/uquote]TIM2_CH1_ETR означает TIM2_CH1 и TIM2_ETR, просто они на одном AF висят, а могут и на разных.
Родился
Сообщения: 1
Зарегистрирован: Ср сен 04, 2024 19:07:56

Сообщение Aspid2 »

Всем привет. Помогите пожалуйста осилить тему ИК приемника. Имеется CH32v003f4p6
Неполучается сделать то ли инициализацию таймера, то ли захват импульсов.
Приведенные примеры в ветке или приводят к зависанию мк или просто не работают
Ответить

Вернуться в «ARM»