18.01.2013 Views

AVR32107: Using TWI as a Master on the AVR32 - Atmel Corporation

AVR32107: Using TWI as a Master on the AVR32 - Atmel Corporation

AVR32107: Using TWI as a Master on the AVR32 - Atmel Corporation

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

<str<strong>on</strong>g><strong>AVR32</strong>107</str<strong>on</strong>g>: <str<strong>on</strong>g>Using</str<strong>on</strong>g> <str<strong>on</strong>g>TWI</str<strong>on</strong>g> <str<strong>on</strong>g>as</str<strong>on</strong>g> a M<str<strong>on</strong>g>as</str<strong>on</strong>g>ter <strong>on</strong> <strong>the</strong> <strong>AVR32</strong><br />

Features<br />

- Compatible with Philips' I 2 C protocol<br />

- M<str<strong>on</strong>g>as</str<strong>on</strong>g>ter transmitter mode<br />

- M<str<strong>on</strong>g>as</str<strong>on</strong>g>ter receiver mode<br />

- 7-bit slave address – up to 127 devices <strong>on</strong> <strong>the</strong> same bus<br />

- Normal (100kbps) and F<str<strong>on</strong>g>as</str<strong>on</strong>g>t (400kbps) operati<strong>on</strong><br />

- Interrupt driven communicati<strong>on</strong><br />

- Sequential read and write operati<strong>on</strong><br />

- Compatible with Standard Two-Wire Serial Memory<br />

- Currently <strong>on</strong>ly m<str<strong>on</strong>g>as</str<strong>on</strong>g>ter mode is supported<br />

1 Introducti<strong>on</strong><br />

The AVR®32 microc<strong>on</strong>troller communicate <str<strong>on</strong>g>as</str<strong>on</strong>g> <strong>the</strong> m<str<strong>on</strong>g>as</str<strong>on</strong>g>ter <strong>on</strong> a <str<strong>on</strong>g>TWI</str<strong>on</strong>g> bus (Philips’<br />

I2C compatible Two-Wire Interface). Up to 127 <str<strong>on</strong>g>TWI</str<strong>on</strong>g> devices can be c<strong>on</strong>nected to<br />

each bus. The bus is half-duplex, and <strong>the</strong> current m<str<strong>on</strong>g>as</str<strong>on</strong>g>ter device initiates transfers<br />

both ways.<br />

Figure 1.1: C<strong>on</strong>ceptual schematics<br />

MASTER<br />

DATA<br />

CLOCK<br />

SLAVE #1<br />

SLAVE #2<br />

SLAVE #127<br />

32-bit<br />

Microc<strong>on</strong>trollers<br />

Applicati<strong>on</strong> Note<br />

Rev. 32011A-AVR-04/06


2 Functi<strong>on</strong>al descripti<strong>on</strong><br />

2.1 Electrical interc<strong>on</strong>necti<strong>on</strong><br />

2.2 Wired AND<br />

2 <str<strong>on</strong>g><strong>AVR32</strong>107</str<strong>on</strong>g><br />

The <str<strong>on</strong>g>TWI</str<strong>on</strong>g> bus c<strong>on</strong>sists of two lines, <strong>on</strong>e for data and <strong>on</strong>e for <strong>the</strong> clock signal (and<br />

possibly <strong>on</strong>e for ground). Both bus lines are c<strong>on</strong>nected to <strong>the</strong> positive supply voltage<br />

through pull-up resistors. When a device wants to output a logical 0, it drives <strong>the</strong> bus<br />

line low and for logical 1, <strong>the</strong> output is tri-stated. In this way <strong>the</strong> device relies <strong>on</strong> <strong>the</strong><br />

pull-up resistor to pull <strong>the</strong> line high. This technique is often referred to <str<strong>on</strong>g>as</str<strong>on</strong>g> wired AND.<br />

This is described in fur<strong>the</strong>r detail in chapter 2.2.<br />

Figure 2.1: Electrical schematics<br />

MASTER<br />

2.3 Bus events: START and STOP c<strong>on</strong>diti<strong>on</strong>s<br />

2.4 Acknowledgement<br />

TWD<br />

TWCK<br />

VDD<br />

SLAVE #1 SLAVE #2<br />

Both lines in <strong>the</strong> <str<strong>on</strong>g>TWI</str<strong>on</strong>g> bus are c<strong>on</strong>nected to <strong>the</strong> power source with pull-up resistors. As<br />

a result, both lines <strong>on</strong> <strong>the</strong> bus will go high, if no device is driving <strong>the</strong> bus. The wired-<br />

AND is a result of that <strong>the</strong> devices currently transmitting <strong>on</strong> <strong>the</strong> bus rele<str<strong>on</strong>g>as</str<strong>on</strong>g>es it when<br />

logical 1 is to be transmitted, and <strong>on</strong>ly drives <strong>the</strong> bus when <strong>the</strong>y are to transmit logical<br />

0. Thus, <strong>the</strong> signal <strong>on</strong> <strong>the</strong> bus will be <strong>the</strong> result of an AND operati<strong>on</strong> <strong>on</strong> all bits<br />

currently transmitted, and a device transmitting 0 will dominate over <strong>on</strong>e transmitting<br />

1.<br />

In order to ei<strong>the</strong>r start or stop a transmissi<strong>on</strong>, START and STOP c<strong>on</strong>diti<strong>on</strong>s are<br />

issued. These c<strong>on</strong>diti<strong>on</strong>s are defined <str<strong>on</strong>g>as</str<strong>on</strong>g>:<br />

• START: The data line is driven low while by <strong>the</strong> m<str<strong>on</strong>g>as</str<strong>on</strong>g>ter <strong>the</strong> clock line is high. Then<br />

<strong>the</strong> m<str<strong>on</strong>g>as</str<strong>on</strong>g>ter drives <strong>the</strong> clock line low.<br />

• STOP: The clock line is rele<str<strong>on</strong>g>as</str<strong>on</strong>g>ed (driven high), and <strong>the</strong>n <strong>the</strong> m<str<strong>on</strong>g>as</str<strong>on</strong>g>ter rele<str<strong>on</strong>g>as</str<strong>on</strong>g>es <strong>the</strong><br />

data line.<br />

The start c<strong>on</strong>diti<strong>on</strong> for a <str<strong>on</strong>g>TWI</str<strong>on</strong>g> device may in some c<str<strong>on</strong>g>as</str<strong>on</strong>g>es be defined by <strong>the</strong> m<str<strong>on</strong>g>as</str<strong>on</strong>g>ter<br />

driving <strong>the</strong> data line low. The m<str<strong>on</strong>g>as</str<strong>on</strong>g>ter will <strong>the</strong>n drive <strong>the</strong> clock line low, independent <strong>the</strong><br />

definiti<strong>on</strong> of <strong>the</strong> start c<strong>on</strong>diti<strong>on</strong>. Whatever is <strong>the</strong> c<str<strong>on</strong>g>as</str<strong>on</strong>g>e, <strong>the</strong>se transiti<strong>on</strong>s will generate a<br />

START c<strong>on</strong>diti<strong>on</strong>.<br />

Whenever <strong>the</strong> m<str<strong>on</strong>g>as</str<strong>on</strong>g>ter is transferring data to a slave, every byte sent h<str<strong>on</strong>g>as</str<strong>on</strong>g> to be<br />

acknowledged by <strong>the</strong> slave. This is d<strong>on</strong>e by pulling <strong>the</strong> data line low after each byte<br />

32011A-AVR-04/06


2.5 Transfer format<br />

2.6 Transmitting data<br />

2.6.1 Transmissi<strong>on</strong> initializati<strong>on</strong><br />

32011A-AVR-04/06<br />

<str<strong>on</strong>g><strong>AVR32</strong>107</str<strong>on</strong>g><br />

transmissi<strong>on</strong>. If <strong>the</strong> slave acknowledges <strong>the</strong> data, this is read <str<strong>on</strong>g>as</str<strong>on</strong>g> ACK (acknowledge)<br />

