Если ваш вопрос не влез ни в одну из вышеперечисленных тем, вам сюда.
Ответить

Объясните на предмет АЦП из портов

Ср фев 07, 2018 08:45:50

Возмём STM32F103C8T6, у него куча портов, почему бы из них не сварганить АЦП? Ставим на порты транзисторы, на них делители напряжения, так - чтоб каждый из них открывал каждый транзистор на индивидуальном значении напряжения на входе, регистрируем единицы и нули, строим из них число. Получается АЦП с большой частотой выборки. Плюсы - дёшево и быстродействующе. Как думаете?

Re: Объясните на предмет АЦП из портов

Ср фев 07, 2018 08:50:32

:facepalm:

Re: Объясните на предмет АЦП из портов

Ср фев 07, 2018 09:08:34

Интересно, для чего может понадобиться АЦП с частотой выше, чем у штатного встроенного, но с погрешностью плюс-минус километр и разрядностью 4-5 бит (если задействовать почти все порты)?

Re: Объясните на предмет АЦП из портов

Ср фев 07, 2018 10:05:43

транзисторов по числу ног, плюс на каждый делитель... где тут дешево? :dont_know: :facepalm:

Re: Объясните на предмет АЦП из портов

Ср фев 07, 2018 10:14:32

Берем МК с неплохим АЦП, работающим по ДМА нахаляву, паяем вокруг него мешок транзисторов и резюков и получаем тоже АЦП, только на порядки медленее, менее точно и берущий 100% ресурсов ядра - профит -))))

Re: Объясните на предмет АЦП из портов

Ср фев 07, 2018 11:41:58

Забыли еще добавить - с разрядностью на порядок меньшей :)

Re: Объясните на предмет АЦП из портов

Чт фев 08, 2018 09:28:40

Зато "с большой частотой выборки". Надо наверное на ПЛИС такое собирать :)

Re: Объясните на предмет АЦП из портов

Чт фев 08, 2018 10:55:35

Зато "с большой частотой выборки".

Самое смешное, что и этого не будет.
Хотя, некоторые после атмег все считают, что раз ядро на 120Мхз фигачит, то и ногами со 120Мхз можно дергать -))

Re: Объясните на предмет АЦП из портов

Вт фев 13, 2018 10:15:41

Зато "с большой частотой выборки".

Самое смешное, что и этого не будет.
Хотя, некоторые после атмег все считают, что раз ядро на 120Мхз фигачит, то и ногами со 120Мхз можно дергать -))

120 может и не будет, но 50МГц для махания лапками даташиты на полном серьезе указывают. APB2 пресловутого F103 - на полной частоте, 72МГц. Порты насколько я помню работают за 1 такт, и читать состояние можно каждый такт APB2. Но проц ничего другого делать не сможет. К тому же прочитанные данные наверное захочется куда-то сохранять, а то и вовсе обрабатывать или отсылать. И все станет интересно - куда девать, где на это время взять и какой джиттер.

Максимум применений который для этого изврата придумывается - ухватить "пакет" отсчетов в RAM и потом его куда-то отгружать или обсчитывать, забив на ADC на время. Но проще будет взять F3 и зарядить тамошние 3 ADC друг за другом, вытаскивая лопатой. Любители осцилов вроде делают, и в отличие от - проц под завязку не грузит, так что можно делать что-то еще. Подробнее можно посмотреть в ветке про осциллографы если интересно. А если надо еще больше, народ берет скоростные чипы ADC и FPGA. Потому что так лучше всего работает для этой задачи.

И все-же на посмеяться, на hackday висит RF передатчик на FM диапазон, чтоли, состоящий из ... attiny и батарейки. Конечно она не может в FM ногами дрыгать, но прямоугольный сигнал дает гармоники. Одна из них приходится на FM диапазон. Поэтому проц с батарейкой может быть RF передатчиком до кучи.

Re: Объясните на предмет АЦП из портов

Вт фев 13, 2018 11:20:24

