Перейти к содержанию

Тактирование одного таймера от другого таймера stm32f100


artos5

Рекомендуемые сообщения

Добрый день уважаемые ! 

Необходимо решить одну задачу , максимально аппаратно :

Нужно одним таймером формировать меандр , частота которого меняется в регистре предделителя . А вторым таймером на большей частоте в 8 - 16 раз нужно измерять сигнал и оцифровывать при помощи АЦП через DMA . Формирование меандра и точки измерения сигнала должны быть синхронизированы . Как это решить?

Сейчас сделал программно так:

в прерывании по переполнению таймера я инкрементирую переменную и когда она достигнет 8 - 16 , инвертирую бит для формирования меандра . Этим же таймером в связке с dma выполняется оцифровка сигнала на входе АЦП . Входов АЦП 3 , что дополнительно усложняет задачу..

Все было бы хорошо , но не устраивает великоватый джиттер меандра.

диапазон частот формируемого меандра 500-22000Гц (чем выше тем лучше).

Количество точек оцифровки тоже чем выше тем лучше .

пример кода могу позже показать , когда свет появится ..

Что может быть лучше в радиоэлектронике, чем программирование микроконтроллеров ?

Ссылка на комментарий
Поделиться на другие сайты

Реклама: ООО ТД Промэлектроника, ИНН: 6659197470, Тел: 8 (800) 1000-321

  • 2 недели спустя...

20% скидка на весь каталог электронных компонентов в ТМ Электроникс!

Акция "Лето ближе - цены ниже", успей сделать выгодные покупки!

Плюс весь апрель действует скидка 10% по промокоду APREL24 + 15% кэшбэк и бесплатная доставка!

Перейти на страницу акции

Реклама: ООО ТМ ЭЛЕКТРОНИКС, ИНН: 7806548420, info@tmelectronics.ru, +7(812)4094849

On 15.07.2019 at 20:42, DYeliyev said:

вместо прерывания лучше

А можете пример дать?

Мне вообще надо генерировать меандр и через равные промежутки оцифровывать 1 канал АЦП (он очень важен) , но есть проблема... Используется ещё 2 канала АЦП . Они менее преоритетны , но они сильно мешают чёткому измерению в равные промежутки и сильно замедляют скорость работы одного важного канала. 

Меандр может формироваться до 20кгц , а измерять аналоговый сигнал нужно через равные интервалы времени и с максимально возможной частотой . Чем больше тем лучше . Например 16 семплов за период ШИМ .

То есть этот 1 канал должен оцифровывать с частотой 320кГц .

Мне видится вариант пдп + таймер . И все три канала оцифровывать с частотой в три раза выше требуемой . Но тогда сильно грузится шина , что приводит к замедлению работы другой периферии ..

Что может быть лучше в радиоэлектронике, чем программирование микроконтроллеров ?

Ссылка на комментарий
Поделиться на другие сайты

Выбираем схему BMS для корректной работы литий-железофосфатных (LiFePO4) аккумуляторов

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

Реклама: АО КОМПЭЛ, ИНН: 7713005406, ОГРН: 1027700032161

При помощи аппаратного модуля ШИМ формируется меандр. Прямоугольные импульсы одинаковой скважностью и длительностью.

Что может быть лучше в радиоэлектронике, чем программирование микроконтроллеров ?

Ссылка на комментарий
Поделиться на другие сайты

 

Ребята , кто подскажет, можно так сделать? Нормально работать будет?  :

есть один важный вход АЦП и есть два не сильно важных входа.

Идея , инициализировать его (важный)  , настроив его работу через DMA. Потом через секунду или две, остановить и настроить преобразование двух других каналов , выполнить измерение и копирование данных . После снова остановить преобразование тех двух каналов и настроить новое преобразование с первого канала . И так по кругу.

Идея просто раз в 2 секунды измерять низко приоритетные входы АЦП. А две секунды измерять высокоприоритетный вход.

Что может быть лучше в радиоэлектронике, чем программирование микроконтроллеров ?

Ссылка на комментарий
Поделиться на другие сайты

Если устроит, то есть регулярные каналы и можно настроить групповое преобразование. В группе может быть до 16 каналов. Можно сделать 14 преобразований важного канала и 2 преобразования вспомогательных каналов. При этом можно задать любой порядок следования каналов например: 1,1,2,1,1,3,1,1... Не надо будет перенастраивать, ДМА будет складывать так как зададите. Число каналов и последовательность задается в регистрах ADC_SQR1,2,3.

Ссылка на комментарий
Поделиться на другие сайты

Во , это вроде подходит, а может и нет... Можете пример инициализации скинуть?

Мне нужно за период меандра как можно больше сэмплов выполнять. 

Короче говоря нужно в дальнейшем выполнять над данными ЦОС. 

Нужно минимальное искажение меандра и минимальная нестабильность точек оцифровки .

Что может быть лучше в радиоэлектронике, чем программирование микроконтроллеров ?

Ссылка на комментарий
Поделиться на другие сайты

Делал типа такого

  ADC_InitStr.ADC_ContinuousConvMode = ENABLE;
  ADC_InitStr.ADC_DataAlign = ADC_DataAlign_Right;
  ADC_InitStr.ADC_Mode = ADC_Mode_Independent;
  ADC_InitStr.ADC_NbrOfChannel = 4;
  ADC_InitStr.ADC_ScanConvMode = ENABLE;
  ADC_InitStr.ADC_ExternalTrigConv = ADC_ExternalTrigConv_None;
  ADC_Init( ADC1, &ADC_InitStr );
	
  ADC_RegularChannelConfig( ADC1, ADC_Channel_0, 1, ADC_SampleTime_239Cycles5 );
  ADC_RegularChannelConfig( ADC1, ADC_Channel_1, 2, ADC_SampleTime_239Cycles5 );
  ADC_RegularChannelConfig( ADC1, ADC_Channel_2, 3, ADC_SampleTime_239Cycles5 );
  ADC_RegularChannelConfig( ADC1, ADC_Channel_TempSensor, 4, ADC_SampleTime_239Cycles5 );
  ADC_TempSensorVrefintCmd( ENABLE );
	
  ADC_DMACmd( ADC1 , ENABLE );
  ADC_Cmd( ADC1, ENABLE );

ADC_InitStr.ADC_NbrOfChannel = 4; - это число каналов в группе ставите 16

ADC_RegularChannelConfig( ADC1, ADC_Channel_0, 1, ADC_SampleTime_239Cycles5 ); - число 1 - канал 0 будет запущен первым и т. д.

Лучше порядок преобразований и число задать через регистры ADC_SQR1, ADC_SQR2 и ADC_SQR3.

ADC_SQR1 = 0х00F00000; - типа такого.

 

Ссылка на комментарий
Поделиться на другие сайты

Спасибо за пример ! Через 2-3 дня попробую как с командировки приеду .

Ещё вопросик :

Если я выберу 1.5 цикл преобразования , какая будет реальная частота работы АЦП при максимальной тактовой?

В МК ещё при этом запущено пару таймеров и ЦАП два канала через DMA.

Что может быть лучше в радиоэлектронике, чем программирование микроконтроллеров ?

Ссылка на комментарий
Поделиться на другие сайты

112233.jpg.492f73fe54bb329d1df8ea8c09273da2.jpg

Максимальная частота АЦП 12 МГц. Около 850 000 преобразований в секунду. Другая периферия на время преобразования не влияет. В ДМА лучше для АЦП поставить высший приоритет.

Ссылка на комментарий
Поделиться на другие сайты

1 minute ago, MasterElectric said:

Бери камнь под задачу, а не говно мамонта 12 летней давности

Я знаю что этот камень не подходит. Но поставлена задача под имеющееся железо сделать прошивку .

Я бы взял МК stm32f205/207. Но этого сделать не могу :)

Что может быть лучше в радиоэлектронике, чем программирование микроконтроллеров ?

Ссылка на комментарий
Поделиться на другие сайты

@artos5 разгони немного АЦП до 14 и по идее сможешь все 3 вычитывать до 22000 * 16 семплов.Судя что при 12 он способен дать 1 Мсемпл

@artos5  Настрой таймер на 16 кратный счет это будет период, 1 канал формирует меандр на половине периода, 2 канал пинает ДМА для АЦП, ДМА настрой на выборку нужного количества каналов * на 2, кольцевой режим, на 1/2 можно обрабатывать первую половину данных. Ну и третий канал будет сдвигать значение компарэ для второго канала.

Изменено пользователем MasterElectric
Ссылка на комментарий
Поделиться на другие сайты

42 minutes ago, MasterElectric said:

 

16 выборок на период может быть и избыточно . Достаточно 22кГц * 4..5 выборок . Но пусть возьмём с запасом .

16 всего выборок . 14 выборок из важного входа АЦП , а две оставшиеся выборки из вспомогательных входов .

