attiny167-esxz ATMEL Corporation, attiny167-esxz Datasheet - Page 267

no-image

attiny167-esxz

Manufacturer Part Number
attiny167-esxz
Description
8-bit Avr 8-bit Microcontroller Microcontroller With 16k Bytes In-system Programmable Flash And Lin Controller
Manufacturer
ATMEL Corporation
Datasheet
29. Errata
29.1
29.1.1
29.2
7728A–AUTO–07/08
Errata Summary
Errata Description
ATtiny167 RevA (Date code >1207)
1. CRC calculation of diagnostic frames in LIN 2.x.
2. Gain control of the crystal oscillator.
CRC calculation of diagnostic frames in LIN 2.x.
Gain control of the crystal oscillator.
‘Disable Clock Source’ command remains enabled.
Comparison between ADC inputs and voltage references.
Diagnostic frames of LIN 2.x use “classic checksum” calculation. Unfortunately, the setting
of the checksum model is enabled when the HEADER is transmitted/received. Usually, in
LIN 2.x the LIN/UART controller is initialized to process “enhanced checksums” and a slave
task does not know what kind of frame it will work on before checking the ID.
Problem fix / workaround.
This workaround is to be implemented only in case of transmission/reception of diagnostic
frames.
a. Slave task of master node:
b. For slaves nodes, the workaround is in 2 parts:
The time-out counter is disabled during the RESPONSE when this workaround is set.
The crystal oscillator (0.4 -> 16 MHz) doesn’t latch its gain control (CKSEL/CSEL[2..0] bits):
a. The ‘Recover System Clock Source’ command doesn’t returns CSEL[2..0] bits.
b. The gain control can be modified on the fly if CLKSELR changes.
Before enabling the HEADER, the master must set the appropriate LIN13 bit value in
LINCR register.
– Before enabling the RESPONSE, use the following function:
– Once the RESPONSE is received or sent (having RxOK or TxOK as well as
LERR), use the following function:
void
unsigned char
}
void
}
temp = LINBTR;
LINCR = 0x00;
LINBTR = (1<<LDISR)|temp;
LINCR
LINDLR = 0x88;
LINCR = 0x00;
LINBTR = 0x00;
LINCR
lin_wa_head(void) {
lin_wa_tail(void)
= (1<<LIN13)|(1<<LENA)|(0<<LCMD2)|(0<<LCMD1)|(0<<LCMD0);
= (0<<LIN13)|(1<<LENA)|(0<<LCMD2)|(0<<LCMD1)|(0<<LCMD0);
temp;
// It is not a RESET !
// If it isn't already done
// It is not a RESET !
{
ATtiny167
267

Related parts for attiny167-esxz