Например TDA7294

Форум РадиоКот • Просмотр темы - фазоимпульсное управление на таймерах STM32
Форум РадиоКот
Здесь можно немножко помяукать :)





Текущее время: Вт апр 16, 2024 12:01:45

Часовой пояс: UTC + 3 часа


ПРЯМО СЕЙЧАС:



Начать новую тему Ответить на тему  [ Сообщений: 65 ]    , 2, ,  
Автор Сообщение
Не в сети
 Заголовок сообщения: Re: фазоимпульсное управление на таймерах STM32
СообщениеДобавлено: Ср июл 06, 2016 11:27:42 
Собутыльник Кота
Аватар пользователя

Карма: 29
Рейтинг сообщений: 645
Зарегистрирован: Сб май 14, 2011 21:16:04
Сообщений: 2690
Откуда: г. Чайковский
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
Нормально все dosikus расписюлил :beer: . Все стало на свои места. Я когда разбирался с таймерам смотрел на схему таймеров. Там написано, что таймер тактируется от Internal Clock. Я решил что это частота ядра (а по факту опять случайное совпадение по частоте), хотя там же подписано TIMx CLK from RCC.
Поглядите, шина работает на своей допустимой частоте, CLK таймера умножается на 2.

_________________
Изображение
Добро всегда побеждает зло. Поэтому кто победил - тот и добрый.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: фазоимпульсное управление на таймерах STM32
СообщениеДобавлено: Ср июл 06, 2016 17:06:38 
Нашел транзистор. Понюхал.
Аватар пользователя

Зарегистрирован: Пн янв 24, 2011 01:51:48
Сообщений: 197
Откуда: Украина, Киев
Рейтинг сообщения: 0
и когда уже начнут писать datasheet-ы на русском))))

запускаю в режме ШИМ все работает и сихронизируется от детектора нуля. только вот может запрыгивать в следующий полупериод
Код:
void MX_TIM2_Init(void)
{

  TIM_ClockConfigTypeDef sClockSourceConfig;
  TIM_SlaveConfigTypeDef sSlaveConfig;
  TIM_MasterConfigTypeDef sMasterConfig;
  TIM_OC_InitTypeDef sConfigOC;

  htim2.Instance = TIM2;
  htim2.Init.Prescaler = 7200;
  htim2.Init.CounterMode = TIM_COUNTERMODE_UP;
  htim2.Init.Period = 100;
  htim2.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1;
  HAL_TIM_Base_Init(&htim2);

  sClockSourceConfig.ClockSource = TIM_CLOCKSOURCE_INTERNAL;
  HAL_TIM_ConfigClockSource(&htim2, &sClockSourceConfig);

  HAL_TIM_PWM_Init(&htim2);

  sSlaveConfig.SlaveMode = TIM_SLAVEMODE_RESET;
  sSlaveConfig.InputTrigger = TIM_TS_ETRF;
  sSlaveConfig.TriggerPolarity = TIM_TRIGGERPOLARITY_NONINVERTED;
  sSlaveConfig.TriggerPrescaler = TIM_TRIGGERPRESCALER_DIV1;
  sSlaveConfig.TriggerFilter = 0;
  HAL_TIM_SlaveConfigSynchronization(&htim2, &sSlaveConfig);

  sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET;
  sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE;
  HAL_TIMEx_MasterConfigSynchronization(&htim2, &sMasterConfig);

  sConfigOC.OCMode = TIM_OCMODE_PWM1;
  sConfigOC.Pulse = 75;
  sConfigOC.OCPolarity = TIM_OCPOLARITY_HIGH;
  sConfigOC.OCFastMode = TIM_OCFAST_DISABLE;
  HAL_TIM_PWM_ConfigChannel(&htim2, &sConfigOC, TIM_CHANNEL_3);

}

int main(void)
{
  HAL_Init();
  SystemClock_Config();
  MX_GPIO_Init();
  MX_TIM2_Init();
   
        if(HAL_TIM_PWM_Start(&htim2, TIM_CHANNEL_3) != HAL_OK)
          printf("\r\nrror -> HAL_TIM_PWM_Start(&htim2, TIM_CHANNEL_3)");

        HAL_GPIO_TogglePin(GPIOB, GPIO_PIN_7);
        printf("\r\nOK");

  while(1);
}
запускаю в режме одиночного запуска ничего не работает. может я что то не так делаю ткните носом
Код:
void MX_TIM2_Init(void)
{

  TIM_ClockConfigTypeDef sClockSourceConfig;
  TIM_SlaveConfigTypeDef sSlaveConfig;
  TIM_MasterConfigTypeDef sMasterConfig;
  TIM_OC_InitTypeDef sConfigOC;

  htim2.Instance = TIM2;
  htim2.Init.Prescaler = 7200;
  htim2.Init.CounterMode = TIM_COUNTERMODE_UP;
  htim2.Init.Period = 100;
  htim2.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1;
  HAL_TIM_Base_Init(&htim2);

  sClockSourceConfig.ClockSource = TIM_CLOCKSOURCE_INTERNAL;
  HAL_TIM_ConfigClockSource(&htim2, &sClockSourceConfig);

  HAL_TIM_PWM_Init(&htim2);

  HAL_TIM_OnePulse_Init(&htim2, TIM_OPMODE_SINGLE);

  sSlaveConfig.SlaveMode = TIM_SLAVEMODE_RESET;
  sSlaveConfig.InputTrigger = TIM_TS_ETRF;
  sSlaveConfig.TriggerPolarity = TIM_TRIGGERPOLARITY_NONINVERTED;
  sSlaveConfig.TriggerPrescaler = TIM_TRIGGERPRESCALER_DIV1;
  sSlaveConfig.TriggerFilter = 0;
  HAL_TIM_SlaveConfigSynchronization(&htim2, &sSlaveConfig);

  sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET;
  sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE;
  HAL_TIMEx_MasterConfigSynchronization(&htim2, &sMasterConfig);

  sConfigOC.OCMode = TIM_OCMODE_PWM1;
  sConfigOC.Pulse = 75;
  sConfigOC.OCPolarity = TIM_OCPOLARITY_HIGH;
  sConfigOC.OCFastMode = TIM_OCFAST_DISABLE;
  HAL_TIM_PWM_ConfigChannel(&htim2, &sConfigOC, TIM_CHANNEL_3);

}

int main(void)
{
  HAL_Init();
  SystemClock_Config();
  MX_GPIO_Init();
  MX_TIM2_Init();
   
        if(HAL_TIM_OnePulse_Start(&htim2, TIM_CHANNEL_3) != HAL_OK)
          printf("\r\nerror -> HAL_TIM_OnePulse_Start(&htim2, TIM_CHANNEL_3)");

        HAL_GPIO_TogglePin(GPIOB, GPIO_PIN_7);
        printf("\r\nOK");

  while(1);
}


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: фазоимпульсное управление на таймерах STM32
СообщениеДобавлено: Чт июл 07, 2016 17:47:12 
Нашел транзистор. Понюхал.
Аватар пользователя