by <strong>the</strong> m<str<strong>on</strong>g>as</str<strong>on</strong>g>ter. But if <strong>the</strong> slave fails to acknowledge, for some re<str<strong>on</strong>g>as</str<strong>on</strong>g><strong>on</strong> or ano<strong>the</strong>r, <strong>the</strong><br />

line is not pulled down and is read <str<strong>on</strong>g>as</str<strong>on</strong>g> NACK (not acknowledged) from <strong>the</strong> m<str<strong>on</strong>g>as</str<strong>on</strong>g>ter's<br />

point of view.<br />

Data is transferred MSB first, and each character is 8 bit l<strong>on</strong>g. There is no parity<br />

check, but every character must be followed by an acknowledgement. The data line<br />

(TWD) must remain stable while <strong>the</strong> clock line (TWCK) is high to ensure data<br />

c<strong>on</strong>sistency. The excepti<strong>on</strong>s from this are <strong>the</strong> START c<strong>on</strong>diti<strong>on</strong> and STOP c<strong>on</strong>diti<strong>on</strong>.<br />

Every transmissi<strong>on</strong> is initiated by a START c<strong>on</strong>diti<strong>on</strong>. When <strong>the</strong> m<str<strong>on</strong>g>as</str<strong>on</strong>g>ter wants to end<br />

<strong>the</strong> transmissi<strong>on</strong>, a STOP c<strong>on</strong>diti<strong>on</strong> is transmitted. Repeated START c<strong>on</strong>diti<strong>on</strong>s can<br />

be used if <strong>the</strong> m<str<strong>on</strong>g>as</str<strong>on</strong>g>ter wishes to address o<strong>the</strong>r devices without risking losing <strong>the</strong> bus<br />

to ano<strong>the</strong>r m<str<strong>on</strong>g>as</str<strong>on</strong>g>ter.<br />

As <str<strong>on</strong>g>TWI</str<strong>on</strong>g> is half duplex, data can be written from <strong>the</strong> m<str<strong>on</strong>g>as</str<strong>on</strong>g>ter to <strong>the</strong> slave or vice versa.<br />

These two operati<strong>on</strong>s have a lot in comm<strong>on</strong>, but <strong>the</strong>re are also some differences.<br />

These two operati<strong>on</strong>s are described in this chapter.<br />

To initiate a <str<strong>on</strong>g>TWI</str<strong>on</strong>g> transfer, a m<str<strong>on</strong>g>as</str<strong>on</strong>g>ter must initiate a START c<strong>on</strong>diti<strong>on</strong>. After <strong>the</strong> m<str<strong>on</strong>g>as</str<strong>on</strong>g>ter<br />

initiates a START c<strong>on</strong>diti<strong>on</strong>, it sends a 7-bit slave address. The 8 th bit indicates <strong>the</strong><br />

transfer directi<strong>on</strong> (write or read). Read is logical 1, while write is 0. After <strong>the</strong> first byte,<br />

<strong>the</strong> m<str<strong>on</strong>g>as</str<strong>on</strong>g>ter will rele<str<strong>on</strong>g>as</str<strong>on</strong>g>e <strong>the</strong> data line, allowing a slave to drive it low. If a device <strong>on</strong> <strong>the</strong><br />

bus recognizes its own address, it will pull down <strong>the</strong> bus <strong>on</strong> <strong>the</strong> following cycle, giving<br />

<strong>the</strong> m<str<strong>on</strong>g>as</str<strong>on</strong>g>ter an ACK. In Figure 2.1 a m<str<strong>on</strong>g>as</str<strong>on</strong>g>ter tries to access a device with address (id)<br />

0x73 with a read operati<strong>on</strong> and <strong>the</strong> slave acknowledges <strong>the</strong> request.<br />

The Figure 2.1 shows how data is read <strong>on</strong> <strong>the</strong> <str<strong>on</strong>g>TWI</str<strong>on</strong>g> bus. When <strong>the</strong> clock is high, <strong>the</strong><br />

