Cos'è ElectroYou | Login Iscriviti

ElectroYou - la comunità dei professionisti del mondo elettrico

PIC e USB. Come iniziare?

Tipologie, strumenti di sviluppo, hardware e progetti

Moderatore: Foto UtentePaolino

0
voti

[11] Re: PIC e USB. Come iniziare?

Messaggioda Foto UtenteTardoFreak » 17 gen 2010, 17:24

Cercando in giro per la rete ho trovato la soluzione. Ho trovato un pacchetto con la DLL per gestire la classe HID con visual basic. Posso cosi' usare tranquillamente la libreria del MikroC senza tanti grattacapi.
Quindi lascio perdere l' idea di fare un dispositivo CDC.

Pero' questa USB e' bella ma e' complessa. :?
"La follia sta nel fare sempre la stessa cosa aspettandosi risultati diversi".
"Parla soltanto quando sei sicuro che quello che dirai è più bello del silenzio".
Rispondere è cortesia, ma lasciare l'ultima parola ai cretini è arte.
Avatar utente
Foto UtenteTardoFreak
73,9k 8 12 13
-EY Legend-
-EY Legend-
 
Messaggi: 15754
Iscritto il: 16 dic 2009, 11:10
Località: Torino - 3° pianeta del Sistema Solare

0
voti

[12] Re: PIC e USB. Come iniziare?

Messaggioda Foto UtenteTardoFreak » 18 gen 2010, 11:24

Sto per disegnare uni schema elettrico per provare la USB. Usero' un PIC18F4450 e sono intenzionato ad utilizzare il transceiver interno. Non riesco pero' a capire come funziona il regolatore ed i pull-up interni. Per le mie prove non ho bisogno di isolamento, quello verra' poi magari in seguito. Se seleziono il regolatore interno devo comunque alimentare a 3,3V il micro o questo sara' alimentato direttamente dalla USB?

Edit: penso di aver capito. La Vcc del micro la collego direttamente alla Vcc della USB, seleziono i pull-up interni, il regolatore interno e dovrei essere a posto. Alimento il micro direttamente dalla USB a 5V. In pratica non devo mettrci nessun pull-up esterno.
Spero di aver capito bene. :?
"La follia sta nel fare sempre la stessa cosa aspettandosi risultati diversi".
"Parla soltanto quando sei sicuro che quello che dirai è più bello del silenzio".
Rispondere è cortesia, ma lasciare l'ultima parola ai cretini è arte.
Avatar utente
Foto UtenteTardoFreak
73,9k 8 12 13
-EY Legend-
-EY Legend-
 
Messaggi: 15754
Iscritto il: 16 dic 2009, 11:10
Località: Torino - 3° pianeta del Sistema Solare

0
voti

[13] Re: PIC e USB. Come iniziare?

Messaggioda Foto UtenteTardoFreak » 19 gen 2010, 15:49

