Например TDA7294

Форум РадиоКот • Просмотр темы - CubeIDE особенности измерения частоты и периода.
Форум РадиоКот
Здесь можно немножко помяукать :)

Текущее время: Ср авг 13, 2025 06:56:34

Часовой пояс: UTC + 3 часа


ПРЯМО СЕЙЧАС:



Начать новую тему Ответить на тему  [ Сообщений: 28 ]  1,  
Автор Сообщение
Не в сети
 Заголовок сообщения: CubeIDE особенности измерения частоты и периода.
СообщениеДобавлено: Вс янв 30, 2022 20:48:55 
Держит паяльник хвостом

Карма: -2
Рейтинг сообщений: 35
Зарегистрирован: Пн сен 10, 2018 19:16:28
Сообщений: 923
Рейтинг сообщения: 2
Частотомер штука точная и требует особого подхода. Таймеры STM32 это могут делать, но требуют глубоких знаний по их устройству и настройки.
Частотомер должен точно измерять высокие частоты, низкие, период и длительность импульсов, а это связано с разными режимами таймеров.
На помощь приходит CubeIDE и встроенный туда CubeMX. Идея в том, что бы настроить таймеры в кубе мышкой, написать пару строчек простого кода и всё, что нам нужно, частота, период и др. лежит в переменных, которые выводим куда захотим и процессор при этом не загружаем.

Добавлено after 1 hour 3 minutes 9 seconds:
ВЧ частоту считаем по входу TIM2_ETR за 1сек, которую дает TIM1 в связке по железу.
Вложение:
тим1.jpg [48.12 KiB]
Скачиваний: 209
Вложение:
тим2.jpg [54.4 KiB]
Скачиваний: 165

Таймер 5 измеряет период и длительность импульса по входу 1канала.
Вложение:
тим5.jpg [65.8 KiB]
Скачиваний: 147


Добавлено after 1 hour 18 minutes 21 second:
Запускаем таймеры
HAL_TIM_Base_Start_IT(&htim1);
HAL_TIM_Base_Start(&htim2);
HAL_TIM_IC_Start_IT(&htim5, TIM_CHANNEL_1);
HAL_TIM_IC_Start_IT(&htim5, TIM_CHANNEL_2);

Добавлено after 3 minutes 21 second:
Колбеки.
void HAL_TIM_IC_CaptureCallback(TIM_HandleTypeDef *htim)
{
if (htim->Instance == TIM5)
{
if(htim->Channel == HAL_TIM_ACTIVE_CHANNEL_1)
{
period = HAL_TIM_ReadCapturedValue(&htim5, TIM_CHANNEL_1)+2;
pulse = HAL_TIM_ReadCapturedValue(&htim5, TIM_CHANNEL_2)+2;
}
}
}

Добавлено after 3 minutes 38 seconds:
void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
{
if(htim == &htim1)
{
count = __HAL_TIM_GET_COUNTER(&htim2);
HAL_TIM_Base_Stop_IT(&htim1);
__HAL_TIM_SET_COUNTER(&htim2, 0x0000);
HAL_TIM_Base_Start_IT(&htim1);
}
}

Добавлено after 3 minutes 33 seconds:
period, pulse, count - это всё, что нам нужно.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: CubeIDE особенности измерения частоты и периода.
СообщениеДобавлено: Вс янв 30, 2022 23:22:23 
Мучитель микросхем

Карма: -8
Рейтинг сообщений: -23
Зарегистрирован: Вс дек 29, 2019 08:05:21
Сообщений: 440
Рейтинг сообщения: 0
Мне кажется одного таймера будет мало.А вы используете преывание по входу?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: CubeIDE особенности измерения частоты и периода.
СообщениеДобавлено: Вс янв 30, 2022 23:50:08 
Собутыльник Кота
Аватар пользователя

Карма: -12
Рейтинг сообщений: -25
Зарегистрирован: Пт июл 12, 2019 22:52:01
Сообщений: 2516
Рейтинг сообщения: 0
ivan dimir, естественно, для измерения частоты нужно минимум три таймера: один считает длительность входных импульсов, второй считает количество импульсов за секунду. А узнать, что прошла именно секунда, ему поможет третий таймер.
Далее, как я уже в другой теме говорил: в зависимости от количества импульсов и длительности выбираем тот или другой метод измерения, чем значительно повышаем точность.

Ну и, конечно, никакого калокуба! Калом пользуются лишь абдуринщики. А их копропродукцию все прекрасно видели...

_________________
Linux rules! Windows must die. Здравомыслящий человек добровольно будет пользоваться мастдаем лишь в двух случаях: под дулом автомата или под влиянием анального зонда.
Я на гитхабе, в ЖЖ


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: CubeIDE особенности измерения частоты и периода.
СообщениеДобавлено: Пн янв 31, 2022 00:00:45 
Мучитель микросхем

Карма: -8
Рейтинг сообщений: -23
Зарегистрирован: Вс дек 29, 2019 08:05:21
Сообщений: 440
Рейтинг сообщения: 0
Я знаю сайт правда по AVR .Ну это можно использовать и в Stm32.Там всё просто.принцип такой
Спойлер
Код:
#include <mega8.h> 
// Alphanumeric LCD Module functions
#asm
   .equ __lcd_port=0x18 ;PORTB
#endasm
#include <lcd.h>
#include <stdio.h>
unsigned long i = 0, freq=0;
char lcd_buf[33];
 
interrupt [EXT_INT0] void ext_int0_isr(void)
{
i++;       
}
 
interrupt [TIM1_COMPA] void timer1_compa_isr(void)
{
 freq=i;
 i=0;
 TCNT1H=0x00;
 TCNT1L=0x00;   
}
void main(void)
{
// Declare your local variables here
 
// Input/Output Ports initialization
// Port B initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T
PORTB=0x00;
DDRB=0x00;
 
PORTD=0xFF;
DDRD=0x00;
 
// Timer/Counter 1 initialization
// Clock source: System Clock
// Clock value: 7,813 kHz
// Mode: Normal top=FFFFh
// OC1A output: Discon.
// OC1B output: Discon.
// Noise Canceler: Off
// Input Capture on Falling Edge
// Timer 1 Overflow Interrupt: Off
// Input Capture Interrupt: Off
// Compare A Match Interrupt: On
// Compare B Match Interrupt: Off
TCCR1A=0x00;
TCCR1B=0x05;
TCNT1H=0x00;
TCNT1L=0x00;
ICR1H=0x00;
ICR1L=0x00;
OCR1AH=0x1E;
OCR1AL=0x85;
OCR1BH=0x00;
OCR1BL=0x00;
 
// External Interrupt(s) initialization
// INT0: On
// INT0 Mode: Rising Edge
// INT1: Off
GICR|=0x40;
MCUCR=0x03;
GIFR=0x40;
 
// Timer(s)/Counter(s) Interrupt(s) initialization
TIMSK=0x10;
 
// Global enable interrupts
#asm("sei")                 
 
lcd_init(8);
 
while (1)
      {
        sprintf(lcd_buf,"freq=%d",freq);
        lcd_gotoxy(0,0);
        lcd_puts(lcd_buf);
 
      };
}

используем внешнее прерывание и один таймер.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: CubeIDE особенности измерения частоты и периода.
СообщениеДобавлено: Пн янв 31, 2022 00:13:46 
Модератор
Аватар пользователя

Карма: 90
Рейтинг сообщений: 1430
Зарегистрирован: Чт мар 18, 2010 23:09:57
Сообщений: 4568
Откуда: Планета Земля
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
ivan dimir писал(а):
Там всё просто.принцип такой
Это самый топорный способ измерения частоты. На высокой частоте будет лагать. И чем выше входная частота, тем будет ниже точность измерения.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: CubeIDE особенности измерения частоты и периода.
СообщениеДобавлено: Пн янв 31, 2022 00:31:13 
Мучитель микросхем

Карма: -8
Рейтинг сообщений: -23
Зарегистрирован: Вс дек 29, 2019 08:05:21
Сообщений: 440
Рейтинг сообщения: 0
Скажите на на какую максимальную частоту можно работать по входу прерыванию?Ну например stm411CEU?

Добавлено after 1 minute 55 seconds:
Ну эта программа написана в ХАЛ библиотека.Не так ли.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: CubeIDE особенности измерения частоты и периода.
СообщениеДобавлено: Пн янв 31, 2022 00:32:01 
Собутыльник Кота
Аватар пользователя

Карма: -12
Рейтинг сообщений: -25
Зарегистрирован: Пт июл 12, 2019 22:52:01
Сообщений: 2516
Рейтинг сообщения: 0
Не надо GPIO EXTI! Есть же таймеры в режиме захвата! А они чуть ли не до полной тактовой частоты умеют. А у некоторых линеек МК — даже выше!
И повторюсь: измерять длительность импульса можно лишь для низких частот. Для высоких нужно считать, сколько их штук в секунду (или несколько секунд). Точность будет выше. Абы разрядности хватило и частотных свойств.

И еще раз: КАЛ — это адов отстой для нищих разумом. Ни в коем случае эту дрянь нельзя использовать!