data line must be stable and no transiti<strong>on</strong>s may be made. If such transiti<strong>on</strong>s do<br />

happen, unspecified behavior may occur.<br />

Figure 2.1: Transfer initializati<strong>on</strong><br />

1 1 1<br />

1 1 1<br />

TWD<br />

0 0<br />

0<br />

TWCK<br />

START<br />

CONDITION<br />

THE <str<strong>on</strong>g>TWI</str<strong>on</strong>g> MASTER INITIATES THE<br />

TRANSMISSION BY SENDING THE ADDRESS<br />

(0x73) FOLLOWED BY A READ COMMAND<br />

When a slave h<str<strong>on</strong>g>as</str<strong>on</strong>g> been accessed, data is transmitted according to <strong>the</strong> read/write<br />

instructi<strong>on</strong> in <strong>the</strong> initializati<strong>on</strong> ph<str<strong>on</strong>g>as</str<strong>on</strong>g>e.<br />

ACK<br />

3


2.6.2 Read request<br />

2.6.3 Write request<br />

4 <str<strong>on</strong>g><strong>AVR32</strong>107</str<strong>on</strong>g><br />

Before reading data from <strong>the</strong> slave device, a command may be given. This command<br />

can ei<strong>the</strong>r be 0, 1, 2 or 3 bytes l<strong>on</strong>g. Each sequential command is followed by an<br />

acknowledgement by <strong>the</strong> slave in <strong>the</strong> same manner <str<strong>on</strong>g>as</str<strong>on</strong>g> in <strong>the</strong> initializati<strong>on</strong> of <strong>the</strong><br />

transfer. This command is device specific and may sometimes be referred to <str<strong>on</strong>g>as</str<strong>on</strong>g> an<br />

address for some devices.<br />

After <strong>the</strong> command sequence of a transmissi<strong>on</strong>, <strong>the</strong> slave device is resp<strong>on</strong>sible for<br />

<strong>the</strong> data line and drives it. The m<str<strong>on</strong>g>as</str<strong>on</strong>g>ter is still resp<strong>on</strong>sible for driving <strong>the</strong> clock line. As<br />

<strong>the</strong> m<str<strong>on</strong>g>as</str<strong>on</strong>g>ter is resp<strong>on</strong>sible for driving <strong>the</strong> clock line, no acknowledge bit is p<str<strong>on</strong>g>as</str<strong>on</strong>g>sed after<br />

a byte transfer. The most significant bit is always transmitted first. The slave will not<br />

change <strong>the</strong> data line while <strong>the</strong> clock is high. This is extremely important, <str<strong>on</strong>g>as</str<strong>on</strong>g> this may<br />

generate a START or STOP c<strong>on</strong>diti<strong>on</strong>.<br />

Figure 2.2: Command sequence<br />

1<br />

1<br />

1 1 1<br />

TWD<br />

TWCK<br />

0<br />

0 0<br />

MASTER SENDS<br />

COMMAND 0xA7<br />

A complete read sequence is found in Figure 2.2. The m<str<strong>on</strong>g>as</str<strong>on</strong>g>ter tries to c<strong>on</strong>tact a node<br />

with address 0x53 with a read instructi<strong>on</strong>. The slave resp<strong>on</strong>ds by acknowledging this.<br />

Then <strong>the</strong> slave puts out 0x2A <str<strong>on</strong>g>as</str<strong>on</strong>g> an answer to that request. In turn, <strong>the</strong> m<str<strong>on</strong>g>as</str<strong>on</strong>g>ter<br />

acknowledges this and sends out a STOP c<strong>on</strong>diti<strong>on</strong>, finalizing <strong>the</strong> transfer.<br />

Figure 2.2: A complete read sequence (without command sequence)<br />

TWD<br />

TWCK<br />

MSB<br />

LSB<br />

ACK<br />

MSB<br />

START STOP<br />

The m<str<strong>on</strong>g>as</str<strong>on</strong>g>ter issues a read request<br />

