Перейти к содержанию
    

Обшибся я, он оказывается enhanced core.. 6 тактов на цикл.

но все равно это медленно.. ~6-8 MIPS всего @ 48Mhz.

значит до 100ksps возможно сможет обработать для 6-ти каналов (12 bit).

Блин! Я не понимаю :unsure: Я еще не силен в этой области.

Пишите подробней пожайлуста!

AT89C5131

6 тактов на инструкцию, частота ядра 40МГц, т.е. 25 нс, 25*6(тактов)=150нс (на инструкцию);

в другом источнике 250нс (на команду).

12bit*6(каналов)=72(bit в мс) или 9(кбайт в с). Это ведь, как кот наплакал. 12(Мбит в с) и не пахнет.

Т.е. скорость передачи маленькая, точнее обьем данных не велик.

AD7658 12bit 250kSPS=4мкс

1мс/6каналов=160(мкс на канал) из них 10мкс на АЦП, и остается 150мкс на С5131.

150мкс/250нс=600(команд на канал) не знаю, много это или мало?

С5131 должен

1. дать команду на выборку всем 6 каналам( по сути это 1 сигнал, который должен идти на все 6 каналов)

2. выбрать АЦП(канал)

3. считать код (12bit)

4. передать / записать

5. go to #2 (выбрать следующий АЦП(канал))

END/

Прокомментируйте пожайлуста, исправьте ошибки, уточните :excl:

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

С5131 должен

1. дать команду на выборку всем 6 каналам( по сути это 1 сигнал, который должен идти на все 6 каналов)

2. выбрать АЦП(канал)

3. считать код (12bit)

4. передать / записать

5. go to #2 (выбрать следующий АЦП(канал))

END/

Прокомментируйте пожайлуста, исправьте ошибки, уточните :excl:

Если вы надеетесь получить одинаковые скорости потоков от АЦП и через USB (значение с 6 каналов в 1мс), то бросьте сразу эту затею. Хотя .... если достоверность передаваемых данных вам особо не важна, то можно использовать изохронный режим передачи и попробовать забить канал USB под завязку.

P.S. вообще, задавая вопрос, нужно начинать с описания задачи. Чего такое изобретате-то? ;)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Если синхронность оцифровки данных не очень важна (раз можно за 1мс 6 каналов измерить) то я бы взял MSP430F157 (с ADC12 и DMA), соединил бы через UART с CP2102 и всех делов :)

Кстати, промеж CP2102 и MSP430 можно гальваноразвязку поставить, что немаловажно при измерении аналогового сигнала ИМХО.

Синхронность оцифровки данных не очень важна, Важно взять отсчеты сигнала запмненного в одно время. Т.к. это координаты 2 точек в пространстве, то для точного определения местоположения точки, нужно чтобы отсчеты были привязаны к одному моменту времени! Т.е. либо делать выборку УВХ в одно время, либо заставлять 6 АЦП оцифровывать сигнал в одно время, а затем последовательно считывать коды с АЦП.

 

MSP430F157 + CP2102 = 350р + 150р =500р

Если использовать встроенное АЦП (вроде там 8 каналов) то это дешевле, чем АЦП + МК(with USB),

но Есть ли там 6 УВХ, чтобы делать выборку?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Если вы надеетесь получить одинаковые скорости потоков от АЦП и через USB (значение с 6 каналов в 1мс), то бросьте сразу эту затею. Хотя .... если достоверность передаваемых данных вам особо не важна, то можно использовать изохронный режим передачи и попробовать забить канал USB под завязку.

P.S. вообще, задавая вопрос, нужно начинать с описания задачи. Чего такое изобретате-то? ;)

USB можно забить "под завязку" не изохроном, а балком. А вообще, в чём проблема передачи по USB?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Если использовать встроенное АЦП (вроде там 8 каналов) то это дешевле, чем АЦП + МК(with USB),

но Есть ли там 6 УВХ, чтобы делать выборку?

