[email protected] 0 1 октября, 2015 Опубликовано 1 октября, 2015 · Жалоба Есть плата, на которой сидит PIC16F1459 и мультиплексор. У платы несколько десятков входов, на которых подается напряжение от 0 до VCC. PIC управляет мультиплексором, так что входы платы один за другим подключаются к АЦП-входу PIC-а. Кроме того, на плате есть USB-разъем, разведенный, естественно, на PIC. Устройство, будучи подключенным к Windows PC, должно определяться как стандартный USB COM Port. Требуется с некоторой частотой опрашивать входы платы и выдавать на USB текст в формате "#канала - уровень_на_АЦП\n". Мультиплексор понимает сигналы "подключить вход 0", "подключить следующий вход", которые синхронизируются тактовым импульсом. Сигналы и тактовый импульс приходят просто с GPIO-выводов PIC. Присылайте ваши предложения (цена, срок) на [email protected]. Отвечу со своего основного ящика и пришлю схему платы. Пожалуйста, в письме сразу ответьте на контрольный вопрос: с какой частотой получится опрашивать входы платы и почему? Вопросы по задаче пишите прямо сюда или на почту. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
lendlav 0 2 октября, 2015 Опубликовано 2 октября, 2015 · Жалоба Так как нужно выдавать на USB текст в формате "#канала - уровень_на_АЦП\n"., то ответ на контрольный вопрос: с какой частотой получится опрашивать входы платы и почему? будет не более 4кГц, по-моему. Имею 1455й контроллер, но нет мультиплексора. Могу попробовать помочь с организацией USB<->COM, но с отладкой мультиплексирования придется самим разбираться. Если интересно, пишите на lendlav(собака)mail(точка)ru Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Ruslan1 16 3 октября, 2015 Опубликовано 3 октября, 2015 · Жалоба Пожалуйста, в письме сразу ответьте на контрольный вопрос: с какой частотой получится опрашивать входы платы и почему? На этот вопрос ответить невозможно, так как непонятно что за мультиплексор Вы используете, каково выходное сопротивление коммутируемых каналов измерения, какую фильтрацию нужно проводить и нет схемы платы. Так как , то ответ будет не более 4кГц, по-моему. Если мультиплексор - электромеханический, то ни о каких килогерцах речь не идет. А в случае электронного тоже много чего нужно знать для ответа. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
agregat 0 4 октября, 2015 Опубликовано 4 октября, 2015 · Жалоба Пожалуйста, в письме сразу ответьте на контрольный вопрос: с какой частотой получится опрашивать входы платы и почему? Опрашивать входы можно с частотой которая определяется двумя задержками. Первое это время переключения мультиплексора, второе это время выборки и преобразования АЦП. Два времени складываем умножаем на количество входов и получаем частоту опроса каждого отдельно взятого канала. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
C2000 2 4 октября, 2015 Опубликовано 4 октября, 2015 · Жалоба Опрашивать входы можно с частотой которая определяется двумя задержками. Первое это время переключения мультиплексора, второе это время выборки и преобразования АЦП. Два времени складываем умножаем на количество входов и получаем частоту опроса каждого отдельно взятого канала. А скорость передачи данных через COM порт(виртуальный)?! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
iosifk 3 4 октября, 2015 Опубликовано 4 октября, 2015 · Жалоба Опрашивать входы можно с частотой которая определяется двумя задержками. Первое это время переключения мультиплексора, второе это время выборки и преобразования АЦП. Два времени складываем умножаем на количество входов и получаем частоту опроса каждого отдельно взятого канала. И третье - время установления сигнала после переключения АЦП. Оно зависит от емкости и сопротивления цепи, а так же от требуемой погрешности.. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
[email protected] 0 5 октября, 2015 Опубликовано 5 октября, 2015 · Жалоба А скорость передачи данных через COM порт(виртуальный)?! Вот именно! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
gerber 7 5 октября, 2015 Опубликовано 5 октября, 2015 · Жалоба А скорость передачи данных через COM порт(виртуальный)?! Вот именно! Не является ограничением - скорость через USB-COM будет заведомо выше скорости сбора данных. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
kumle 0 5 октября, 2015 Опубликовано 5 октября, 2015 · Жалоба Не является ограничением - скорость через USB-COM будет заведомо выше скорости сбора данных. Это точно! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
C2000 2 5 октября, 2015 Опубликовано 5 октября, 2015 · Жалоба Это точно! Не факт С какой скоростью вы собираетесь передовать через COM порт? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
gerber 7 5 октября, 2015 Опубликовано 5 октября, 2015 · Жалоба Не факт С какой скоростью вы собираетесь передовать через COM порт? Скорость COM-порта тут ни при чем, так как передача пойдет не через внешний мост USB-COM (типа FTDI), а через свою реализацию виртуального порта (VCP device). Поэтому скорость передачи будет определяться шиной USB, а поскольку имеется в виду Full Speed USB, то верхняя граница скорости будет 12 Мбит/с. Реальная скорость, конечно, будет ниже, но всё равно она существенно выше скоростей "обычных" COM-портов. Мне удавалось достигать примерно 500 кБайт/c, при этом установленая в системе скорость виртуального порта может быть любой, например, 9600 бит/с. Это существенно выше скорости съёма данных с АЦП. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Eusebius 0 6 октября, 2015 Опубликовано 6 октября, 2015 · Жалоба Скорость COM-порта тут ни при чем, так как передача пойдет не через внешний мост USB-COM (типа FTDI), а через свою реализацию виртуального порта (VCP device). Поэтому скорость передачи будет определяться шиной USB, а поскольку имеется в виду Full Speed USB, то верхняя граница скорости будет 12 Мбит/с. Реальная скорость, конечно, будет ниже, но всё равно она существенно выше скоростей "обычных" COM-портов. Мне удавалось достигать примерно 500 кБайт/c, при этом установленая в системе скорость виртуального порта может быть любой, например, 9600 бит/с. Это существенно выше скорости съёма данных с АЦП. Так как подразумевается класс USB CDC, то с одного устройства мы можем передавать информацию только на одну End point, размер которой не должен превышать 64 байта. Временная сетка USB равна 1 мс. Т.е. теоретически с одного устройства по USB-CDC мы можем передавать 64 байта в 1 мс. При формате #ХХYYY$R, где #ХХ - номер канала, YYY-данные имеем 7 байт на канал, т.е. 9 каналов в кадре. Время оцифровки 1-го разряда составляет 2 микросекунды, т.е. на оцифровку одного канала потратим 24 микросекунды. Так как каналов за 1 мс успеем передать всего 9, то имеем 111 мкс на обработку канала. Из которых 24 мкс - оцифровка, оставшееся время на обработку прерывания АЦП, переключения мультиплексора, укладку информации в TX-буфер. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
C2000 2 6 октября, 2015 Опубликовано 6 октября, 2015 · Жалоба Так как подразумевается класс USB CDC, то с одного устройства мы можем передавать информацию только на одну End point, размер которой не должен превышать 64 байта. Временная сетка USB равна 1 мс. Т.е. теоретически с одного устройства по USB-CDC мы можем передавать 64 байта в 1 мс. При формате #ХХYYY$R, где #ХХ - номер канала, YYY-данные имеем 7 байт на канал, т.е. 9 каналов в кадре. Время оцифровки 1-го разряда составляет 2 микросекунды, т.е. на оцифровку одного канала потратим 24 микросекунды. Так как каналов за 1 мс успеем передать всего 9, то имеем 111 мкс на обработку канала. Из которых 24 мкс - оцифровка, оставшееся время на обработку прерывания АЦП, переключения мультиплексора, укладку информации в TX-буфер. Ацп 10 бит, еще один байт это номер канала зачем 7 байт на канал? Если каналов не больше 64 то информация укладывается в 2 байта Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
gerber 7 6 октября, 2015 Опубликовано 6 октября, 2015 · Жалоба Так как подразумевается класс USB CDC, то с одного устройства мы можем передавать информацию только на одну End point, размер которой не должен превышать 64 байта. Временная сетка USB равна 1 мс. Т.е. теоретически с одного устройства по USB-CDC мы можем передавать 64 байта в 1 мс. Это HID-устройства имеют такое ограничение (64 кБайта в секунду для Full Speed), для CDC можно передавать много Bulk-пакетов за 1 мс кадр, в пределах пропускной способности шины. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Eusebius 0 6 октября, 2015 Опубликовано 6 октября, 2015 · Жалоба Ацп 10 бит, еще один байт это номер канала зачем 7 байт на канал? Если каналов не больше 64 то информация укладывается в 2 байта Потому что топик-стартер потребовал символ конца строки в конце отправлять. Очевидно подразумевается ASCII формат. Это HID-устройства имеют такое ограничение (64 кБайта в секунду для Full Speed), для CDC можно передавать много Bulk-пакетов за 1 мс кадр, в пределах пропускной способности шины. Я просто не разобрался как это сделать в указанном PIC-контроллере. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться