Пытаюсь сделать генерацию n-го количества импульсов. Не пойму почему первый такой долгий... Куда глядеть?

Комментарии: 38

  1. 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

                                      Ужас.) Даже консервативная я сто лет скайпом не пользуюсь.

Не нашли ответ?

Вам также может быть интересно