Нету там синхронных УВХ. УВХ один плюс 8 канальный мультиплексор перед ним. С вашими потребностями я бы лучше 6 АЦП поставил с синхронным запуском. Но вы опять не до конца задачу обрисовали. Что в качестве датчиков? Акселерометры? Гироскопы? Или еще что-то? Бюджет какой выделен?

Делали систему позиционирования для одного завода, дык там 8 синхронных каналов АЦП обслуживались логическим автоматом, реализованным в FPGA.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Если вы надеетесь получить одинаковые скорости потоков от АЦП и через USB (значение с 6 каналов в 1мс), то бросьте сразу эту затею. Хотя .... если достоверность передаваемых данных вам особо не важна, то можно использовать изохронный режим передачи и попробовать забить канал USB под завязку.

P.S. вообще, задавая вопрос, нужно начинать с описания задачи. Чего такое изобретате-то? ;)

Неужели так сложно передать 12bit :(

Как альтернатива, можно записывать данные в модуль Flash, а по окончанию работы слить все разом на комп. Так даже лучше наверное.

Я как раз и начал с описания задачи. А достоверность конечно важна, иначе смысл от 12bit-ого АЦП.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Нету там синхронных УВХ. УВХ один плюс 8 канальный мультиплексор перед ним. С вашими потребностями я бы лучше 6 АЦП поставил с синхронным запуском. Но вы опять не до конца задачу обрисовали. Что в качестве датчиков? Акселерометры? Гироскопы? Или еще что-то? Бюджет какой выделен?

Делали систему позиционирования для одного завода, дык там 8 синхронных каналов АЦП обслуживались логическим автоматом, реализованным в FPGA.

Две точки(излучатели порядка 100МГц) в пространстве. На каждую точку три антенны(в трех плоскостях). Радиосигнал с шести антенн (уровень сигнала от 2 до 40 дБ(или от2 до 200мВ)) усиливается, детектируется, фильтруется. Для каждой антенны идет свой канал. Далее надо измерить уровень сигнала(оцифровать) и передать на ПК через USB. Как я уже говорил, данные нужно снимать каждую мс, но не обязательно отправлять сразу на ПК(можно скидывать во Flash). Погрешность должна быть минимальной, т.е. все 6 отсчетов должны быть привязаны к одному времени.

Все это опытная установка.

Достать можно любые микросхемы.

Бюджет на микросхемы не ограничен, но любой выбор должен быть твёрдо обоснован. :excl:

Не должно быть много излишеств. Приветствуется минимизация.

Бюджет на принципиальную схему блока с МК и на написание кода для МК не блещет :(

Но по успешному завершению прийдет :santa2: с подарками.

Да только боюсь не успею к Новому Году...

Изменено пользователем Andrew83

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

6 тактов на инструкцию, частота ядра 40МГц, т.е. 25 нс, 25*6(тактов)=150нс (на инструкцию);

не на команду, а на цикл.. команда может быть 2х цикловая.

 

в другом источнике 250нс (на команду).

12bit*6(каналов)=72(bit в мс) или 9(кбайт в с). Это ведь, как кот наплакал. 12(Мбит в с) и не пахнет.

пропускной USB хватит, если считать без учета передачи служебной информации, на 12Mbps/(6*12) = ~166.6ksps. А вот производительности МК чтобы прочитать все 6-ть каналов (12бит) и запихнуть в USB - на мой взгляд, хватит только до 100 kSPS.

 

 

1. дать команду на выборку всем 6 каналам( по сути это 1 сигнал, который должен идти на все 6

каналов)

Команду выборки (точнее сигнал) надо не только подавать, но и снимать.

 

3. считать код (12bit)

Этот пункт сильно зависит от типа АЦП. Если АЦП последовательные, то считывать можно все 6-ть одновременно, но потребуется около 50-100 инструкций. Параллельные АЦП считывать придется поочередно(последовательно), и опять же получите тех же 50-100 инструкций. Вот тут и получится тормоз, который не даст развить высокую скорость.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Не надо забывать про асинхронность передачи по USB и разброс приема данных в операционке.

Например WinXP 20-100!!! ms. Позтому вдобавок к данным придется добавлять Timestamp, а зто

еще несколько байт на 6 канальный блок. Иначе точки отсчета здорово расползутся.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Не надо забывать про асинхронность передачи по USB и разброс приема данных в операционке.

Например WinXP 20-100!!! ms. Позтому вдобавок к данным придется добавлять Timestamp, а зто

еще несколько байт на 6 канальный блок. Иначе точки отсчета здорово расползутся.

Дык, а где сказано о реал-тайм задаче? :blink: По-моему, автору темы нужно просто перегнать синхронно захватываемые данные в писюк. А USB хост живёт своей жизнью, из него в память данные действительно могут относительно редко читаться, но они ведь не теряются!

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Дополнение к задачке. :excl:

Однозначно, Нужно данные записывать во внешний модуль Flash.

Так будет и проще и логичней.

И только по окончанию работы, спокойно сливать все на ПК по USB.

 

Похоже поклонников Atmelа(в частности AT89C51) и AD не особо много. :(

Предпочитают SiLabs и LT.

 

Ставить МК с насыщенной перефирией и встроенным АЦП нет смысла. :excl:

AT89C5131 вроде подходит. Осталось заставить его брать данные с АЦП-шок и пихать во Flash.

И по запросу от ПК сливать данные в комп. И всего-то. Если бы знать как это делать.

 

И остается вопрос по поводу выбора АЦП. :excl:

 

AD7658 не подходит, я не нашел у него возможности делать выборку одновременно по всем 6 каналам(нашел только по 2-м). Может плохо искал? не знаете?

 

LTC1408 14bit 600ksps тот же вопрос. Можно ли сделать одновременную выборку?

 

MAX1436 12bit 40Msps- наверное перебор.

AD9222 12bit 40/65 Msps - точно перебор.

 

MAX115\116 можно поставить две микросхемы.

 

Головокружение :wacko:

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Дополнение к задачке. :excl:

Однозначно, Нужно данные записывать во внешний модуль Flash.

Так будет и проще и логичней.

И только по окончанию работы, спокойно сливать все на ПК по USB.

...............

AT89C5131 вроде подходит. Осталось заставить его брать данные с АЦП-шок и пихать во Flash.

И по запросу от ПК сливать данные в комп.

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

 

...И остается вопрос по поводу выбора АЦП. :excl:

 

AD7658 не подходит, я не нашел у него возможности делать выборку одновременно по всем 6 каналам(нашел только по 2-м). Может плохо искал? не знаете?

С аглицким у Вас похоже, проблемма. Сказано же в названии чипа:

 

250 kSPS, 6-Channel,Simultaneous
Sampling, Bipolar 12/14-Bit ADC

А вот ещё выдержка из даташыта:

"Three CONVST pins allow independent simultaneous sampling of the

three ADC pairs".

То есть, объединив выводы CONVSTA, CONVSTB, CONVSTC, получите один вход синхронного захвата.

...LTC1408 14bit 600ksps тот же вопрос. Можно ли сделать одновременную выборку?
Читайте внимательнее даташыт - без этого всё равно прилично работающую систему сбора данных сделать не получится.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

По поводу флэш.

С какой скоростью записывать собираешься ?

Типовое время записи - миллисекунды, правда это на сектор.

То есть надо иметь еще ОЗУ, накопить там скажем, 512 байт, и затем переписать во флэш

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

Я подумал, что раз МК совмещен с USB контроллером и передавать по 12bit нет смысла, то стоит записывать все данные в память. Т.к. 32кб не достаточно, то поставить внешний модуль.

К тому же шла речь о том, что МК не успеет и считать и передать данные.

Изменено пользователем Andrew83

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...