Pages: [1]   Go Down
Author Topic: Tempo di esecuzione elaborazioni su ethernet, miglioro con la DUE?  (Read 348 times)
0 Members and 1 Guest are viewing this topic.
Ivrea
Offline Offline
God Member
*****
Karma: 5
Posts: 680
"La teoria è quando si sa tutto ma non funziona niente. La pratica è quando funziona tutto ma non si sa il perché. In ogni caso si finisce sempre con il coniugare la teoria con la pratica: non funziona niente e non si sa il perché." Albert Einstein
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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
« Last Edit: February 28, 2013, 11:11:28 am by Janos » Logged

Global Moderator
Italy
Offline Offline
Brattain Member
*****
Karma: 313
Posts: 21657
Logic is my way
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

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.
Logged


Ivrea
Offline Offline
God Member
*****
Karma: 5
Posts: 680
"La teoria è quando si sa tutto ma non funziona niente. La pratica è quando funziona tutto ma non si sa il perché. In ogni caso si finisce sempre con il coniugare la teoria con la pratica: non funziona niente e non si sa il perché." Albert Einstein
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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?
Logged

Global Moderator
Italy
Offline Offline
Brattain Member
*****
Karma: 313
Posts: 21657
Logic is my way
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

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
Logged


BZ (I)
Offline Offline
Brattain Member
*****
Karma: 236
Posts: 20285
+39 349 2158303
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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
Logged

Genova
Offline Offline
Faraday Member
**
Karma: 17
Posts: 2758
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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.
Logged

Meglio imparare dalle cose inutili piuttosto che non imparare niente.   [Arduino Mega R3 + Ethernet shield W5100 + SD card 8Gb FAT32]

Ivrea
Offline Offline
God Member
*****
Karma: 5
Posts: 680
"La teoria è quando si sa tutto ma non funziona niente. La pratica è quando funziona tutto ma non si sa il perché. In ogni caso si finisce sempre con il coniugare la teoria con la pratica: non funziona niente e non si sa il perché." Albert Einstein
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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

Così:

Code:
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...
Logged

Genova
Offline Offline
Faraday Member
**
Karma: 17
Posts: 2758
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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

Meglio imparare dalle cose inutili piuttosto che non imparare niente.   [Arduino Mega R3 + Ethernet shield W5100 + SD card 8Gb FAT32]

Pages: [1]   Go Up
Jump to: