Ясно, но тогда нормального решения я не вижу, слишком большие частоты. Возможно стоит взять какой-нибудь F334 у которого таймер на 4.6GHz...
STM32 новичку в ARM что к чему
- Сообщения: 2089
- Зарегистрирован: Вс июн 19, 2016 09:32:03
[uquote="hosturik",url="/forum/viewtopic.php?p=3642566#p3642566"]Возможно я неправильно выразился, написав что предделитель у меня 27, я имел ввиду регистр автоперезагрузки (ARR = 27)[/uquote]
Ясно, но тогда нормального решения я не вижу, слишком большие частоты. Возможно стоит взять какой-нибудь F334 у которого таймер на 4.6GHz...
Ясно, но тогда нормального решения я не вижу, слишком большие частоты. Возможно стоит взять какой-нибудь F334 у которого таймер на 4.6GHz...
- Реклама
Да, камушек интересный, три компаратора, один ОУ, внешнее напряжение VREF. Быстрый АЦП. Судя по всему он делался под управление импульсными источниками питания.
Правда дороговато 3$ за штуку. Но для домашних поделок пойдёт.
Хотя и на stm32f030 я попробую добиться желаемого результата, меняя делитель PLL можно регулировать частоту плавно в любых диапазонах. Единственно что сильно усложняются алгоритмы работы.
Правда дороговато 3$ за штуку. Но для домашних поделок пойдёт.
Хотя и на stm32f030 я попробую добиться желаемого результата, меняя делитель PLL можно регулировать частоту плавно в любых диапазонах. Единственно что сильно усложняются алгоритмы работы.
Иван Сусанин - первый полупроводник 
Коллеги, а как прицепить русский (1256) к Кейлу 5.24 ? Для комментариев мне хватало UTF-8, но не тянуть же в проект шрифты UTF-8 ? Мне бы и 1256 хватило...
Видел UvEdit.dll для 5.12, но не знаю, подойдет ли она для 5.24, и все ли будет работать правильно? Вроде-бы у 5.24 в редакторе какие-то отличия от старых, а эта dll-ина ведь, как раз, редактор?
Видел UvEdit.dll для 5.12, но не знаю, подойдет ли она для 5.24, и все ли будет работать правильно? Вроде-бы у 5.24 в редакторе какие-то отличия от старых, а эта dll-ина ведь, как раз, редактор?
Кто мешает тебе выдумать порох непромокаемый? (К. Прутков, мысль № 133)
- Сообщения: 3604
- Зарегистрирован: Пн июл 28, 2008 22:12:01
- Реклама
Установил 5.28, включил 1251, изба фигвам, опять вопросительные знаки - и при прямом наборе, и при вставке с клипборда. Надо подкрутить что-то еще?
Кто мешает тебе выдумать порох непромокаемый? (К. Прутков, мысль № 133)
- Сообщения: 3604
- Зарегистрирован: Пн июл 28, 2008 22:12:01
Заново файлы создавай или конвертируй, они уже в другой кодировке...
- Сообщения: 791
- Зарегистрирован: Вт июн 17, 2014 00:34:26
[uquote="dosikus",url="/forum/viewtopic.php?p=3645722#p3645722"]Заново файлы создавай или конвертируй, они уже в другой кодировке...[/uquote] Странно. Конвертируется, вроде-бы, правильно. А вот в свежесозданном (кубическом, чтобы железно собралось) проекте при переключении на русский регистр вместо букв набираются только вопросительные знаки. Кодировка стоит Russian Windows-1251, проверил. Что еще крутить? Кейл 5.28.0.
Кто мешает тебе выдумать порох непромокаемый? (К. Прутков, мысль № 133)
- Сообщения: 134
- Зарегистрирован: Пн ноя 07, 2016 12:14:14
Здравствуйте.
Нужно как-то генерировать импульсы на STM32F103 на двух выводах. Импульсы управляют драйверами транзисторов, которые не должны быть включены одновременно.
Проблема в том, что у этих импульсов нет фиксированной частоты и ширины. Но надо обеспечить возможность переключения периодом 10 мкс.
Ширина импульса и интервалы задаются неким массивом, каждая ячейка определяет состояние драйверов в течение 10 мкс. Если значение в ячейке положительное - включен один драйвер, отрицательное - другой. Пока на ум приходит только таймер, который по прерыванию каждые 10 мкс перемещает указатель на следующую ячейку и просто переключает выводы GPIO.
Выводы тактируются от шины 32MHz, но в настройках GPIO можно установить 50 МГц. Я правильно понимаю, что это скорость, с которой способен переключаться вывод и он все равно будет 32Мгц? По идее GPIO должен справится с задачей, но хотелось бы какой-то более красивый вариант, но в голову больше ничего не приходит.
Нужно как-то генерировать импульсы на STM32F103 на двух выводах. Импульсы управляют драйверами транзисторов, которые не должны быть включены одновременно.
Проблема в том, что у этих импульсов нет фиксированной частоты и ширины. Но надо обеспечить возможность переключения периодом 10 мкс.
Ширина импульса и интервалы задаются неким массивом, каждая ячейка определяет состояние драйверов в течение 10 мкс. Если значение в ячейке положительное - включен один драйвер, отрицательное - другой. Пока на ум приходит только таймер, который по прерыванию каждые 10 мкс перемещает указатель на следующую ячейку и просто переключает выводы GPIO.
Выводы тактируются от шины 32MHz, но в настройках GPIO можно установить 50 МГц. Я правильно понимаю, что это скорость, с которой способен переключаться вывод и он все равно будет 32Мгц? По идее GPIO должен справится с задачей, но хотелось бы какой-то более красивый вариант, но в голову больше ничего не приходит.
Я конечно все понимаю, но этого я не понимаю.
- Сообщения: 3386
- Зарегистрирован: Пн окт 11, 2010 19:00:08
Смотрите раздел Dead-time. http://robocraft.ru/blog/ARM/739.htmlbezzabotna писал(а):Импульсы управляют драйверами транзисторов, которые не должны быть включены одновременно.
В STM32F103 необходимо использовать TIM1.
- Сообщения: 134
- Зарегистрирован: Пн ноя 07, 2016 12:14:14
К сожалению доступны только каналы 2 и 5 таймера. У них нет комплиментарных выходов, но есть ШИМ.
Может быть организовать шим для каждого вывода с периодом 10мкс и коэффициентом заполнения 100%. А в другом таймере сделать счетчик, который будет включать/выключать каналы шим в зависимости от полярности ячейки. Ну и задержку небольшую на переключение каналов.
Может быть организовать шим для каждого вывода с периодом 10мкс и коэффициентом заполнения 100%. А в другом таймере сделать счетчик, который будет включать/выключать каналы шим в зависимости от полярности ячейки. Ну и задержку небольшую на переключение каналов.
Я конечно все понимаю, но этого я не понимаю.
- Сообщения: 1846
- Зарегистрирован: Вт авг 15, 2017 10:51:13
[uquote="bezzabotna",url="/forum/viewtopic.php?p=3656976#p3656976"]К сожалению доступны только каналы 2 и 5 таймера. У них нет комплиментарных выходов, но есть ШИМ.[/uquote]
Если нет dead-time, то можно взять два таймера с ШИМ и одновременно записывать в них значения скорректированные вручную так, чтобы между ними был необходимый dead-time.
PS: А вообще надо выбирать МК соответствующий задаче.
Если нет dead-time, то можно взять два таймера с ШИМ и одновременно записывать в них значения скорректированные вручную так, чтобы между ними был необходимый dead-time.
PS: А вообще надо выбирать МК соответствующий задаче.
- Сообщения: 134
- Зарегистрирован: Пн ноя 07, 2016 12:14:14
Здравствуйте. Еще один вопрос. Мне необходимо синхронизировать цепочку таймеров, чтобы триггером служило событие обновления. Вопрос в том, происходит ли событие обновления при первом запуске таймера? Мне нужно чтобы все таймеры запустились одновременно по цепной реакции, а не так, чтобы каждый таймер сначала досчитал до перезагрузки и только потом запустил следующий.
Запустить всех от от одного триггера не вариант. Они должны именно управлять друг другом.
Запустить всех от от одного триггера не вариант. Они должны именно управлять друг другом.
Я конечно все понимаю, но этого я не понимаю.
- Сообщения: 70
- Зарегистрирован: Пн дек 07, 2009 16:00:31
Добрый день!
Keil uVision V5.23 (с Keil uVision V5.28 таже фигня), камень STM32F103C8T6.
Проблемы с дебаггером.
В режиме Use Simulator не могу установить breakpoint, вернее могу, но далеко не везде. Например, не получается поставить -
/* Private user code ---------------------------------------------------------*/
/* USER CODE BEGIN 0 */
void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
{
if(htim->Instance == TIM1) //check if the interrupt comes from TIM1
{
Тут получается
}
}
void HAL_TIM_OC_DelayElapsedCallback(TIM_HandleTypeDef *htim)
после этого не получается
{
if(htim->Instance == TIM1)
{
if(htim->Channel == HAL_TIM_ACTIVE_CHANNEL_1)
{
Тут не получается
}
if(htim->Channel == HAL_TIM_ACTIVE_CHANNEL_2)
{
Тут не получается
}
}
}
Затем, иногда можно, иногда нет.
Кроме того, если дебажу в Use ST-link debugger, breakpointы отлично ставятся, НО!!! Регистры, например, CNT TIM1, при останове показывает рындомные (random, случайные) значения.
Первый и второй случай сводят на нет возможность отладки в Keil. Получается что отладка как таковая отсутствует.
В жезном железе (прошитый камень) - работает.
Может кто знаком с проблемой? Как отлаживать то? Варианты есть?
Keil uVision V5.23 (с Keil uVision V5.28 таже фигня), камень STM32F103C8T6.
Проблемы с дебаггером.
В режиме Use Simulator не могу установить breakpoint, вернее могу, но далеко не везде. Например, не получается поставить -
/* Private user code ---------------------------------------------------------*/
/* USER CODE BEGIN 0 */
void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
{
if(htim->Instance == TIM1) //check if the interrupt comes from TIM1
{
Тут получается
}
}
void HAL_TIM_OC_DelayElapsedCallback(TIM_HandleTypeDef *htim)
после этого не получается
{
if(htim->Instance == TIM1)
{
if(htim->Channel == HAL_TIM_ACTIVE_CHANNEL_1)
{
Тут не получается
}
if(htim->Channel == HAL_TIM_ACTIVE_CHANNEL_2)
{
Тут не получается
}
}
}
Затем, иногда можно, иногда нет.
Кроме того, если дебажу в Use ST-link debugger, breakpointы отлично ставятся, НО!!! Регистры, например, CNT TIM1, при останове показывает рындомные (random, случайные) значения.
Первый и второй случай сводят на нет возможность отладки в Keil. Получается что отладка как таковая отсутствует.
В жезном железе (прошитый камень) - работает.
Может кто знаком с проблемой? Как отлаживать то? Варианты есть?
- Сообщения: 1846
- Зарегистрирован: Вт авг 15, 2017 10:51:13
[uquote="rai17",url="/forum/viewtopic.php?p=3661705#p3661705"]Как отлаживать то? Варианты есть?[/uquote]
На реальном железе естественно. Ума не приложу - на кой вам этот симулятор?
На реальном железе естественно. Ума не приложу - на кой вам этот симулятор?
- Сообщения: 70
- Зарегистрирован: Пн дек 07, 2009 16:00:31
Нужно ветку форума открыть "Нужен ли симулятор или лучше отлаживать в железе".
А если серьёзно, может кто окажет информационную поддержку?
Такого ведь не может быть, что весь мир использует STM32 без симулятора.
А если серьёзно, может кто окажет информационную поддержку?
Такого ведь не может быть, что весь мир использует STM32 без симулятора.
- Сообщения: 3604
- Зарегистрирован: Пн июл 28, 2008 22:12:01
[uquote="rai17",url="/forum/viewtopic.php?p=3661705#p3661705"]Кроме того, если дебажу в Use ST-link debugger, breakpointы отлично ставятся, НО!!! Регистры, например, CNT TIM1, при останове показывает рындомные (random, случайные) значения.[/uquote]
Периферия живет своей жизнью, в частности что бы таймер фризился надо конфигурировать Debug MCU configuration register.
Лучший дебаггер это Ozone c jlink.
И начните изучать периферию а не тыркайтесь в калокубах...
Периферия живет своей жизнью, в частности что бы таймер фризился надо конфигурировать Debug MCU configuration register.
Лучший дебаггер это Ozone c jlink.
И начните изучать периферию а не тыркайтесь в калокубах...
- Сообщения: 70
- Зарегистрирован: Пн дек 07, 2009 16:00:31
Лучший дебаггер это Ozone c jlink.
Я так понимаю что это только с железом?
Я так понимаю что это только с железом?
- Сообщения: 3604
- Зарегистрирован: Пн июл 28, 2008 22:12:01


