- Messaggi: 10
- Ringraziamenti ricevuti 0
Implementazione microchip firmware cdc ed Easyu: velocità di trasmissione scarsa
- Di_Fi
- Autore della discussione
- Nuovo Utente
Less
Di più
8 Anni 3 Settimane fa - 8 Anni 3 Settimane fa #1
da Di_Fi
Implementazione microchip firmware cdc ed Easyu: velocità di trasmissione scarsa è stato creato da Di_Fi
Salve a tutti
Da poco tempo sono riuscito a compilare e caricare sul modulo easy usb di Mauro il firmware che implementa il protocollo usb cdc. E tutto funziona alla grande. Certamente non grazie a me. Grazie al visual studio ho la possibilità di modificare la parte host della comunicazione ossia la visualizzazione dei dati trasmessi. Ma qui viene la delusione. Ho fatto un test sulla velocità di trasmissione inviando in un loop senza ritardo la frase ciao mondo. E, sorpresa,la velocità di trasmissione è di 12000 bit al secondo circa. Ho settato la velocità parte host a 115200 bit al secondo e lo stesso ho fatto nella parte firmware. La velocità è inchiodata. Quindi mi chiedo: a cosa serve utilizzare l'usb 2.0 se poi la velocità è quella di una seriale scarsa? Sono io che ignoro qualcosa? Probabile. Qualcuno mi indirizzi. Ho letto un centinaio di pagine di usb complete ma credo che qualcuno che ci lavora potrebbe chiarirmi qualche dubbio.
Grazie a tutti
Davide
Da poco tempo sono riuscito a compilare e caricare sul modulo easy usb di Mauro il firmware che implementa il protocollo usb cdc. E tutto funziona alla grande. Certamente non grazie a me. Grazie al visual studio ho la possibilità di modificare la parte host della comunicazione ossia la visualizzazione dei dati trasmessi. Ma qui viene la delusione. Ho fatto un test sulla velocità di trasmissione inviando in un loop senza ritardo la frase ciao mondo. E, sorpresa,la velocità di trasmissione è di 12000 bit al secondo circa. Ho settato la velocità parte host a 115200 bit al secondo e lo stesso ho fatto nella parte firmware. La velocità è inchiodata. Quindi mi chiedo: a cosa serve utilizzare l'usb 2.0 se poi la velocità è quella di una seriale scarsa? Sono io che ignoro qualcosa? Probabile. Qualcuno mi indirizzi. Ho letto un centinaio di pagine di usb complete ma credo che qualcuno che ci lavora potrebbe chiarirmi qualche dubbio.
Grazie a tutti
Davide
Ultima Modifica 8 Anni 3 Settimane fa da Di_Fi. Motivo: Titolo errato
Si prega Accesso o Crea un account a partecipare alla conversazione.
8 Anni 2 Settimane fa #2
da Mauro Laurenti
Risposta da Mauro Laurenti al topic Implementazione microchip firmware cdc ed Easyu: velocità di trasmissione scarsa
Salve Davide,
...ignori qualcosa!
Premetto che non so come tu misuri la velocità e i bit trasmessi.
La classe CDC fa uso della modalità di trasmissione USB di tipo Bulk.
questa è la più veloce ma può essere anche la più lenta visto che non ti garantisce una trasmissione dati costante.
Il tutto viene a dipendere dal bus. Se sullo stesso hub hai più periferiche, il controller divide le risorse per ogni periferica.
Detto questo, quando imposti per esempio 115200 bits/s non significa che ne hai altrettanti ogni secondo ma solo che i byte trasmessi avranno quella frequenza.
Per cui potresti avere due soli byte inviati a 115200 bits/s come anche di più.
Questo significa che al variare del bit rate sicuro cambia l'ampiezza del bit ma non necessariamente la mole dei dati trasmessi.
Saluti,
Mauro
...ignori qualcosa!
Premetto che non so come tu misuri la velocità e i bit trasmessi.
La classe CDC fa uso della modalità di trasmissione USB di tipo Bulk.
questa è la più veloce ma può essere anche la più lenta visto che non ti garantisce una trasmissione dati costante.
Il tutto viene a dipendere dal bus. Se sullo stesso hub hai più periferiche, il controller divide le risorse per ogni periferica.
Detto questo, quando imposti per esempio 115200 bits/s non significa che ne hai altrettanti ogni secondo ma solo che i byte trasmessi avranno quella frequenza.
Per cui potresti avere due soli byte inviati a 115200 bits/s come anche di più.
Questo significa che al variare del bit rate sicuro cambia l'ampiezza del bit ma non necessariamente la mole dei dati trasmessi.
Saluti,
Mauro
Si prega Accesso o Crea un account a partecipare alla conversazione.
- Di_Fi
- Autore della discussione
- Nuovo Utente
Less
Di più
- Messaggi: 10
- Ringraziamenti ricevuti 0
8 Anni 2 Settimane fa #3
da Di_Fi
Risposta da Di_Fi al topic Implementazione microchip firmware cdc ed Easyu: velocità di trasmissione scarsa
Ti ringrazio per la risposta
La EasyUsb è collegata sull'host in modo diretto, niente Hub. Potrebbe essere un problema di misura visto che sul mio portatile diventa 48000 bit/sec con lo stesso firmware.
La porzione di codice che misura la velocità è questa (USB_serial_terminal microchip).
Devo solo approfondire. Certo con microcontrollori ad 8 bit l'alaborazione dei dati è lenta, ma a me interesserebbe solo girare dati acquisiti tramite l'ADC, mostrarli a video e poterli salvare. Come ho letto in vari post non si dovrebbero superare 128 KB/s che per me è una signora velocià. Ti ringrazio per la risposta continuerò a studiare. Mi raccomando non smettere di pubblicare i tuoi progetti. Appena possibile sosterrò con altri acquisti. Saluti
Davide
La EasyUsb è collegata sull'host in modo diretto, niente Hub. Potrebbe essere un problema di misura visto che sul mio portatile diventa 48000 bit/sec con lo stesso firmware.
La porzione di codice che misura la velocità è questa (USB_serial_terminal microchip).
Code:
//Periodically update the RX data rate label
if(COMPortOpen == true)
{
if((tickIndex % 50) == 0)
{
newTickTime = GetTickCount64();
secondsElapsed = (double)(newTickTime - oldTickTime) * (double)0.001;
if(secondsElapsed == 0)
{
secondsElapsed = 0.0001;
}
RXDataRate = (double)recentRXDataBytes / secondsElapsed;
rx_rate_label->Text = "RX Rate: " + RXDataRate.ToString("N0") + " b/sec";
rxRateStatusStrip->Text = rx_rate_label->Text;
oldTickTime = newTickTime;
recentRXDataBytes = 0;
}
Devo solo approfondire. Certo con microcontrollori ad 8 bit l'alaborazione dei dati è lenta, ma a me interesserebbe solo girare dati acquisiti tramite l'ADC, mostrarli a video e poterli salvare. Come ho letto in vari post non si dovrebbero superare 128 KB/s che per me è una signora velocià. Ti ringrazio per la risposta continuerò a studiare. Mi raccomando non smettere di pubblicare i tuoi progetti. Appena possibile sosterrò con altri acquisti. Saluti
Davide
Si prega Accesso o Crea un account a partecipare alla conversazione.
8 Anni 2 Settimane fa #4
da Mauro Laurenti
Risposta da Mauro Laurenti al topic Implementazione microchip firmware cdc ed Easyu: velocità di trasmissione scarsa
L'host del PC ha un Hub (root Hub), per cui dividi comunque le tue risorse con il resto delle periferiche USB collegate.
Mouse, tastiera, webcam...potresti avere anche due root hub ma non sono sicuro.
Il codice per la misura della velocità è piuttosto complesso sebbene non veda funzioni bloccanti i calcoli float sono lenti.
128Khz...la funzione sotto non credo vada tanto veloce.
Controlla il numero di istruzioni necessarie.
...le istruzioni sotto sono di suo già un cono di bottiglia.
Il prossimo articolo è proprio sul protocollo USB.
E' finito ma devo fare le immagini e...questo è il mio cono di bottiglia.
Saluti,
Mauro
Mouse, tastiera, webcam...potresti avere anche due root hub ma non sono sicuro.
Il codice per la misura della velocità è piuttosto complesso sebbene non veda funzioni bloccanti i calcoli float sono lenti.
128Khz...la funzione sotto non credo vada tanto veloce.
Controlla il numero di istruzioni necessarie.
...le istruzioni sotto sono di suo già un cono di bottiglia.
Il prossimo articolo è proprio sul protocollo USB.
E' finito ma devo fare le immagini e...questo è il mio cono di bottiglia.
Saluti,
Mauro
Si prega Accesso o Crea un account a partecipare alla conversazione.
- Di_Fi
- Autore della discussione
- Nuovo Utente
Less
Di più
- Messaggi: 10
- Ringraziamenti ricevuti 0
8 Anni 2 Settimane fa #5
da Di_Fi
Risposta da Di_Fi al topic Implementazione microchip firmware cdc ed Easyu: velocità di trasmissione scarsa
Non vedo l'ora di leggerlo.
In realtà mi sono accorto solo ora che il codice stampa la velocità in bit/s ma in realtà calcola tale velocità ogni 50 tick del timer in Byte/s e a questo punto già si avvicina (almeno sul mio portatile) a qualcosa di accettabile. Non ci avevo fatto caso.
Ti ringrazio per le risposte
Davide
In realtà mi sono accorto solo ora che il codice stampa la velocità in bit/s ma in realtà calcola tale velocità ogni 50 tick del timer in Byte/s e a questo punto già si avvicina (almeno sul mio portatile) a qualcosa di accettabile. Non ci avevo fatto caso.
Ti ringrazio per le risposte
Davide
Si prega Accesso o Crea un account a partecipare alla conversazione.
Moderatori: Mauro Laurenti, StefA
Registrati al sito
Accedi a tutte le risorse e articoli non visibili pubblicamente, puoi registrarti con pochi passi.
Forum - Ultimi messaggi
-
- Aggiornamento sito completato
- da Mauro Laurenti
-
- registro a scorrimento PIPO in cascata
- da Mauro Laurenti
-
- FORMULA PER LINEARIZZARE TERMOCOPIA
- da Mauro Laurenti
-
- Spostamento impronte
- da Mauro Laurenti