USB com PIC18F4550

Enviado:
14 Jan 2010 16:17
por Francesco
Olá pessoal!
Cansei da serial, 115200bps é muito pouco! Não vejo outra opção se não ir para o mundo USB de uma vez por todas. Mas não sei bem o que fazer do lado do PC...
Com a serial eu tinha desde o HyperTerminal até o Docklight, era fácil trabalhar. Mas no PC terei que desenvolver o driver também, não é? Como faço isso? Alguém sabe a receita de bolo?
Obrigado.
Francesco

Enviado:
14 Jan 2010 18:57
por _blackmore_
Bixo ... se não me engano... eu vi algo parecido na elektor ... a 1 ou 2 anos ... controlador universal USB ... vou procurar e depois lhe mando por mail.
abrax!

Enviado:
14 Jan 2010 19:08
por fabim
Frantchesco,,,
não sei ao certo o seu nivel de conhecimento sobre usb.
Mas quando vocÊ diz que esta cansado de 14400 bytes por segundo, tu esta com o que em mente pra querer mexer com usb ?
Veja tem dois tipos de comunicação.
1 e mais usada é a HID, não precisa de drive nem nada, e tu pode criar o descriptor pro pic ser o que ele quiser. Do lado do pc, um aplicativinho simples que fala com a API do SO, e se comunica com o host que esta controlando o device hid, no caso o pic.
Outro tipo, e não tão usado.
O PIC emula uma serial, aí precisa de drive pro SO saber o que é o pic, e como ele funciona. Ja nos programas não precisa de nada para usb, pois o windows vai apresentar mais uma ou umas portas seriais, que no caso seram o PIC.
Abraços

Enviado:
14 Jan 2010 23:26
por Francesco
Olá Blackmore, obrigado pela ajuda. Realmente um projeto pronto é uma grande ajuda.
Fabim, a idéia era essa mesmo. No caso, se não me engano a pilha para comunicação na USB é a CDC, não é? Sei que a Microchip disponibilizou um aplication notes sobre isso. Mas o lado do PC não ficou claro...
Meu problema é o volume de dados, a serial já está demorando demais para isso. Para fazer um projeto que trabalhe, por exemplo, com stream de audio, já não dá.
Quanto ao PIC, não me preocupo muito. A dúvida é criar um driver no lado do PC.
Obrigado pela ajuda.

Enviado:
15 Jan 2010 07:09
por fabim
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

Enviado:
15 Jan 2010 08:13
por Francesco
Fabim, obrigado. Está mais claro agora.
Não sabia das limitações do CDC, principalmente para PIC. Uma interface rápida com o PC acaba sendo um problema.
Tenho um kit com um arm7, o STR711. Acho que vou partir para ele. Além de ter mais memória, é bem mais rápido.
Valew.
Francesco