Riconoscimento automatico del baud-rate su microcontrollori 8051
Nel listato 2 è riportata una tecnica per il riconoscimento automatico del baud rate nelle comunicazioni seriali. La soluzione riportata è scritta per un microcontrollore 8051, ma è facilmente modificabile per altri tipi di micro. Il baud rate viene calcolato assumendo che la comunicazione seriale sia di tipo 8-N-1.
autobaud: mov tmod, #0x11 ;abilitazione timer #1 mov tcon, #0x00 clr a mov th1, a mov tl1, a autob2: jb p3.0, * ;attesa start bit jb p3.0, autob2 jb p3.0, autob2 ;Prolungamento dell’attesa jb p3.0, autob2 ;per evitare inneschi da rumore jb p3.0, autob2 jnb p3.0, * ;attesa del bit #0 setb tr1 ;inizio conteggio jb p3.0, * ;attesa bit #1 jnb p3.0, * ;attesa bit #2 jb p3.0, * ;attesa bit #4 jnb p3.0, * ;attesa stop bit clr tr1 ;arresto conteggio mov a, tl1 mov c, acc.6 ;calcolo del baud-rate mov f0, c mov c, acc.7 mov a, th1 rlc a mov c, f0 addc a, #0 cpl a inc a autoend: mov 0x7B, a mov 0x7A, a ;salvataggio non volatile del baud rate. mov 0x79, a mov 0x78, a xrl 0x7A, #01010101b xrl 0x79, #11001100b xrl 0x78, #00011101b mov th1, a mov tl1, a mov tmod, #0x21 mov pcon, #0x80 ;configurazione dell’uart interno mov scon, #0x52 setb tr1 ;avvio del baud rate timer mov r0, #0 djnz r0, * djnz r0, * ret
Listato 2 |
La tecnica consiste nell’avviare il conteggio con TIMER1 all’arrivo dello start bit per arrestarlo in corrispondenza dello stop bit. Il risultato del conteggio è il numero di cicli macchina necessari alla ricezione di 8 bit. Per ottenere l’impostazione del baud rate dell’UART interno è necessario suddividere il risultato per 8 (cicli macchina per 1 bit) quindi per 16 (in quanto l’UART interno si aspetta 16 overflow del timer per ciascun bit). Il risultato viene salvato nella memoria non volatile per essere nuovamente disponibile al successivo boot.
Segnalo anche questo articolo, molto utile per chi deve lavorare con l’autobaud nei micro Microchip: http://it.emcelettronica.com/sei-mai-stato-catturato-dall-autobaud
L’autobaud rate permette di collegare diversi dispositivi che operano a differenti velocità. Nello stesso tempo permette di rilevare la velocità di trasmissione e di auto adattarsi a quel tasso.