Вспомогательные входы поместить в начало и конец , чтобы лучше анализировать потом синусоидальный сигнал.

Что может быть лучше в радиоэлектронике, чем программирование микроконтроллеров ?

Ссылка на комментарий
Поделиться на другие сайты

Для ЦОС  нужно выборку делать строго периодически, даже если брать 8 выборок на период то можно вычитывать все 3 канала. т.е. за раз вычитывать 3 канала и все.

Ссылка на комментарий
Поделиться на другие сайты

6 minutes ago, MasterElectric said:

за раз вычитывать 3 канала и все.

Понял. Хорошо, тогда вопрос :

сколько можно сделать выборок из 3 каналов при времени преобразования 1.5 такта ? 1.5*3+12.5? Или (1.5+12.5)*3 Тактов?

Что может быть лучше в радиоэлектронике, чем программирование микроконтроллеров ?

Ссылка на комментарий
Поделиться на другие сайты

Лучше уменьшить время преобразования, и есть табличка зависимости скорости преобразования и входного сопротивления АЦП, оно меняется. Там бы хоть 1 раз получилось. Зачем несколько раз измерять подряд, потом еще усреднять вручную надо.

Изменено пользователем MasterElectric
Ссылка на комментарий
Поделиться на другие сайты

Я смотрел этот параметр . При 1.5 сопротивление 400 Ом по моему . На вход АЦП сигнал идёт из операционника mcp6022. Нужно посмотреть , позволяет ли он работать на такую нагрузку ..

Посмотрел при 7.5 такта , сопротивление 5 с копейками килоом .

И если расчеты верны то получится 3 канала опрашивать на частоте 200кгц . 10 выборок на период при 20кгц меандра. Теперь вопрос :

достаточно будет один таймер настроить на формирование меандра 20кгц , а второй в 10 раз выше для пинания дма? Когда запущу счётчик обоих обнулить , чтобы считали одинаково . Или это лишнее? Нужно определять сдвиг синусоиды от меандра .

Что может быть лучше в радиоэлектронике, чем программирование микроконтроллеров ?

Ссылка на комментарий
Поделиться на другие сайты

1 hour ago, MasterElectric said:

Для ЦОС  нужно выборку делать строго периодически

Скажите , с вами можно будет по вотсап пообщаться или по Скайпу?

Что может быть лучше в радиоэлектронике, чем программирование микроконтроллеров ?

Ссылка на комментарий
Поделиться на другие сайты

2 hours ago, artos5 said:

достаточно будет один таймер настроить на формирование меандра 20кгц , а второй в 10 раз выше для пинания дма?

Зачем два таймера. АЦП сам запускает ДМА по окончанию каждого преобразования. У АЦП есть режим запуска по триггеру. Таймер будет запускать все 10 преобразований по вашему меандру. Только посмотрите какие таймеры и по какому событию могут запускать АЦП.

Ссылка на комментарий
Поделиться на другие сайты

Так получается что нужно настроить чтобы срабатывало по событию переполнения таймера , который формирует меандр в регулярных каналах настроить группы трёх входов АЦП . Таким образом :

123 123 123 123 123 и по прерыванию таймера будет выполняться 15 измерений?

Что может быть лучше в радиоэлектронике, чем программирование микроконтроллеров ?

Ссылка на комментарий
Поделиться на другие сайты

9 hours ago, MasterElectric said:

 Настрой таймер на 16 кратный счет это будет период, 1 канал формирует меандр на половине периода, 2 канал пинает ДМА для АЦП, ДМА настрой на выборку нужного количества каналов * на 2, кольцевой режим, на 1/2 можно обрабатывать первую половину данных. Ну и третий канал будет сдвигать значение компарэ для второго канала.

Толку общаться нет т.к. в ЦОС я ничего не смыслю, но про выборки я где-то читал ну это и так логически понятно, пропускать чтение нельзя.

Ссылка на комментарий
Поделиться на другие сайты

26.07.2019 в 14:54, snn_krs сказал:

Да. Обработку я делаю по прерываниям от ДМА - половина буфера и полный. Пока обрабатываю первую половину, заполняется вторая.

Всем привет! 

Что-то меня запутали вы .

Судя по скрину приведенному ниже - это не так .

