AVR063: LCD Driver for the STK504

AVR063: LCD Driver for the STK®504
Features
•
•
•
•
•
Software Driver for Alphanumeric Characters
Liquid Crystal Display (LCD) Contrast Control
Interrupt Controlled Updating
Conversion of ASCII to LCD Segment Control Codes (SCC)
Interfaces the STK504 LCD Display
8-bit
Microcontrollers
Application Note
1 Introduction
In applications where user interaction is required it is often useful to be able to
display information to the user. A simple interface could be status LEDs, whereas
more complex interaction can benefit from a display capable of displaying letters,
number, words or even sentences. Liquid Crystal Displays (LCD) are often used for
displaying messages. LCD modules can either be graphical ones, which can be
used to display graphics and text, or alphanumerical ones capable of displaying 10
– 80 characters. The standard alphanumerical LCD modules are easy to interface,
but are fairly expensive because of the built-in drivers/controllers handling the
generation of the characters/graphics on the LCD glass.
The LCD glass is the glass plate in which the liquid crystal is contained. To reduce
the cost of an application where a display is required, one can choose to use a
MCU with a built-in LCD driver to drive the LCD glass directly. This eliminates the
need for a driver integrated in the LCD module, and thus reducing cost by up to as
much as a factor of 10, since an LCD glass has a much lower cost than an LCD
module.
The ATmega3290 Flash microcontroller from Atmel has an integrated LCD driver
capable of controlling up to 160 segments. The highly efficient core and the very
low power consumption of this device make it ideal for battery-powered
applications. The STK504 is a hardware expansion board for STK500 that add
support for 100 pin AVR LCD devices.
Figure 1-1. The STK504 LCD
Rev. 8009A-AVR-04/06
2 Theory of Operation
This section provides a basic overview of common features and an introduction to the
terminology used in relation to LCD glass.
In Addition a summary of the ATmega3290 display driver, and a description of the
LCD glass used in the application example is discussed. Further, this section contains
a summary of the ATmega3290 LCD features and a description of the LCD glass
used in the application example.
2.1 LCD Glass Explained
The Liquid Crystal Display is based on a display technology that uses rod-shaped
molecules (liquid crystals) that flow like liquid and bend light. Unenergized, the
crystals direct light through two polarizing filters, allowing a natural background color
to show. When energized, they redirect the light to be absorbed in one of the
polarizers, causing the dark appearance. The more the molecules are twisted (1), the
better the contrast and viewing angle.
The LCD must be driven by alternating current (AC). Direct current (DC) will cause
electrophoresis effects in the liquid crystal and will degrade the display. There are two
AC driving method: the static driving methods and the multiplex driving method.
In the static driving method, the LCD is driven with two square waveforms. The static
driving method is the most basic method by which good display quality can be
obtained. However, it is not suitable for liquid displays with many segments because
one liquid crystal driver circuit is required per segment.
In the multiplex (MUX) driving method, there are a wide variety of drive waveforms
and bias levels (explained below) depending on the driver manufacturers. The MUX
level depends on the number of backplanes (also called common lines or common
terminals). For example, a triple display (1/3 MUX) has three backplanes.
The two most common types of LCDs are: “Twisted Nematic” (TN) and “Super Twist
Nematic” (STN). The TN is used for LCD glass with less than 16 back-planes, while
STN LCDs are capable of having as much as 240 back planes. The limitations in
number of back planes are caused by a decrease in transparency due to increasing
number of back-planes.
Note: 1. The LCD crystals are more twisted when more polarized due to higher voltage over
the LCD segment.
2.2 LCD Frame Rate
The number of times the LCD segments are energized per second is called the LCD
frame rate. The frame rate should be kept above 30 Hz to avoid that the human eye
perceives the segments as flickering.
If a high frame rate is used ghosting can occur. Ghosting is when LCD segments are
not properly turned off. Ghosting is also depending on Duty and Bias (explained
below) and it may be required to adapt the frame rate to the actual Duty and Bias
used. In general ghosting can be avoided by using sufficiently low frame rates; a
frame rate of 100 Hz or less prevents ghosting.
2
AVR063
8009A-AVR-04/06
AVR063
2.3 Segments Drivers and Common Terminals
Each LCD segment has two terminals. One is connected to a segment driver the
other is connected to a common terminal. By applying an alternating current across
the segment driver and the common terminal the liquid crystal is polarized (energized)
and becomes visible. The common terminal is as the term describes common for a
group of LCD segments.
To be able to activate only one segment though one (common) terminal that is shared
between multiple segments, the driving waveforms are encoded in a way so that the
segment can be activated individually. If only one common terminal is used, that is if
each segment driver is only driving one segment, the segment driver of the segments
that should not be energized are of opposite phase of the segment drivers that are
energizing segments. This result in that there is a maximal voltage drop over the
segment that should be energized, while no or only a small voltage drop over the
segments that should not be energized. Figure 2-1 and Figure 2-2 shows the
energized and the non-energized segment and their driving waveforms, for segments
where the LCD drivers are only driving one segment each (static Duty).
Figure 2-1. Two LCD Segments Connected to One Common Terminal
Segment Line 1
SEG1
Energized
LCD segment
SEG0
Segment Line 0
Non-energized
LCD segment
Common Terminal 0
Figure 2-2. Driving Waveforms for Two LCD Segments Connected to the Same
Common Terminal
The left side of Figure 2-2 shows the active segment’s driving waveforms and the
right side of the figure shows the in-active segments driving waveforms.
The way of energizing the segments are more complex if each LCD driver is driving
more than one segment. This happens when multiple back-planes are present. In this
case the so-called Duty Cycle of the driving waveforms is 1/2 or lower. The Duty
Cycle is described in more details below.
3
8009A-AVR-04/06
2.4 Duty Cycle or Duty Ratio
The Duty Cycle or Duty Ratio is a number used to describe how long time each
segment is activated during each frame. When each segment driver is only driving
one segment the Duty Ratio is “static”. If the drivers are driving more than one
segment each the Duty Ratio is given as 1/(segments driven by each LCD driver).
The number of segments driven by each LCD driver is equal to the number of
common terminals. The Duty Ratio is therefore depending on the number of common
terminals in a given LCD glass. Figure 2-3 illustrates the relation between the number
of back-planes and the Duty Ratio used when controlling the LCD.
Figure 2-3. LCD Segments Controlled by Static and 1/3 Duty
Duty = Static (1/1)
Duty = 1/3
Segment Line 1
Segment Line 1
SEG2
SEG1
SEG0
SEG1
SEG0
Segment Line 0
Common Terminal 0
Common Terminal 0
Common Terminal 1
Common Terminal 2
The Drive Bias (or just Bias) is related to the number of voltage levels used when
driving the LCD. The Bias is defined as 1/(number of voltage levels-1). The more
segments driven by each driver(1) the higher number of voltage levels are required. As
per the definition of Duty Ratio, there is a direct relation between the Bias required
and the Duty Ratio used.
Note:
1.The number of segments driven by a single segment line is depending on the
number of back-planes in the LCD glass.
Table 2-1. Display Duty, Bias and Voltage Levels
Common Terminals
1
2
3
4
6
7
11
12
Duty
Static
1/2
1/3
1/4
1/6
1/7
1/11
1/12
Bias
1
1/2
1/3
1/3
1/3
1/4
1/4
1/5
Voltage Levels
2
3
4
4
4
5
5
6
If three common lines are used in an LCD it has 1/3 Duty Ratio (see Figure 2-3). This
means that each segment driver controls up to three segments. To be able to control
three segments from one segment driver the Bias needs to be 1/3. In other words it
requires four different voltage levels to be able to control three segments using only
one driver. Each of the LCD segments connected to a single segment line has
different common terminals.
Figure 2-4 shows the driving waveforms of two LCD segments driven by the same
segment line and connected to two different back-planes. The illustration shows that
the driving waveform has four voltage levels, Bias of 1/3, which is sufficient to drive
up to six back-planes. However since the waveform shows three cycles within one
frame the Duty is 1/3 and indicating that the glass has three back-planes.
4
AVR063
8009A-AVR-04/06
AVR063
Figure 2-4. Driving Waveforms of Two Different LCD Segments
Figure 2-4 shows driving waveforms of two different LCD segments connected to two
different common terminals. The segment line is shared. The left side figure is
illustrating the active segment; the right side figure is illustrating the inactive segment.
The segment represented by the right side figure is inactive because the LCD
activation voltage threshold is not passed.
2.5 LCD Contrast
LCD contrast is a function of the RMS value of the back-plane minus segment line
waveforms at that segment location. Waveforms can be generated such that, at any
point in the LCD structure, the resulting RMS voltage is either above the saturation
voltage(1), or below the visual threshold voltage.
Note:
1. Saturation voltage is the voltage level where the crystals are fully polarized.
2.6 LCD Features of the ATmega3290
The ATmega3290 can with its four back-plane lines and 40 segment lines drive up to
160 LCD segments.
To provide high flexibility the LCD driving waveform is selectable. The Duty Ratio and
Bias is programmable making it possible to interface LCD glass with one to four back
planes and between 13 and 40 segment lines. The lines not used for driving the LCD
can be used as general IO. The LCD contrast can be controlled by varying the driver
voltage level between 2.6V and 3.35V – independent of VCC. These voltage levels
only apply to the LCD pins while used by the LCD interface.
To be able to optimize for performance and current consumption the ATmega3290
uses programmable frame rates and allow the use of “low power waveforms”. The low
power waveform ensures that the switching of the segment and common lines are
kept at a minimum frequency. Further, the power saving modes of the ATmega3290
allows the MCU to continue driving the LCD glass while reducing its current
consumption to a minimum.
Due to the built-in LCD interrupt source, the software driver can be fully interrupt
driven. This can be used to ensure that the timing related to updating the LCD is
correct. It is therefore possible to avoid that partly updated LCD Data Registers are
latched to the LCD lines.
5
8009A-AVR-04/06
2.7 The STK504 LCD Glass
The LCD software driver described in this document is made for the STK504, which is
an add-on module for the STK500 development board. A brief description of the LCD
on the STK504 is provided here, further details on the STK500 and STK504 can be
found in their respective User Guides.
The LCD glass mounted on the STK504 is illustrated in Figure 2-5. It consists of
seven alphanumerical symbols, four numerical symbols and various graphical
symbols.
Figure 2-5. The STK504 LCD Glass
The LCD glass has in total 160 segments – controlled
40 segment lines. Since the ATmega3290 is capable
device controls all segments. The software driver
assumes that the LCD on the STK504 is connected in
configuration for the STK504.
through four back-planes and
of driving 160 segments, the
described in this document
accordance with the standard
The segments can be divided into three distinct groups
• Alphanumeric 14-segment Symbols
• Numeric 7-segment Symbols
• Graphical Symbols
Because of the position of the LCD segments in the IO memory map, these three
groups are handled by separate functions. This will be explained in the
implementation part of this application note.
6
AVR063
8009A-AVR-04/06
AVR063
3 Implementation
This section contains a description of where to find info about the physical connection
between the ATmega3290 and the LCD display on the STK504 and how LCD
segments are controlled. How to map ASCII characters to the LCD digits is also
described.
3.1 Connections Between the LCD and the ATmega3290
The connections between the LCD display and the ATmega3290 are described in the
STK504 User Guide found in the AVR Studio® On-line Help system. It is important to
note that power to the LCD is supplied from the ATmega3290 – it does not have
separate supply lines.
3.2 LCD Data Registers
The LCD segments are individually controlled through the bits of the 20 LCD Data
Registers (LCDDR19:0). Each segment is uniquely controlled through setting or
clearing its corresponding bit in LCDDR19:0. The AVR LCD module handles the
encoding of the physical drive waveforms to the LCD.
3.3 Relation Between LCD Data Registers and LCD Segments
To be able to make an efficient LCD software driver, in terms of code density, the
physical connections between the LCD digits and the segments and common lines
must be well organized: Each LCD digit must be related in the same or similar way to
the LCD Data Registers. This will simplify the translation from an ASCII character to
LCD Segment Control Codes (SCC) described below. The SCC code can be written
to the LCDDR19:0 Registers. The data that is written to the LCDDR19:0 Registers
are thus the direct control of the LCD segments through setting and clearing their
corresponding bits in the LCD Data Registers.
3.4 LCD Segment Control Codes
Analyzing the segment mapping of the LCD display on the STK504, shows that it is
not efficient to make one generic function to cover both the 7 and 14 segment
characters. The segment mapping table is found in appendix B of the STK504 User
Guide (in AVR Studio help). Writing to the 14 or 7 segment characters are thus
covered by separate functions and will be explained separately.
3.4.1 14-Segment Characters
The odd digits are using the low nibbles of the associated LCD Data Registers and
the even are using the high nibbles. Four different LCD Data Registers are used for
each LCD digit; these are all related to different back planes. The relation between
the LCD Data Registers and the digits are organized so that the address offset
between each LCD Data Register used is fixed; The interspacing between the
addressed are in all cases 0x05. Finally, digit 2 and 3, 4 and 5, and 6 and 7 are in
pairs respectively starting at LCDDR0, LCDDR1, and LCDDR2.
To be able to translate ASCII characters into the LCD segment control codes (SCC)
required to set and clear the bits in the LCD Data Registers, the bit mapping tables in
the STK504 User Guide are used. Since the tables can be reused for all LCD digits
only one bit mapping table needs to be used.
7
8009A-AVR-04/06
To control all segment lines of a LCD digit 14 bits are required. The LCD SCC is thus
16 bit wide, arranged so that each nibble of the LCD SCC is related to one LCD Data
Register. The SCC can therefore be used as follows:
SCC = {bit 15:0} = {Nibble3:0}~{LCDDRx+15, LCDDRx+10, LCDDRx+5,
LCDDRx};
Table 3-1 shows how the Segment is for the first (leftmost) character on the LCD
display.
Table 3-1. STK504 LCD Segment Mapping for character 1
Bits
Common Lines
7
6
5
4
3
2
1
0
Registers
COM3
2C
NB
2M
2D
1C
BEL
1M
1D
LCDDR15
COM2
2H
2N
2L
2E
1H
1N
1L
1E
LCDDR10
COM1
2B
2K
2J
2G
1B
1K
1J
1G
LCDDR5
COM0
TU
2A
2I
2F
MO
1A
1I
1F
LCDDR0
The SCC for Character 1 will be:
SCC = { bit 15:0 } ~ { LCDDR15[3:0], LCDDR10[3:0], LCDDR5[3:0], LCDDR0[3:0]};
SCC = { bit 15:0 } ~ { 1C, 0, 1M, 1D, 1H, 1N, 1L, 1E, 1B, 1K, 1J, 1G, 0, 1A, 1I, 1F };
Example: To display the letter ‘A’ in character position 1 segments 1A, 1B, 1C, 1E,
1F, 1G and 1H needs to be set. The correct SCC for the letter A is thus:
SCC_A = {bit 15:0 } = { 1, 0, 0, 0, 1, 0, 0, 1, 1, 0, 0, 1, 0, 1, 0, 1 } = {0x8995};
A complete listing of all predefined SCC codes can be found in the stk504_lcd.c
source file.
The function is responsible for writing the correct bits without changing bits that are
not part of the character.
3.4.2 7-segment Characters
The write function for the 7 segment characters is implemented in a similar way, but
since these characters only need 7 bits, they are stored in a single byte. The
Segment Control Code is thus 8 bits wide. As for the 14 segment characters the
relation between the LCD Data Registers and the digits are organized so that the
address offset between each LCD Data Register used is fixed; the interspacing
between the addressed are in all cases 0x05.
SCC = {bit 7:0} = {bit1:0}~{LCDDRx+15, LCDDRx+10, LCDDRx+5, LCDDRx};
Table 3-2. STK504 LCD Segment Mapping 7-segment characters
Bits
Common Lines
8
7
6
5
4
3
2
1
0
Registers
COM3
9A
9B
10A
10B
11A
11B
12A
12B
LCDDR19
COM2
9F
9G
10F
10G
11F
11G
12F
12G
LCDDR14
COM1
9E
9C
10E
10C
11E
11C
12E
12C
LCDDR9
COM0
9D
OUT
10D
P
11D
COL
12D
ICE
LCDDR4
AVR063
8009A-AVR-04/06
AVR063
Only two bit is stored in each LCDDR register, so to write a complete character, 4
registers need to be written.
The SCC is organized as follows:
SCC = { A, B, F, G, E, C, D, 0 };
Example: To display the character ‘A’ on the 7-segment character 9 (see LCD
segment mapping in the STK504 user guide) the following segments need to be set:
9A, 9B, 9C, 9E, 9F, 9G. The correct SCC code is thus:
SCC_A = { 1, 1, 1, 1, 1, 1, 0, 0 } = 0xFC;
3.5 Symbols
In addition to the 7-segment and 14-segment characters there is number of graphical
symbols that can be used. Since these are scattered around the IO map, the easiest
way of handling these is by a separate function. The formats of these SCC codes are
slightly different from the 7 and 14 segment functions.
Bits
Common Lines
7
6
5
4
3
2
1
0
Registers
COM3
9A
9B
10A
10B
11A
11B
12A
12B
LCDDR19
COM3
AVR
S7
S8
S9
7C
KEY
7M
7D
LCDDR18
COM3
6C
WRM
6M
6D
5C
8BC
5M
5D
LCDDR17
For symbols, the SCC code has the following format:
SCC = { bit:b[7..0] n[19..0], where b is the bit position within the LCDDR register and
n is relative offset to LCDRR0.
Example: The SCC code to set the AVR symbol:
SCC_AVR = { bbb nnnnn } = { bit:7 offset:18} = { 111 10010 } = 0xF2;
The complete SCC code list can be found in the STK504_lcd.h source file.
9
8009A-AVR-04/06
4 Firmware Description
This section contains information about the functions included in this driver, and how
to use them. The firmware can be downloaded from the Atmel website:
http://www.atmel.com/products/AVR/ For compiler info and settings, device settings,
target setup info and comprehensive source documentation please see the
readme.html file included with the source.
4.1 LCD Driver Functions
Table 4-1. LCD Software Driver Functions
10
Function Name
Arguments
Return
Description
LCD_init(global)
void
void
Initialize the LCD display Data
Buffer, which is used to buffer the
LCD Data Registers. The LCD
frame rate and contrast is
selected. Power reduction register
PRLCD bit is cleared.
LCD_Update(global)
void
void
Transfers the content of the LCD
data buffer to the LCDDRx
registers. Forces update, instead
of using the LCD interrupt routine
to update the registers.
LCD_vect_interrupt(local,
interrupt service routine)
void
void
Latches the LCD Display Data
Buffer to the LCD Data Registers.
The latching is depending on the
LCD_timer variable and the
LCD_status.updateRequired
variable
LCD_PutChar(global)
unsigned char c,
unsigned char
digit
void
The ASCII character is passed in
“c”. Argument is converted to a
SCC code for the 14 segment
characters, and displayed in the
position indicated by “digit”. Note
that the data is written to the LCD
Display Buffer, not directly to the
LCDDR registers. The actual data
update is handled by the
LCD_vect_interrupt function
LCD_PutDigit(global)
unsigned char c,
unsigned char
digit
void
The ASCII character is passed in
“c”. Argument is converted to a
SCC code for the 7 segment
characters, and displayed in the
position indicated by “digit”. Note
that the data is written to the LCD
Display Buffer, not directly to the
LCDDR registers. The actual data
update is handled by the
LCD_vect_interrupt function
LCD_AllSegments(global)
unsigned char
input
void
Clears all segments in the LCD
display buffer if argument is zero,
otherwise sets all segments.
AVR063
8009A-AVR-04/06
AVR063
Function Name
Arguments
Return
Description
LCD_SetSeg(global)
unsigned char
symbol,
unsigned char
input
void
Clears the symbol indicated in the
LCD display buffer if input is zero,
otherwise sets the symbol.
LCD_BarSeg(global)
unsigned char
value
void
Function to write to the eight
segments inside the temp/battery
symbol. Simplifies writing to these
symbols, as the decoding is
somewhat complex.
The variables listed in Global Variables Required When Using the LCD Software
Driver are the global variables that are required to get control of the communication
between the main LCD driver functions and the LCD interrupt function. Details on the
functionality of the variables are provided in Table 4-2.
Table 4-2. Global Variables Required When Using the LCD Software Driver
Variable Name
Description
LCD_status.updateRequired
(bitfield, bool)
If TRUE the LCD_vect_interrupt routine will be allowed to
latch the LCD Display Data Buffer to the LCD Data
Registers. If FALSE the interrupt routine will not latch the
LCD display data. This variable can thus be used to request
or block the LCD Display Data Buffer latching: While
updating the LCD display data buffer the variable should be
set to FALSE, so that no latching is performed until the LCD
display data buffer is fully updated.
LCD_status.updateComplete
(bitfield, bool)
The variable is set to TRUE when the LCD Display Data
Buffer has been latched. This is done in the
LCD_vect_interrupt routine. The variable can thus be used
to test if the data written to the LCD display buffer has been
latched after accessing the LCD display data buffer. It can
be used to handle update timing since the LCD interrupt is
occurring with fixed intervals. The variable can be used to
control calls to the LcdPutChar/LcdPutDigit functions.
LCD_timer (Unsigned char)
Variable is decremented in the LCD_vect_interrupt routine.
When the value becomes 0, the next latching of the LCD
display data buffer will occur. The default timer seed is also
reloaded at this time. The variable controls the duration of
the interval between LCD updates. The LCD update also
depends on the LCD_status.updateRequired variable. If the
update cannot be performed because
LCD_status.updateRequired is FALSE, the LCD update will
be attempted during the next LCD SFO interrupt. The
variable can be set to one from the main application if
immediate updating of the LCD is desired.
11
8009A-AVR-04/06
5 Table of Contents
Features ............................................................................................... 1
1 Introduction ...................................................................................... 1
2 Theory of Operation......................................................................... 2
2.1 LCD Glass Explained .......................................................................................... 2
2.2 LCD Frame Rate ................................................................................................. 2
2.3 Segments Drivers and Common Terminals ........................................................ 3
2.4 Duty Cycle or Duty Ratio ..................................................................................... 4
2.5 LCD Contrast....................................................................................................... 5
2.6 LCD Features of the ATmega3290 ..................................................................... 5
2.7 The STK504 LCD Glass...................................................................................... 6
3 Implementation ................................................................................ 7
3.1 Connections Between the LCD and the ATmega3290 ....................................... 7
3.2 LCD Data Registers ............................................................................................ 7
3.3 Relation Between LCD Data Registers and LCD Segments .............................. 7
3.4 LCD Segment Control Codes.............................................................................. 7
3.4.1 14-Segment Characters ............................................................................................ 7
3.4.2 7-segment Characters ............................................................................................... 8
3.5 Symbols............................................................................................................... 9
4 Firmware Description .................................................................... 10
4.1 LCD Driver Functions ........................................................................................ 10
5 Table of Contents........................................................................... 12
Disclaimer ............................................................................................. 13
12
AVR063
8009A-AVR-04/06
Disclaimer
Atmel Corporation
2325 Orchard Parkway
San Jose, CA 95131, USA
Tel: 1(408) 441-0311
Fax: 1(408) 487-2600
Regional Headquarters
Europe
Atmel Sarl
Route des Arsenaux 41
Case Postale 80
CH-1705 Fribourg
Switzerland
Tel: (41) 26-426-5555
Fax: (41) 26-426-5500
Asia
Room 1219
Chinachem Golden Plaza
77 Mody Road Tsimshatsui
East Kowloon
Hong Kong
Tel: (852) 2721-9778
Fax: (852) 2722-1369
Japan
9F, Tonetsu Shinkawa Bldg.
1-24-8 Shinkawa
Chuo-ku, Tokyo 104-0033
Japan
Tel: (81) 3-3523-3551
Fax: (81) 3-3523-7581
Atmel Operations
Memory
2325 Orchard Parkway
San Jose, CA 95131, USA
Tel: 1(408) 441-0311
Fax: 1(408) 436-4314
Microcontrollers
2325 Orchard Parkway
San Jose, CA 95131, USA
Tel: 1(408) 441-0311
Fax: 1(408) 436-4314
La Chantrerie
BP 70602
44306 Nantes Cedex 3, France
Tel: (33) 2-40-18-18-18
Fax: (33) 2-40-18-19-60
ASIC/ASSP/Smart Cards
Zone Industrielle
13106 Rousset Cedex, France
Tel: (33) 4-42-53-60-00
Fax: (33) 4-42-53-60-01
RF/Automotive
Theresienstrasse 2
Postfach 3535
74025 Heilbronn, Germany
Tel: (49) 71-31-67-0
Fax: (49) 71-31-67-2340
1150 East Cheyenne Mtn. Blvd.
Colorado Springs, CO 80906, USA
Tel: 1(719) 576-3300
Fax: 1(719) 540-1759
Biometrics/Imaging/Hi-Rel MPU/
High Speed Converters/RF Datacom
Avenue de Rochepleine
BP 123
38521 Saint-Egreve Cedex, France
Tel: (33) 4-76-58-30-00
Fax: (33) 4-76-58-34-80
1150 East Cheyenne Mtn. Blvd.
Colorado Springs, CO 80906, USA
Tel: 1(719) 576-3300
Fax: 1(719) 540-1759
Scottish Enterprise Technology Park
Maxwell Building
East Kilbride G75 0QR, Scotland
Tel: (44) 1355-803-000
Fax: (44) 1355-242-743
Literature Requests
www.atmel.com/literature
Disclaimer: The information in this document is provided in connection with Atmel products. No license, express or implied, by estoppel or otherwise, to any
intellectual property right is granted by this document or in connection with the sale of Atmel products. EXCEPT AS SET FORTH IN ATMEL’S TERMS AND
CONDITIONS OF SALE LOCATED ON ATMEL’S WEB SITE, ATMEL ASSUMES NO LIABILITY WHATSOEVER AND DISCLAIMS ANY EXPRESS, IMPLIED
OR STATUTORY WARRANTY RELATING TO ITS PRODUCTS INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTY OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE, OR NON-INFRINGEMENT. IN NO EVENT SHALL ATMEL BE LIABLE FOR ANY DIRECT, INDIRECT,
CONSEQUENTIAL, PUNITIVE, SPECIAL OR INCIDENTAL DAMAGES (INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOSS OF PROFITS, BUSINESS
INTERRUPTION, OR LOSS OF INFORMATION) ARISING OUT OF THE USE OR INABILITY TO USE THIS DOCUMENT, EVEN IF ATMEL HAS BEEN
ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. Atmel makes no representations or warranties with respect to the accuracy or completeness of the
contents of this document and reserves the right to make changes to specifications and product descriptions at any time without notice. Atmel does not make any
commitment to update the information contained herein. Unless specifically provided otherwise, Atmel products are not suitable for, and shall not be used in,
automotive applications. Atmel’s products are not intended, authorized, or warranted for use as components in applications intended to support or sustain life.
© Atmel Corporation 2006. All rights reserved. Atmel®, logo and combinations thereof, Everywhere You Are®, AVR®, AVR Studio®, STK®,
and others, are the registered trademarks or trademarks of Atmel Corporation or its subsidiaries. Other terms and product names may be
trademarks of others.
8009A-AVR-04/06