to device 0x53<br />

From<br />

slave<br />

The slave res<strong>on</strong>ds with 0x2A<br />

0<br />

ACK<br />

LSB<br />

ACK<br />

From<br />

m<str<strong>on</strong>g>as</str<strong>on</strong>g>ter<br />

If a write request is made to a slave during initializati<strong>on</strong>, <strong>the</strong> m<str<strong>on</strong>g>as</str<strong>on</strong>g>ter is resp<strong>on</strong>sible for<br />

driving <strong>the</strong> data line and feeding <strong>the</strong> slave with bytes. After each transmissi<strong>on</strong> of a<br />

byte, <strong>the</strong> slave must acknowledge <strong>the</strong> byte sent. This is d<strong>on</strong>e in <strong>the</strong> same matter <str<strong>on</strong>g>as</str<strong>on</strong>g><br />

acknowledging a transfer request, described in chapter 2.4.1.<br />

The transmissi<strong>on</strong> ends when <strong>the</strong> transmitter stops sending, or if <strong>the</strong> transmitter does<br />

not receive an ACK for <strong>the</strong> transmitted character. The m<str<strong>on</strong>g>as</str<strong>on</strong>g>ter will <strong>the</strong>n set a STOP<br />

c<strong>on</strong>diti<strong>on</strong> <strong>on</strong> <strong>the</strong> bus, rele<str<strong>on</strong>g>as</str<strong>on</strong>g>ing it, or initiate a new sessi<strong>on</strong> by sending ano<strong>the</strong>r START<br />

c<strong>on</strong>diti<strong>on</strong>.<br />

32011A-AVR-04/06


32011A-AVR-04/06<br />

Figure 2.3: A write operati<strong>on</strong><br />

TWD<br />

TWCK<br />

2.7 More than <strong>on</strong>e m<str<strong>on</strong>g>as</str<strong>on</strong>g>ter - arbitrati<strong>on</strong><br />

2.8 Usage<br />

3 Package informati<strong>on</strong><br />

MSB<br />

LSB<br />

ACK<br />

MSB<br />

<str<strong>on</strong>g><strong>AVR32</strong>107</str<strong>on</strong>g><br />

START STOP<br />

The m<str<strong>on</strong>g>as</str<strong>on</strong>g>ter issues a write request<br />

to device 0x4B<br />

From<br />

slave<br />

The m<str<strong>on</strong>g>as</str<strong>on</strong>g>ter writes 0x22 to <strong>the</strong> slave<br />

Only <strong>on</strong>e m<str<strong>on</strong>g>as</str<strong>on</strong>g>ter can be in c<strong>on</strong>trol of <strong>the</strong> communicati<strong>on</strong> <strong>on</strong> <strong>the</strong> bus at any time. No<br />

o<strong>the</strong>r device will interfere with an <strong>on</strong>going transmissi<strong>on</strong>. If <strong>the</strong> bus is in use and<br />

ano<strong>the</strong>r m<str<strong>on</strong>g>as</str<strong>on</strong>g>ter starts driving <strong>the</strong> bus lines, hazardous behavior may occur. The<br />

m<str<strong>on</strong>g>as</str<strong>on</strong>g>ter currently in c<strong>on</strong>trol is providing <strong>the</strong> clock signal <strong>on</strong> <strong>the</strong> bus.<br />

However, if two m<str<strong>on</strong>g>as</str<strong>on</strong>g>ters initiate a START c<strong>on</strong>diti<strong>on</strong> simultaneously, <strong>the</strong>y will both start<br />

transmitting clock and data signal. To avoid corrupti<strong>on</strong> of data, <strong>on</strong>e of <strong>the</strong>m h<str<strong>on</strong>g>as</str<strong>on</strong>g> to<br />

switch to idle or slave mode. This problem is solved through arbitrati<strong>on</strong>; both (or all)<br />

m<str<strong>on</strong>g>as</str<strong>on</strong>g>ters start transmitting, but <strong>the</strong> moment <strong>on</strong>e of <strong>the</strong>m discovers that <strong>the</strong> TWD line is<br />

driven by some o<strong>the</strong>r m<str<strong>on</strong>g>as</str<strong>on</strong>g>ter, it will stop transmitting, and go to idle or slave mode.<br />

The mode is dependent of <strong>the</strong> features supported by <strong>the</strong> <str<strong>on</strong>g>TWI</str<strong>on</strong>g> m<str<strong>on</strong>g>as</str<strong>on</strong>g>ter. A c<strong>on</strong>sequence<br />

of <strong>the</strong> wired-AND logic is that if 1 and 0 is transmitted <strong>on</strong> a bus wire simultaneously,<br />

<strong>the</strong> bus will read 0. Every m<str<strong>on</strong>g>as</str<strong>on</strong>g>ter transmitting data will read <strong>the</strong> value <strong>on</strong> <strong>the</strong> bus to<br />

see if <strong>the</strong>y really are driving <strong>the</strong> bus. As so<strong>on</strong> <str<strong>on</strong>g>as</str<strong>on</strong>g> a device tries to transmit 1, but <strong>the</strong><br />

bus reads 0, it will know that some o<strong>the</strong>r device is transmitting, and switch to slave or<br />

idle mode.<br />

The result is that <strong>the</strong> m<str<strong>on</strong>g>as</str<strong>on</strong>g>ter sending <strong>the</strong> lowest address character will win <strong>the</strong> bus (if<br />

two or more m<str<strong>on</strong>g>as</str<strong>on</strong>g>ters are trying to address <strong>the</strong> same device, <strong>the</strong> arbitrati<strong>on</strong> will<br />

c<strong>on</strong>tinue in <strong>the</strong> directi<strong>on</strong> bit, and possibly <strong>the</strong> data bits). The <strong>AVR32</strong> microc<strong>on</strong>troller is<br />

unable to enter slave mode. Thus, when it loses <strong>the</strong> bus, it will enter idle mode until a<br />

STOP c<strong>on</strong>diti<strong>on</strong> is transmitted <strong>on</strong> <strong>the</strong> bus, signaling that <strong>the</strong> m<str<strong>on</strong>g>as</str<strong>on</strong>g>ter currently in<br />

c<strong>on</strong>trol of <strong>the</strong> bus is d<strong>on</strong>e. When a STOP c<strong>on</strong>diti<strong>on</strong> is detected, and <strong>the</strong> <strong>AVR32</strong> wants<br />

to communicate <strong>on</strong> <strong>the</strong> bus, a START c<strong>on</strong>diti<strong>on</strong> is immediately transmitted.<br />

Before any data can be sent <strong>on</strong> <strong>the</strong> <str<strong>on</strong>g>TWI</str<strong>on</strong>g> bus, it must first be initialized. Then a<br />

specific device can be probed to check whe<strong>the</strong>r it is resp<strong>on</strong>ding or not. It is <strong>the</strong>n also<br />

possible to receive or send data. The functi<strong>on</strong>s for <strong>the</strong>se operati<strong>on</strong>s are described in<br />

chapter 2.6.1.<br />

Baudrate(s) for your <str<strong>on</strong>g>TWI</str<strong>on</strong>g> slave is described in <strong>the</strong> appropriate dat<str<strong>on</strong>g>as</str<strong>on</strong>g>heet for your<br />

device. It is important to select <strong>the</strong> correct baudrate, <str<strong>on</strong>g>as</str<strong>on</strong>g> it is <strong>the</strong> m<str<strong>on</strong>g>as</str<strong>on</strong>g>ter's resp<strong>on</strong>sibility<br />

to drive <strong>the</strong> clock line.<br />

Included with <strong>the</strong> applicati<strong>on</strong> note is a driver package. This package c<strong>on</strong>tains drivers,<br />

example code and documentati<strong>on</strong>.<br />

LSB<br />

ACK<br />

From<br />

slave<br />

5


3.1 Drivers<br />

3.2 Examples<br />

3.3 Documentati<strong>on</strong><br />

