Go Down

Topic: Tempo di esecuzione elaborazioni su ethernet, miglioro con la DUE? (Read 467 times) previous topic - next topic

Janos

Sto implementando un software che deve gestire tutta una serie di istruzioni di lettura/scrittura dati su ethernet ma controllando il tempo necessario ad eseguire il codice mi sono accorto che è lunghissimo: 150ms per cose non troppo complicate. Secondo voi il collo di bottiglia lo fa la potenza di calcolo dell'Arduino UNO o ci sono altri vincoli legati alla SPI? In altre parole, utilizzando la DUE + Ethernet Shield potrei migliorare?

EDIT: Errore mio, per debug inviavo un bel po di dati sulla seriale, questa si intasava ed andando a spulciare cosa fa la serial.write ho visto che se il buffer è pieno aspetta di aver trasmesso il dato.....
Tolgo le comunicazioni seriali sono sceso a 3ms... =) Ad ogni modo, se montassi la DUE migliorerei ancora? E che margine potrei avere rispetto a 3ms? Infine, si può montare la ethernet shield sulla DUE, vero?

Scusate la raffica di domande...   :smiley-sweat: :smiley-sweat: :smiley-sweat:

leo72

Se l'Ethernet Shield che usi te è il modello R3 la risposta è sì, perché adatta i livelli di tensione alla tensione di funzionamento dell'Arduino su cui è agganciata. Altrimenti non so, perché la DUE lavora a 3V3 mentre la UNO e la MEGA a 5V e le vecchie Ethernet erano fatte per queste schede.

Sulla potenza non mi esprimo ma, a logica, dovrebbe funzionare meglio viste le superiori capacità del SAM.

Janos

Si, ho la REV3, quindi a posto... Ho visto che solo per fare la client.read di tutti i dati ci metto 2ms circa. Quel tempo lo potrei abbassare o è un limite della SPI o del W5100?

leo72


Si, ho la REV3, quindi a posto... Ho visto che solo per fare la client.read di tutti i dati ci metto 2ms circa. Quel tempo lo potrei abbassare o è un limite della SPI o del W5100?

Qui ci vuole uno che "spippola" con l'Ethernet Shield...  :smiley-sweat:

uwefed

l'arduino Due ha un controller piú veloce e piú potente della UNO e dovrebbe essere piú veloce nei calcoli.
Senza conoscere il codice che usi non posso fare nessua conferma o smentita.
Penso che é possibile scrivere un sketch senza condizioni di compilazione differente o funzionalitá differente che funzioni sia sulla UNO che sulla DUE e che sulla DUE sia piú lento rispetto la UNO.

Ciao Uwe

pablos

Non capisco come tu abbia fatto i conti, come tu abbia determinato i 2ms. Comunque la ethernet di arduino è connessa a un router o switch una rete dove ci vogliono alcuni ms tra client e server, il pacchetto fa un sacco di giri prima di arrivare, se la usi da ip pubblico aumenta ulteriormente, su 3G peggio ancora.

Io se pingo il mio router con un Pentium 7 ci metto 2ms ed è qui sulla scrivania, secondo me otterrai una grande differenza su 100-1000kb ma su un byte solo dubito tu ottenga meno di 1ms, su un pacchetto solo non è il processore che fa la differenza.
no comment

Janos


Non capisco come tu abbia fatto i conti, come tu abbia determinato i 2ms.


Così:

Code: [Select]

unsigned long int tempo;
tempo = micros()
while(client.available) {
  buff[i++] = client.read();
}
Serial.println(micros() - tempo);


L'arduino era collegato direttamente con una patch al pc...

pablos

fallo con un analizzatore di rete, fatto da sketch su se stesso è del tutto relativo
no comment

Go Up
 


Please enter a valid email to subscribe

Confirm your email address

We need to confirm your email address.
To complete the subscription, please click the link in the email we just sent you.

Thank you for subscribing!

Arduino
via Egeo 16
Torino, 10131
Italy