velocità di comunicazione?

allora io vorrei fare comunicare tra di loro 2 arduino mega2560 che devono scambiarsi 2/3 byte usando la massima velocità possibile, le soluzioni che mi sono venute in mente sono 3:
-dei bus che mettono in collegamento alcune porte, questo sistema è molto veloce ma c'è il rischio di errore se l'arduino che va a leggere nel momento in cui sta commutando, questo potrebbe essere risolto con un segnale di sincronismo, ma comunque mi ocuperebbe molti pin;
-le seriali usate a 115200 baud che sicuramente sono precise ma non riesco a quantificare la loro velocità;
-usare l'I2C, lasciando stare che non so se si possono collegare inseme perchè sarebbero 2 master, comunque volevo capire a che velocità va una connessione I2C rispetto alla seriale

ho scritto qualche ca***ta? :slight_smile: spero che qualcuno mi spieghi un po' di queste cose del quale mi piacerebbe conoscere un po' di più, avete qualche altro suggerimento? grazie in anticipo! :wink:

115200 bps non ti bastano? Sono 115200 bit/secondo (arrotondati più di 10K/s)

si si mi bastano infatti pensavo di usare quello, è che volevo capire un po' le velocità dei vari sistemi così che posso progettare conoscendo tutti i pro e i contro dei vari sistemi di comunicazione :slight_smile: per esempio una seriale a 9600 a confronto dell'I2C quale è più veloce?
grazie :slight_smile:

L'I2C dell'Arduino può lavorare a 100 o 400 KHz (non mi pare supporti la frequenza di 1 MHz), quindi 100 o 400 Kbit/s. Per cui 12,5 o 50 KB/s. Però è un bus completamente differente rispetto al seriale. Ma nei bit trasmessi ci sono di mezzo, oltre ai dati, quelli dell'ID a cui si riferisce il comando, il comando stesso e vari altri bit.

leo72:
115200 bps non ti bastano? Sono 115200 caratteri/secondo (arrotondati più di 100K/s)

Scusami leo sono 115200 bit al secondo dove servono 10 a 12 bit (a secondo del protocollo) per byte percui siamo a 11kByte al secondo.

er_like_no_other:
-usare l'I2C, lasciando stare che non so se si possono collegare inseme perchè sarebbero 2 master, comunque volevo capire a che velocità va una connessione I2C rispetto alla seriale

Se inizializzi la bibiotheca wire.h senza indizizzo l' arduino é un master; se gli dai un numero é un slave con quell'indirizzo.

Ciao Uwe

Sì, bravo Uwe. Ho sbagliato il conto :stuck_out_tongue:
Correggo.

ok grazie a tutti! adesso ho le idee piuttosto chiare :wink:

ho un dubbio se i 115200 sono baud, come definito nel refernce, o sono bps come detto da Leo nella prima risposta... i caratteri sono a 8 bit no? quindi dovrebbero essere 115200*8=921600 bit/s... però non capisco la risposta di Uwe che parla di 10 o 12 bit:

uwefed:

leo72:
115200 bps non ti bastano? Sono 115200 caratteri/secondo (arrotondati più di 100K/s)

Scusami leo sono 115200 bit al secondo dove servono 10 a 12 bit (a secondo del protocollo) per byte percui siamo a 11kByte al secondo.

mi aiutate a chiarirmi le idee, grazie :wink:

Mi introduco nella discussione. Dipende dal protocollo che decidi di implementare. Per esempio se utilizzi una comunicazione 8N1 vuol dire che per ogni byte da trasmettere utilizzerai 8 bit di dati + 1 bit di stop e 0 bit di paritá. Se decidi di usare paritá e bit di start, allora il numero di bit effettivamente trasmessi per ogni byte di dati da trasmettere, aumenta.
Spero di essere stato chiaro e non aver detto inesattezze.
N

si l'ho studiato a scuola, adesso dovrei anche ripassarlo in vista degli esami :sweat_smile:
ma io volevo capire nello specifico la seriale dell'arduino come funziona :slight_smile:

Funziona come tutte le seriali, non c'è differenza nel protocollo, tranne per il fatto che alcuni segnali sono assenti e che le tensioni sono TTL cioè 5volt.

Trovi tutto nel datasheet dell'atmega oppure su internet trovi:
La seriale del PC http://www.giobe2000.it/HW/Seriale/Pag/Uart2.asp
Anche la seriale TTL http://www.bitportal.it/tutorial/rs232.shtml

Ciao.

Aggiungerei che il protocollo più veloce nell'arduino e lo SPI, che se non erro arriva a 5Mb/s la seriale su Arduino supporta anche frequenze non standard, col pc la faccio comunicare a circa 1M baud, limite del nuovo standard, mentre ho letto che tra Arduini, che come dicevo vanno anche fuori standard, si arriva anche a 2 Mbaud

Replico senza quotare nulla

Qui non si e' ancora parlato di distanze
Almeno ho cercato di rileggere senza trovare informazioni al riguardo

Se e' un semplice esperimento con i dispositivi a pochi centimetri di distanza ... OK
Se cominciamo a parlare di qualche metro forse bisogna tenerne conto

ok ok ma quindi quei 115200 cosa sono? questo è ciò che mi chiedo...

115200 "simboli" al secondo. un simbolo è uno 0 o un 1. ogni 8 simboli, vengono iviati un tot di simboli (2 nel caso arduino) per il check della correttezza della trasmissione.
quindi la velocità reale è di 11.520 BYTE/s

@brunol949: parlare di distanze non è nei requisiti :smiley:
comunque dipende molto, sicuramente più lento vai e più sei immune dal rumore, poi ci sono protocolli "corazzati" e altri meno... ma quì mi perdo anche io

ok grazie mille! :wink:

lesto:
Aggiungerei che il protocollo più veloce nell'arduino e lo SPI, che se non erro arriva a 5Mb/s la seriale su Arduino supporta anche frequenze non standard, col pc la faccio comunicare a circa 1M baud, limite del nuovo standard, mentre ho letto che tra Arduini, che come dicevo vanno anche fuori standard, si arriva anche a 2 Mbaud

come faccio a farli comunicare via SPI a 2Mbaud?? :astonished:
qua scopro cose nuove ogni volta... :slight_smile:

SPI - Arduino Reference a quanto pare con il clock a MHz arrivi anche a 8MHz

molto interessante, non lo conoscevo l'SPI... grazie :wink: