частотомер на GD32f303c

Кто любит RISC в жизни, заходим, не стесняемся.
Аватара пользователя
AVI-crak
Прорезались зубы
Сообщения: 202
Зарегистрирован: Сб янв 09, 2016 15:51:17
Контактная информация:

Re: частотомер на GD32f303c

Сообщение AVI-crak »

[uquote="Игорь2111",url="/forum/viewtopic.php?p=4474845#p4474845"]Это не мой алгоритм, а уважаемого AVI-crak.[/uquote]
Да ну нафиг, не мог я такое написать даже под веществами. Я-же знаю как считается двойная точность на stm32f103 - это буквально боль и страдания.
Много боли, сплошные страдания. У меня только одинарная точность, для железа с аппаратной поддержкой математики.
Для графики есть другие алгоритмы - там 2PI равно 0xFFFFFFFF (это подсказка). Всё в целых числах, и очень быстро даже на М0.
linkov1959
Держит паяльник хвостом
Сообщения: 923
Зарегистрирован: Пн сен 10, 2018 19:16:28

Re: частотомер на GD32f303c

Сообщение linkov1959 »

Делал для мотор колеса Дуюнова.
Изображение
Игорь2111
Встал на лапы
Сообщения: 108
Зарегистрирован: Вс май 15, 2022 23:04:19
Откуда: Белгородская обл.

Re: частотомер на GD32f303c

Сообщение Игорь2111 »

AVI-crak.
Понял. За подсказку спасибо.
Обойти двух спецов на ихнем же поле, это было здорово.
linkov1959
Держит паяльник хвостом
Сообщения: 923
Зарегистрирован: Пн сен 10, 2018 19:16:28

Re: частотомер на GD32f303c

Сообщение linkov1959 »

GD32f303 поддерживает FPU?
Игорь2111
Встал на лапы
Сообщения: 108
Зарегистрирован: Вс май 15, 2022 23:04:19
Откуда: Белгородская обл.

Re: частотомер на GD32f303c

Сообщение Игорь2111 »

Ядро Cortex®-M4 GD32F303 оснащено модулем с плавающей запятой (FPU)
Использовать можно я так понимаю с оригинальными библиотеками от GD. Для Кейла и ИАР.
Аватара пользователя
AVI-crak
Прорезались зубы
Сообщения: 202
Зарегистрирован: Сб янв 09, 2016 15:51:17
Контактная информация:

Re: частотомер на GD32f303c

Сообщение AVI-crak »

[uquote="Игорь2111",url="/forum/viewtopic.php?p=4475001#p4475001"]Обойти двух спецов на ихнем же поле, это было здорово.[/uquote]
Если сделать PI = 2.0, то будет ещё проще и быстрее, есно при наличии аппаратной математики.

Код: Выделить всё

/// value = +4.0 ~ -4.0
/// error 0.025%
float sin_f2(float value)///35
{
    float rev, res, nc;
    if (value < 0.0f){
        value = 0.0f - value;
        nc = -1.0f;
    }else nc = 1.0f;
    if (value > 3.0f) value -= 4.0f;
    else if (value > -1.0f) value = 2.0f - value;
    res = value * value;
    rev = 283.0f * value - (77.0f * res * value);
    res *= 26.0f;
    res += 180.0f;
    rev /= res;
    rev *= nc;
    return rev;
};
https://godbolt.org/z/3Y71no4Wh
https://www.desmos.com/calculator/jlyultpmyt
Кстати в целых числах точность выше, но команд больше.
Аватара пользователя
>TEHb<
Друг Кота
Сообщения: 5731
Зарегистрирован: Ср ноя 11, 2009 17:19:30
Откуда: Воронеж
Контактная информация:

Re: частотомер на GD32f303c

Сообщение >TEHb< »

Но зато в М4 есть SIMD, что в некоторых случаях позволяет неплохо так срезать углы.
"Привет!" - соврал он.
linkov1959
Держит паяльник хвостом
Сообщения: 923
Зарегистрирован: Пн сен 10, 2018 19:16:28

Re: частотомер на GD32f303c

Сообщение linkov1959 »

Синус считать не нужно, всё посчитано до нас, синусы будут выдавать таймеры по два на штуку, проц отдыхает. FPU понадобится для реализации цифровых фильтров с выходом в DACи.
Игорь2111
Встал на лапы
Сообщения: 108
Зарегистрирован: Вс май 15, 2022 23:04:19
Откуда: Белгородская обл.

Re: частотомер на GD32f303c

Сообщение Игорь2111 »

Лучшее враг хорошего.
Время расчёта синуса измеренное счётчиком DWT при тактовой 280 мгц
4,8 мксек.
При заранее посчитанных коэф пи - 4,3 мксек..
При 21 значащем разряде.
При используемой памяти РАМ на три таблицы до 10 кбайт
( частота выборки тактовая 10 кГц и выходная частота минимальная 5 Гц 2000 точек)
Время пересчёта трёх таблиц для DMA под нужную частоту (5 гц- 400 Гц)
около 30 миллисекунд.
Теоретически годится.

Под силовую часть на SCM1245- 300 руб/ шт
и оптопары HCPL2631- 100 руб/ 3 шт
Питание силовой от 24-400 вольт
Для этого на bootstrep входы на каждый отдельное изолиров питание 15 в.
+ 3 БП по 100 руб шт.

P.S
Удобная вещь подключенный дисплей. Можно в реальном времени посмотреть всё регистры и переменные.
linkov1959
Держит паяльник хвостом
Сообщения: 923
Зарегистрирован: Пн сен 10, 2018 19:16:28

Re: частотомер на GD32f303c

Сообщение linkov1959 »

Игорь2111, FPU работает?
Игорь2111
Встал на лапы
Сообщения: 108
Зарегистрирован: Вс май 15, 2022 23:04:19
Откуда: Белгородская обл.

Re: частотомер на GD32f303c

Сообщение Игорь2111 »

Кокос для f103 не подключает.
Можно проверить на других IDE.
veso74
Поставщик валерьянки для Кота
Сообщения: 1905
Зарегистрирован: Сб май 05, 2012 20:24:52
Откуда: KN34PC, Болгария
Контактная информация:

Re: частотомер на GD32f303c

Сообщение veso74 »

Возможно, я неправильно понял (ру->бг), но зачем "разгоняем" МК? Раньше, в годах напр. частотомер на PIC (12F1822), с clock 25 MHz, измерял ~150 MHz, с внутренним prescaler перед таймером (количество переполнений таймера * 256/65536 + количество отчетов таймера), асинхронно. A время напр. 1 s: от другого таймера. Overclock для GD32F303 для использования в качестве изп. генератора?

Ниже: Arduino и Si5351A в качестве измерительный генератор. Десятичная точка на дисплее отсутствует (для часы?), читаем: 153,0 MHz.

Изображение
linkov1959
Держит паяльник хвостом
Сообщения: 923
Зарегистрирован: Пн сен 10, 2018 19:16:28

Re: частотомер на GD32f303c

Сообщение linkov1959 »

Наконец, удалось заказать в Днепр процы.
https://aliexpress.ru/item/100500550037 ... 3325720675
Подозрительно дешево. Как отличить 303й от 103го?
Martian
Друг Кота
Сообщения: 12867
Зарегистрирован: Сб дек 18, 2021 19:25:32
Контактная информация:

Re: частотомер на GD32f303c

Сообщение Martian »

ну, косвенно - размер памяти. 303 48 ног это от 256 кБ флэш, а 103 - до 128 кБ
Ну или поглядеть выполнение инструкций, отсутствующих в ядре М3
linkov1959
Держит паяльник хвостом
Сообщения: 923
Зарегистрирован: Пн сен 10, 2018 19:16:28

Re: частотомер на GD32f303c

Сообщение linkov1959 »

Точно, если 256 кБ, то 303й однозначно. Я и stm32f303cc заказал, там тоже не обманешь.https://www.aliexpress.com/item/1005006 ... MLhIm&mp=1
Игорь2111
Встал на лапы
Сообщения: 108
Зарегистрирован: Вс май 15, 2022 23:04:19
Откуда: Белгородская обл.

Re: частотомер на GD32f303c

Сообщение Игорь2111 »

veso74
Сделать хороший частотомер цели не было.
Все поделки в этой теме это привлечь внимание к линейке GD32F303
отличной, дешевой замене STM32F103.
А также исследование их возможностей на практике с минимум затрат.
Без платных Кейл и ИАР за 3000$ (программы более 32 кб)
Для меня это хобби.

Сколько ни покупал на Али все рабочие. (макс тактовая от 280 до 320 мгц)
Китайский Кокос отлично совместим с китайским программатором ST-Link и их процами.(отладка работает 100%)
Похоже китайцы сами себя не подделывают :))
Последний раз редактировалось Игорь2111 Чт сен 14, 2023 21:52:34, всего редактировалось 2 раза.
veso74
Поставщик валерьянки для Кота
Сообщения: 1905
Зарегистрирован: Сб май 05, 2012 20:24:52
Откуда: KN34PC, Болгария
Контактная информация:

Re: частотомер на GD32f303c

Сообщение veso74 »

Спасибо. Подумал, что в выбранном методе (частотмер на STM32) есть что-то особенное. А способ решения AVR, PIC -> STM немного меняется, и того стоит, имеет гораздо больше возможностей (мне кажется STM сложнее, но в какой-то степени - проще). И есть большой периферии по цене 1-2-3 чашек кофе. Для меня тоже хобби.
linkov1959
Держит паяльник хвостом
Сообщения: 923
Зарегистрирован: Пн сен 10, 2018 19:16:28

Re: частотомер на GD32f303c

Сообщение linkov1959 »

[uquote="Игорь2111",url="/forum/viewtopic.php?p=4476787#p4476787"]veso74
Сделать хороший частотомер цели не было.
Все поделки в этой теме это привлечь внимание к линейке GD32F303
отличной, дешевой замене STM32F103.[/uquote]
Китаец выслал мне оригинальный stm32f303cct6 за меньше 2$, а stm103 меньше 1$. что бы привлечь внимание к GD нужно делать не просто хороший, а настоящий частотомер.:)
Игорь2111
Встал на лапы
Сообщения: 108
Зарегистрирован: Вс май 15, 2022 23:04:19
Откуда: Белгородская обл.

Re: частотомер на GD32f303c

Сообщение Игорь2111 »

Меня интересовал диапазон 144 мгц.
stm32f103 больше 80 мгц не гонится.
stm32f303 не пробовал.
Подозреваю что тоже, судя по даташиту.

Хороший частотомер мне видится
ТСХО 25 мгц-> AD9833 0.1 гц-> gd32f303 280 мгц без прескалера.
Точность +/- 1гц при 9 разрядах до 100 мгц.
С прескалером 2
Точность +/-2 Гц при 9 разрядах до 280 мгц

Также на этой связке можно будет сделать стробоскопический осциллограф до 200 мгц.

Дорого для любителя.
Аватара пользователя
Andrey_B
Электрический кот
Сообщения: 1097
Зарегистрирован: Пт апр 09, 2010 16:06:38
Откуда: Тула

Re: частотомер на GD32f303c

Сообщение Andrey_B »

Игорь2111, а в чём смысл измерять частоту именно напрямую МК? Почему не применить предделитель? С нормальными алгоритмами асинхронные делители не снижают разрешающую способность. STM32F303 + 74hc74 без разгона способен 100МГц за 1с измерить с разрешением 8.5 разрядов:
(1с*144МГц*100МГц)/((1с*144Мед.сч)+1ед.сч) = 99 999 999.3056 Гц
(1с*144МГц*100МГц)/((1с*144Мед.сч)-1ед.сч) = 100 000 000.6940 Гц
Причём с примерно таким-же разрешением можно измерить любую входную частоту выше 1Гц за время около 1с.

Что касается точности, то тут всё будет зависеть от стабильности опоры.

ЗЫ: и зачем для измерения частоты нужна AD9833?
Ответить

Вернуться в «ARM»