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? 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!
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 per esempio una seriale a 9600 a confronto dell'I2C quale è più veloce?
grazie
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.
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 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
ma io volevo capire nello specifico la seriale dell'arduino come funziona
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.
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
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
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
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
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??
qua scopro cose nuove ogni volta...