4 Fur<strong>the</strong>r reading<br />

6 <str<strong>on</strong>g><strong>AVR32</strong>107</str<strong>on</strong>g><br />

Drivers are available in <strong>the</strong> package. These drivers are written to be independent of a<br />

specific compiler and are successfully tested <strong>on</strong> gcc and IAR Embedded Workbench.<br />

Examples are available from <strong>the</strong> corresp<strong>on</strong>ding driver package. All functi<strong>on</strong>ality is<br />

divided into libraries and an example that utilizes <strong>the</strong> library.<br />

Functi<strong>on</strong> specific documentati<strong>on</strong> is available in <strong>the</strong> package. Refer to readme.html in<br />

<strong>the</strong> source code directory.<br />

The <strong>AVR32</strong> <str<strong>on</strong>g>TWI</str<strong>on</strong>g> also h<str<strong>on</strong>g>as</str<strong>on</strong>g> support for Direct Memory Access (DMA) and interruptdriven<br />

communicati<strong>on</strong>. These two c<strong>on</strong>cepts are described in two o<strong>the</strong>r Applicati<strong>on</strong><br />

notes, namely <strong>AVR32</strong>108 title and <strong>AVR32</strong>109 title respectively.<br />

32011A-AVR-04/06


Disclaimer<br />

<strong>Atmel</strong> Corporati<strong>on</strong><br />

2325 Orchard Parkway<br />

San Jose, CA 95131, USA<br />

Tel: 1(408) 441-0311<br />

Fax: 1(408) 487-2600<br />

Regi<strong>on</strong>al Headquarters<br />

Europe<br />

<strong>Atmel</strong> Sarl<br />

Route des Arsenaux 41<br />

C<str<strong>on</strong>g>as</str<strong>on</strong>g>e Postale 80<br />

CH-1705 Fribourg<br />

Switzerland<br />

Tel: (41) 26-426-5555<br />

Fax: (41) 26-426-5500<br />

Asia<br />

Room 1219<br />

Chinachem Golden Plaza<br />

77 Mody Road Tsimshatsui<br />

E<str<strong>on</strong>g>as</str<strong>on</strong>g>t Kowlo<strong>on</strong><br />

H<strong>on</strong>g K<strong>on</strong>g<br />

Tel: (852) 2721-9778<br />

Fax: (852) 2722-1369<br />

Japan<br />

9F, T<strong>on</strong>etsu Shinkawa Bldg.<br />

1-24-8 Shinkawa<br />

Chuo-ku, Tokyo 104-0033<br />

Japan<br />

Tel: (81) 3-3523-3551<br />

Fax: (81) 3-3523-7581<br />

<strong>Atmel</strong> Operati<strong>on</strong>s<br />

Memory<br />

2325 Orchard Parkway<br />

San Jose, CA 95131, USA<br />

Tel: 1(408) 441-0311<br />

Fax: 1(408) 436-4314<br />

Microc<strong>on</strong>trollers<br />

2325 Orchard Parkway<br />

San Jose, CA 95131, USA<br />

Tel: 1(408) 441-0311<br />

Fax: 1(408) 436-4314<br />

La Chantrerie<br />

BP 70602<br />

44306 Nantes Cedex 3, France<br />

Tel: (33) 2-40-18-18-18<br />

Fax: (33) 2-40-18-19-60<br />

ASIC/ASSP/Smart Cards<br />

Z<strong>on</strong>e Industrielle<br />

13106 Rousset Cedex, France<br />

Tel: (33) 4-42-53-60-00<br />

Fax: (33) 4-42-53-60-01<br />

1150 E<str<strong>on</strong>g>as</str<strong>on</strong>g>t Cheyenne Mtn. Blvd.<br />

Colorado Springs, CO 80906, USA<br />

Tel: 1(719) 576-3300<br />

Fax: 1(719) 540-1759<br />

Scottish Enterprise Technology Park<br />

Maxwell Building<br />

E<str<strong>on</strong>g>as</str<strong>on</strong>g>t Kilbride G75 0QR, Scotland<br />

