in data 12-05-2008 05:35 AM
Devo interfacciarmi via USB con una scheda embedded dove mi posso gestire il numero di EP , il tipo di trasferimento USB ecc..
Vorrei far colloquiare con PC tramite LABVIEW: mi servirebbero alcuni esempi esplicativi su come gestire questo tipo di comunicazione e quindi anche cosa richiedere alla scheda embedded per consentire una corretta comunicazione.
Grazie per l'attenzione.
Cordialita'
G
in data 12-09-2008 03:15 AM
Ciao,
di che tipo di scheda si tratta? Che tipo di comunicazione/driver utilizza? Ti interessa comunicare con la scheda (acquisire dati...) o gestire i parametri della USB?
Con questi maggiori dettagli, spero di poterti indirzzare verso tutorial ed informazioni più utili.
Grazie.
Licia
in data 12-09-2008 05:08 AM
Ciao Licia,
grazie per l'attenzione.
La scheda e' una mia scheda embedded dove gestisco un PSOC della CYPRESS. Sto provando un programma di bulk In bulk Out della NI con LABVIEW ma non funziona.
Il programma e' molto semplice: uso un EP in uscita e un EP in ingresso.
Riporto di seguito il main:
void main (void) {
BYTE Tmp=0;
INT_VC = 0;
M8C_EnableGInt; //Enable Global Interrupts
USB_Start(0, USB_5V_OPERATION); //Start USB Operation using device 0
//and with 5V operation
while(!USB_bGetConfiguration()); //Wait for Device to enumerate
//Enumeration is completed load endpoint 1 (In Endpoint). Do not toggle the first time
USB_INT_REG |= USB_INT_SOF_MASK | USB_INT_EP1_MASK | USB_INT_EP2_MASK;
USB_LoadInEP(1, abOut, 40, USB_NO_TOGGLE);
InitTimer8_1(); //Timer 8_1 initialization
PGA_1_setup(); //Enable PGA 1
CMP_1_setup(); //Enable CMP 1
MUX_CR0 = 0x01; //Init Keyboard scanner
while (1) { //Round Robin
if (USB_bGetEPState(2) == EVENT_PENDING) { //Wait for USB Out EP event
USB_bReadOutEP(2, &abIn, 1); //Grab the 1st data byte
USB_EnableOutEP(2); //Re-enable the Out EP
USB_LoadInEP(1, abOut, 40, USB_TOGGLE);
} //end if
} // end of Round Robin
} //End Of Main
Volevo usarlo unitamente con il Vostro esempio USBRawBulkMain.vi e mi ritrovo con problemi di errore una volta che lancio il programma .
Cosa puoi dirmi su questo programma VI?
C'e' qualcosa in alternativa?
Premetto che ho creato i driver INF usando la procedura nota labview.
Quello che mi accade e' che facendo un bulk in di 20 caratteri (per esempio), avendo la stringa di init di 40 caratteri, riesco a vedere nella finestra BULKIN le parti che scrivo e con successivo bulk in vedo le parti rimanenti.
Poi mi da un errore il programma labview (non riesco in questo momento a ricrearlo) e il programma si blocca.
Avrei bisogno di qualcosa di piu' chiaro relativamente alla parte LABVIEW nella gestione eventi USB.
Come puoi vedere lato embedded e' veramente semplice.
Tieni conto che l'esempio che ti ho allegato in parte funziona con altri SW sotto windows.
Purtroppo none ssendo programmatore PC ma conoscendo solamente labview vorrei usare quest'ultimo.
Grazie in anticipo per le informazioni.
Ciao
in data 12-09-2008 08:30 AM
Ciao,
potrebbe magari essere utile qualche indicazione ulteriore sull'errore che hai ottenuto.
Comunque, ecco il link un tutorial utile per il controllo di dispositivi USB con LabVIEW:
USB Instrument Control Tutorial
e alcuni esempi:
USB RAW Control Communication in LabVIEW
USB RAW Bulk Communication with LabVIEW
Spero ti siano utili.
Licia
in data 12-09-2008 09:01 AM
Ciao Licia,
grazie ma li avevo gia'. La creazione driver non e' un problema mentre ho qualche problema a gestire gli eventi in labview.
non e' che hai altri esempi oltre a quelli che hai elencato?
Purtroppo lato embedded si conviene che l'emulatore non funzioni piu' sicche' ho difficolta' a tracciare gli eventi che si susseguono e definire il perche' non debba funzionare la comunicazione bulk.
Se hai qualcosa fammi sapere, sono un po' bloccato !!!
Ciao, grazie
in data 12-09-2008 10:09 AM
Ti stai riferendo agli eventi della struttura ad eventi presente nell'esempio LabVIEW che hai citato nei primi post?
Ottieni in LabVIEW qualche codice di errore specifico?
Grazie, ciao.
Licia