Comunicazione USB

Forum relativo alle schede FLEX, ERIKA Enterprise, RT-Druid, ScicosLab, ...

Moderator: paolo.gai

simone
Newbie
Posts: 9
Joined: Sat Sep 17, 2011 5:03 pm
Location: Ancona

Comunicazione USB

Post by simone » Sat Sep 17, 2011 6:35 pm

Salve,
sto lavorando ad un progetto con la Flex Full base board. Vorrei riuscire ad inviare dalla flex dei comandi tramite l'USB. per verificarne il funzionamento ho provato a seguire la guida http://erika.tuxfamily.org/wiki/index.p ... and_Scicos.

Ho imposto nell' MPLAB IDE il tipo di dispositivo a PIC18F2550, selezionato il programmatore ICD2, dopo essermi collegato, mi viene restituito il messaggio di errore: ICDWarn0020: Invalid target device id (expected=0x92, read=0x0).

Devo utilizzare un hardware differente, oppure è necessario controllare semplicemente il settaggio di alcuni dip-switch?

In attesa di una vostra risposta vi ringrazio anticipatamente. Simone.

simone
Newbie
Posts: 9
Joined: Sat Sep 17, 2011 5:03 pm
Location: Ancona

Re: Comunicazione USB

Post by simone » Sun Sep 18, 2011 12:45 pm

EDIT: sono riuscito a programmare la Flex, e installato i driver, tutto ok, collegando la flex al pc si accende il led rosso DL6.

seguendo la guida in http://erika.tuxfamily.org/wiki/index.p ... _generator
mi sono bloccato al punto della generazione del file .exe, dalla shell di cygwin, mi viene restituito il messaggio che non riesce a trovare il file usb.h, quindi la compilazione termina con errore, come si può vedere dall'allegato:
make.JPG
make.JPG (221.34 KiB) Viewed 17015 times
uso un pc con winxp, cygwin 1.7.9, c30 v3.25, erika 1.6,scilab 4.4.1.

erikadds
Newbie
Posts: 45
Joined: Wed May 12, 2010 9:41 am

Re: Comunicazione USB

Post by erikadds » Mon Sep 19, 2011 9:45 am

Ciao Simone,
l'errore di compilazione è dovuto al fatto che non hai installato in cygwin il pacchetto
libusb-win32.
Installa il pacchetto usando l'eseguibile setup.exe di cygwin e riprova a compilare.
Nota: l'eseguibile che si ottiene ha bisogno di 2 dll per funzionare. Le dll sono:
- cygusb0.dll
- cygwin1.dll
che puoi trovare nella cartella di installazione di cygwin.

DDS

erikadds
Newbie
Posts: 45
Joined: Wed May 12, 2010 9:41 am

Re: Comunicazione USB

Post by erikadds » Mon Sep 19, 2011 1:55 pm

Ciao Simone, grazie alla tua segnalazione ho aggiornato la pagina web
http://erika.tuxfamily.org/wiki/index.p ... pplication
aggiungendo qualche dettaglio sulla procedura di compilazione dell'applicativo.

Grazie per aver scritto sul forum!

DDS

simone
Newbie
Posts: 9
Joined: Sat Sep 17, 2011 5:03 pm
Location: Ancona

Re: Comunicazione USB

Post by simone » Mon Sep 19, 2011 2:14 pm

Grazie mille per la risposta, infatti installando la libreria, come suggerito, sono riuscito a compilare l'exe.
I grafici restano tutti a 0, ma credo sia dovuto al fatto che la scheda con cui sto facendo le prove è priva della demoboard con l'LCD (è la FLEX full base: FLEX003), ora provo a modificare lo schema, in modo da testare l'usb semplicemente.
Grazie per la dritta.

erikadds
Newbie
Posts: 45
Joined: Wed May 12, 2010 9:41 am

Re: Comunicazione USB

Post by erikadds » Mon Sep 19, 2011 3:01 pm

Ciao Simone,
la FLEX full necessita di una daughter board per far funzionare la comunicazione USB.
In mancanza di una daughter board è possibile comunque usare l'USB ma è necessario
fare dei collegamenti manuali come mostrato in questa pagina del wiki:
http://erika.tuxfamily.org/wiki/index.p ... hter_Board

Se intendi acquistare una demo daughter board scrivi pure al seguente indirizzo: info@evidence.eu.com

A presto.
DDS

simone
Newbie
Posts: 9
Joined: Sat Sep 17, 2011 5:03 pm
Location: Ancona

Re: Comunicazione USB

Post by simone » Fri Sep 30, 2011 4:14 pm

Ritorno sull'argomento della comunicazione USB, ho trovato un modulo che implementa la comunicazione USB HOST (il V2DIP2-32 http://www.ftdichip.com/Products/Module ... htm#V2DIP2), e consente l'accesso alle interfacce UART, parallel FIFO, SPI.
Il mio progetto prevede di comunicare con un device USB (ha a bordo un chip FTDI che effettua la conversione da seriale a USB, lato device)
Volevo sapere se tale modulo V2DIP2 è compatibile con la scheda FLEX ed è sufficiente collegare i pin ai corrispondenti della FLEX, in modo simile a quanto ho visto nell'applicazione riportata in http://erika.tuxfamily.org/applicationn ... 131gp.html, ove il convertitore seriale/ttl è stato collegato direttamente con i pin della FLEX..
Grazie.
Simone.

erikadds
Newbie
Posts: 45
Joined: Wed May 12, 2010 9:41 am

Re: Comunicazione USB

Post by erikadds » Mon Oct 03, 2011 8:35 am

In linea di massima credo che sia fattibile anche se non conosco bene queste schede.
Un'alternativa è quella di prendere gli esempi sul sito della Microchip e programmare il pic18 della
FLEX full in modalità HOST mantenendo una comunicazione con il dsPIC mediante interfaccia SPI.
Dipende se preferisci complicare il sistema da un punto di vista hw o sw...

Dario

paolo.gai
Administrator
Posts: 875
Joined: Thu Dec 07, 2006 12:11 pm

Re: Comunicazione USB

Post by paolo.gai » Mon Oct 03, 2011 10:18 am

Nota anche che il convertitore FTDI emula una seriale.

In quel caso serve qualcosa che legga da seriale ed esporti i dati verso scicoslab. Questo lavoro è attualmente in corso, e verrà rilasciato con la nuova versione dello scicos pack. di fatto abbiamo fatto un driver lato microcontrollore che fa il dump scrivendo dei messaggi via seriale. lato PC vengono interpretati e mandati a ScicosLab.

Sarà tutto disponibile nella prossima versione dello ScicosLab (opppure puoi provare a veder cosa abbiamo fatto facendo un checkout dell'SVN...)

ciao,

Paolo

simone
Newbie
Posts: 9
Joined: Sat Sep 17, 2011 5:03 pm
Location: Ancona

Re: Comunicazione USB

Post by simone » Mon Oct 03, 2011 6:02 pm

Grazie per le informazioni, l'intenzione è quella di utilizzare il convertitore, in quanto c'è anche un modello con doppia porta USB, e diventerebbe molto utile in prospettiva di collegare altri device alla FLEX (esempio una telecamera).
Posso collegare semplicemente il modulo ai piedini della FLEX, anche senza la thru hole? una scheda è già stata impegnata in un altro progetto..
Ve lo chiedo, in modo da reperire tutto il materiale necessario quanto prima.
Grazie.
Simone.

simone
Newbie
Posts: 9
Joined: Sat Sep 17, 2011 5:03 pm
Location: Ancona

Re: Comunicazione USB

Post by simone » Sun Oct 16, 2011 5:34 pm

Salve,
ho notato un comportamento particolare della mia FLEX:
- dopo aver programmato il pic18 con il file FLEX_USB_PIC18.cof, ho notato che un'applicazione che precedentemente accendeva dei led utilizzando i PIN RD9, RA14, RA15, etc. ora non funziona più, nel senso che una parte dei comandi di accensione dei led funziona ancora, mentre altri non producono alcun effetto. E' possibile?
Ho provato anche a cancellare la program memory del pic18, ma senza ottenere miglioramenti. Ovviamnete ho riportato i vari jumper allo stato iniziale, per l'utilizzo con il dsPIC.
Grazie dell'attenzione.

simone
Newbie
Posts: 9
Joined: Sat Sep 17, 2011 5:03 pm
Location: Ancona

Re: Comunicazione USB

Post by simone » Mon Oct 17, 2011 2:09 pm

Aggiornamento: ho trovato qual'era il problema: semplicemente, i pin non erano ben collegati con la thru hole.. chiedo scusa..

paolo.gai
Administrator
Posts: 875
Joined: Thu Dec 07, 2006 12:11 pm

Re: Comunicazione USB

Post by paolo.gai » Thu Nov 03, 2011 8:55 am

Figurati... scusaci semmai il ritardo nella risposta... siamo stati praticamente sommersi di e-mail negli ultimi giorni...

Ciao,

PJ

simone
Newbie
Posts: 9
Joined: Sat Sep 17, 2011 5:03 pm
Location: Ancona

Re: Comunicazione USB

Post by simone » Tue Nov 08, 2011 10:48 pm

Salve,
torno sull'argomento poichè ho riscontrato dei problemi nella comunicazione tramite UART.., cerco di spiegare brevemente il mio problema..
Ho realizzato il mio applicativo con RT-DRUID per la Flex Full, invio messaggi tramite la porta UART1 al modulo USB, e ne elaboro la risposta. Il meccanismo funziona bene per un certo numero di messaggi spediti/ricevuti, a volte dopo 2, a volte dopo 20-30 messaggi, il modulo usb resta in attesa di ricevere ulteriori dati che però non vengono spediti dalla FLEX.

Ho provato modificando lo scheduler da EDF a FP, modificare i tempi di attivazione del task che invia il messaggio, ma sempre gli stessi risultati.. Per l'invio dei comandi ho preso il file eeuart.h dell'esempio "Easy Bee".
Per inviare i messaggi (6-8 byte) ho creato una funzione che esegue:

Code: Select all

__INLINE__
void ee_usb_write(BYTE *ch, BYTE len)
{
	unsigned int i;
	for (i=0;i<len;i++)
	{
		#ifdef USB_UART1
			EE_UART1_Send(*(ch++));
		#else
			EE_UART2_Send(*(ch++));
		#endif
	}
}
e per la ricezione, in modo analogo:

Code: Select all

__INLINE__
void ee_usb_read_len(BYTE *data, BYTE len)
{
	BYTE i;
	#ifdef USB_UART1
		for (i=0;i<len;i++){
			while (!IFS0bits.U1RXIF);
			while (EE_UART1_Receive(data++));
			IFS0bits.U1RXIF = 0;
		}
	#else
		for (i=0;i<len;i++){
			while (!IFS1bits.U2RXIF);
			EE_UART2_Receive(data++);
			IFS1bits.U2RXIF = 0;
		}
	#endif
}
queste sono chiamate in sequenza, una dopo l'altra, all'interno di una funzione che viene eseguita da un task periodico, ogni 300ms, tramite un alarm.

Mi scuso per il lungo post, spero di aver spiegato la situazione.. Grazie in anticipo per ogni eventuale suggerimento.
Simone

simone
Newbie
Posts: 9
Joined: Sat Sep 17, 2011 5:03 pm
Location: Ancona

Re: Comunicazione USB

Post by simone » Thu Nov 10, 2011 9:09 pm

Problema risolto modificando il programma del modulo USB FTDI, aggiungendo l'utilizzo del modo DMA
Per quanto riguarda invece la UART sulla FLEX, tutto invariato, con le funzioni sopra riportate.
Saluti.

Locked