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

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


artos5

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

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

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

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

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

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

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

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

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

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

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

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

  • 2 недели спустя...
On 15.07.2019 at 20:42, DYeliyev said:

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

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

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

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

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

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

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

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

Сравнительное тестирование аккумуляторов EVE Energy и Samsung типоразмера 18650

Инженеры КОМПЭЛ провели сравнительное тестирование аккумуляторов EVE и Samsung популярного для бытовых и индустриальных применений типоразмера 18650. 

Для теста были выбраны аккумуляторы литий-никельмарганцевой системы: по два образца одного наименования каждого производителя – и протестированы на двух значениях тока разряда: 0,5 А и 2,5 А. Испытания проводились в нормальных условиях на электронной нагрузке EBD-USB от ZKEtech, а зарядка осуществлялась от лабораторного источника питания в режиме CC+CV в соответствии с рекомендациями в даташите на определенную модель. Подробнее>>

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

Новый аккумулятор EVE серии PLM для GSM-трекеров, работающих в жёстких условиях (до -40°С)

Компания EVE выпустила новый аккумулятор серии PLM, сочетающий в себе высокую безопасность, длительный срок службы, широкий температурный диапазон и высокую токоотдачу даже при отрицательной температуре. 

Эти аккумуляторы поддерживают заряд при температуре от -40/-20°С (сниженным значением тока), безопасны (не воспламеняются и не взрываются) при механическом повреждении (протыкание и сдавливание), устойчивы к вибрации. Они могут применяться как для автотранспорта (трекеры, маячки, сигнализация), так и для промышленных устройств мониторинга, IoT-устройств. Подробнее параметры и результаты тестов новой серии PLM по ссылке.

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

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

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

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

Литиевые батарейки и аккумуляторы от мирового лидера  EVE в Компэл

Компания Компэл, официальный дистрибьютор EVE Energy, бренда №1 по производству химических источников тока (ХИТ) в мире, предлагает продукцию EVE как со склада, так и под заказ. Компания EVE широко известна в странах Европы, Америки и Юго-Восточной Азии уже более 20 лет. Недавно EVE была объявлена поставщиком новых аккумуляторных элементов круглого формата для электрических моделей «нового класса» компании BMW.

Продукция EVE предназначена для самого широкого спектра применений – от бытового до промышленного. Подробнее>>

Реклама: АО КОМПЭЛ, ИНН: 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 пользователей онлайн

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