|
|
  |
Задачка |
|
|
|
Apr 10 2006, 06:35
|
Участник

Группа: Новичок
Сообщений: 17
Регистрация: 2-04-06
Пользователь №: 15 710

|
Цитата(defunct @ Apr 9 2006, 22:40)  Обшибся я, он оказывается enhanced core.. 6 тактов на цикл. но все равно это медленно.. ~6-8 MIPS всего @ 48Mhz. значит до 100ksps возможно сможет обработать для 6-ти каналов (12 bit). Блин! Я не понимаю  Я еще не силен в этой области. Пишите подробней пожайлуста! 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/ Прокомментируйте пожайлуста, исправьте ошибки, уточните
|
|
|
|
|
Apr 10 2006, 06:44
|
Гуру
     
Группа: Свой
Сообщений: 10 920
Регистрация: 5-04-05
Пользователь №: 3 882

|
Цитата(Andrew83 @ Apr 10 2006, 12:35)  С5131 должен 1. дать команду на выборку всем 6 каналам( по сути это 1 сигнал, который должен идти на все 6 каналов) 2. выбрать АЦП(канал) 3. считать код (12bit) 4. передать / записать 5. go to #2 (выбрать следующий АЦП(канал)) END/ Прокомментируйте пожайлуста, исправьте ошибки, уточните  Если вы надеетесь получить одинаковые скорости потоков от АЦП и через USB (значение с 6 каналов в 1мс), то бросьте сразу эту затею. Хотя .... если достоверность передаваемых данных вам особо не важна, то можно использовать изохронный режим передачи и попробовать забить канал USB под завязку. P.S. вообще, задавая вопрос, нужно начинать с описания задачи. Чего такое изобретате-то?
|
|
|
|
|
Apr 10 2006, 07:02
|
Участник

Группа: Новичок
Сообщений: 17
Регистрация: 2-04-06
Пользователь №: 15 710

|
Цитата(rezident @ Apr 9 2006, 21:56)  Если синхронность оцифровки данных не очень важна (раз можно за 1мс 6 каналов измерить) то я бы взял MSP430F157 (с ADC12 и DMA), соединил бы через UART с CP2102 и всех делов Кстати, промеж CP2102 и MSP430 можно гальваноразвязку поставить, что немаловажно при измерении аналогового сигнала ИМХО. Синхронность оцифровки данных не очень важна, Важно взять отсчеты сигнала запмненного в одно время. Т.к. это координаты 2 точек в пространстве, то для точного определения местоположения точки, нужно чтобы отсчеты были привязаны к одному моменту времени! Т.е. либо делать выборку УВХ в одно время, либо заставлять 6 АЦП оцифровывать сигнал в одно время, а затем последовательно считывать коды с АЦП. MSP430F157 + CP2102 = 350р + 150р =500р Если использовать встроенное АЦП (вроде там 8 каналов) то это дешевле, чем АЦП + МК(with USB), но Есть ли там 6 УВХ, чтобы делать выборку?
|
|
|
|
|
Apr 10 2006, 07:12
|
Участник

Группа: Новичок
Сообщений: 17
Регистрация: 2-04-06
Пользователь №: 15 710

|
Цитата(rezident @ Apr 10 2006, 09:44)  Если вы надеетесь получить одинаковые скорости потоков от АЦП и через USB (значение с 6 каналов в 1мс), то бросьте сразу эту затею. Хотя .... если достоверность передаваемых данных вам особо не важна, то можно использовать изохронный режим передачи и попробовать забить канал USB под завязку. P.S. вообще, задавая вопрос, нужно начинать с описания задачи. Чего такое изобретате-то?  Неужели так сложно передать 12bit Как альтернатива, можно записывать данные в модуль Flash, а по окончанию работы слить все разом на комп. Так даже лучше наверное. Я как раз и начал с описания задачи. А достоверность конечно важна, иначе смысл от 12bit-ого АЦП.
|
|
|
|
|
Apr 10 2006, 07:35
|
Участник

Группа: Новичок
Сообщений: 17
Регистрация: 2-04-06
Пользователь №: 15 710