Riprendo il thread perche' mi pare di aver capito che a qualcuno puo' interessare. Ho ottenuto un primo risultato e lo riporto qui.
Ho scaricato la documentazione del PICDEM Full Speed USB board ed ho cablato un circuitino, seguendo la falsariga della scheda di valutazione, montando un PIC18F4550 in contenitore DIL, collegato quarzo da 20 MHz. con schema canonico, pins D+ D- al connettore USB, i 4 leds sulle porte da RD0 a RD4 con resistori da 2k2 e catodi a massa, condensatore da 470nf sul pin Vusb e, chiaramente, i +5V e la massa dell' USB al micro con in parallelo l' immancabile condensatore da 100nF.
In pratica ho riprodotto senza fronzoli la board in questione. Se interessa (e se trovero' un programmino di video grabber) postero' lo schema.
Poi ho installato il pacchetto MCHPFSUSB.
Con il mio vecchio programmatore ho programmato il PIC con il file C:\MCHPFSUSB\fw\_factory_hex\picdemfsusb.hex
Ho inserito il chip nel circuito, ed ho dato fuoco alle polveri collegandolo alla USB.
Il PC ha riconosciuto il dispositivo e richiesto il dirver che ho indicato nella posizione C:\MCHPFSUSB\PC\ MCHPFSUSB driver\Release
Il PC ha caricato il driver e riconosciuto il dispositivo come "Microchip Custom Device"
I due led collegati a RD0 e RD1 lampeggiano alternativamente. Tutto OK.
Ho poi lanciato il programma PICDEM FS USB Demo Tool dall' elenco dei programmi.
Selezionato La scheda PICDEM FS USB0 dal menu' a tendina ed ho premuto "connect".

E' chiaro che, non avendo il sensore di temperatura ed il potenziomentro collegati i valori che compaiono non hanno senso ma e' sufficiente premere i tasti "Toggle LED" per vedere i led collegati a RD2 e RD3 accendersi a comando.

Lo schema elettrico si trova nella user guide della scheda PICDEM FS USB.

Ora provero' a compilare e programmare l' applicazione che fa vedere il PIC collegato con la USB come se fosse collegato ad una porta seriale, che e' l' applicazione che m' interessa, e poi, se mi farete un cenno (altrimenti evitero' di sprecare tempo), vi esporro' i risultati ed indicazioni su cosa e come ho fatto.
"La follia sta nel fare sempre la stessa cosa aspettandosi risultati diversi".
"Parla soltanto quando sei sicuro che quello che dirai è più bello del silenzio".
Rispondere è cortesia, ma lasciare l'ultima parola ai cretini è arte.
Avatar utente
Foto UtenteTardoFreak
73,9k 8 12 13
-EY Legend-
-EY Legend-
 
Messaggi: 15754
Iscritto il: 16 dic 2009, 11:10
Località: Torino - 3° pianeta del Sistema Solare

0
voti

[14] Re: PIC e USB. Come iniziare?

Messaggioda Foto Utentec1b8 » 19 gen 2010, 16:16

TardoFreak ha scritto:....e poi, se mi farete un cenno (altrimenti evitero' di sprecare tempo), vi esporro' i risultati ed indicazioni su cosa e come ho fatto.

Direi che DEVI esporre risultati, modo utilizzato e sopratutto sorgenti.
Lo sai che sto aspettando che tu arrivi ad una soluzione concreta e funzionante per poi chiederti di passarmi tutto il lavoro... :mrgreen:
Scherzo, ma la cosa mi interessa e non aspetto altro.
Attendo sviluppi (naturalmente positivi).
Fabio
Avatar utente
Foto Utentec1b8
3.595 3 8 13
G.Master EY
G.Master EY
 
Messaggi: 1770
Iscritto il: 15 gen 2009, 15:23

0
voti

[15] Re: PIC e USB. Come iniziare?

Messaggioda Foto UtenteTardoFreak » 19 gen 2010, 17:21

BINGO! :mrgreen: :mrgreen: :mrgreen:

Sono riuscito nel primo passo. Da qui la strada e' in discesa.
Come ho accennato nei post precedenti mi sono incuriosito leggendo l' application della microchip su come aggiornare le applicazioni che usano la linea seriale dirottando il tutto sull' USB. Direi che oggi e' quantomai necessario visto che PC con le seriali penso che ci sia rimasto il mio del laboratorio e pochi altri. Per me che ho sempre lavorato con le seriali sarebbe stato ottima cosa poter integrare funzioni di comunicazioni "normali" nei PICs. L' alternativa e' quella suggerita da ... non ricordo piu chi :oops: ... di mettere un convertitore USB-seriale e non pensarci piu'. Tuttavia l' idea di dipendere da integrati specifici per questa mansione non e' che mi rendeva contento. Preferisco avere io la possibilita' di crearmi il mio convertitore usando i PIC (che si trovano oramai anche in panetteria) per avere piu' autonomia e disinvoltura e magari integrare nell' oggetto funzioni di azionamento rele' o acquisizione dati. Per fare questo, come suggerisce l' application "AN956 - Migrating Applications to USB from RS-232 UART with Minimal Impact on PC Software" occorre creare un' applicazione USB di classe CDC, in pratica bisogna far vedere al PC il PIC come se fosse una porta seriale. Questo per evitare di dovere scrivere drivers (non oso pensare!) ed utilizzare il driver usbser.sys gia' presente in windows.

Detto questo.

Ho installato l' MPLAB ed il compilatore C18 ed il pacchetto USB come ho detto prima.
Nella cartella C:\MCHPFSUSB\fw\Cdc ho aperto il progetto MCHPUSB

Il fatto di avere utilizzato lo schema della board di valutazione della microchip (si tratta solo di usare un quarzo a 20MHz, e metterci 4 leds :roll: ) mi ha permesso di non toccare assolutamente nulla del progetto, in modo da ottenere un primo risultato: scrivere in un terminale la frase "Prova di comunicazione" in continuo.

Ho fatto in modo che MPLAB mi compilasse il progetto cosi' come era, senza modifiche e senza errori fin a quando ho visto BUILD SUCCESS.

Nel file "main.c" ci deve stare l' applicazione dell' utente quindi ho localizzato la funzione main e gli aggiunto queste due semplici righe che, quando c'e' la possibilita' di trasmettere una stringa la trasemttono. Ottengo cosi' una trasmissione continua che, in teoria, dovrebbe riempirmi il terminale.

Codice: Seleziona tutto
void main(void)
{
    InitializeSystem();
    while(1)
    {
        // inzio modifica del main

        if(mUSBUSARTIsTxTrfReady())
          putrsUSBUSART("Prova di comunicazione");

   // fine modifica del main

        USBTasks();         // USB Tasks
        ProcessIO();        // See user\user.c & .h
    }//end while
}//end main


Ho compilato tutto senza errori.
Ho programmato il PIC18F4550 con il mio programmatore antidiluviano
Rimesso nello zoccolo e dato fuco (collegato all' USB)
Il PC mi ha riconosciuto il dispositivo seriale e richiesto il driver. Per non sbagliare gli ho dato quello della microchip che si trova nella cartella C:\MCHPFSUSB\fw\Cdc\inf\win2k_winxp_winvista32.
Caricato il driver. Il dispositivo funziona ed e' pronto all' uso.
Lancio l' hiper terminal, seleziono la porta e vedo che c'e' una com in piu' chiamata COM3
Seleziono la COM3, faccio OK sui parametri perche', in questo caso, non hanno senso

Il video si riempie di scritte "Prova di comunicazioneProva di comunicazioneProva di comunicazioneProva di comunicazioneProva di comunicazioneProva di comunicazioneProva di comunicazione ..."

Ora, tutto questo non e' un gran che, e' solo l' inizio. Il mio lavoro successivo sara' quello di spulciarmi per bene il software, capirlo e magari crearmi la libreria per il mikroC (che ritengo un eccellente compilatore).
Volendo si puo' gia' implementare qualcosa direttamente in questo programma, perche' no? Da notare che i leds su RD0-RD1 lampeggiano alternativamente quando il dispositivo funziona correttamente. Volendo si possono localizzare il punto nel programma che li pilota ma preferisco lasciarli cosi', non danno fastidio, non mangiano e non bevono e danno un' indicazione sul buon funzionamento.

Mi scuso se nel post ho scritto ovvieta' (sicuramente per qualcuno ho scoperto l' acqua calda) o se il risultato che ho ottenuto e' troppo scarno, ma per me e' piu' che sufficiente per sviluppare oggetti funzionanti.

edit: dimenticavo di dire, per la cronaca, che l' oggettino in questione funziona con una velocita' di ben 12Mb al secondo. :D
"La follia sta nel fare sempre la stessa cosa aspettandosi risultati diversi".
"Parla soltanto quando sei sicuro che quello che dirai è più bello del silenzio".
Rispondere è cortesia, ma lasciare l'ultima parola ai cretini è arte.
Avatar utente
Foto UtenteTardoFreak
73,9k 8 12 13
-EY Legend-
-EY Legend-
 
Messaggi: 15754
Iscritto il: 16 dic 2009, 11:10
Località: Torino - 3° pianeta del Sistema Solare

0
voti

[16] Re: PIC e USB. Come iniziare?

Messaggioda Foto Utentec1b8 » 19 gen 2010, 17:42

Come inizio direi niente male.
A me il C non piace, preferisco l'assembler. Se non sbaglio quando compili ti viene generato (o puoi farlo generare) il sorgente assembler corrispondente. Potresti inviarmelo che sono curioso di vederlo?
Fabio
Avatar utente
Foto Utentec1b8
3.595 3 8 13
G.Master EY
G.Master EY
 
Messaggi: 1770
Iscritto il: 15 gen 2009, 15:23

0
voti

[17] Re: PIC e USB. Come iniziare?

Messaggioda Foto UtenteTardoFreak » 19 gen 2010, 17:48

Non so come fare a generare l' output in assembler. Sto usando MPAB solo da ieri. :(

Comunque, se interessa lo schema elettrico del circuitino eccolo:.

prova_usb.jpg
prova_usb.jpg (90.66 KiB) Osservato 2486 volte


Il LED sulla RA0 (pin2) non c' entra niente, l' avevo messo io per un prova.
"La follia sta nel fare sempre la stessa cosa aspettandosi risultati diversi".
"Parla soltanto quando sei sicuro che quello che dirai è più bello del silenzio".
Rispondere è cortesia, ma lasciare l'ultima parola ai cretini è arte.
Avatar utente
Foto UtenteTardoFreak
73,9k 8 12 13
-EY Legend-
-EY Legend-
 
Messaggi: 15754
Iscritto il: 16 dic 2009, 11:10
Località: Torino - 3° pianeta del Sistema Solare

0
voti

[18] Re: PIC e USB. Come iniziare?

Messaggioda Foto Utentec1b8 » 19 gen 2010, 18:07

Forse l'assembler lo genera direttamente come file di transito per la compilazione, hai provato a guardare tra i file nella directory del progetto se esiste qualche .asm?
Fabio
Avatar utente
Foto Utentec1b8
3.595 3 8 13
G.Master EY
G.Master EY
 
Messaggi: 1770
Iscritto il: 15 gen 2009, 15:23

0
voti

[19] Re: PIC e USB. Come iniziare?

Messaggioda Foto UtenteTardoFreak » 19 gen 2010, 18:24

No, non c'e'. Probabilmente bisogna settare qualcosa nel compilatore ma non lo so ancora fare e, a dire il vero, non penso che mi mettero' a cercare le configurazioni adesso. In questo momento sto togliendo via dal sorgente tutto quello che e' specifico della PICDEM: esercizi, pulsanti inutili, sensori di temperatura ...
Come ho detto voglio far pulizia nel software per crearmi uno strumento per avere questa benedetta USB integrata.

Sorry.

Se pero' qualcuno mi dice come fare lo faccio al volo, senza perdere un istante. :D
E poi ti metto l' ASM
"La follia sta nel fare sempre la stessa cosa aspettandosi risultati diversi".
"Parla soltanto quando sei sicuro che quello che dirai è più bello del silenzio".
Rispondere è cortesia, ma lasciare l'ultima parola ai cretini è arte.
Avatar utente
Foto UtenteTardoFreak
73,9k 8 12 13
-EY Legend-
-EY Legend-
 
Messaggi: 15754
Iscritto il: 16 dic 2009, 11:10
Località: Torino - 3° pianeta del Sistema Solare

0
voti

[20] Re: PIC e USB. Come iniziare?

Messaggioda Foto Utentec1b8 » 19 gen 2010, 21:37

Ho fatto qualche ricerca e sembra che per vedere il codice assembler equivalente generato dal compilatore C18 sia sufficiente andare nel menu View e aprire Disassembly listing.
Potrebbe non essere l'unico modo ma al momento ho trovato questo.
Fabio
Avatar utente
Foto Utentec1b8
3.595 3 8 13
G.Master EY
G.Master EY
 
Messaggi: 1770
Iscritto il: 15 gen 2009, 15:23

PrecedenteProssimo

Torna a Realizzazioni, interfacciamento e nozioni generali.

Chi c’è in linea

Visitano il forum: Nessuno e 6 ospiti