Зарегистрирован: Пн янв 24, 2011 01:51:48
Сообщений: 197
Откуда: Украина, Киев
Рейтинг сообщения: 0
ночь в обнимку с осциллографом не прошла даром :)) :)) :)) . представляю инициализацию таймера для фазоимпульсного управления. используется только один таймер.
Код:
void MX_TIM1_Init(void)
{

  TIM_ClockConfigTypeDef sClockSourceConfig;
  TIM_SlaveConfigTypeDef sSlaveConfig;
  TIM_MasterConfigTypeDef sMasterConfig;
  TIM_BreakDeadTimeConfigTypeDef sBreakDeadTimeConfig;
  TIM_OC_InitTypeDef sConfigOC;

  htim1.Instance = TIM1;
  htim1.Init.Prescaler = 360;
  htim1.Init.CounterMode = TIM_COUNTERMODE_UP;
  htim1.Init.Period = 1300;
  htim1.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1;
  htim1.Init.RepetitionCounter = 0;
  HAL_TIM_Base_Init(&htim1);

  sClockSourceConfig.ClockSource = TIM_CLOCKSOURCE_INTERNAL;
  HAL_TIM_ConfigClockSource(&htim1, &sClockSourceConfig);

  HAL_TIM_PWM_Init(&htim1);

  HAL_TIM_OnePulse_Init(&htim1, TIM_OPMODE_SINGLE);

  sSlaveConfig.SlaveMode = TIM_SLAVEMODE_TRIGGER;
  sSlaveConfig.InputTrigger = TIM_TS_ETRF;
  sSlaveConfig.TriggerPolarity = TIM_TRIGGERPOLARITY_INVERTED;
  sSlaveConfig.TriggerPrescaler = TIM_TRIGGERPRESCALER_DIV1;
  sSlaveConfig.TriggerFilter = 0;
  HAL_TIM_SlaveConfigSynchronization(&htim1, &sSlaveConfig);

  sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET;
  sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE;
  HAL_TIMEx_MasterConfigSynchronization(&htim1, &sMasterConfig);

  sBreakDeadTimeConfig.OffStateIDLEMode = TIM_OSSI_DISABLE;
  sBreakDeadTimeConfig.LockLevel = TIM_LOCKLEVEL_OFF;
  sBreakDeadTimeConfig.DeadTime = 0;
  sBreakDeadTimeConfig.BreakState = TIM_BREAK_DISABLE;
  sBreakDeadTimeConfig.BreakPolarity = TIM_BREAKPOLARITY_HIGH;
  sBreakDeadTimeConfig.AutomaticOutput = TIM_AUTOMATICOUTPUT_DISABLE;
  HAL_TIMEx_ConfigBreakDeadTime(&htim1, &sBreakDeadTimeConfig);

  sConfigOC.OCMode = TIM_OCMODE_PWM1;
  sConfigOC.Pulse = 1298;   // учитывается длинна импульса
  sConfigOC.OCPolarity = TIM_OCPOLARITY_LOW;
  sConfigOC.OCFastMode = TIM_OCFAST_DISABLE;
  sConfigOC.OCIdleState = TIM_OCIDLESTATE_RESET;
  sConfigOC.OCNIdleState = TIM_OCNIDLESTATE_RESET;
  HAL_TIM_PWM_ConfigChannel(&htim1, &sConfigOC, TIM_CHANNEL_4);

}


Вернуться наверх
 
PCBWay - всего $5 за 10 печатных плат, первый заказ для новых клиентов БЕСПЛАТЕН

Сборка печатных плат от $30 + БЕСПЛАТНАЯ доставка по всему миру + трафарет

Онлайн просмотровщик Gerber-файлов от PCBWay + Услуги 3D печати
Не в сети
 Заголовок сообщения: Re: фазоимпульсное управление на таймерах STM32
СообщениеДобавлено: Пт ноя 11, 2016 20:27:43 
Грызет канифоль
Аватар пользователя

Зарегистрирован: Пт окт 30, 2009 22:33:56
Сообщений: 262
Откуда: Санкт-Петербург
Рейтинг сообщения: 0
RusikOk писал(а):
используется только один таймер.

Делал я недавно полууправляемый выпрямитель. СИФУ я реализовал на трёх таймерах. Один из таймеров - Systick, его я использовал для формирования угла открытия тиристоров. Второй таймер в режиме захвата по детектору нуля расчитывал период и направление вращение фаз, он же запускал СИФУ. Третий таймер в режиме ШИМ управлял тиристорами. Время открытия тиристоров регулировал регистрами CCP CCP1 (контроллер аля Миландр).


Вернуться наверх
 
Организация питания на основе надежных литиевых аккумуляторов EVE и микросхем азиатского производства

Качественное и безопасное устройство, работающее от аккумулятора, должно учитывать его физические и химические свойства, профили заряда и разряда, их изменение во времени и под влиянием различных условий, таких как температура и ток нагрузки. Мы расскажем о литий-ионных аккумуляторных батареях EVE и нескольких решениях от различных китайских компаний, рекомендуемых для разработок приложений с использованием этих АКБ. Представленные в статье китайские аналоги помогут заменить продукцию западных брендов с оптимизацией цены без потери качества.

Подробнее>>
Не в сети
 Заголовок сообщения: Re: фазоимпульсное управление на таймерах STM32
