[an error occurred while processing this directive]
USB CY3C68013A: Проблема с передачей данных в ПК (асинхр. режим)
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)

миниатюрный аудио-видеорекордер mAVR

Отправлено SimpleSoft 27 октября 2006 г. 14:18

CY3C68013A управляется микропроцессором в slave-fifo режиме (16 бит шина). В Cypress включены и настроены 2 буффера:
EP2 (из ПК) размером 1024 (пакет размером 512, bulk)
EP6 (в ПК) размером 1024 (пакет размером 512, bulk)
Настроил 2 флага: FlagA -> EP2EF, FlagB -> EP6FF
настроил автопосылку буфера размером 512 байт.
Запись в Cypress работает без проблем - процессором вычитываю из буффера всё что отправил из ПК нормально.
Не могу понять принцип работы механизма чтения из Cypress.
Я пытался делать передачу таким образом:

//Передаю комманду в CPU
WriteFile(h_USB, (LPVOID)&Cmd, 1, &dwRet, NULL);

//Принимаю 32768 байт
ReadFile(h_USB, (LPVOID&r_Buffer, 32768, &dwRet, NULL);

..и ReadFile "зависает" до тех пор пока не примет 32к данных... вроде логично, но если микропроцессор записывает эти 32к в Cypress раньше чем я делаю ReadFile (и выставляется флаг EP6FF) то следующий вызов ReadFile просто зависает а данные уже ушли в небытие...

но если делать пачками по 512 байт - то ситуация меняется в корне, т.е. даже если микропроцессор пошлёт данные раньше чем вызовется ReadFile, процедура не "зависнет" а нормально вычитает 512 байт.

Подскажите как выкручиваться из ситуации?

Составить ответ  |||  Конференция  |||  Архив

Ответы


Отправка ответа
Имя (обязательно): 
Пароль: 
E-mail: 

Тема (обязательно):
Сообщение:

Ссылка на URL: 
Название ссылки: 
URL изображения: 


Rambler's Top100 Рейтинг@Mail.ru
Перейти к списку ответов  |||  Конференция  |||  Архив  |||  Главная страница  |||  Содержание