- Messaggi: 17
- Ringraziamenti ricevuti 0
Utilizzo USB
12 Anni 11 Mesi fa #1
da cristian.perini2
Utilizzo USB è stato creato da cristian.perini2
Ciao a tutti,
ho portato a termine i due esempi che sono riportati sul Tutorial "Leggere e Scrivere dati
via USB", realizzato da Mauro e ho anche eseguito una azione di pulizia di codice da tutte le parti non necessaria.
Quello che non mi è chiaro, è che viene definito il funzionamento ad Interrupt e non a polling, ma la gestione della comunicazione viene eseguita nel while(1) e non ci sono chiamate a funzione nella routine di interrupt.
Non ho capito io?
Se qualcuno mi può aiutare lo ringrazio.
Ciao ciao
ho portato a termine i due esempi che sono riportati sul Tutorial "Leggere e Scrivere dati
via USB", realizzato da Mauro e ho anche eseguito una azione di pulizia di codice da tutte le parti non necessaria.
Quello che non mi è chiaro, è che viene definito il funzionamento ad Interrupt e non a polling, ma la gestione della comunicazione viene eseguita nel while(1) e non ci sono chiamate a funzione nella routine di interrupt.
Non ho capito io?
Se qualcuno mi può aiutare lo ringrazio.
Ciao ciao
Si prega Accedi o Crea un account a partecipare alla conversazione.
- cristian.perini2
- Autore della discussione
- New Member
Riduci
Di più
12 Anni 11 Mesi fa #2
da Mauro Laurenti
Rendering Error in layout Message/Item: array_keys(): Argument #1 ($array) must be of type array, null given. Please enable debug mode for more information.
Risposta da Mauro Laurenti al topic Re: Utilizzo USB
Rendering Error in layout Message/Item: array_keys(): Argument #1 ($array) must be of type array, null given. Please enable debug mode for more information.
Si prega Accedi o Crea un account a partecipare alla conversazione.
12 Anni 11 Mesi fa - 12 Anni 11 Mesi fa #3
da cristian.perini2
Risposta da cristian.perini2 al topic Re: Utilizzo USB
Ciao,
si anche se non mi sono spiegato bene hai capito a cosa mi riferivo.
Spiego brevemente cosa devo fare.
Ho implementato il protocollo MODBUS sfruttando la USART, le routine di trasferimento dati sono stati gestiti ad interrupt, poi ho creato una sorta si scheduler con 3 task dove viene eseguito la decodifica dei dati e l'acquisizione dei 3 sensori installati sulla Freedom II.
Posso anche condividere il progetto sul forum in modo da avere pareri su come è stato realizzato.
Comunque, arrivato a questo punto volevo passare dalla USART (RS232) alla USB, lasciando inalterata la logica, volevo quindi lasciare la gestione del trasferimento dei dati ad interrupt, questo perché non ho dei task abbastanza rapidi per una gestione a polling (questo per la USART).
Effettivamente hai ragione la chiamata USBDeviceTasks() viene fatta ad interrupt.
Per la trasmissione non dovrei aver problemi, quando il messaggio MODBUS è pronto posso avviare la trasmissione tramite la chiamata
void putUSBUSART(char *data, BYTE length);
il problema si presenta quando sono in ricezione. questa si può eseguire ad interrupt?
Non so se sono stato chiaro, è molto probabile che le mie perplessità derivino da una scarsa conoscenza del protocollo USB.
Grazie.
P.S.
Se volete il mio progetto lo potete scaricare da questo link
www.zetaprogetti.it/website/download/category/1-modbus.html
ModBus_pic18.zip
o lo posso aggiungere nella sezione progetti, giusto?
si anche se non mi sono spiegato bene hai capito a cosa mi riferivo.
Spiego brevemente cosa devo fare.
Ho implementato il protocollo MODBUS sfruttando la USART, le routine di trasferimento dati sono stati gestiti ad interrupt, poi ho creato una sorta si scheduler con 3 task dove viene eseguito la decodifica dei dati e l'acquisizione dei 3 sensori installati sulla Freedom II.
Posso anche condividere il progetto sul forum in modo da avere pareri su come è stato realizzato.
Comunque, arrivato a questo punto volevo passare dalla USART (RS232) alla USB, lasciando inalterata la logica, volevo quindi lasciare la gestione del trasferimento dei dati ad interrupt, questo perché non ho dei task abbastanza rapidi per una gestione a polling (questo per la USART).
Effettivamente hai ragione la chiamata USBDeviceTasks() viene fatta ad interrupt.
Per la trasmissione non dovrei aver problemi, quando il messaggio MODBUS è pronto posso avviare la trasmissione tramite la chiamata
void putUSBUSART(char *data, BYTE length);
il problema si presenta quando sono in ricezione. questa si può eseguire ad interrupt?
Non so se sono stato chiaro, è molto probabile che le mie perplessità derivino da una scarsa conoscenza del protocollo USB.
Grazie.
P.S.
Se volete il mio progetto lo potete scaricare da questo link
www.zetaprogetti.it/website/download/category/1-modbus.html
ModBus_pic18.zip
o lo posso aggiungere nella sezione progetti, giusto?
Ultima Modifica 12 Anni 11 Mesi fa da cristian.perini2.
Si prega Accedi o Crea un account a partecipare alla conversazione.
- cristian.perini2
- Autore della discussione
- New Member
Riduci
Di più
- Messaggi: 17
- Ringraziamenti ricevuti 0
12 Anni 10 Mesi fa #4
da Mauro Laurenti
Risposta da Mauro Laurenti al topic Re: Utilizzo USB
Ciao Cristian,
certamente puoi creare un post dedicato alla sezione Progetti e inserire il link al progetto oltre che eventualmente includere il file zip. Avere un thread relativo al protocollo modbus è sicuramente più utile. Trattare l' argomento in un thread su USB rischierebbe di far perdere i contenuti e il link al progetto che stai facendo.
In linea di massima non vedo problemi a gestire l'UART in ricezione con interruzioni. Questa sarebbe indipendente dalla USB, ma a seconda della frequenza potresti o meno dare fastidio allo stack USB. Probabilmente provare ad implementare il software è il modo migliore per vedere se avrai problemi.
In linea di massima io farei un piccolo buffer di ricezione per l'UART e quando viene ricevuto un byte lo inserirei nel buffer (array) la routine di ricezione UART dovrebbe essere quanto più breve possibile in maniera da non alterare troppo lo stack USB. L'analisi del buffer lo porrei fuori dalla funzione di gestione delle interruzione UART.
Saluti,
Mauro
certamente puoi creare un post dedicato alla sezione Progetti e inserire il link al progetto oltre che eventualmente includere il file zip. Avere un thread relativo al protocollo modbus è sicuramente più utile. Trattare l' argomento in un thread su USB rischierebbe di far perdere i contenuti e il link al progetto che stai facendo.
In linea di massima non vedo problemi a gestire l'UART in ricezione con interruzioni. Questa sarebbe indipendente dalla USB, ma a seconda della frequenza potresti o meno dare fastidio allo stack USB. Probabilmente provare ad implementare il software è il modo migliore per vedere se avrai problemi.
In linea di massima io farei un piccolo buffer di ricezione per l'UART e quando viene ricevuto un byte lo inserirei nel buffer (array) la routine di ricezione UART dovrebbe essere quanto più breve possibile in maniera da non alterare troppo lo stack USB. L'analisi del buffer lo porrei fuori dalla funzione di gestione delle interruzione UART.
Saluti,
Mauro
Si prega Accedi o Crea un account a partecipare alla conversazione.
Moderatori: Mauro Laurenti, StefA, Matteo Garia
Registrati al sito
Accedi a tutte le risorse e articoli non visibili pubblicamente, puoi registrarti con pochi passi.
Login
© LaurTec 2006 - 2024