|
PIC18F4550 USB Программирование С++ Скорость приема данных, вопросы посвяшенные по работе с PIC18F4550 в часности программирование |
|
|
|
Jun 14 2008, 07:29
|
Группа: Новичок
Сообщений: 5
Регистрация: 30-04-08
Пользователь №: 37 190

|
Ребя помогите плиз, надо получать данные с АЦП с 8ми каналов, взял готовое решение от Microchip , Отправляю запрос - получаю ответ, работает как часики , проблема в скорости очень медленно откудато задержка в 15 млсек...Смотрел USBLizer Помогите плз разобраться...Большое СПС...
|
|
|
|
|
 |
Ответов
|
Jun 15 2008, 01:20
|
Местный
  
Группа: Свой
Сообщений: 237
Регистрация: 14-08-07
Из: Москва
Пользователь №: 29 791

|
Цитата(Artem_Gusev @ Jun 14 2008, 11:29)  ... очень медленно откудато задержка в 15 млсек... Это такт обмена пакетами для USB1. Работаешь в режиме Bulk?
|
|
|
|
|
Jun 15 2008, 09:22
|
Группа: Новичок
Сообщений: 5
Регистрация: 30-04-08
Пользователь №: 37 190

|
Цитата(=AK= @ Jun 15 2008, 05:51)  Один такт обмена для USB1 равен 1мс. Но за это время можно послать данные только в одну сторону (за исключением Control pipe, по которой можно успеть получить ответ с том же 1мс фрейме). А 15 мс - это задержки Винды, причем, это еще мало, обычно бывает 20-30 мс. Если по bulk отправлять запрос, а потом ждать ответа, то такие задержки и следует ожидать. Да да так и вышло, все дело в винде, запрос ответ получаю в течении 1млсек. а вот между задержа из-за того что таймер не может в винде быстрее срабатывать, как реализовать по другому???... если не сложно подскажите..программирую на Buildere C++
Сообщение отредактировал Artem_Gusev - Jun 15 2008, 09:23
|
|
|
|
|
Jun 15 2008, 10:48
|
Группа: Новичок
Сообщений: 5
Регистрация: 30-04-08
Пользователь №: 37 190

|
Цитата(=AK= @ Jun 15 2008, 12:51)  Трудно что-то советовать, если неизвестно, что вы хотите.
Непонятно, зачем вы вообще посылаете этот запрос. Сам факт чтения данных из пайпа уже является запросом. Пусть ваши АЦП все время ведут преобразование, а результаты ваша прога может посылать в PC безо всяких специальных запросов, до тех пор, пока может посылать (т.е. пока буфер не полон). Код void ServiceRequests(void) { byte index; OpenADC(ADC_FOSC_4 & ADC_RIGHT_JUST & ADC_12_TAD, ADC_INT_OFF & ADC_REF_VDD_VSS ,0b0000); SetChanADC(ADC_CH0); Delay10TCYx(5); ReadPOT(); dataPacket._byte[0] = ADRESL; dataPacket._byte[1] = ADRESH; SetChanADC(ADC_CH3); Delay10TCYx(5); ReadPOT(); dataPacket._byte[2] = ADRESL; dataPacket._byte[3] = ADRESH; SetChanADC(ADC_CH4); Delay10TCYx(5); ReadPOT(); dataPacket._byte[4] = ADRESL; dataPacket._byte[5] = ADRESH; SetChanADC(ADC_CH8); Delay10TCYx(5); ReadPOT(); dataPacket._byte[6] = ADRESL; dataPacket._byte[7] = ADRESH; SetChanADC(ADC_CH9); Delay10TCYx(5); ReadPOT(); dataPacket._byte[8] = ADRESL; dataPacket._byte[9] = ADRESH; SetChanADC(ADC_CH10); Delay10TCYx(5); ReadPOT(); dataPacket._byte[10] = ADRESL; dataPacket._byte[11] = ADRESH; SetChanADC(ADC_CH11); Delay10TCYx(5); ReadPOT(); dataPacket._byte[12] = ADRESL; dataPacket._byte[13] = ADRESH; SetChanADC(ADC_CH12); Delay10TCYx(5); ReadPOT(); dataPacket._byte[14] = ADRESL; dataPacket._byte[15] = ADRESH; CloseADC(); if(!mUSBGenTxIsBusy()) { USBGenWrite((byte*)&dataPacket,16); }//end if }//end ServiceRequests Это у меня в МК.... как обрабатывать данные со стороны РС ..??
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|