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.