BINGO!
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

... 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

) 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.

"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.