Size: a a a

2021 February 21

ЭН

Эдуард Неткачёв... in STM32
Можно взвести ещё один таймер, прерывание по которому будет взводится в вашем обработчике. таким образом каждый раз попадая в обработчик устанавливаем count таймера и взводим прерывание по обнулению или переполнению. через некоторое время бездействия он сработает и будет понятно что код принят полностью
источник

s

stD in STM32
Дмитрий Пилипенко
привет всем
Есть плата на stm32f401ccu
делаю инфракрасный приёмник в cubeide
В инете много инфы но ничего внятного или очень старого
Сделал на основе таймера и 2х каналах захвата.
Собсно сами импульсы у меня захватываются и я вижу их длительность, всё соответствует. Но есть проблемка, как понять что импульсы закончились?

Количество импульсов может быть разное.
основной код:
void HAL_TIM_IC_CaptureCallback(TIM_HandleTypeDef *htim)
{
 if (htim->Instance == TIM2)
 {
   if(htim->Channel == HAL_TIM_ACTIVE_CHANNEL_1)
   {
     TIM2->CNT = 0;
     period = HAL_TIM_ReadCapturedValue(&htim2, TIM_CHANNEL_1);
     pulseWidth = HAL_TIM_ReadCapturedValue(&htim2, TIM_CHANNEL_2);
     printf("period=%i pulseWidth=%i\n", period, pulseWidth);
   }
 }
}
источник

ДП

Дмитрий Пилипенко... in STM32
Эдуард Неткачёв
Можно взвести ещё один таймер, прерывание по которому будет взводится в вашем обработчике. таким образом каждый раз попадая в обработчик устанавливаем count таймера и взводим прерывание по обнулению или переполнению. через некоторое время бездействия он сработает и будет понятно что код принят полностью
Про ещё один таймер я думал. Мне кажется 3 таймера не логично.
источник

ЭН

Эдуард Неткачёв... in STM32
почему?
источник

ЭН

Эдуард Неткачёв... in STM32
если вы знаете алгоритм кодов, то можно налету их определять. но я так понимаю что у вас устройство должно любой код тупо скопировать и сделать дубль. верно?
источник

ДП

Дмитрий Пилипенко... in STM32
Может конечно и не прав. Но 3 таймера не жирновато-ли для одного определения импульсов.
источник

ДП

Дмитрий Пилипенко... in STM32
Нет, дублировать не надо.
Но кодов может быть 100+ и они обновляются
источник

s

stD in STM32
Я же выше дал ссылку. Там один таймер, и расшифровка кодов пультов.
источник

ДП

Дмитрий Пилипенко... in STM32
Это я одной из первых смотрел. И конечно могу ошибаться, но мне кажется всегда молотить и проверять это не разумно, лучше по прерыванию начинать счёт.
Если не прав, поправьте, я тут ОЧЕНЬ новичёк )
источник

s

stD in STM32
Дмитрий Пилипенко
Это я одной из первых смотрел. И конечно могу ошибаться, но мне кажется всегда молотить и проверять это не разумно, лучше по прерыванию начинать счёт.
Если не прав, поправьте, я тут ОЧЕНЬ новичёк )
Да, я тоже по началу думал что постоянно вызывать прерывание не в кайф, но потом забил на это. Есть не просит - пускай молотит.
источник

ДП

Дмитрий Пилипенко... in STM32
У меня на аккумуляторе будет, конечно не надо год рабоать и даже месяц, но всё же хотелось что-то оптимальнее, но если это в программной плане проще, может и забью )
источник

s

stD in STM32
Если автономное, то да, стоит попробовать другой подход. Впрочем таймер не так уж много ест.
источник

ЭН

Эдуард Неткачёв... in STM32
с точки зрения энергоэффективности это не выгодно. но так то можно было и на 1 таймере весь код построить.
конечно же лучший вариант - работа на прерываниях.
так вот мне кажется почему бы не задействовать ещё 1 таймер для определения окончания приёма данных. тем более ресурсов контроллера много не требуется - пару тактов на обнуление счётчика и установка флага прерывания. а далее прерывание с обработчиком. всё.
источник

ЭН

Эдуард Неткачёв... in STM32
тем более вы же взводите работу прерывания один раз. оно не будет молотить постоянно.
источник

s

stD in STM32
Суть то не в этом, таймер то в любом случае будет работать, что мой вариант, что другой - шина в любом случае тактируется, счётчик тикает.
источник

ДП

Дмитрий Пилипенко... in STM32
Я думаю если уж делать таймер, то тогда один и как в https://istarik.ru/blog/stm32/125.html
да и код будет проще.
Попробую для stm32f401 переделать код.
Спасибо
источник

s

stD in STM32
Переделывать ничего не надо, настройте таймер, и библиотеку подсуньте.
источник

u

unt0njs in STM32
Добрый вечер! Подскажите, пожалуйста, возможно ли вернуть в Keil 5 разнообразие окошек с периферией в режиме отладки? В Keil 4 их на порядок больше
источник
2021 February 22

VO

Vitaly Oleinik in STM32
Эдуард Неткачёв
Сначала необходимо подключить устройство к компьютеру и потом включить компьютер. Только в этом случае устройство видится как COM-порт и работает до отключения устройства от ПК.
Я правильно понимаю?
Если во время работы ПК устройство отключить и снова подключить, то оно видится как DFU-устройство для программирования?
именно так. Если точнее - до подключения любого другого устройства к этому порту. То есть если я работаю в Arduino IDE, и просто отсоединяю плату blue pill - соединение не изменяет параметров. Можно снова законнектить плату, и она останется на этом порте. Но если подключить любую другую плату, или эту же плату выбрать как другой тип - соединение с портом теряется, и опция выбора порта становится не активна ( серое окошко)
источник

VO

Vitaly Oleinik in STM32
аналогичная проблема была у коллеги. Он работает в линукс, и руками допилил этот трабл
источник