STM32 новичку в ARM что к чему

Кто любит RISC в жизни, заходим, не стесняемся.
Ответить
Друг Кота
Аватара пользователя
Сообщения: 3604
Зарегистрирован: Пн июл 28, 2008 22:12:01

Сообщение dosikus »

Заново файлы создавай или конвертируй, они уже в другой кодировке...
Реклама
Опытный кот
Аватара пользователя
Сообщения: 791
Зарегистрирован: Вт июн 17, 2014 00:34:26

Сообщение baghear »

Порешал)))
Реклама
afz
Опытный кот
Аватара пользователя
Сообщения: 744
Зарегистрирован: Сб дек 22, 2012 08:17:42
Откуда: Караганда, Казахстан

Сообщение afz »

[uquote="dosikus",url="/forum/viewtopic.php?p=3645722#p3645722"]Заново файлы создавай или конвертируй, они уже в другой кодировке...[/uquote] Странно. Конвертируется, вроде-бы, правильно. А вот в свежесозданном (кубическом, чтобы железно собралось) проекте при переключении на русский регистр вместо букв набираются только вопросительные знаки. Кодировка стоит Russian Windows-1251, проверил. Что еще крутить? Кейл 5.28.0.
Кто мешает тебе выдумать порох непромокаемый? (К. Прутков, мысль № 133)
Встал на лапы
Аватара пользователя
Сообщения: 134
Зарегистрирован: Пн ноя 07, 2016 12:14:14

Сообщение bezzabotna »

Здравствуйте.
Нужно как-то генерировать импульсы на STM32F103 на двух выводах. Импульсы управляют драйверами транзисторов, которые не должны быть включены одновременно.
Проблема в том, что у этих импульсов нет фиксированной частоты и ширины. Но надо обеспечить возможность переключения периодом 10 мкс.
Ширина импульса и интервалы задаются неким массивом, каждая ячейка определяет состояние драйверов в течение 10 мкс. Если значение в ячейке положительное - включен один драйвер, отрицательное - другой. Пока на ум приходит только таймер, который по прерыванию каждые 10 мкс перемещает указатель на следующую ячейку и просто переключает выводы GPIO.
Выводы тактируются от шины 32MHz, но в настройках GPIO можно установить 50 МГц. Я правильно понимаю, что это скорость, с которой способен переключаться вывод и он все равно будет 32Мгц? По идее GPIO должен справится с задачей, но хотелось бы какой-то более красивый вариант, но в голову больше ничего не приходит.
Я конечно все понимаю, но этого я не понимаю.
Реклама
Эиком - электронные компоненты и радиодетали
Друг Кота
Аватара пользователя
Сообщения: 3385
Зарегистрирован: Пн окт 11, 2010 19:00:08

Сообщение Мурик »

bezzabotna писал(а):Импульсы управляют драйверами транзисторов, которые не должны быть включены одновременно.
Смотрите раздел Dead-time. http://robocraft.ru/blog/ARM/739.html
В STM32F103 необходимо использовать TIM1.
Реклама
Встал на лапы
Аватара пользователя
Сообщения: 134
Зарегистрирован: Пн ноя 07, 2016 12:14:14

Сообщение bezzabotna »

К сожалению доступны только каналы 2 и 5 таймера. У них нет комплиментарных выходов, но есть ШИМ.
Может быть организовать шим для каждого вывода с периодом 10мкс и коэффициентом заполнения 100%. А в другом таймере сделать счетчик, который будет включать/выключать каналы шим в зависимости от полярности ячейки. Ну и задержку небольшую на переключение каналов.
Я конечно все понимаю, но этого я не понимаю.
Реклама
Мудрый кот
Сообщения: 1731
Зарегистрирован: Вт авг 15, 2017 10:51:13

Сообщение jcxz »

[uquote="bezzabotna",url="/forum/viewtopic.php?p=3656976#p3656976"]К сожалению доступны только каналы 2 и 5 таймера. У них нет комплиментарных выходов, но есть ШИМ.[/uquote]
Если нет dead-time, то можно взять два таймера с ШИМ и одновременно записывать в них значения скорректированные вручную так, чтобы между ними был необходимый dead-time.
PS: А вообще надо выбирать МК соответствующий задаче.
Встал на лапы
Аватара пользователя
Сообщения: 134
Зарегистрирован: Пн ноя 07, 2016 12:14:14

Сообщение bezzabotna »

Здравствуйте. Еще один вопрос. Мне необходимо синхронизировать цепочку таймеров, чтобы триггером служило событие обновления. Вопрос в том, происходит ли событие обновления при первом запуске таймера? Мне нужно чтобы все таймеры запустились одновременно по цепной реакции, а не так, чтобы каждый таймер сначала досчитал до перезагрузки и только потом запустил следующий.
Запустить всех от от одного триггера не вариант. Они должны именно управлять друг другом.
Я конечно все понимаю, но этого я не понимаю.
Открыл глаза
Аватара пользователя
Сообщения: 70
Зарегистрирован: Пн дек 07, 2009 16:00:31

Сообщение rai17 »

Добрый день!
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. Получается что отладка как таковая отсутствует.
В жезном железе (прошитый камень) - работает.
Может кто знаком с проблемой? Как отлаживать то? Варианты есть?
Мудрый кот
Сообщения: 1731
Зарегистрирован: Вт авг 15, 2017 10:51:13

Сообщение jcxz »

[uquote="rai17",url="/forum/viewtopic.php?p=3661705#p3661705"]Как отлаживать то? Варианты есть?[/uquote]
На реальном железе естественно. Ума не приложу - на кой вам этот симулятор? :shock:
Открыл глаза
Аватара пользователя
Сообщения: 70
Зарегистрирован: Пн дек 07, 2009 16:00:31

Сообщение rai17 »

Нужно ветку форума открыть "Нужен ли симулятор или лучше отлаживать в железе".
А если серьёзно, может кто окажет информационную поддержку?
Такого ведь не может быть, что весь мир использует STM32 без симулятора.
Друг Кота
Аватара пользователя
Сообщения: 3604
Зарегистрирован: Пн июл 28, 2008 22:12:01

Сообщение dosikus »

[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.
И начните изучать периферию а не тыркайтесь в калокубах...
Открыл глаза
Аватара пользователя
Сообщения: 70
Зарегистрирован: Пн дек 07, 2009 16:00:31

Сообщение rai17 »

Лучший дебаггер это Ozone c jlink.
Я так понимаю что это только с железом?
Друг Кота
Аватара пользователя
Сообщения: 3604
Зарегистрирован: Пн июл 28, 2008 22:12:01

Сообщение dosikus »

Про симулятор забудьте...
Открыл глаза
Аватара пользователя
Сообщения: 70
Зарегистрирован: Пн дек 07, 2009 16:00:31

Сообщение rai17 »

Этого просто не может быть...
Контроллеры такого уровня и без симулятора? Смысл тогда?
Раскладывать на столе всё железо с осциллографами, да не с простыми, а золотыми (отматывать десяток другой экранов вперед-назад). Подключать различные генераторы и др. источники сигналов.
Например, отладить разгон - торможение асинхронной машины на максимальное ускорение (замедление) не допуская условий срыва синхронизма... Даже такая задача будет нерешаема.
НЕ МОЖЕТ БЫТЬ!
С симуляторами для avr вообще проблема отсутствует...
Друг Кота
Аватара пользователя
Сообщения: 3604
Зарегистрирован: Пн июл 28, 2008 22:12:01

Сообщение dosikus »

Смысл вашего перехода с авр ?
Мудрый кот
Сообщения: 1731
Зарегистрирован: Вт авг 15, 2017 10:51:13

Сообщение jcxz »

[uquote="rai17",url="/forum/viewtopic.php?p=3663169#p3663169"]С симуляторами для avr вообще проблема отсутствует...[/uquote]
Так может вам на avr и остаться тогда? Раз тут так сложно.... 8)
Открыл глаза
Аватара пользователя
Сообщения: 70
Зарегистрирован: Пн дек 07, 2009 16:00:31

Сообщение rai17 »

[uquote="dosikus",url="/forum/viewtopic.php?p=3663174#p3663174"]Смысл вашего перехода с авр ?[/uquote]

Смысл очевиден) Перестало хватать производительности.

Добавлено after 4 minutes 35 seconds:
[uquote="jcxz",url="/forum/viewtopic.php?p=3663269#p3663269"]Так может вам на avr и остаться тогда? Раз тут так сложно.... 8)[/uquote]

Расцениваю этот вопрос как попытку "закарнавалить" тему.
Мудрый кот
Сообщения: 1731
Зарегистрирован: Вт авг 15, 2017 10:51:13

Сообщение jcxz »

[uquote="rai17",url="/forum/viewtopic.php?p=3663518#p3663518"]Расцениваю этот вопрос как попытку "закарнавалить" тему.[/uquote]
Вам уже всё сказали. Какой смысл в симуляторах если на реальном железе (с эмулятором) всё можно отладить? И это будет намного качественнее, так как симулятор - это одно, а реальное железо - совсем другое. И если в реальном железе такого уровня как современные ARM-ы производители делают кучу багов (почитайте errata) + баги симулятора - и какой смысл в такой отладке??? Отладите в симуляторе, а в реальном железе оно работать не будет с вероятностью 90%.
ARM - это не примитивный AVR - написать качественно на него симулятор на порядки сложнее. И также на порядке - менее нужно, так как ARM имеет развитые встроенные аппаратные средства отладки. В отличие от AVR.
Среди реальных разработчиков на ARM никто не пользует симуляторы - никому оно не нужно. В крайнем случае что-то сложное алгоритмически (и не привязанное к железу) можно отладить на компе под VS или билдером. А потом просто перетащить как есть на ARM.
Открыл глаза
Аватара пользователя
Сообщения: 70
Зарегистрирован: Пн дек 07, 2009 16:00:31

Сообщение rai17 »

Fgt_dg23.jpg
(78.58 КБ) 290 скачиваний
Дело в том, что почти всегда "сложное алгоритмически"...
На симуляторах (да в том же протеусе) мне приходилось сотни раз "катать" алгоритм взад-вперёд, добиваясь точной работы.
Не знаю как у других (статистику не собирал), а у меня проекты, после отладки в симуляторе запускаются (тьфу, тьфу, тьфу) всегда.
Для примера мааааленький фрагментик алгоритма управления двигателями геостационарной платформы.
Вобщем буду искать...
Для начала такая тактика:
Отладка в симуляторе Keil отдельных фрагментов программы камень stm32f103c8 (доступен для отладки)
Далее, при необходимости, проверить в железе осциллом.
Потом подзаливать в F4xx и смотреть что получилось....

Добавлено after 6 minutes 24 seconds:
Вот картинка, не ту вставил
Изображение
Ответить

Вернуться в «ARM»