EasyManuals Logo

Atmel ATmega32M1 User Manual

Atmel ATmega32M1
367 pages
To Next Page IconTo Next Page
To Next Page IconTo Next Page
To Previous Page IconTo Previous Page
To Previous Page IconTo Previous Page
Page #352 background imageLoading...
Page #352 background image
352
7647H–AVR–03/12
Atmel ATmega16/32/64/M1/C1
30.1.4 Errata Description
1. Inopportune reset of the CANIDM registers
After the reception of a CAN frame in a MOb, the ID mask registers are reset.
Problem fix / workaround
Before enabling a MOb in reception, re-initialize the ID mask registers - CANIDM[4..1].
2. The AMPCMPx bits return 0
When they are read the AMPCMPx bits in AMPxCSR registers return 0.
Problem fix / workaround
If the reading of the AMPCMPx bits is required, store the AMPCMPx value in a variable
in memory before writing in the AMPxCSR register and read the variable when
necessary.
3. No comparison when amplifier is used as comparator input and ADC input
When it is selected as ADC input, an amplifier receives no clock signal when the ADC is
stopped. In that case, if the amplifier is also used as comparator input, no analog signal
is propagated and no comparison is done.
Problem fix / workaround
Select another ADC channel rather than the working amplified channel.
4. CRC calculation of diagnostic frames in LIN 2.x.
Diagnostic frames of LIN 2.x use “classic checksum” calculation. Unfortunately, the set-
ting 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 check-
sums” 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 diag-
nostics frames.
a. Slave task of master node:
Before enabling the HEADER, the master must set the appropriate LIN13 bitvalue
in LINCR register.
b. For slaves nodes, the workaround is in 2 parts:
– Before enabling the RESPONSE, use the following function:
void lin_wa_head(void) {
unsigned char temp;
temp = LINBTR;
LINCR = 0x00; // It is not a RESET !
LINBTR = (1<<LDISR)|temp;
LINCR = (1<<LIN13)|(1<<LENA)|(0<<LCMD2)|(0<<LCMD1)|(0<<LCMD0);
LINDLR = 0x88; // If it isn't already done
}
– Once the RESPONSE is received or sent (having RxOK or TxOK as well as
LERR), use the following function:
void lin_wa_tail(void) {
LINCR = 0x00; // It is not a RESET !
LINBTR = 0x00;
LINCR = (0<<LIN13)|(1<<LENA)|(0<<LCMD2)|(0<<LCMD1)|(0<<LCMD0);
}
The time-out counter is disabled during the RESPONSE when the workaround is set.

Table of Contents

Questions and Answers:

Question and Answer IconNeed help?

Do you have a question about the Atmel ATmega32M1 and is the answer not in the manual?

Atmel ATmega32M1 Specifications

General IconGeneral
BrandAtmel
ModelATmega32M1
CategoryMicrocontrollers
LanguageEnglish

Related product manuals