_________________
Linux rules! Windows must die. Здравомыслящий человек добровольно будет пользоваться мастдаем лишь в двух случаях: под дулом автомата или под влиянием анального зонда.
Я на гитхабе, в ЖЖ


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: CubeIDE особенности измерения частоты и периода.
СообщениеДобавлено: Пн янв 31, 2022 00:43:16 
Мучитель микросхем

Карма: -8
Рейтинг сообщений: -23
Зарегистрирован: Вс дек 29, 2019 08:05:21
Сообщений: 440
Рейтинг сообщения: 0
Спойлер
Код:
HAL_TIM_Base_Start_IT(&htim1);
HAL_TIM_Base_Start(&htim2);
HAL_TIM_IC_Start_IT(&htim5, TIM_CHANNEL_1);
HAL_TIM_IC_Start_IT(&htim5, TIM_CHANNEL_2);


меня заинтересовали вот эти строки.Тут 3 тамера 1 запущен по прерыванию.А второй как работает?А на 5 таймер два входа1 и 2 каналы в прерывании?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: CubeIDE особенности измерения частоты и периода.
СообщениеДобавлено: Пн янв 31, 2022 00:49:54 
Модератор
Аватар пользователя

Карма: 90
Рейтинг сообщений: 1430
Зарегистрирован: Чт мар 18, 2010 23:09:57
Сообщений: 4568
Откуда: Планета Земля
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
ivan dimir писал(а):
меня заинтересовали вот эти строки.
Это просто разрешения прерываний от таймеров. Это не их настройка.
Настройку выложил ТС в картинках. И подписал, для чего нужен каждый таймер.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: CubeIDE особенности измерения частоты и периода.
СообщениеДобавлено: Пн янв 31, 2022 00:50:06 
Мучитель микросхем

Карма: -8
Рейтинг сообщений: -23
Зарегистрирован: Вс дек 29, 2019 08:05:21
Сообщений: 440
Рейтинг сообщения: 0
Спойлер
Код:
И еще раз: КАЛ — это адов отстой для нищих разумом. Ни в коем случае эту дрянь нельзя использовать!

но у вас написано в хале.Или не так я говорю?.Я не спец.Я любитель.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: CubeIDE особенности измерения частоты и периода.
СообщениеДобавлено: Пн янв 31, 2022 00:51:08 
Модератор
Аватар пользователя

Карма: 90
Рейтинг сообщений: 1430
Зарегистрирован: Чт мар 18, 2010 23:09:57
Сообщений: 4568
Откуда: Планета Земля
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
ivan dimir, Вы перепутали, Eddy_Em - не ТС :)))


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: CubeIDE особенности измерения частоты и периода.
СообщениеДобавлено: Пн янв 31, 2022 09:02:40 
Мучитель микросхем

Карма: -8
Рейтинг сообщений: -23
Зарегистрирован: Вс дек 29, 2019 08:05:21
Сообщений: 440
Рейтинг сообщения: 0
Я извеняюсь.Был после дня рождения.Но всё таки эти строки.В прерывании первый таймер.А второй? А пятый использовано два входа?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: CubeIDE особенности измерения частоты и периода.
СообщениеДобавлено: Пн янв 31, 2022 11:36:05 
Держит паяльник хвостом

Карма: -2
Рейтинг сообщений: 35
Зарегистрирован: Пн сен 10, 2018 19:16:28
Сообщений: 923
Рейтинг сообщения: 0
Идея в том, что бы сделать настоящий частотомер, а не очередной показометр. Первые тесты показали, что это возможно. На одной секунде удалось поймать несколько наносекунд. Таймеры синхронизированы по железу благодаря настройкам в кубе. Железу пофиг, каким способом его настроили, важен результат. Средства отладки CubeIDE позволяют этот результат отслеживать. Ещё идея обойтись без термостата кварца с коррекцией по температуре. Пока работаю с stm32H743, но потом перенесу на более доступный камень типа F401 с выводом на LCD 16x2.
Максимальная измеряемая частота 200-250Мгц.
Советую изучать устройство таймеров - очень пригодится, ну и куб в придачу.:)

Добавлено after 8 minutes 19 seconds:
Я извеняюсь.Был после дня рождения.Но всё таки эти строки.В прерывании первый таймер.А второй? А пятый использовано два входа?

Второй без прерываний, он ведомый. Пятый имеет один вход захвата, к которому подключено внутри два канала. Еще один вход для ВЧ частоты. Входы НЧ и ВЧ будут иметь разные схемы усилителей формирователей.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: CubeIDE особенности измерения частоты и периода.
СообщениеДобавлено: Пн янв 31, 2022 12:01:32 
Мучитель микросхем

Карма: -8
Рейтинг сообщений: -23
Зарегистрирован: Вс дек 29, 2019 08:05:21
Сообщений: 440
Рейтинг сообщения: 0
stm32H743 а это дорогая штука?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: CubeIDE особенности измерения частоты и периода.
СообщениеДобавлено: Пн янв 31, 2022 12:04:02 
Поставщик валерьянки для Кота

Карма: 20
Рейтинг сообщений: 256
Зарегистрирован: Вс июн 19, 2016 09:32:03
Сообщений: 2089
Рейтинг сообщения: 0
Идея в том, что бы сделать настоящий частотомер, а не очередной показометр.

И в чем отличия? Частотомер на двух таймерах - это самое простое что делают на STM32.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: CubeIDE особенности измерения частоты и периода.
СообщениеДобавлено: Пн янв 31, 2022 12:07:30 
Собутыльник Кота
Аватар пользователя

Карма: -12
Рейтинг сообщений: -25
Зарегистрирован: Пт июл 12, 2019 22:52:01
Сообщений: 2516
Рейтинг сообщения: 0
stm32H743 а это дорогая штука?

Баксов 20 - как полноценный мини-одноплатник. Вот я и говорю, что во многих случаях можно использовать связку "одноплатник + дешевый МК", которая будет делать то же самое, но значительно меньшими усилиями со стороны разработчика.
А еще у китайцев появились какие-то дешевые МК с высокими рабочими частотами, я себе на али взял девборду, но пока никаких средств разработки под них (равно как и документации на английском), увы, нет. Подожду - авось, появятся. Или будет, как и девборда на MSP430 пылиться в дальнем ящике.

_________________
Linux rules! Windows must die. Здравомыслящий человек добровольно будет пользоваться мастдаем лишь в двух случаях: под дулом автомата или под влиянием анального зонда.
Я на гитхабе, в ЖЖ


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: CubeIDE особенности измерения частоты и периода.
СообщениеДобавлено: Пн янв 31, 2022 12:12:05 
Поставщик валерьянки для Кота

Карма: 20
Рейтинг сообщений: 256
Зарегистрирован: Вс июн 19, 2016 09:32:03
Сообщений: 2089
Рейтинг сообщения: 0
stm32H743 а это дорогая штука?

Это сложная штука, точно не для нерусских электриков которые самостоятельно и с AVR разобраться не могут.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: CubeIDE особенности измерения частоты и периода.
СообщениеДобавлено: Пн янв 31, 2022 14:58:06 
Держит паяльник хвостом

Карма: -2
Рейтинг сообщений: 35
Зарегистрирован: Пн сен 10, 2018 19:16:28
Сообщений: 923
Рейтинг сообщения: 0
Reflector, самое простое я сделал сразу со сбросом таймера в колбеке и получил ошибку в 250 тактов, после сделал сброс по железу через внутренние связи таймеров и ошибка стала 2такта, которые легко компенсировать программно и таких моментов много.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: CubeIDE особенности измерения частоты и периода.
СообщениеДобавлено: Пн янв 31, 2022 15:50:22 
Поставщик валерьянки для Кота

Карма: 20
Рейтинг сообщений: 256
Зарегистрирован: Вс июн 19, 2016 09:32:03
Сообщений: 2089
Рейтинг сообщения: 0
самое простое я сделал сразу со сбросом таймера в колбеке и получил ошибку в 250 тактов

У таймера есть режим OnePulse, TIM1 досчитал один раз и остановился, можно спокойно считывать TIM2->CNT в прерывании, сбрасывать его и запускать TIM1 опять.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: CubeIDE особенности измерения частоты и периода.
СообщениеДобавлено: Пн янв 31, 2022 17:22:49 
Мудрый кот

Карма: 20
Рейтинг сообщений: 145
Зарегистрирован: Вс дек 25, 2016 08:34:54
Сообщений: 1849
Рейтинг сообщения: 0
linkov1959 писал(а):
Частотомер штука точная и требует особого подхода.
А от чего ваша "штука" будет тактироваться?
От кварцевого резонатора 8МГц? Вы да же не знаете точную частоту вашего кварца.
Температура в помещении может меняться в широких пределах.
Попробуйте погреть свой кварц градусов так до 50 и посмотреть на точность своего частотомера.


Вернуться наверх
 
Показать сообщения за:  Сортировать по:  Вернуться наверх
Начать новую тему Ответить на тему  [ Сообщений: 28 ]  1,  

Часовой пояс: UTC + 3 часа


Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 23


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
Extended by Karma MOD © 2007—2012 m157y
Extended by Topic Tags MOD © 2012 m157y