2 busy signal in uart mode, 6 bit timing, 1 baud rate generator – Rainbow Electronics ATmega64M1 User Manual
Page 210: 2 re-synchronization in lin mode
210
8209A–AVR–08/09
ATmega16M1/32M1/64M1
When the busy signal is set, some registers are locked, user writing is not allowed:
• “LIN Control Register” - LINCR - except LCMD[2..0], LENA & LSWRES,
• “LIN Baud Rate Registers” - LINBRRL & LINBRRH,
• “LIN Data Length Register” - LINDLR,
• “LIN Identifier Register” - LINIDR,
• “LIN Data Register” - LINDAT.
If the busy signal is set, the only available commands are:
• LCMD[1..0] = 00
b
, the abort command is taken into account at the end of the byte,
• LENA = 0 and/or LCMD[2] = 0, the kill command is taken into account immediately,
• LSWRES = 1, the reset command is taken into account immediately.
Note that, if another command is entered during busy signal, the new command is not validated
and the LOVRERR bit flag of the LINERR register is set. The on-going transfer is not
interrupted.
21.5.5.2
Busy Signal in UART Mode
During the byte transmission, the busy signal is set. This locks some registers from being
written:
• “LIN Control Register” - LINCR - except LCMD[2..0], LENA & LSWRES,
• “LIN Data Register” - LINDAT.
The busy signal is not generated during a byte reception.
21.5.6
Bit Timing
21.5.6.1
Baud rate Generator
The baud rate is defined to be the transfer rate in bits per second (bps):
• BAUD: Baud rate (in bps),
• clk
i/o
: System I/O clock frequency,
• LDIV[11..0]: Contents of LINBRRH & LINBRRL registers - (0-4095), the pre-scaler receives
clk
i/o
as input clock.
• LBT[5..0]: Least significant bits of - LINBTR register- (0-63) is the number of samplings in a
LIN or UART bit (default value 32).
Equation for calculating baud rate:
BAUD =
f
clk
i/o
/ LBT[5..0] x (LDIV[11..0] + 1)
Equation for setting LINDIV value:
LDIV[11..0] = (
f
clk
i/o
/ LBT[5..0] x BAUD ) - 1
Note that in reception a majority vote on three samplings is made.
21.5.6.2
Re-synchronization in LIN Mode
When waiting for Rx Header, LBT[5..0] = 32 in LINBTR register. The re-synchronization begins
when the BREAK is detected. If the BREAK size is not in the range (11 bits min., 28 bits max. —
13 bits nominal), the BREAK is refused. The re-synchronization is done by adjusting LBT[5..0]
value to the SYNCH field of the received header (0x55). Then the PROTECTED IDENTIFIER is
sampled using the new value of LBT[5..0]. The re-synchronization implemented in the controller
tolerates a clock deviation of ± 20% and adjusts the baud rate in a ± 2% range.