|
Цитата(rezident @ Apr 10 2006, 10:11)  Нету там синхронных УВХ. УВХ один плюс 8 канальный мультиплексор перед ним. С вашими потребностями я бы лучше 6 АЦП поставил с синхронным запуском. Но вы опять не до конца задачу обрисовали. Что в качестве датчиков? Акселерометры? Гироскопы? Или еще что-то? Бюджет какой выделен? Делали систему позиционирования для одного завода, дык там 8 синхронных каналов АЦП обслуживались логическим автоматом, реализованным в FPGA. Две точки(излучатели порядка 100МГц) в пространстве. На каждую точку три антенны(в трех плоскостях). Радиосигнал с шести антенн (уровень сигнала от 2 до 40 дБ(или от2 до 200мВ)) усиливается, детектируется, фильтруется. Для каждой антенны идет свой канал. Далее надо измерить уровень сигнала(оцифровать) и передать на ПК через USB. Как я уже говорил, данные нужно снимать каждую мс, но не обязательно отправлять сразу на ПК(можно скидывать во Flash). Погрешность должна быть минимальной, т.е. все 6 отсчетов должны быть привязаны к одному времени. Все это опытная установка. Достать можно любые микросхемы. Бюджет на микросхемы не ограничен, но любой выбор должен быть твёрдо обоснован.  Не должно быть много излишеств. Приветствуется минимизация. Бюджет на принципиальную схему блока с МК и на написание кода для МК не блещет Но по успешному завершению прийдет  с подарками. Да только боюсь не успею к Новому Году...
Сообщение отредактировал Andrew83 - Apr 10 2006, 07:44
|
|
|
|
|
Apr 10 2006, 09:21
|

кекс
     
Группа: Свой
Сообщений: 3 825
Регистрация: 17-12-05
Из: Киев
Пользователь №: 12 326

|
Цитата(Andrew83 @ Apr 10 2006, 09:35)  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 инструкций. Вот тут и получится тормоз, который не даст развить высокую скорость.
|
|
|
|
|
Apr 11 2006, 10:23
|
Участник

Группа: Новичок
Сообщений: 17
Регистрация: 2-04-06
Пользователь №: 15 710

|
Дополнение к задачке. Однозначно, Нужно данные записывать во внешний модуль Flash. Так будет и проще и логичней. И только по окончанию работы, спокойно сливать все на ПК по USB. Похоже поклонников Atmelа(в частности AT89C51) и AD не особо много. Предпочитают SiLabs и LT. Ставить МК с насыщенной перефирией и встроенным АЦП нет смысла. AT89C5131 вроде подходит. Осталось заставить его брать данные с АЦП-шок и пихать во Flash. И по запросу от ПК сливать данные в комп. И всего-то. Если бы знать как это делать. И остается вопрос по поводу выбора АЦП. AD7658 не подходит, я не нашел у него возможности делать выборку одновременно по всем 6 каналам(нашел только по 2-м). Может плохо искал? не знаете? LTC1408 14bit 600ksps тот же вопрос. Можно ли сделать одновременную выборку? MAX1436 12bit 40Msps- наверное перебор. AD9222 12bit 40/65 Msps - точно перебор. MAX115\116 можно поставить две микросхемы. Головокружение
|
|
|
|
|
Apr 11 2006, 10:46
|

Гуру
     
Группа: Свой
Сообщений: 4 363
Регистрация: 13-05-05
Из: Москва
Пользователь №: 4 987

|
Цитата(Andrew83 @ Apr 11 2006, 14:23)  Дополнение к задачке. Однозначно, Нужно данные записывать во внешний модуль Flash. Так будет и проще и логичней. И только по окончанию работы, спокойно сливать все на ПК по USB. ............... AT89C5131 вроде подходит. Осталось заставить его брать данные с АЦП-шок и пихать во Flash. И по запросу от ПК сливать данные в комп. Проще и логичней, по-моему, "пихать" данные прямо в USB контроллер, а он сам уж разберётся, как их передать в писи. Цитата(Andrew83 @ Apr 11 2006, 14:23)  ...И остается вопрос по поводу выбора АЦП. 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, получите один вход синхронного захвата.
Цитата(Andrew83 @ Apr 11 2006, 14:23)  ...LTC1408 14bit 600ksps тот же вопрос. Можно ли сделать одновременную выборку? Читайте внимательнее даташыт - без этого всё равно прилично работающую систему сбора данных сделать не получится.
--------------------
Самонадеянность слепа. Сомнения - спутник разума. (с)
|
|
|
|
|
Apr 11 2006, 11:26
|
Участник

Группа: Участник
Сообщений: 25
Регистрация: 3-03-06
Пользователь №: 14 931

|
По поводу флэш. С какой скоростью записывать собираешься ? Типовое время записи - миллисекунды, правда это на сектор. То есть надо иметь еще ОЗУ, накопить там скажем, 512 байт, и затем переписать во флэш
|
|
|
|
|
Apr 11 2006, 11:55
|
Участник

Группа: Новичок
Сообщений: 17
Регистрация: 2-04-06
Пользователь №: 15 710

|
Цитата(Stanislav @ Apr 11 2006, 13:46)  Проще и логичней, по-моему, "пихать" данные прямо в USB контроллер, а он сам уж разберётся, как их передать в писи. Я подумал, что раз МК совмещен с USB контроллером и передавать по 12bit нет смысла, то стоит записывать все данные в память. Т.к. 32кб не достаточно, то поставить внешний модуль. К тому же шла речь о том, что МК не успеет и считать и передать данные.
Сообщение отредактировал Andrew83 - Apr 11 2006, 11:56
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|