СообщениеДобавлено: Пт ноя 11, 2016 21:43:58 
Это не хвост, это антенна
Аватар пользователя

Карма: 20
Рейтинг сообщений: 188
Зарегистрирован: Вс мар 28, 2010 12:52:22
Сообщений: 1368
Откуда: Беларусь
Рейтинг сообщения: 0
Делал фазовый регулятор на PIC16. Измерял несколько периодов сетевого напряжения, высчитывал среднее значение. Это среднее делил на 2. Для хорошего регулирования ограничивал угол открытия симистора по 5% от полученного значения полупериода. В противном случае имело место быть перерегулирование (скачек в след. полупериод) и редкий пропуск полуволны.
Работа строилась на одном таймере. При синхронизации в таймер пишется сумма 5% + необходимый угол открытия. По прерыванию запускается этот же таймер на фиксированную длительность импульса. В след. прерывании таймера выполняется запуск на полупериод минус длительность открывающего импульса. Код довольно объемный, но работает красиво. Плюс - абсолютный пофигизм к частоте питающей сети.

_________________
«Еще я хотел бы, чтобы наши ученые изобрели какой-то новый источник энергии, чтобы мы на коленях не ползали даже перед нашими братьями, умоляя их и выпрашивая тонну нефти или кубометр газа», — рассказал белорусский президент.


Вернуться наверх
 
Новый аккумулятор EVE серии PLM для GSM-трекеров, работающих в жёстких условиях (до -40°С)

Компания EVE выпустила новый аккумулятор серии PLM, сочетающий в себе высокую безопасность, длительный срок службы, широкий температурный диапазон и высокую токоотдачу даже при отрицательной температуре. Эти аккумуляторы поддерживают заряд при температуре от -40/-20°С (сниженным значением тока), безопасны (не воспламеняются и не взрываются) при механическом повреждении (протыкание и сдавливание), устойчивы к вибрации. Они могут применяться как для автотранспорта (трекеры, маячки, сигнализация), так и для промышленных устройств мониторинга, IoT-устройств.

Подробнее>>
Не в сети
 Заголовок сообщения: Re: фазоимпульсное управление на таймерах STM32
СообщениеДобавлено: Вт авг 08, 2017 16:24:00 
Родился

Зарегистрирован: Вт авг 08, 2017 15:15:11
Сообщений: 5
Рейтинг сообщения: 0
Я делал управление симистором диммера на одном таймере. Симистор управлялся оптопарой 3052, Таймер 2 в режиме PWM и генерации одного импульса. Детектор ноля подавал на аппаратное прерывание. Функция обработчика прерывания запускала таймер каждый раз по переходу через ноль. Для изменения задержки менял регистр ССR.
Значением в ARR задавал немного меньше полпериода, для защиты от перескока на следующий. Выключаю нагрузку запретом/отключением прерывания.
Работает вполне нормально. Управление при 100 (почти 100 изза защитных интервалов) % получается не коротким импульсом, а в почти весь полупериод. Возможно это энергетически не оптимально, но вполне себе просто и работает.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: фазоимпульсное управление на таймерах STM32
СообщениеДобавлено: Вт авг 08, 2017 16:43:46 
Собутыльник Кота
Аватар пользователя

Карма: 29
Рейтинг сообщений: 645
Зарегистрирован: Сб май 14, 2011 21:16:04
Сообщений: 2690
Откуда: г. Чайковский
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
Я в другом проекте сделал тоже от одного таймера. Только запускается таймер не от прерывания, а от внешнего события и если задержку поправлять не надо, то программа не участвует в формировании управляющего импульса совсем.

AVPD писал(а):
Управление при 100 (почти 100 изза защитных интервалов) % получается не коротким импульсом, а в почти весь полупериод.
Не, смысла нет в этом. Но я так тоже делал, а потом посчитал и оказалось что до 20 градусов задержки открытия мощность практические не теряется, а 20 градусов это прилично.

_________________
Изображение
Добро всегда побеждает зло. Поэтому кто победил - тот и добрый.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: фазоимпульсное управление на таймерах STM32
СообщениеДобавлено: Ср авг 09, 2017 08:47:56 
Родился