АЦП конвертирует после события , настроенному в регистрах , в нашем случае настроенном от события таймера. Мне надо (ещё раз объясню) вычислять угол сдвига фазы имея опорную фазу , в данном случае опираясь от генерируемого меандра . Поэтому, необходимо через равные промежутки периода меандра и равные точки начала конвертирования АЦП выполнять измерения . 

По скрину видно что АЦП выполняет одно преобразование после события от таймера , потом следующее после следующего , и т.д. То есть таймера нужно два применять , один таймер должен в 12 раз быстрее тикать от первого , и пинать АЦП . Как это все засинхронизировать чтобы не вылезла ошибка потом ?

Можно своими словами описать алгоритм действий и т.д.

Screenshot_2019-07-27-23-16-00-940_cn.wps.moffice_eng.png

26.07.2019 в 20:32, MasterElectric сказал:

Настрой таймер на 16 кратный счет это будет период, 1 канал формирует меандр на половине периода, 2 канал пинает ДМА для АЦП, ДМА настрой на выборку нужного количества каналов * на 2, кольцевой режим, на 1/2 можно обрабатывать первую

Что-то не догоню... Настроить чтобы делало 16 тиков и сбрасывался счётчик в ноль? То есть прескейлер 16 поставить ? Можно поподробнее расписать?

Что может быть лучше в радиоэлектронике, чем программирование микроконтроллеров ?

Ссылка на комментарий
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.
Примечание: Ваш пост будет проверен модератором, прежде чем станет видимым.

Гость
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Ответить в этой теме...

×   Вставлено с форматированием.   Восстановить форматирование

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

Загрузка...
  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
  • Сообщения

    • Ну так теперь фигня вопрос. Проверить, что кнопки невозможно замкнуть одновременно, да определить, на какой ток транзисторы нужны. По характеристикам мотора или по максимально-допустимому току диодов D1-D4. Навскидку, моторчик низковольтный, диоды тоже. Транзисторы тогда на PBSS4350 можно заменить. Они на Али почти задаром продаются.
    • Сами же понимаете, что так не может быть. Или нет "сквозняка", или схема неправильно собрана, элементы не те, битые и пр., и схема защиты не работает. Проверьте сначала работу защёлки защиты при питании от 15 В, отпаяв R19 и подавая туда медленно увеличивающееся напряжение до 1,5 - 2 В (можно с потенциометра ом на 100-500). Добейтесь, чтобы работала. Порог срабатывания измерьте. Пересчитайте в ток через резистор 0,1 Ом. Соответствует ли "правильному"? Проверьте, что у этого резистора сопротивление действительно 0,1 Ом. Запаяйте 0,1 Ом обратно. Напишите, какая лампочка. А то мало ли какая, может она не от "сквозняка", а от броска тока заряда С18 С16 мигает. Транзисторы ключей проверьте. Впаяйте вместо первичной трансформатора резистор ом 150 - 300, чтобы ток с ключей в этот "эквивалент трансформатора" не больше 50-100 мА был. Посмотрите форму напряжения на выходе ключей, в точке соединения С16 и С18, на питании после лампочки. Ищите, где ляп. Умозрительно подсказать можно только по каким-то измеренным данным. Кроме вас никто их не добудет. В общем, как в анекдоте: - Молодой человек, ну делайте же уже хоть что-нибудь!
    • Ну так можно увеличить глубину ООС, тем самым понизив чувствительность и повысив линейность
    • Судя по этой картинке   в трухе передней панели под выступающие болты и шишки паек ЗК динамиков выковыряныфрезерованы выемки, иначе бы динамики так плотно не прилегали бы к ДВП.    А оно тебе надо? "Работает - не мешай"(с)/это уже аксиома, не требующая доказательств/ , пытаясь сделать лучше, чем сделано на заводе. Сanton-ят, т.е. поют, и лучше, чем есть, тебе не сделать. Ну перенесёшь ты динамики наружу, а что тебе это даст? Кроме того, что при попытке их продать(а продавать их когда-нибудь придётся, т.к. эта акустика бюджетного сегмента без потуг на высший класс Hi-Fi) , тебе придётся объяснять потенциальному покупателю причину, по которой какой-то умник заколхозил такую переделку с акустикой, ты ничего хорошего не получишь. Задуманная тобой переделка - это по сути возня ради возни. 
    • Малыш, чушь пока здесь мелешь только ты. Сидел бы лучше в своей оффтопной теме, лепил бы на своём 3D-пинтере куколок, и не лез бы в те темы, в которых ты - ноль. 
    • Там нашел. Вроде купил.  Спасибо всем
×
×
  • Создать...