С этими 120, 50 Мхз я такой геморой имел. Причем у меня не 120MHz, у меня 300Mhz M7 и fpga'шка, использовал gpio для статусов - всякие там реди, бизи, доун и т.д. от фпгашки
Вобщем, попробуй простой эксперимент - две ноги снаружи соедини, дальше у одной меняй состояние, другое считывай - посчитай сколько тактов будет между двумя этими событиями -))

Re: Объясните на предмет АЦП из портов

Вт фев 13, 2018 12:33:44

Я догадываюсь что будет, но может быть человеку этого спорта как раз и хочется? :) В F7 с 300МГц наверняка особенностей еще больше.

Во всем этом деле довольно много "если". Какие wait state памяти откуда выполняется код. Какой код получился и сколько это циклов (на чистом асме 32F програмить - ну не знаю), и все такое. Прерывания дико испортят worst case, а совсем без них - гм! Посмотреть статус лапок - читать регистр порта можно за 1 цикл, Но само по себе это бесполезно. А что-то сделать или данные куда-то деть - циклы.

Так что 50Мгц актуально для фокусов когда изменения состояний лапок фигачатся максимально быстро, с полным пофигом на остальное. Нечто типа unrolled loop. Из RAM, там wait state-ов нет. С чтением порта и записью в буфер не прокатит - выполнение кода и запись буфера будут делить шину. А если из флеша, там у F103 0 WS только до 24МГц чтоли. Но если кому легких путей не ищется... то даташит не врет. Но говорит не всю правду :)
Последний раз редактировалось linuxdude Вт фев 13, 2018 12:41:27, всего редактировалось 1 раз.

Re: Объясните на предмет АЦП из портов

Вт фев 13, 2018 12:36:21

Cahes писал(а): Ставим на порты транзисторы, на них делители напряжения, так - чтоб каждый из них открывал каждый транзистор на индивидуальном значении напряжения на входе, регистрируем единицы и нули, строим из них число.
Транзисторы так не работают, компаратор на них придется делать (а это уже не один) или использовать ОУ. Дешевые транзисторы и ОУ не работают на МГцах нормально. И не забыть еще ИОН сконаебить.

Re: Объясните на предмет АЦП из портов

Вт фев 13, 2018 13:10:05

А если из флеша, там у F103 0 WS только до 24МГц чтоли. Но если кому легких путей не ищется...

Оно у всех так. И 60Мхз, и у 120Мхз, и у 300Мхз рабочая частота флеша 20-26Мхз. Дальше вводятся вейтстейты, которые уравновешиваются (с очень разной успешностью даже в разных семествах одного производителя -))) ) шириной, фифошками, предвыборкой, кешем.

Кстати, по той же причине, макс. производительность зачастую достигается не на макс. частоте ядра, а на макс частоте флеша умноженное на целое число.

Как пример - у фрискейла на MK22 (M4F) было особенно ярко - он 120Мхз, макс. часотата флеша 26.66Мхз. Но считает шустрее на 106.6Mhz.
26.6 x 4 шустрее 24 x 5 -)

Re: Объясните на предмет АЦП из портов

Вт фев 13, 2018 13:53:50

Я в курсе что флеш (и вообще память) отстает от проца. Это очень древний эффект. На атмелах он не вылезает лишь в силу мизерных рабочих частот :). Но за это есть своя цена - что либо считать на атмелах абсолютная порнография, как только это сложнее 2+2. И видеть весь мир только байтами... у них вроде до сих пор ADC 8 битов и тормозной как трактор, разве нет?

Кстати у F103 максимум 72, это 24 * 3, наверное как раз максимум с 2WS и ограничил частоты. Но у RAM вроде как WS всегда нулевой, из него быстрее будет, ЕСЛИ код в него не будет лазить попутно. А это не совсем удобное и простое требование для осмысленной активности кода. Особенно - чтения порта на скорость в допушении что результат чтения еще и интересовал.

Re: Объясните на предмет АЦП из портов

Вт фев 13, 2018 14:09:10

Да, SRAM, во всяком случае TCM, всегда c частотой ядра. Но не TCM не всегда с нулевой латентностью -))
Из SRAMа не всегда быстрей. Классический пример - шифрование на основе сети фейстеля.
Когда у тебя в оперативке и код, и исходные данные, и результат, и основной шаг алгоритма - табличная трансляция, тормозить начинает сильнее, чем если все, кроме кода, в SRAMе.

У флеша предел в ~25Mhz похоже чтото фундаментальное их физики.

Re: Объясните на предмет АЦП из портов

Вт фев 13, 2018 17:53:24

По скорости выполнения кода я уже кое-что пробовал viewtopic.php?f=59&t=151209

Re: Объясните на предмет АЦП из портов

Ср фев 14, 2018 05:30:42

1) просто никакое разрешение: даже если отдать под это дело 8 портов по 8 ног (64 ноги) будет лишь 6 бит разрешения...
2) скорость... во первых всю эту батарею надо зарядить и дождаться "устаканивания" напруги, во вторых надо эти порты опросить все (да результат обработать), а это будет медленнее, чем опрашивать 1-2 регистра, и в третьих нет никакой защиты от изменения входа во время замера.
3) если это всё на рассыпухе делать.....(тут много слов про стоимость, компактность и помехозащищенность)

Re: Объясните на предмет АЦП из портов

Ср фев 14, 2018 05:53:32

В давние времена прикрутил АЦП к Спектруму. 6бит АЦП сделал из одной 561лн1. Получился мой первый осциллограф :)) .

Re: Объясните на предмет АЦП из портов

Ср фев 14, 2018 09:31:14

Я про микроконтроллеры говорил, у них обычно RAM рядом с ядром, WS обычно нет. У более жирных там кэш, иногда его даже можно как "явный" SRAM использовать. Сильно быстрее всего остального в таком случае.

Что до фейстеля - гонять алгоритм который что-то с RAM интенсивно делает, при том что код в RAM - плохо же. Из соображений активности шины. Говоря за себя я в состоянии прикинуть это, и про WS я в курсе. Я такие вещи наблюдал даже в 8-битных системах с внешними RAM/ROM. Флеш тормозил даже там, так что критичный код перегружали в SRAM :) Кстати криптографы сейчас уходят от фейстеля. Проблем с ними, особенно на больших системах. Современные алгоритмы предпочитают быть кучкой математических действий, без таблиц. А что до пределов - быстрые процессоры вообще как-то оказалось делать проще чем быструю память. Реально за ядрами успевает только SRAM но она площадь кристалла очень расходует, много не поставишь, и от питания зависит. Кстати вроде в каких-то китайских клонах STM32 флеха оформленная отдельным кристаллом быстрее работает. На уровне физики флеха - массив полевиков с изолированным затвором, где заряд "пойман", при чтении определяется открыт полевик из-за заряда пойманного в затворе или нет. Сам по себе процесс определения открыт ли полевик вроде не имеет причин сильно тормозить. Возможно что для интеграции на один кристалл флеша и обычной логики приходится на какие-то компромиссы сильнее идти.

1) просто никакое разрешение: даже если отдать под это дело 8 портов по 8 ног (64 ноги) будет лишь 6 бит разрешения...

Это как? Я почему-то думал что даже 8-битный порт даст 8 битов разрешения? Могут быть 8 битов в разных состояниях. Я что-то упускаю? Но вот штука мегагерцевых частот на рассыпухе покажет... ну явно не то что у STM32 в даташите про их ADC написано про ошибки, линейность и проч.

Re: Объясните на предмет АЦП из портов

Ср фев 14, 2018 10:14:10

про разрешение: 8 бит будет если ноги как попало меняются, а тут набор компараторов (как линейка уровня сигнала на магнитофоне) т.е 8 ног - 9 состояний (от "0" на всех, "1" на одном, "1" на 2х, ..., "1" на всех 8ми ногах).
Ответить