Salve a tutti, volevo sapere a quanti bps corrisponde un baud rate di 9600? grazie
L'unità baud viene spesso confusa con l'unità bit per secondo (bit/s o bps), ma differisce da quest'ultima perché ad un simbolo possono corrispondere più bit se si usano tecniche di modulazione non binaria (di ampiezza, frequenza o fase), e quindi la velocità espressa in bit/s può essere multipla di quella espressa in baud. Ad esempio, nello standard V.32 bis per i modem su linea telefonica, si trasmette ad una velocità di 2.400 baud, ma ad ogni simbolo corrispondono 6 bit per cui la velocità espressa in bit al secondo è 14.400 bps ovvero 6 x 2400.
Il Baudrate é la velocitá di bit per secondo.
Una seriale RS232 o seriale TTL (come la usa Arduino tra il microcontroller e interfaccia USB-seriale) usa oltre i Bit dati (7 o 8bit) ancora altri bit per la sicronizzazione: 1 1,5 o 2 bit di start, 1 bit di stop, 0 o 1 bit di paritá. Da questo un Byte sono da 9 a 12 Bit.
Arduino usa 1 di start e 1 di stop percui 10 Bit per trasmettere 1 Byte.
Ciao Uwe
uwefed:
Arduino usa 1 di start e 1 di stop percui 10 Bit per trasmettere 1 Byte.
da qui byte/s = baudRate/10
quindi 9600 baud = 9600bit/s (header + payload) = 960 byte/s = 7680bit/s solo payload (ovvero di dati utili)
lesto:
uwefed:
Arduino usa 1 di start e 1 di stop percui 10 Bit per trasmettere 1 Byte.da qui byte/s = baudRate/10
quindi 9600 baud = 9600bit/s (header + payload) = 960 byte/s = 7680bit/s solo payload (ovvero di dati utili)
Ah ok adesso è chiarissimo.
Ma questo calcolo è valido per tutti i microcontrollori o solo per arduino?
dipende da che codifica viene usata. Arduino, e ormai la maggior parte delle seriali, parla con la 8n1 (8bit di data, no parity bit, 1 bit di stop, e il bit di start è dato per scontato) ma nulla vieta di usare altri parametri.
lesto:
dipende da che codifica viene usata. Arduino, e ormai la maggior parte delle seriali, parla con la 8n1 (8bit di data, no parity bit, 1 bit di stop, e il bit di start è dato per scontato) ma nulla vieta di usare altri parametri.
Perfetto mi avete chiarito molte cose! Ma se per assurdo dovessi avere la necessità di far comunicare arduino con altro hardware che utilizza una codifica diversa? Sarebbe fattibile?
sicuramente la SoftSerial permette l'uso di altre codifiche, mentre la seriale hardware, che permette velocità più alte, data la sua natura di essere hardware è meno flessibile e non conosco i suoi limiti.
Sono sicuro però che la SoftSerial sarebbe più che sufficiente per la maggior parte di applicazioni. In casi estremi si usa un chip esterno
Capito! Grazie ancora!! XD XD
Si, è possibile, con le ultime versioni dell'IDE di Arduino, modificare anche il parametro di trasmissione nel Serial.begin
--> Serial.begin() - Arduino Reference
An optional second argument configures the data, parity, and stop bits. The default is 8 data bits, no parity, one stop bit.
Syntax
Serial.begin(speed)
Serial.begin(speed, config)Arduino Mega only:
Serial1.begin(speed)
Serial2.begin(speed)
Serial3.begin(speed)
Serial1.begin(speed, config)
Serial2.begin(speed, config)
Serial3.begin(speed, config)Parameters
speed: in bits per second (baud) - long
config: sets data, parity, and stop bits. Valid values are :
SERIAL_5N1
SERIAL_6N1
SERIAL_7N1
SERIAL_8N1 (the default)
SERIAL_5N2
SERIAL_6N2
SERIAL_7N2
SERIAL_8N2
SERIAL_5E1
SERIAL_6E1
SERIAL_7E1
SERIAL_8E1
SERIAL_5E2
SERIAL_6E2
SERIAL_7E2
SERIAL_8E2
SERIAL_5O1
SERIAL_6O1
SERIAL_7O1
SERIAL_8O1
SERIAL_5O2
SERIAL_6O2
SERIAL_7O2
SERIAL_8O2
ahaha che babbo che sono, il bello che ho suggerito io di usare quel sistema per passare le configurazioni dal begin
lesto:
ahaha che babbo che sono, il bello che ho suggerito io di usare quel sistema per passare le configurazioni dal begin
Hahahahahahaha
Grazie PaoloP!
Scusate riprendo l'argomento per sapere una cosa:
Come si fa?
lesto:
sicuramente la SoftSerial permette l'uso di altre codifiche
come non detto, è in programma ma non è ancora stato fatto: da Direct Port I/O in NewSoftSerial 9 | Arduiniana
What’s next for NewSoftSerial? Well, there are a number of things being asked for:
[...]Configurability, i.e. “E, 7, 1? style parity, data and stopbit configuration.
(NewSoftSerial è il vero nome della libreria, prima che sostituisse la SoftSerial nell'ide 1.0)
edit: il quote era errato
A ok non trovavo nulla.
Grazie
era errao il quote, ho sistemato aggiungendo anche la fonte.
C'è una differenza di fondo fra bit e baud: il bit è un'astrazione informatica, ovvero è un'informazione di tipo booleano che potrebbe essere 0 oppure 1, vero oppure falso. I bit, però, devono essere trasmessi su un mezzo trasmissivo che potrebbe essere il rame nel caso di un collegamento seriale. Te sul rame non trasmetti i bit ma trasmetti quelli che vengono chiamati simboli, nei quali simboli puoi trovare l'informazione dei bit da trasmettere.
Fatta questa premessa, su ogni simbolo possono essere inseriti un numero n di bit. Nella fattispecie di una trasmissione seriale, ad ogni simbolo è associato un singolo bit. Ad esempio, i simboli possibili che potresti trasmettere potrebbero essere 5V per il VERO e 0V per il FALSO (nel caso di logica TTL). Esistono però altri standard dove ad ogni simbolo sono associati più bit. Metti il caso che il simbolo possa avere 4 tensioni diverse (non so se esiste una codifica siffatta): 0V, 1,666V, 3,333V e 5V: in questo caso ogni simbolo può contenere 2 bit (con due bit puoi definire 4 stati: 00, 01, 10, 11).
Il baudrate ti dice quanti simboli al secondo vengono trasferiti, nel caso in cui 1baud=1bit (come avviene nelle trasmissioni seriali) il baudrate equivale al bitrate (al quale però devono essere tolti alcuni bit per avere la velocità di trasmissione effettiva perché, per esempio, utilizzando la codifica 8E1 (8 bit di dati, parità pari, un bit di stop) ogni 8 bit che devi trasmettere in realtà ne devono essere trasmessi 11 (c'è da considerare il bit di start).
Per essere ancora più precisi, "baud = simboli al secondo" e non simboli, quindi si dirà 9600 bps, 9600 baud ma non 9600 baud per secondo.