Например TDA7294

Форум РадиоКот :: Просмотр темы - F042, таймер и странное поведение мигалок
Форум РадиоКот
http://radiokot.ru/forum/

F042, таймер и странное поведение мигалок
http://radiokot.ru/forum/viewtopic.php?f=59&t=174994
Страница 1 из 1

Автор:  aaleksander [ Пт янв 15, 2021 23:07:38 ]
Заголовок сообщения:  F042, таймер и странное поведение мигалок

Добрый вечер.

Пытаюсь написать таймер для конечных автоматов и вот какая странность.
Настроил таймер на 1мс.
Прерывание от таймера простейшее:
Код:
extern uint32_t blinkMS;
void TIM14_IRQHandler(void)
{
  HAL_TIM_IRQHandler(&htim14);

  if( blinkMS > 0 )
     blinkMS--;
}


Первый вариант мигалки, он работает:
Родил такое от безысходности, в приступе вдохновения :oops:


А вот второй, по смыслу такой же, не пашет. TogglePin вызывается только один раз и все, больше туда не заходит.


Зато, если его немного переиначить и сделать так:

То он начинает мигать, но очень хаотично, импульсы нестабильны и отличаются по длине в 1.5-2 раза.

Вопрос: что за фигня творится и как это победить?!

Фото первой и третьей мигалок прилагаю:
Изображение Изображение

P.S. Вариант с запретом/разрешением прерывания ничего не менят.

Автор:  Reflector [ Пт янв 15, 2021 23:24:57 ]
Заголовок сообщения:  Re: F042, таймер и странное поведение мигалок

Volatile для blinkMS добавь.

Автор:  jcxz [ Сб янв 16, 2021 15:35:10 ]
Заголовок сообщения:  Re: F042, таймер и странное поведение мигалок

Если добавите volatile для blinkMS, то blinkMS нужно копировать в локальную переменную в начале цикла один раз. И потом работать только с её копией.

Страница 1 из 1 Часовой пояс: UTC + 3 часа
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/