Привел пример rev_bits использования "короткого" кода вместо "первой пришедшей в голову идеи" (не вдаваясь в ненужную полемику). Предпочтительнее аппаратные варианты. "Короткие" - тоже.
Код:
uint32_t rev_bits(uint32_t v) { uint32_t r = 0; for (int i = 0; i < 32; i++) { r <<= 1; r |= (v & 1); v >>= 1; } return r; }
veso74, аж 27 операций! Если в системе нет инструкции реверса бит, но есть инструкция реверса слов (bswap и т.п.), то быстрей будет в каждом байте по массиву поменять биты и использовать этот bswap, чтобы поменять местами байты.
_________________ Windows must die! And the users of this crap should either become smarter or become janitors.
jcxz, какой, на хрен, 256-байтный массив, чтобы развернуть биты в одном байте?
А что не так, если время критично? Можете предложить более быстрый вариант?
_________________ [ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ] Измерить нннада?
jcxz, а если понадобиться развернуть двухбайтовое число, ты предложишь массив из 65536 байт?
Не очень понял что такое "массив из 65536 байт" и зачем я его должен предлагать?
Вроде как очевидно, что можно преобразовать в 2 приёма - побайтно. Впрочем: если программной памяти лишней много (и если у CPU арифметика с длинными адресами оптимальная), можно и пословно: через 128KB-ный массив. Но вряд-ли такой способ будет оптимальнее на 8-битных ядрах, так как потребуется 16-битная арифметика. И возможно по-байтно будет всё равно быстрее.
Только что посмотрел видосик с канала Di_Halt-а... Вот где хитрые алгоритмы! Пока вы тут думаете, как что-то переложить на аппаратные фичи stm32, кое-кто на древнючем AVR делает такое, что не всякий на i11 повторить сумеет...
Пока вы тут думаете, как что-то переложить на аппаратные фичи stm32, кое-кто на древнючем AVR делает такое, что не всякий на i11 повторить сумеет...
Вы RP2040 купили и в ящик стола положили, а кое-кто запустил на нем doom. Почитайте сколько всего автору пришлось преодолеть, там полностью рендеринг переделанный, например, так что впихнуть невпихиваемое - это не прерогатива AVR, таким на чем угодно можно страдать. А у Di-Halta я вообще ничего действительно сложного никогда не видел...
Ну световое перо, и что ? Как говорится - давно забытое старое. Накидывайте на вентилятор.
Ну, если для вас работа АЦП AVR на частоте семплирования, равной тактовой ядра, давно забытое старое, то я вам завидую. Хотя, пожалуй, сами-то вы ничего и близкого к "световому перу" на AVR не делали...
_________________ если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе при взгляде на многих сверху ничего не меняется...
Ну, если для вас работа АЦП AVR на частоте семплирования, равной тактовой ядра, давно забытое старое, то я вам завидую.
Осциллографы никогда не делали? Любой человек, который делал, естественно будет пробовать разгонять ADC. Обычно в несколько раз можно разогнать без видимым проблем, а дальше по форме сигнал будет похож, но уровень сигнала будет падать, т.к. конденсатор не успевает заряжаться. Di-Halt доразгонялся до того, что пару младших разрядов реагируют на 10MHz меандр... Ну ок, вау эффект то в чем? Или необычный алгоритм тут где?
А в чём сакральный смысл делать это именно на AVR?
Видимо: "смотрите, шо я могу!" ☺ На форумах иной раз на такое наткнешься… Особенно если какой-нибудь ардуинщик начнет свой "код" выкладывать: а там флоаты, аллокаторы, ногодрыг, жесть сплошная!
_________________ Windows must die! And the users of this crap should either become smarter or become janitors.
...Хотя, пожалуй, сами-то вы ничего и близкого к "световому перу" на AVR не делали...
А в чём сакральный смысл делать это именно на AVR?
Ни в чем, кроме того, что лишь с массой хитростей и особых алгоритмов можно добиться невероятного результата. Знаменитый японец Чен на тиньке сделал ЦОС в звуковом диапазоне - слабо переплюнуть? На 11-ом интеле это можно на циклах Бейсика в реальном времени реализовать, производительности хватит. На стм32 тоже особого ума не надо, и только на системе, в которой ресурсов чуть больше "ничего", проявляются навыки программирования, которым и Кнут мог бы позавидовать. Только вот в этом смысл, ни в чем ином.
Ну, если для вас работа АЦП AVR на частоте семплирования, равной тактовой ядра, давно забытое старое
у меня ютуб не работает. можно как-то описать или где-то прочитать, как такой "разгон" делается.
да не слушай этих критиканов, никакой разгон там не делается. Просто стробоскопический метод и неизвестно как реализованная синхронизация запуска АЦП в нужные моменты с точностью до такта ядра. Само АЦП при этом на штатной тактовой работает. В том и хитрость алгоритма!
P.S. подключи впн и посмотри видос, он длинный, но того стоит!
_________________ если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе при взгляде на многих сверху ничего не меняется...
да не слушай этих критиканов, никакой разгон там не делается. Просто стробоскопический метод и неизвестно как реализованная синхронизация запуска АЦП в нужные моменты с точностью до такта ядра. Само АЦП при этом на штатной тактовой работает. В том и хитрость алгоритма!
ADC требуется 1.5 ADC такта только на sample-and-hold, при этом делители там 2..128 и штатная тактовая для 10-бит ADC - 50..200KHz, т.е. в норме выбирается максимальный делитель 128 и получаем частоту ADC равную 156KHz. Следовательно 1.5 ADC такта - это 192 такта основной частоты мк, которая там 20 MHz. Теперь представьте что у вас меандр 10MHz и вы 192 такта заряжаете конденсатор, что вы там намеряете? ) Потому Di-Halt наверянка выставил минимальный делитель 2 и sample-and-hold занимает всего 3 такта, никаких других вариантов я не вижу. Это безусловно экстремальный разгон и за 3 такта конденсатор успевает зарядиться совсем чуть-чуть. При этом 3 такта все равно много для меандра 10MHz, но что-то похожее может запросто выдавать. А дальше уже идет ваш стробоскопический метод, наверное )
с массой хитростей и особых алгоритмов можно добиться невероятного результата. Знаменитый японец Чен на тиньке сделал ЦОС в звуковом диапазоне - слабо переплюнуть?
Это "хитрость" для лохов. Работа в высших зонах Найквиста, в просторечии именуемой "стробоскопическим преобразованием" на самом деле является достаточно примитивным методом использования АЦП. Только в этой "хитрости" есть одна проблема. Полоса пропускания УВХ должна соответствовать верхней частоте спектра сигнала. Иначе никакой "хитрости" не получится. Ну и антиалиасинговый фильтр на входе АЦП на выбранную зону Найквиста потребуется. Само по себе это не всегда просто реализовать. Требования к фильтру могут оказаться достаточно высокими.
за 3 такта конденсатор успевает зарядиться совсем чуть-чуть.
Это зависит от импеданса мультиплексора на входе УВХ и от внутреннего сопротивления источника сигнала. Все вместе они и образуют апертуру (апертурную задержку) УВХ, которая и определит полосу пропускания УВХ.
...Знаменитый японец Чен на тиньке сделал ЦОС в звуковом диапазоне - слабо переплюнуть?...
На PIC16, в своё время, карточки для VIACCESS делали, и за геройство и необычные алгоритмы не считали. Хотя пользы от этого было несравнимо больше. А касаемо светового пера, так к РАДИО-86 РК прикручивали, а там процессор 1,78мГц и вывод на экран в "железе" ВГ75 с задержкой работал, и ничего, "хитрый алгоритм" применяли и всё ОК. Так что никаких 11-х интелов. А вы про японцев, про тиньки.. не интересно это всё.
Из критиков кто видео смотрел-то? Или всё теоретизируете? Теоремы Найквиста вспоминаете, полосы, время выборки... А человек взял, и сделал микро-осциллограф, который вполне способен показать сигнал 5 МГц с вполне адекватными фронтами и спадами сигнала. И даже выше 5 МГц.
Судя по тому, что все упорно называют Di_Halt-а автором этого пера, никто видео не смотрел, т.к. дихальт только перепостил его... Эх вы, специалисты по обсеру других...
А зачем? Что удивительного в стробоскопическом осциллографе? Они существовали еще в середине прошлого века. У меня есть два старых (17 лет назад разработаны) устройства уже выведенных из серии, где обнаружение сигнала происходит в пятой зоне Найквиста. А все патамушта PIC18 имеет частоту дискретизации АЦП не выше 100К. А нужно 300К. Правильный усилитель и фильтр на входе АЦП для минимизации апертурной задержки - вот и всё "чудо". Все очень дешевые китайские осциллографы с широкой полосой выполнены по стробоскопической схеме. Смотреть на них однократные короткие сигналы принципиально невозможно. А так да, - фронты соответствуют полосе... Такшта, Роман Викторович, теоретег тут только Вы. Поэтому и удивляетесь обычному.
Последний раз редактировалось КРАМ Чт дек 11, 2025 08:21:42, всего редактировалось 1 раз.
Сейчас этот форум просматривают: vollodya и гости: 15
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения