Newsgroup: it.hobby.elettronica.digitale
Titolo: USB

Ciao,
oggi, visto che non avevo niente da fare :) mi sono costruito un 
joystick USB con un PIC. Funziona perfettamente, ho solo qualche 
problema ad aggiungere funzionalità con il descrittore, ma questo è un 
altro post e verrà inviato un'altra volta... (cit.)
Mi si è però presentata una domanda... faccio un esempio: per lavoro 
capita di gestire delle console di comando composte da diversi joystick, 
throttle, pulsanti ecc... Di solito usiamo un'elettronica che invia lo 
stato delle periferiche via seriale al PC e un software interpreta i 
dati ricevuti.
Mi chiedevo se potrebbero esserci dei vantaggi a trasferire il tutto su 
USB, si tratta però di console dedicate (quindi niente produzione in 
serie) e - dato l'àmbito industriale - non ci sono le esigenze del 
grande pubblico come ad esempio scarsità di porte seriali o vantaggi 
dall'alimentazione autonoma.
Infine, quanto complicato può essere il descrittore USB della 
periferica? Ad esempio si può arrivare ad avere 10 assi e una 30ina di 
pulsanti?
Marco / iw2nzm

 30ina di pulsanti?
Si, può farlo. La classe HID da questo punto di vista è abbastanza
completa e flessibile.
A.D.

 completa e flessibile.
Ottimo grazie!
Marco / iw2nzm

 Ad esempio si può arrivare ad avere 10 assi e una 30ina di pulsanti?
Io ho 60 assi e 60 pulsanti (il max che gestisce il sw audio).
Nell'applicazione completa, c'è un pic master collegato alla usb con il 
descrittore per 60+60 ingressi.
Questo pic utilizza poi i suoi ingressi e lo stato di altri ingressi di 
altri pic slaves che comunicano su una rete zigbee.
Una volta l'usb era considerato poco affidabile e lento (erano però altri 
tempi e come affidabilità si preferiva anche ide al sata, isa al pci, ecc.).
Il punto debole erano però spesso i drivers o lacune del sistema operativo.
Ora però anche in ambiente industriale si stanno diffondendo 
ethernet,usb,...
Se l'applicazione è fatta bene, puoi utilizzare usb come vuoi, la lunghezza 
limitata del cavo schermato e la trasmissione differenziale fanno sì che 
disturbi elettrici non possano poi entrare così facilmente, bisogna 
ovviamente avere riguardo nell'applicazione, ma questo anche nel resto ;-)
Roberto P. 

 dall'alimentazione autonoma.
In ambiente industriale/automotive serve grande reiezione ai disturbi di
modo comune, e questo è il principale punto debole dei tipici transceivers
USB. Ti sconsiglio di usare USB in ambienti del genere, e se proprio sei
obbligato, aggiungi più filtri che puoi.
-- 
emboliaschizoide.splinder.com

 obbligato, aggiungi piů filtri che puoi.
Terrň presente :)
Grazie anche a Roberto P. per l'intervento.
Ciao!
Marco / iw2nzm

Ciao Marco,
Conosco poco il problema in questione, ma siccome  stai spippolando in 
una cosa che potrebbe interessarmi, vorrei farti alcune domande.
In particolare, ho (forse) la necessità di sviluppare una tastiera 
"custom" da connettere all'USB. Dovrebbe replicare solo alcuni tasti di 
una tastiera qwerty.
Questo è possibile con il PIC in questione e non troppo lavoro? E' 
richiesta l'installazione di un driver specifico o è sufficiente quello 
di default per gli HID? Hai qualche link in proposito?
Ciao

Francesco Sacchi wrote:

Ciao Francesco,
se hai a disposizione le librerie per gestire la comunicazione USB 
sfruttando l'hardware interno (come ad esempio il CCS che uso io) quello 
che resta da fare è:
1) creare il descrittore della classe. Forse la cosa un po' più ostica 
all'inizio (infatti ho aperto un thread in proposito :) )
2) riempire l'array da inviare all'host con i dati necessari: questo è 
ovviamente banale
In generale non hai bisogno di driver (almeno sotto winXP) in quanto 
riconosce automaticamente la periferica e la installa di conseguenza.
Con la mia schedina ho provato a implementare il joystick e il mouse. 
Non ho provato con la tastiera ma ho visto che c'è un esempio quasi 
pronto nella cartella del compilatore stesso.
Se ti servissero frammenti di codice o lo schema della scheda che ho 
costruito scrivimi pure in pvt. Comunque, se faccio a tempo stasera 
dovrei mettere on-line (e comunicherò l'indirizzo) una paginetta in 
proposito.
Come link suggerisco un giretto su 
www.usb.org
 e in particolare uno 
sguardo al documento sulle implementazioni del descrittore:
http://www.usb.org/developers/devclass_docs/Hut1_11.pdf
Ciao!
Marco / iw2nzm