Зарегистрирован: Вт авг 08, 2017 15:15:11
Сообщений: 5
Рейтинг сообщения: 0
Я в другом проекте сделал тоже от одного таймера. Только запускается таймер не от прерывания, а от внешнего события и если задержку поправлять не надо, то программа не участвует в формировании управляющего импульса совсем.



AVPD писал(а):
Управление при 100 (почти 100 изза защитных интервалов) % получается не коротким импульсом, а в почти весь полупериод.
Не, смысла нет в этом. Но я так тоже делал, а потом посчитал и оказалось что до 20 градусов задержки открытия мощность практические не теряется, а 20 градусов это прилично.



Можно поподробнее, я только начал изучать контроллеры, и не понял что за "внешнее событие". Что это физически?

Да, обычно так и делают. У меня тоже получается около 1 мс съедается на защитные интервалы в начале и в конце полупериода.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: фазоимпульсное управление на таймерах STM32
СообщениеДобавлено: Ср авг 09, 2017 15:14:08 
Собутыльник Кота
Аватар пользователя

Карма: 29
Рейтинг сообщений: 645
Зарегистрирован: Сб май 14, 2011 21:16:04
Сообщений: 2690
Откуда: г. Чайковский
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
Таймер может получить пинок для старта не только от программы, но и от других некоторых событий. Например для таймера можно выбрать источник события и реакцию его на это событие.

Вот настройка таймера для моего "диммера", я ее неполную выкладываю, только то что должно Вас заинтересовать по данном вопросу.
Код:
//затактируем Таймер2 (36 МГц*2)
      RCC->APB1ENR|=RCC_APB1ENR_TIM2EN;

          ...
               ...
      //----------

      //слайв мод регистр запуск от ETR
      TIM2->SMCR=
            //TIM_SMCR_ETP|   //ETR полярность, спад в данном случае
            TIM_SMCR_TS|   //ETR включен
            TIM_SMCR_SMS_2|TIM_SMCR_SMS_1|   //110: Trigger Mode - The counter starts at a rising edge of the trigger
                  0;
               ....
               ....


При событии фронт на лапе TIM2_CH1_ETR , таймер получает пинок старта аппаратно.

_________________
Изображение
Добро всегда побеждает зло. Поэтому кто победил - тот и добрый.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: фазоимпульсное управление на таймерах STM32
СообщениеДобавлено: Чт авг 10, 2017 07:12:29 
Нашел транзистор. Понюхал.
Аватар пользователя

Зарегистрирован: Пн янв 24, 2011 01:51:48
Сообщений: 197
Откуда: Украина, Киев
Рейтинг сообщения: 0
Например для таймера можно выбрать источник события и реакцию его на это событие
у меня тоже по этому принципу реализвано


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: фазоимпульсное управление на таймерах STM32
СообщениеДобавлено: Чт авг 10, 2017 22:00:22 
Прорезались зубы
Аватар пользователя

Карма: 2
Рейтинг сообщений: 12
Зарегистрирован: Сб янв 09, 2016 15:51:17
Сообщений: 200
Рейтинг сообщения: 0
Третий ответ в этой теме от vastani - имеет верное решение. dr.doc - аналогично.
Необходима синхронизация с частотой сети - для исключения помех из сети, и исключения генерации помех самим регулятором.

_________________
sRtoS


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: фазоимпульсное управление на таймерах STM32
СообщениеДобавлено: Пт авг 11, 2017 06:52:45 
Собутыльник Кота
Аватар пользователя

Карма: 29
Рейтинг сообщений: 645
Зарегистрирован: Сб май 14, 2011 21:16:04
Сообщений: 2690
Откуда: г. Чайковский
Рейтинг сообщения: 1
Медали: 1
Получил миской по аватаре (1)
Есть у меня устройство на 2.5кВт. Ложных срабатываний детектора фазы ( обычный мост и оптопара) не замечал. Если есть аппаратная возможность формирования управляющего импульса, то по-моему ее грех не использовать.

_________________
Изображение
Добро всегда побеждает зло. Поэтому кто победил - тот и добрый.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: фазоимпульсное управление на таймерах STM32
СообщениеДобавлено: Пт авг 11, 2017 08:13:57 
Нашел транзистор. Понюхал.
Аватар пользователя

Зарегистрирован: Пн янв 24, 2011 01:51:48
Сообщений: 197
Откуда: Украина, Киев
Рейтинг сообщения: 0
Третий ответ в этой теме от vastani - имеет верное решение. dr.doc - аналогично.
тоесть Вы считаете когда контроллер подвиснет то пропусков синхронизации не будет?
ИМХО аппаратно все же надежнее и проще


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: фазоимпульсное управление на таймерах STM32
СообщениеДобавлено: Пт авг 11, 2017 10:24:07 
Друг Кота
Аватар пользователя

Карма: 1
Рейтинг сообщений: 157
Зарегистрирован: Пн окт 11, 2010 19:00:08
Сообщений: 3328
Рейтинг сообщения: 0
RusikOk писал(а):
когда контроллер подвиснет
Если завис, нагрузку нужно выключить, что автоматически произойдет если таймер работает в режиме One Pulse с программным запуском.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: фазоимпульсное управление на таймерах STM32
СообщениеДобавлено: Пт авг 11, 2017 10:45:02 
Собутыльник Кота
Аватар пользователя

Карма: 29
Рейтинг сообщений: 645
Зарегистрирован: Сб май 14, 2011 21:16:04
Сообщений: 2690
Откуда: г. Чайковский
Рейтинг сообщения: 1
Медали: 1
Получил миской по аватаре (1)
Мурик писал(а):
автоматически произойдет если таймер работает в режиме One Pulse с программным запуском.
Очень даже не факт. Зависнуть можно, например, в низко приоритетном прерывании и функция диммирования может остаться в работе. Так что, если думать о возможном зависании (и прочих нештатных ситуёвин), нужно реализовывать какой-то супервизор или не парится об этом совсем.

_________________
Изображение
Добро всегда побеждает зло. Поэтому кто победил - тот и добрый.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: фазоимпульсное управление на таймерах STM32
СообщениеДобавлено: Пт авг 11, 2017 11:52:54 
Друг Кота
Аватар пользователя

Карма: 1
Рейтинг сообщений: 157
Зарегистрирован: Пн окт 11, 2010 19:00:08
Сообщений: 3328
Рейтинг сообщения: 0
Для криво написанного кода придумали собаку.


Последний раз редактировалось Мурик Пт авг 11, 2017 11:54:41, всего редактировалось 2 раз(а).

Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: фазоимпульсное управление на таймерах STM32
СообщениеДобавлено: Пт авг 11, 2017 11:54:19 
Прорезались зубы
Аватар пользователя

Карма: 2
Рейтинг сообщений: 12
Зарегистрирован: Сб янв 09, 2016 15:51:17
Сообщений: 200
Рейтинг сообщения: 0
нужно реализовывать какой-то супервизор или не парится об этом совсем.

stm может зависнуть при исправном коде - сбой на уровне периферии. В этом случае выручает сорвавшийся с цепи собака, которая кусает ресет. У st чипов есть целая псарня для таких случаев, не все собаки кусают насмерть - но всегда очень больно.
Две собаки wwdg и iwdg - только для ресета. Прерывания по ошибкам шины данных, защиты данных, сбой pll блоков, и по сбою линий связи. Кроме того на самой периферии есть собственные обработчики ошибок в огромном ассортименте.
Критическими считаются собака IWDG, и прерывание BusFault_IRQn - после них свет гаснет. Всё остальное можно дополнительно обработать перед выключением света. Это бывает полезным и необходимым, например переключение важных ног мк в нужное положение, и даже выдержка их в подобном состоянии.

Использовать код от кубика для таких случаев не логично. В кубике есть все описания для подобных событий - но ни одной строчки кода для реальной обработки. Всё это придётся писать самостоятельно, попутно изучая глюки самого кубика. Есть более простой вариант - читать и использовать доку от чипа.

Ошибки программной части исправить во время работы нельзя.
Например один дурик использовал ацп для перехода по абсолютным адресам (опрос кнопок). Такие пациенты уже неизлечимы.

