Quando serve la codifica Manchester?

Salve,
cercando in internet non sono riuscito a capire in quale caso nei modulini RF 433 Mhz si deve utilizzare la codifica Manchester.

Nel mio caso,nei moduli niceRF STX882 e SRX887, è sufficente la libreria VitualWire o è meglio utilizzare la codifica Manchester?

Qualcuno mi puo’ aiutare?

La codifica Manchester produce un segnale seriale sicrono. Questo vuol dire che il segnale ha codificato anche il clock. In differenza con SPI o I2C non serve un pin aggiuntivo per il clock ma il clock puó essere dedotto dal segnale stesso.

Il vantaggio tra asicrono e sincrono é il riconoscimento piú sicuro dello stato di un segnale per la decodifica e nel caso di interfaccia sincrona la possibilitá di variare la velocitá di trasmissione. Questo é utile quando non puó essere garantito la costanza della velocitá di trasmissione del segnale per sesempio si nastri magnetici. Un segnale asincrono come il RS232 deve ogni Byte essere syncronizzato con un bit di start e un bit di stop.

La codifica Manchester puó essere usata per avere una trasmissione sincrona con un interfacca che non permette 2 segnali separati come per esempio un canale (frequenza) di onde radio.

Per interfaccie piú veloci vengono usati codifiche differenti perché la codifica Manchester genera in certe circostanze (bit dello stato uguale i fila) un segnale con la doppia frequenza rispetto al segnale binario che viene codificato. Percui hai bisogno della doppia Baudrate rispetto una codifica con clock separato.

Nel Tuo caso la scelta della codifica dipende dalla Baudrate che hai bisogno. al costanza della frequenza é data in modo sufficente dal oscillatore dei Arduini.

Ciao Uwe

Nel caso occorresse, QUI una libreria (valida per varie MCU a varie velocità) e QUI la sua descrizione ;)

Guglielmo

Correggimi se sbaglio uwefed...

nel mio caso visto che devo fare comunicare due 2 arduino tramite dei moduli RF la libreria VirtualWire è sufficent perché una volta sincronizzati i segnali essendo il clock preciso e costante non dovrei avere problemi di perdita di transizioni dei livelli logici ovvero perdita di dati. Tuttavia se non mi servisse una velocità eccessiva di trasmissione utilizzando la codifica Manchester avrei un ulteriore garanzia di non perdere segnali e "forse" potrei aumentare la distanza tra i due arduino.

Spero di non avere capito male.. :zipper_mouth_face:

No, usa la Virtual Wire, è più affidabile perché non si limita alla semplice trasmissione dei bytes, ma implementa un vero protocollo con tanto di CRC dei dati trasmessi e verifica in ricezione.

Studiati bene la documentazione ;)

Guglielmo

Lo farò, ;)

Grazie.