Базовая плата: аналоговые входы

meXanicus
contributor
contributor
Posts: 314
Joined: Sat Dec 21, 2013 2:42 pm
Location: Russia, Rostov-na-Donu

Re: Базовая плата: аналоговые входы

Post by meXanicus »

Ну если низкоуровневое прогаммирование, то прахом идет тогда идея с лего-переносимостью кода и возможной кросплатформенностью которую обеспечивает ос.
Я на Drive2 Alfa Romeo 156 SW

User avatar
Maxi
Sr Consultant
Sr Consultant
Posts: 786
Joined: Wed Oct 23, 2013 4:25 pm

Re: Базовая плата: аналоговые входы

Post by Maxi »

кроссплатформенность и переносимость - это миф.

mkf
Posts: 25
Joined: Sun Oct 25, 2015 7:11 am
Location: Russia, Tomsk City

Re: Базовая плата: аналоговые входы

Post by mkf »

meXanicus wrote:Ну если низкоуровневое прогаммирование, то прахом идет тогда идея с лего-переносимостью кода и возможной кросплатформенностью которую обеспечивает ос.
Низкоуровневое программирование не в смысле использования ассемблера. Это тот же си, но непосредственная обработка скоростных сигналов описывается с учетом устройства периферии микроконтроллера. Если использовать терминологию OS, то это собственный драйвер периферии микроконтроллера. Переложить его на другой микроконтроллер - большой проблемы не составляет. По сути меняется несколько строк кода на одной страничке. Время потребуется только для прочтения документации на новый (другой) микроконтроллер, а мануалы все равно придется читать, хотя бы потому, что наименования пинов разные и периферия по разному разнесена. Все медленные вычислительные и алгоритмы связи, диагностики не затрагиваются совсем (95% объема кода, 99% времени отладки).

На счет кроссплатформенности. Пример. Допустим нет у меня HIP9011. Раньше был HIP9010, но снят с производства.Где переносимость? Вариантов нет совсем. Даже появился вариант, пусть будет TI - TPIC8101. Все равно нужно читать мануал, чтобы понять, что TPIC8101 идентичен HIP9011. И достать его еще сложнее. Получается непереносимость :) Жесткая привязка к железу. Самое смешное, что эта железка стоит столько же, сколько сам STM32, но при этом в сто раз более глупая и медленная. И ей уже точно лет 20 (ну или почти 20) от роду.

К статит с точки зрения совместимости, лучше делать полную обработку сигнала в STM32 (без синхронных детекторов), т.к. в этом случае ни одной лишней ножки контроллера не потребуется. Только тоже вход АЦП.

mkf
Posts: 25
Joined: Sun Oct 25, 2015 7:11 am
Location: Russia, Tomsk City

Re: Базовая плата: аналоговые входы

Post by mkf »

К стати вот
http://www.freescale.com/files/32bit/doc/app_note/AN3772.pdf
Чей-то любимый процессор. Уже в апликухах заложена поддержка как внешних обработчиков сигнала с датчика детонации, так и реализация обработки сигнала с датчика в самом микроконтроллере.

User avatar
Maxi
Sr Consultant
Sr Consultant
Posts: 786
Joined: Wed Oct 23, 2013 4:25 pm

Re: Базовая плата: аналоговые входы

Post by Maxi »

mkf wrote:На счет кроссплатформенности. Пример. Допустим нет у меня HIP9011. Раньше был HIP9010, но снят с производства.Где переносимость?
Тут как раз она есть. Реализуется общая модель и затем транслируются гайны и частоты из 9010 в 9011 т.к. 9011 по сути расширение 9010.

mkf
Posts: 25
Joined: Sun Oct 25, 2015 7:11 am
Location: Russia, Tomsk City

Re: Базовая плата: аналоговые входы

Post by mkf »

Ну так все привязано к одной микросхеме. Заменить ее нечем. Это в вопросу о переносимости. Открытый код можно перенести с одного процессора на другой процессор, а вот закрытую железку никак. Я не говорю, что HIP9011 плохая.

User avatar
Maxi
Sr Consultant
Sr Consultant
Posts: 786
Joined: Wed Oct 23, 2013 4:25 pm

Re: Базовая плата: аналоговые входы

Post by Maxi »

почему одной.
есть еще сс650 . вообще конфетка. детон + кучка пятивольтовых АЦП.
есть сс195 - детон, где все частота и гайн программируется внешними пинами.
Принцип такой же как у HIP только без spi. стоит во всяких мотеках и мотрониках старых всех подряд.

причем все эти микросхемы работают по сути одинаково. только программируются по разному. но у всех гайн-канал-частоту задал. интегратор вкл-выкл и с АЦП показания снял

mkf
Posts: 25
Joined: Sun Oct 25, 2015 7:11 am
Location: Russia, Tomsk City

Re: Базовая плата: аналоговые входы

Post by mkf »

Польза от HIP9011, в том, что его хоть по 5-ть штук но можно купить. BOSH CC195 сильно сложнее достать. Я кроме документации на них не нашел место где их купить. Заказы с чертовых куличек не учитываю. В этом смысле проще на рассыпухе сделать то же самое. Но смысл, если появится сложность перестройки фильтра на нужные частоты? Если почти все можно реализовать в микроконтроллере, который уже есть, с беспроблемной настройкой параметров внутри программы.

Вобщем-то все начиналось с универсального входа АЦП. С его частотных характеристик. :) Может не будем далеко отрываться от названия темы.
Для датчика детонации выше 20кГц не надо. Если не ошибаюсь для двигателей с цилиндром 0.3-0.5л частота настройки около 5-7 кГц. В идеале надо 20-25 отсчетов АЦП на период, чтобы не было эффектов от дискретизации совсем. В реальности и 10 и 5 отсчетов хватает. Т. е. частоты выборок АЦП 100-200 кГц как бы хватит. Далее полосовой БИХ фильтр с настраиваемыми параметрами. В результате число с АЦП на входе - число на выходе. Выпрямитель - это модуль числа. Интегратор - x+=x. Ну пусть этот фильтр съест 1 мкс рабочего времени процессора. Хотя при наличии сопроцессора, вероятно, все будет горазо веселее. Остальное все как у HIP-a - в начале окна сбросить интегратор, в конце окна считать показания.

puff
contributor
contributor
Posts: 2813
Joined: Mon Nov 11, 2013 11:28 am
Location: Moskau

Re: Базовая плата: аналоговые входы

Post by puff »

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

User avatar
Maxi
Sr Consultant
Sr Consultant
Posts: 786
Joined: Wed Oct 23, 2013 4:25 pm

Re: Базовая плата: аналоговые входы

Post by Maxi »

в данном случае ситуация такова что новых микросхем нет! все так или иначе перешли на жирнючие процессоры и программную фильтрацию.

meXanicus
contributor
contributor
Posts: 314
Joined: Sat Dec 21, 2013 2:42 pm
Location: Russia, Rostov-na-Donu

Re: Базовая плата: аналоговые входы

Post by meXanicus »

Блин, Макси! Ты вот сейчас своей рукой гвозди в гроб hip и прочим спец knock микрам закалачиваешь!
Я на Drive2 Alfa Romeo 156 SW

User avatar
Maxi
Sr Consultant
Sr Consultant
Posts: 786
Joined: Wed Oct 23, 2013 4:25 pm

Re: Базовая плата: аналоговые входы

Post by Maxi »

на мой век hip и прочих с запасом хватит - я же не изобретаю свое железо и не имею потребности его закупать в китае.

mkf
Posts: 25
Joined: Sun Oct 25, 2015 7:11 am
Location: Russia, Tomsk City

Re: Базовая плата: аналоговые входы

Post by mkf »

Вот, может кому будет интересно, так реализуется полосовой БИХ фильтр.
Коээфициенты посчитаны тут: http://www-users.cs.york.ac.uk/~fisher/mkfilter/trad.html
Там же си код генерится. Коэффициенты можно довести до целочисленных. При наличии сопроцессора разницы нет.
Частота фильтра и частота выборки АЦП - 1:10.

Code: Select all

/* Digital filter designed by mkfilter/mkshape/gencode   A.J. Fisher
   Command line: /www/usr/fisher/helpers/mkfilter -Bu -Bp -o 2 -a 9.5000000000e-02 1.0500000000e-01 -l */

#define NZEROS 4
#define NPOLES 4
#define GAIN   1.058546125e+03

static float xv[NZEROS+1], yv[NPOLES+1];

static void filterloop()
  { for (;;)
      { xv[0] = xv[1]; xv[1] = xv[2]; xv[2] = xv[3]; xv[3] = xv[4]; 
        xv[4] = next input value / GAIN;
        yv[0] = yv[1]; yv[1] = yv[2]; yv[2] = yv[3]; yv[3] = yv[4]; 
        yv[4] =   (xv[0] + xv[4]) - 2 * xv[2]
                     + ( -0.9149758348 * yv[0]) + (  3.0281471145 * yv[1])
                     + ( -4.4179329790 * yv[2]) + (  3.1657870207 * yv[3]);
        next output value = yv[4];
      }
  }

Post Reply