por fabim » 15 Jan 2010 07:09
olha o pessoal confunde muito isso, e acaba se frudinhando.
CDC = emulação de serial, consegue-se um numero maior de bytes por segundo, só que nenhuma garantia do que o pic mandou para o pc ou pc mandou para o pic, chegou corretamente, ou seja.. La vái!! se vai chegar ou não, ou se vai chegar correto ou não. So Deus Sabe..
Te serve isto?
HID = Human Interface device, ja sub entende né ? bom tu pode criar um descriptor para o pic ser o que quiser que ele seja, joystick, interface de audio, etc etc. tu pode por exemplo usar dois buffer com input e input, e estes trabalharem aparte um do outro, como se o pic fosse dois equipamentos distintos!! isso é moleza, e até então não precisa de drive pra nada, tu cria o descriptor com opções que ja existem no pc, ou seja espetou o pic no pc.
PC vai lá seta bits, etc, aí o pic manda o MANUEL do que é e como funciona para o pc, o pc pega todo o manuel procura em sua bilioteca se conhece, e se esta tudo dentro dos conformes. Se sim, esta nos conformes, ele enumera o(s) periferico(s), e pumba, ja esta funcionando perfeitamente.!!
AGORA, tu vim com papo de mexer com stream de audio, stereo 16 bits, em 48khz por exemplo.
Tem como não.
O pic, envia ou recebe no máximo.
64 bytes por mS em hid.
Porque dentro deste 1mS, ele é lido, depois escrito e o pc compara tudo pra saber se chegou aqui ou acolá tudo certinho, e fica um tempo em silencio novamente, isto se dá dentro de 1mS ping time...
Ja no CDC, o pau come solto, o pc vai escrevendo sem parar no pic, sem parar literalmente, se o pic vai dar conta ou não de atender, são outros 500...
Agora existe o HID, esperial de perifericos, que tem a jogada que eu nunca descobri como fazer, que ele worka com até 256 bytes por MS, ou micro frames, de 250uS e 64 bytes cada.
Unica coisa que eu sei, que isso não tem como fazer com pic, pois o clock deste tipo de usb, não é de 12mhz, e sim 48...96...128...196mhz..
Por exemplo o controlador de um penisdrive, ou uma webcam. o clock interno é altissimo, e a interface não tem propriamente um controlador, o pc le o descriptor e manda vê na leitura de dados, ou escrita.
Veja por exemplo, eu peguei um exemplinho com ARM, que emula um pendrive, para o 2148.. Lento pagarai, e um leitor de cartão desses normais de 10RÉAU, parece um pendrive de tão rapido, porque?
1° velocidade da CPU, 2° velocidade de clock de transação de dados da interface USB.
Agora tome suas decisões.
A para CDC, não precisa se preocupar em fazer drives, ja existem os genericos na net..
Abraços
Fabim
Mano, ve só.
Sou responsável pelo que escrevo!!! E não pelo que você entende !!!