Форум Радиолюбителей

Цифровая АРУ 0...1

243433 просмотров, 284 ответов — стр. 17 из 19

ra0ahcra0ahc
Сообщений: 4868
5 декабря 2020 г. в 08:23#241
Это не вставка, это так выглядит переходный процесс если точки не в синусе. Это так цепи ЦАПа и входные цепи звуковой платы изображают. Вообщем переходный процесс.
ra0ahcra0ahc
Сообщений: 4868
5 декабря 2020 г. в 08:25#242
Будем залазить в предыдущий фрейм, который уже ушел под управления ДМА для выброса этого буфера в ЦАП. Фрэйм 1024 точек, мне надо залезти с конца точек на 50 или около того. Надеюсь ДМА еще не успеет дойти до этих мест, а то буде коллизия, когда и ДМА и ПРОЦ будут обращаться к одной и тойже ячейке памяти. Неприятная ситуация будет.
6Ж2П6Ж2П
Сообщений: 1065
6 декабря 2020 г. в 01:14#243
Новая АРУ
(вариант 4)
Это язык Си для STM32, насколько понимаю.
А это корректный код Вы вставили для обозрения?

if (a > 0)nowAgc = max / a;
else nowAgc = max / 0.000005f;

нет пробела после условия и далее нет двух пар фигурных скобок

float32_t почему так записывается тип float ? Зачем там 32_t ?


ra0ahcra0ahc
Сообщений: 4868
6 декабря 2020 г. в 09:02#244
Если один оператор после if или else то {} можно не ставить. float32_t это float , но такая запись в листинге программы очень хорошо выхватывается на фоне всего.
Код корректный ....это вы так шутите ))) ?
Relayer
Сообщений: 1006
6 декабря 2020 г. в 10:18#245
еще короче
nowAgc = max / (a > 0? a : 0.000005f);
6Ж2П6Ж2П
Сообщений: 1065
6 декабря 2020 г. в 10:20#246
А пробел тоже можно не ставить?
То есть, допустимы оба варианта записи типа с плавающей запятой, один просто float, второй с явным указанием разрядности числа? А float16_t тоже можно применять, как и для целочисленных переменных?
Шуток никаких нет, я спросил у Вас, вместо того, чтобы лезть в среду Си и проверять, это мне надо было комбайн целый запускать, не двумя кликами реализуется.
6Ж2П6Ж2П
Сообщений: 1065
6 декабря 2020 г. в 10:24#247
еще короче
ага, для постоянно работающих с Си нормально наверное, а для обучающегося лучше не спешить с сокращениями. Один написал в теле цикла вместо индекса a[i+1] a[i++], а потом долго искал ошибку.

ПС ra0ahc, давно подумываю тоже попрограммировать STM, но никак не соберусь. Подскажете, если что, для начала в технической части, по отладочным платам, или как они там называются? Один кристалл же никуда не приткнёшь, надо на плате распаянный иметь
ra0ahcra0ahc
Сообщений: 4868
6 декабря 2020 г. в 10:56#248
Nucleo H7 - есть ваше всё
Среда разработки от ST у них сейчас неплохая среда.
float16_t не бывает, только float64_t


ra0ahcra0ahc
Сообщений: 4868
6 декабря 2020 г. в 11:04#249
if (a)nowAgc = max / a;
else nowAgc = max / 0.000005f;
и
nowAgc = max /(a?a: 0.000005f);

мне кажется первый будет работать быстрее(на сколько я помню ассемблер там один такт на это условие)...хотя фиг знает
в нашем случаи
nowAgc = max /(a+0.000005f); тоже будет работать и не на что не повлияет. Всеравно потом приводит к 12 битам.
Relayer
Сообщений: 1006
6 декабря 2020 г. в 12:07#250
Одинаково они будут работать. Оптимизаторы в компиляторах давно уже заоптимизированы
VA7KLVA7KL
Сообщений: 158
6 декабря 2020 г. в 12:14#251
от ST у них сейчас неплохая среда
Как называется среда что на картинке? А то я запускаю Geany c Ubuntu и компилирую руками.
ra0ahcra0ahc
Сообщений: 4868
6 декабря 2020 г. в 03:00#252
CLion от JetBrains
ra0ahcra0ahc
Сообщений: 4868
6 декабря 2020 г. в 09:02#253
Просидел еще пару дней ...
Сделал "залаз" в соседний фрейм - однозначно помогло, прям сильно.
Остались "вот такие" фантомы ....убился искать какое событие из вызывает.

Ну в а целом (смотрим на панораму) без этих аномалий уже можно сказать, что это "ОНО"

ra0ahcra0ahc
Сообщений: 4868
7 декабря 2020 г. в 05:11#254
НАШЕЛ ГДЕ КОСЯК
[size=18pt]
Вот записи в разных режимах.
[/size]

Залетов и вылетов в аут не заметил.

https://drive.google.com/drive/folders/1Qnh064SKTlaO3RvhifW4HqcNGI8yzb9P?usp=sharing
ra0ahcra0ahc
Сообщений: 4868
7 декабря 2020 г. в 05:18#255
SSB CW
Скорость АРУ - нормальная. Ворота 4дб. Задержка на отпускания 100мс