Andrew83 0 10 апреля, 2006 Опубликовано 10 апреля, 2006 · Жалоба Обшибся я, он оказывается 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: Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
rezident 0 10 апреля, 2006 Опубликовано 10 апреля, 2006 · Жалоба С5131 должен 1. дать команду на выборку всем 6 каналам( по сути это 1 сигнал, который должен идти на все 6 каналов) 2. выбрать АЦП(канал) 3. считать код (12bit) 4. передать / записать 5. go to #2 (выбрать следующий АЦП(канал)) END/ Прокомментируйте пожайлуста, исправьте ошибки, уточните :excl: Если вы надеетесь получить одинаковые скорости потоков от АЦП и через USB (значение с 6 каналов в 1мс), то бросьте сразу эту затею. Хотя .... если достоверность передаваемых данных вам особо не важна, то можно использовать изохронный режим передачи и попробовать забить канал USB под завязку. P.S. вообще, задавая вопрос, нужно начинать с описания задачи. Чего такое изобретате-то? ;) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Andrew83 0 10 апреля, 2006 Опубликовано 10 апреля, 2006 · Жалоба Если синхронность оцифровки данных не очень важна (раз можно за 1мс 6 каналов измерить) то я бы взял MSP430F157 (с ADC12 и DMA), соединил бы через UART с CP2102 и всех делов :) Кстати, промеж CP2102 и MSP430 можно гальваноразвязку поставить, что немаловажно при измерении аналогового сигнала ИМХО. Синхронность оцифровки данных не очень важна, Важно взять отсчеты сигнала запмненного в одно время. Т.к. это координаты 2 точек в пространстве, то для точного определения местоположения точки, нужно чтобы отсчеты были привязаны к одному моменту времени! Т.е. либо делать выборку УВХ в одно время, либо заставлять 6 АЦП оцифровывать сигнал в одно время, а затем последовательно считывать коды с АЦП. MSP430F157 + CP2102 = 350р + 150р =500р Если использовать встроенное АЦП (вроде там 8 каналов) то это дешевле, чем АЦП + МК(with USB), но Есть ли там 6 УВХ, чтобы делать выборку? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Stanislav 0 10 апреля, 2006 Опубликовано 10 апреля, 2006 · Жалоба Если вы надеетесь получить одинаковые скорости потоков от АЦП и через USB (значение с 6 каналов в 1мс), то бросьте сразу эту затею. Хотя .... если достоверность передаваемых данных вам особо не важна, то можно использовать изохронный режим передачи и попробовать забить канал USB под завязку. P.S. вообще, задавая вопрос, нужно начинать с описания задачи. Чего такое изобретате-то? ;) USB можно забить "под завязку" не изохроном, а балком. А вообще, в чём проблема передачи по USB? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
rezident 0 10 апреля, 2006 Опубликовано 10 апреля, 2006 · Жалоба Если использовать встроенное АЦП (вроде там 8 каналов) то это дешевле, чем АЦП + МК(with USB), но Есть ли там 6 УВХ, чтобы делать выборку? Нету там синхронных УВХ. УВХ один плюс 8 канальный мультиплексор перед ним. С вашими потребностями я бы лучше 6 АЦП поставил с синхронным запуском. Но вы опять не до конца задачу обрисовали. Что в качестве датчиков? Акселерометры? Гироскопы? Или еще что-то? Бюджет какой выделен? Делали систему позиционирования для одного завода, дык там 8 синхронных каналов АЦП обслуживались логическим автоматом, реализованным в FPGA. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Andrew83 0 10 апреля, 2006 Опубликовано 10 апреля, 2006 · Жалоба Если вы надеетесь получить одинаковые скорости потоков от АЦП и через USB (значение с 6 каналов в 1мс), то бросьте сразу эту затею. Хотя .... если достоверность передаваемых данных вам особо не важна, то можно использовать изохронный режим передачи и попробовать забить канал USB под завязку. P.S. вообще, задавая вопрос, нужно начинать с описания задачи. Чего такое изобретате-то? ;) Неужели так сложно передать 12bit :( Как альтернатива, можно записывать данные в модуль Flash, а по окончанию работы слить все разом на комп. Так даже лучше наверное. Я как раз и начал с описания задачи. А достоверность конечно важна, иначе смысл от 12bit-ого АЦП. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Andrew83 0 10 апреля, 2006 Опубликовано 10 апреля, 2006 (изменено) · Жалоба Нету там синхронных УВХ. УВХ один плюс 8 канальный мультиплексор перед ним. С вашими потребностями я бы лучше 6 АЦП поставил с синхронным запуском. Но вы опять не до конца задачу обрисовали. Что в качестве датчиков? Акселерометры? Гироскопы? Или еще что-то? Бюджет какой выделен? Делали систему позиционирования для одного завода, дык там 8 синхронных каналов АЦП обслуживались логическим автоматом, реализованным в FPGA. Две точки(излучатели порядка 100МГц) в пространстве. На каждую точку три антенны(в трех плоскостях). Радиосигнал с шести антенн (уровень сигнала от 2 до 40 дБ(или от2 до 200мВ)) усиливается, детектируется, фильтруется. Для каждой антенны идет свой канал. Далее надо измерить уровень сигнала(оцифровать) и передать на ПК через USB. Как я уже говорил, данные нужно снимать каждую мс, но не обязательно отправлять сразу на ПК(можно скидывать во Flash). Погрешность должна быть минимальной, т.е. все 6 отсчетов должны быть привязаны к одному времени. Все это опытная установка. Достать можно любые микросхемы. Бюджет на микросхемы не ограничен, но любой выбор должен быть твёрдо обоснован. :excl: Не должно быть много излишеств. Приветствуется минимизация. Бюджет на принципиальную схему блока с МК и на написание кода для МК не блещет :( Но по успешному завершению прийдет :santa2: с подарками. Да только боюсь не успею к Новому Году... Изменено 10 апреля, 2006 пользователем Andrew83 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
defunct 0 10 апреля, 2006 Опубликовано 10 апреля, 2006 · Жалоба 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 инструкций. Вот тут и получится тормоз, который не даст развить высокую скорость. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Stanislav 0 10 апреля, 2006 Опубликовано 10 апреля, 2006 · Жалоба А почему бы данные из АЦП не валить прямо в USB контроллер? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
TED17 0 10 апреля, 2006 Опубликовано 10 апреля, 2006 · Жалоба Не надо забывать про асинхронность передачи по USB и разброс приема данных в операционке. Например WinXP 20-100!!! ms. Позтому вдобавок к данным придется добавлять Timestamp, а зто еще несколько байт на 6 канальный блок. Иначе точки отсчета здорово расползутся. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Stanislav 0 10 апреля, 2006 Опубликовано 10 апреля, 2006 · Жалоба Не надо забывать про асинхронность передачи по USB и разброс приема данных в операционке. Например WinXP 20-100!!! ms. Позтому вдобавок к данным придется добавлять Timestamp, а зто еще несколько байт на 6 канальный блок. Иначе точки отсчета здорово расползутся. Дык, а где сказано о реал-тайм задаче? :blink: По-моему, автору темы нужно просто перегнать синхронно захватываемые данные в писюк. А USB хост живёт своей жизнью, из него в память данные действительно могут относительно редко читаться, но они ведь не теряются! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Andrew83 0 11 апреля, 2006 Опубликовано 11 апреля, 2006 · Жалоба Дополнение к задачке. :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 можно поставить две микросхемы. Головокружение Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Stanislav 0 11 апреля, 2006 Опубликовано 11 апреля, 2006 · Жалоба Дополнение к задачке. :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 тот же вопрос. Можно ли сделать одновременную выборку?Читайте внимательнее даташыт - без этого всё равно прилично работающую систему сбора данных сделать не получится. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Shandy 0 11 апреля, 2006 Опубликовано 11 апреля, 2006 · Жалоба По поводу флэш. С какой скоростью записывать собираешься ? Типовое время записи - миллисекунды, правда это на сектор. То есть надо иметь еще ОЗУ, накопить там скажем, 512 байт, и затем переписать во флэш Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Andrew83 0 11 апреля, 2006 Опубликовано 11 апреля, 2006 (изменено) · Жалоба Проще и логичней, по-моему, "пихать" данные прямо в USB контроллер, а он сам уж разберётся, как их передать в писи. Я подумал, что раз МК совмещен с USB контроллером и передавать по 12bit нет смысла, то стоит записывать все данные в память. Т.к. 32кб не достаточно, то поставить внешний модуль. К тому же шла речь о том, что МК не успеет и считать и передать данные. Изменено 11 апреля, 2006 пользователем Andrew83 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться