Код запуска таймера:
TIM1->CCR2 = device.config.pulseWidth;
TIM1->ARR = device.config.pulseWidth*2-1;
LL_TIM_GenerateEvent_UPDATE(TIM1);
TIM1->CR1 |= TIM_CR1_CEN;
Вроде бы все должно успевать сделать. Или он по UPDATE эвенту долго перекладывает значения в теневой регистр ARR и CCR2? STM32F030, если что :)
у них цены непонятные. Все плавает... Просто был в китае G030 по 80-100 рублей. Мы закупили несколько сотен и сейчас на них делаем.
Но я параллельно работаю над CH32 Разные ядра. Периферия разная. В целом, если писал не на регистрах, а через LL хотя бы - все переносится.
Тогда придется заморочиться. Они же и по ногам разные и таймеры те же у них по разному распределены.
Немного возможности отличаются. Но все решаемо.
G030 пожирнее. угу, а не. Я про G030 и F030 от STM
С этими все почти придется заново писать. И отличия есть в названиях регистров и работе с периферией. Но если СТМ освоил - на CH32 переползти не проблема.
А у меня прерывание не включено. Оно слишком медленное, чтобы там что-то делать.
Логика такая, что UPDATE EVENT при включенном PRELOAD должен пихать из регистра обычного в теневой новые данные.
Repetition counter работае как прескаллер, то есть UPDATE EVENT появится тогда, когда этот счетчик дойдет до нуля. В моем случае - каждое четвертое переполнение таймера.
А это не важно: разрешишь - он туда упадет. И без прелода та же фигня: видимый psc копируется в теневой (используемый) только по UIE По идее так, но я rcr не юзал, не нужен он мне был как-то)
Короче, получается, что когда я делаю генерацию UPDATE эвента, у меня сразу выход таймера переключается на H.
И потом уже я включаю счетчик... Вот оно и набегает несколько тактов... А если его не генерировать - то значения в теневой не попадают до включения таймера.
Господа, всем привет! Есть тут кто с Челябинска кто пишет на Си под STM32 (HAL)?
Имеется интересный коммерческий проект.
Кароч, нужны будут люди в будущем в команду.
Тут частенько буду такой вопрос задавать, надеюсь никто не будет против :)
Комментарии: 38
Ogurezzz
Код запуска таймера: TIM1->CCR2 = device.config.pulseWidth; TIM1->ARR = device.config.pulseWidth*2-1; LL_TIM_GenerateEvent_UPDATE(TIM1); TIM1->CR1 |= TIM_CR1_CEN; Вроде бы все должно успевать сделать. Или он по UPDATE эвенту долго перекладывает значения в теневой регистр ARR и CCR2? STM32F030, если что :)
Tiny
эка жизнь тебя потрепала это самый дешевый камень у stm?
Fvck
Отличный камень
Tiny
да я на самом деле ничего против не имею) у самого лежит в закромах
Serge
Нормальный. Даже ртос туда без проблем впердоливается. А сасый дешевый вроде L010
Ogurezzz
Это то, на чем у меня схемотехник собрал прототип... У меня почти везде G030
Fvck
А вкратце какие там различия? Как с переносимостью дела И доступностью
Ogurezzz
у них цены непонятные. Все плавает... Просто был в китае G030 по 80-100 рублей. Мы закупили несколько сотен и сейчас на них делаем. Но я параллельно работаю над CH32 Разные ядра. Периферия разная. В целом, если писал не на регистрах, а через LL хотя бы - все переносится.
Fvck
На регистрах Ты про эти ?
Ogurezzz
Тогда придется заморочиться. Они же и по ногам разные и таймеры те же у них по разному распределены. Немного возможности отличаются. Но все решаемо. G030 пожирнее. угу, а не. Я про G030 и F030 от STM
Fvck
А я про CH32 Ты выше написал про них
Ogurezzz
С этими все почти придется заново писать. И отличия есть в названиях регистров и работе с периферией. Но если СТМ освоил - на CH32 переползти не проблема.
Fvck
Я видел что есть GD32F030F6 С 32кБ
Serge
сразу TIM_SR_UIF почисть, а то он у тебя тут же уйдет в прерывание
Ogurezzz
А у меня прерывание не включено. Оно слишком медленное, чтобы там что-то делать. Логика такая, что UPDATE EVENT при включенном PRELOAD должен пихать из регистра обычного в теневой новые данные. Repetition counter работае как прескаллер, то есть UPDATE EVENT появится тогда, когда этот счетчик дойдет до нуля. В моем случае - каждое четвертое переполнение таймера.
Serge
А это не важно: разрешишь - он туда упадет. И без прелода та же фигня: видимый psc копируется в теневой (используемый) только по UIE По идее так, но я rcr не юзал, не нужен он мне был как-то)
Ogurezzz
Короче, получается, что когда я делаю генерацию UPDATE эвента, у меня сразу выход таймера переключается на H. И потом уже я включаю счетчик... Вот оно и набегает несколько тактов... А если его не генерировать - то значения в теневой не попадают до включения таймера.
Serge
Не до включения, а вообще Это как настроишь. Обычно если поставил и тут же почистил, то как будто нтчего не было
Ogurezzz
Если поставил и почистил до первого эвента, то да. Ничего не будет.
Fvck
Если бы ещё память 32 была бы
Ogurezzz
Лучшее, чего смог добиться. ≈14 тактов (300нс) уходит на то, чтобы запустить таймер после генерации update эвента
Serge
TIM1->EGR |= TIM_EGR_UG; TIM1->SR &= ~TIM_SR_UIF; TIM1->CR1 |= TIM_CR1_CEN; Вот эти строчки вместе 14 тактов?
Ogurezzz
Смотри какая разница... Это TIM1->EGR = 1 (серым) И LL_TIM_GenerateEvent_UPDATE(TIM1)
Artem
Господа, всем привет! Есть тут кто с Челябинска кто пишет на Си под STM32 (HAL)? Имеется интересный коммерческий проект. Кароч, нужны будут люди в будущем в команду. Тут частенько буду такой вопрос задавать, надеюсь никто не будет против :)
Eugene
А чо прям Челябинск? В 21 веке живем...
Artem
так нужно :) для начала именно так. не интересно просто вот так раздавать код и железо налево и направо удалёнщикам :)
Eugene
Суровый челябинский проект...
Artem
в точку! :) а что так можно было? неужели бы вы поступили так просто? а знакомство, а общение? человека нужно прежде узнать, чем брать его в команду.
Serge
А накосячил - и в морду дать!
Ogurezzz
А выпить?
Artem
так вот на это расчёт и идет. с удалёнщиками ведь будет не интересно)
Vladimir
бухать по скайпу уже не модно?
Artem
ни разу не пробовал. вы моды придерживаетесь?)
Vladimir
Придерживаюсь, но скайпа у меня нет ))
Artem
я недавно для себя открыл google meet) да и телега тоже отличное решение, эх)
Belka
А кто-то ещё пользуется скайпом? Я думала, теперь все бухают через дискорд.)
Vladimir
Староверы - им не надо этих новомодных штучек ))
Belka
Ужас.) Даже консервативная я сто лет скайпом не пользуюсь.