Utilizzare la libreria USB Microchip
Collegare un sistema Emebedded al PC è una di quelle cose che entusiasma tutti gli appassionati di elettronica ed informatica. Negli anni 90 il tutto era facilmente ottenibile con la porta parallela utilizzata per collegare le stampanti al PC. Grazie alle istruzioni IN e OUT, offerte dai linguaggi di programmazione come il BASIC, gestire la porta parallela era questione di pochi minuti. Con gli anni la porta parallela è scomparsa dai PC come anche la porta RS232 utilizzata per i Modem. La scomparsa dei due bus dai Personal Computer è legata all'introduzione del protocollo USB (Universal Serial Bus) introdotto appunto per poter supportare molteplici applicazioni utilizzando un solo bus. In questo tutorial vediamo i dettagli sul come utilizzare la libreria USB Microchip.
Articoli correlati
- Il protocollo USB (tutorial propedeutico)
- Scheda di sviluppo Freedom III
- Scheda di sviluppo miniCOM USB
- Scheda di sviluppo Freedom Light
File Type | Download File | Version | Last Update | Description | |||||
|
|||||||||
![]() |
Download | 1.1 | 05. Novembre 2017 | Documentazione |
Commenti
Una nota, bisogna distinguere la velocità con cui il PC comunica con il PIC/bridge e quello che il PIC/bridge invia in uscita.
Tra il PC-Bridge, il bit rate dipende dal protocollo USB ed è indipendente dalle impostazioni del bit rate della porta seriale. Si hanno sempre pacchetti da 64 bytes ogni 1ms. Il bridge però invia i bit in uscita (dal lato UART) a seconda del bit rate impostato, quindi riflette le impostazioni della porta seriale.
Saluti,
Mauro
correzioni fatte. Saranno a breve online.
Ancora grazie.
Saluti,
Mauro
In questo caso magari lo terrei, visto che la documentazione Microchip dice di controllare sempre lo stato di TX ready prima di inviare. Anche se nel caso specifico e' controllato e' bene tenere una logica, visto che l'interno delle funzioni potrebbe anche cambiare con il tempo.
Un controllo in piu' non dovrebbe nuocere.
Grazie per l'ulteriore nota.
Saluti,
Mauro
Il check di USBUSARTIsTxTrf Ready(), prima di putUSBUSART, putsUSBUSART ecc., è inutile, in quanto tale test viene già effettuato all'interno delle funzioni:
...
if(cdc_trf_state != CDC_TX_READY)
...
Vale però per la didattica...
Baldo
molte grazie ancora una volta.
Lettura accurata e con feedback...
Aggiornerò l'articolo e lo caricherò online al prossimo aggiornamento.
Saluti,
Mauro
Il seguente codice per il controllo di system_is_ready va riscritto per avere senso:
//...
if( USBGetDeviceSta te() < CONFIGURED_STAT E ){
system_is_ready = false;
} else {
system_is_ready = true;
//Controllo se il modulo è in stato suspend
if( USBIsDeviceSusp ended()== true ) {
system_is_ready = false;
} else {
system_is_ready = true;
//Inserendo qui il codice dell'if seguente non c'è bisogno di system_is_ready....
}
}
//Controllo i pulsanti solo se il sistema è pronto
if (system_is_read y == true){
//...
Rigo 2: ...alla variabile o Array... -> o all'array...
Nella descrizione di getsUSBUSART: ...della variabile, o Array... -> della variabile o dell'array (sen za virgola)
La signature di putrsUSBUSART è errata:
void putrsUSBUSART(c onst const char *data) deve essere void putrsUSBUSART(c onst ROM char *data)
Pagina 32, Nota:
...Il Baud Rate ... può essere variato a piacimento...
In realtà CDC è una port VIRTUALE quindi NON gestisce il b.r. e la velocità è sempre massima. Infatti se si imposta un baud rate bassissimo la velocità non cambia.
... le libreria MLA fornisce... ->forniscono
Pagina 10, Nota:
...sono presenti anche lo stato... ->gli stati
Pagina 28, rigo 4:
...Un latro vantaggio... ->altro
Pagina 35, ultimo paragrafo: ...I particolare... ->In particolare
Ciao
Baldo
Spero che con gli ultimi due tutorial abbia creato gli strumenti idonei per permettere anche un percorso "solitario".
Progetti con USB non mancheranno...
Saluti,
Mauro
RSS feed dei commenti di questo post.