_________________
sRtoS


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: фазоимпульсное управление на таймерах STM32
СообщениеДобавлено: Пт авг 11, 2017 11:59:10 
Собутыльник Кота
Аватар пользователя

Карма: 29
Рейтинг сообщений: 645
Зарегистрирован: Сб май 14, 2011 21:16:04
Сообщений: 2690
Откуда: г. Чайковский
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
Мурик писал(а):
Для криво написанного кода придумали собаку.
"Чтобы забивать гнутные гвозди, нужен гнутый молоток"

Не понимаю почему тема по таймерам для диммера переходит в описание работы собак и при чем тут куб? :dont_know:

_________________
Изображение
Добро всегда побеждает зло. Поэтому кто победил - тот и добрый.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: фазоимпульсное управление на таймерах STM32
СообщениеДобавлено: Пт авг 11, 2017 13:56:36 
Вымогатель припоя
Аватар пользователя

Карма: -2
Рейтинг сообщений: -32
Зарегистрирован: Вс ноя 01, 2015 13:13:49
Сообщений: 616
Рейтинг сообщения: 0
Цитата:
Третий ответ в этой теме от vastani - имеет верное решение. dr.doc - аналогично.
Необходима синхронизация с частотой сети - для исключения помех из сети, и исключения генерации помех самим регулятором.

Избавляйтесь от АВРовских привычек, как от вредных.
Цитата:
stm может зависнуть при исправном коде - сбой на уровне периферии.

Нонсенс! Это уже не исправный код, а кривой до не могу.

========
Самое правильное решение, ведь таймер по любому используется. Так почему его не задействовать как положено, а не с лишними извращениями?
Цитата:
Я в другом проекте сделал тоже от одного таймера. Только запускается таймер не от прерывания, а от внешнего события и если задержку поправлять не надо, то программа не участвует в формировании управляющего импульса совсем.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: фазоимпульсное управление на таймерах STM32
СообщениеДобавлено: Пт авг 11, 2017 17:04:34 
Прорезались зубы
Аватар пользователя

Карма: 2
Рейтинг сообщений: 12
Зарегистрирован: Сб янв 09, 2016 15:51:17
Сообщений: 200
Рейтинг сообщения: 0
Избавляйтесь от АВРовских привычек, как от вредных.

Это не привычка, это алгоритм синхронизации с сетью. Он не зависит от используемого мк.
Например есть нагрузка, которой может резко стать плохо от стартового номинального напряжения. Это банальный коллекторный двигатель на пол киловатта с постоянными магнитами. Такие устанавливаются в тренажеры, в детские машинки и так далее. Везде где требуется динамическое торможение и малые габариты.
Если на такой двигатель сразу подать полное напряжение, его ток возрастёт примерно в 300 раз от номинала. Отчего его ресурс будет резко сокращаться.

У вас проскочила бяка по сети, и мк уверенно поймал ноль через помеху - в этом случае двигатель получит хороший пинок под зад. А если оный установлен на беговой дорожке - то человек с большой вероятностью упадёт. А потом суд, финансы...
Включение мощного трансформатора не стой ноги - бросок тока.
Переключение нагрузки с сети на ups без синхронизации - к красивому фейерверку.
Есть масса примеров кривых алгоритмов, лечится собственным рублём.

Чип st может зависнуть, так как он хоть чем-то но управляет. В этом случае импульсная помеха может исказить внешние данные, или даже нарушить его питание.
От прямого попадания молнии - защиты не существует. Но и оставлять линии вовсе без защиты - себе дороже. Баланс между маниакальностью и пофигизмом - ценность самого прибора и устройства в целом. Для каждого случая свой баланс, но не использовать ресурсы мк по прямому назначению - это просто глупо.

_________________
sRtoS


Вернуться наверх
 
Показать сообщения за:  Сортировать по:  Вернуться наверх
Начать новую тему Ответить на тему  [ Сообщений: 65 ]    , 2, ,  

Часовой пояс: UTC + 3 часа


Кто сейчас на форуме

Сейчас этот форум просматривают: >TEHb< и гости: 24


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
Extended by Karma MOD © 2007—2012 m157y
Extended by Topic Tags MOD © 2012 m157y