Кто любит RISC в жизни, заходим, не стесняемся.
Ответить

Исполнение кода каждые 10 микросекунд

Ср фев 15, 2023 08:06:08

Добрые люди помогите.
Проверьте мой код, главным образом настройку таймера в JPG, будет ли исполнение кода каждые 10 микросекунд
запутался с периодами что то.....

Код:
void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
{
  if(htim->Instance == TIM2) //100кГц
      {
      if (t>0) t--;
      }

//в главном цикле вызывается бесконечно эта функция:
void func(...)
{
if (t > 0) return; //выжидаем заданное число десятков микросекунд

t=1;
//сюда переходим каждые 10 микросекунд, за исключением первого раза когда таймер не синхронизирован с моментом присвоения t

}
Вложения
таймер2.jpg
(120.79 KiB) Скачиваний: 26
тактирование.jpg
(99.68 KiB) Скачиваний: 24

Re: Исполнение кода каждые 10 микросекунд

Ср фев 15, 2023 13:50:53

Предделитель можно выставить в 0, тогда частота не будет делиться.
А значение счётчика установить в (50000000 / 100000) - 1 = 499.

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

Если код маленький - его можно было бы обрабатывать прямо в прерывании.
Ответить