Tel: (44) 1355-803-000<br />

Fax: (44) 1355-242-743<br />

RF/Automotive<br />

Theresienstr<str<strong>on</strong>g>as</str<strong>on</strong>g>se 2<br />

Postfach 3535<br />

74025 Heilbr<strong>on</strong>n, Germany<br />

Tel: (49) 71-31-67-0<br />

Fax: (49) 71-31-67-2340<br />

1150 E<str<strong>on</strong>g>as</str<strong>on</strong>g>t Cheyenne Mtn. Blvd.<br />

Colorado Springs, CO 80906, USA<br />

Tel: 1(719) 576-3300<br />

Fax: 1(719) 540-1759<br />

Biometrics/Imaging/Hi-Rel MPU/<br />

High Speed C<strong>on</strong>verters/RF Datacom<br />

Avenue de Rochepleine<br />

BP 123<br />

38521 Saint-Egreve Cedex, France<br />

Tel: (33) 4-76-58-30-00<br />

Fax: (33) 4-76-58-34-80<br />

Literature Requests<br />

www.atmel.com/literature<br />

Disclaimer: The informati<strong>on</strong> in this document is provided in c<strong>on</strong>necti<strong>on</strong> with <strong>Atmel</strong> products. No license, express or implied, by estoppel or o<strong>the</strong>rwise, to any<br />

intellectual property right is granted by this document or in c<strong>on</strong>necti<strong>on</strong> with <strong>the</strong> sale of <strong>Atmel</strong> products. EXCEPT AS SET FORTH IN ATMEL’S TERMS AND<br />

CONDITIONS OF SALE LOCATED ON ATMEL’S WEB SITE, ATMEL ASSUMES NO LIABILITY WHATSOEVER AND DISCLAIMS ANY EXPRESS, IMPLIED<br />

OR STATUTORY WARRANTY RELATING TO ITS PRODUCTS INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTY OF MERCHANTABILITY,<br />

FITNESS FOR A PARTICULAR PURPOSE, OR NON-INFRINGEMENT. IN NO EVENT SHALL ATMEL BE LIABLE FOR ANY DIRECT, INDIRECT,<br />

CONSEQUENTIAL, PUNITIVE, SPECIAL OR INCIDENTAL DAMAGES (INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOSS OF PROFITS, BUSINESS<br />

INTERRUPTION, OR LOSS OF INFORMATION) ARISING OUT OF THE USE OR INABILITY TO USE THIS DOCUMENT, EVEN IF ATMEL HAS BEEN<br />

ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. <strong>Atmel</strong> makes no representati<strong>on</strong>s or warranties with respect to <strong>the</strong> accuracy or completeness of <strong>the</strong><br />

c<strong>on</strong>tents of this document and reserves <strong>the</strong> right to make changes to specificati<strong>on</strong>s and product descripti<strong>on</strong>s at any time without notice. <strong>Atmel</strong> does not make any<br />

commitment to update <strong>the</strong> informati<strong>on</strong> c<strong>on</strong>tained herein. Unless specifically provided o<strong>the</strong>rwise, <strong>Atmel</strong> products are not suitable for, and shall not be used in,<br />

automotive applicati<strong>on</strong>s. <strong>Atmel</strong>’s products are not intended, authorized, or warranted for use <str<strong>on</strong>g>as</str<strong>on</strong>g> comp<strong>on</strong>ents in applicati<strong>on</strong>s intended to support or sustain life.<br />

© <strong>Atmel</strong> Corporati<strong>on</strong> 2006. All rights reserved. <strong>Atmel</strong>®, logo and combinati<strong>on</strong>s <strong>the</strong>reof, Everywhere You Are®, AVR®, and AVR Studio® are<br />

<strong>the</strong> registered trademarks or trademarks of <strong>Atmel</strong> Corporati<strong>on</strong> or its subsidiaries. O<strong>the</strong>r terms and product names may be trademarks of o<strong>the</strong>rs.<br />

32011A-AVR-04/06

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!