APPLICATION NOTE. Atmel AT01095: Joystick Game Controller Reference Design. 8-/16-bit Atmel Microcontrollers. Features.



Similar documents
How To Use An Atmel Atmel Avr32848 Demo For Android (32Bit) With A Microcontroller (32B) And An Android Accessory (32D) On A Microcontroller (32Gb) On An Android Phone Or

APPLICATION NOTE. Atmel AVR134: Real Time Clock (RTC) Using the Asynchronous Timer. Atmel AVR 8-bit Microcontroller. Introduction.

APPLICATION NOTE. Atmel AT04389: Connecting SAMD20E to the AT86RF233 Transceiver. Atmel SAMD20. Description. Features

Atmel AVR4903: ASF - USB Device HID Mouse Application. Atmel Microcontrollers. Application Note. Features. 1 Introduction

APPLICATION NOTE Atmel AT02509: In House Unit with Bluetooth Low Energy Module Hardware User Guide 8-bit Atmel Microcontroller Features Description

Application Note. Atmel ATSHA204 Authentication Modes. Prerequisites. Overview. Introduction

Atmel AVR4921: ASF - USB Device Stack Differences between ASF V1 and V2. 8-bit Atmel Microcontrollers. Application Note. Features.

32-bit AVR UC3 Microcontrollers. 32-bit AtmelAVR Application Note. AVR32769: How to Compile the standalone AVR32 Software Framework in AVR32 Studio V2

Atmel AVR ATxmega384C3 microcontroller OLED display with pixels resolution Analog sensors. Ambient light sensor Temperature sensor

APPLICATION NOTE. Atmel AVR443: Sensor-based Control of Three Phase Brushless DC Motor. Atmel AVR 8-bit Microcontrollers. Features.

APPLICATION NOTE. Atmel LF-RFID Kits Overview. Atmel LF-RFID Kit. LF-RFID Kit Introduction

AVR1922: Xplain Board Controller Firmware. 8-bit Microcontrollers. Application Note. Features. 1 Introduction

APPLICATION NOTE. Atmel AT02985: User s Guide for USB-CAN Demo on SAM4E-EK. Atmel AVR 32-bit Microcontroller. Features. Description.

Atmel AT32UC3A3256 microcontroller 64MBit SDRAM Analog input (to ADC) Temperature sensor RC filter

Two mechanical buttons Two user LEDs Four expansion headers. Board controller with USB interface. One power LED and one status LED

AVR1900: Getting started with ATxmega128A1 on STK bit Microcontrollers. Application Note. 1 Introduction

AVR32138: How to optimize the ADC usage on AT32UC3A0/1, AT32UC3A3 and AT32UC3B0/1 series. 32-bit Microcontrollers. Application Note.

APPLICATION NOTE. Atmel AVR600: STK600 Expansion, Routing and Socket Boards. Atmel Microcontrollers. Introduction

AVR125: ADC of tinyavr in Single Ended Mode. 8-bit Microcontrollers. Application Note. Features. 1 Introduction

Application Note. 8-bit Microcontrollers. AVR270: USB Mouse Demonstration

AT91SAM ARM-based Flash MCU. Application Note

Atmel AVR1017: XMEGA - USB Hardware Design Recommendations. 8-bit Atmel Microcontrollers. Application Note. Features.

How To Design An Ism Band Antenna For 915Mhz/2.4Ghz Ism Bands On A Pbbb (Bcm) Board

Atmel AVR4920: ASF - USB Device Stack - Compliance and Performance Figures. Atmel Microcontrollers. Application Note. Features.

USER GUIDE. ZigBit USB Stick User Guide. Introduction

USER GUIDE EDBG. Description

SMARTCARD XPRO. Preface. SMART ARM-based Microcontrollers USER GUIDE

AVR115: Data Logging with Atmel File System on ATmega32U4. Microcontrollers. Application Note. 1 Introduction. Atmel

Application Note. Atmel CryptoAuthentication Product Uses. Atmel ATSHA204. Abstract. Overview

Introducing a platform to facilitate reliable and highly productive embedded developments

AVR287: USB Host HID and Mass Storage Demonstration. 8-bit Microcontrollers. Application Note. Features. 1 Introduction

AVR1301: Using the XMEGA DAC. 8-bit Microcontrollers. Application Note. Features. 1 Introduction

8-bit. Application Note. Microcontrollers. AVR282: USB Firmware Upgrade for AT90USB

Software Prerequisites Linux Ubuntu LTS. Estimated completion time: 15min. The goal of this hands-on is to:

AVR1309: Using the XMEGA SPI. 8-bit Microcontrollers. Application Note. Features. 1 Introduction SCK MOSI MISO SS

AT88CK490 Evaluation Kit

APPLICATION NOTE. AT07175: SAM-BA Bootloader for SAM D21. Atmel SAM D21. Introduction. Features

AVR1510: Xplain training - XMEGA USART. 8-bit Microcontrollers. Application Note. Prerequisites. 1 Introduction

AVR151: Setup and Use of the SPI. Introduction. Features. Atmel AVR 8-bit Microcontroller APPLICATION NOTE

QT1 Xplained Pro. Preface. Atmel QTouch USER GUIDE

CryptoAuth Xplained Pro

AVR1321: Using the Atmel AVR XMEGA 32-bit Real Time Counter and Battery Backup System. 8-bit Microcontrollers. Application Note.

AVR32701: AVR32AP7 USB Performance. 32-bit Microcontrollers. Application Note. Features. 1 Introduction

AVR32788: AVR 32 How to use the SSC in I2S mode. 32-bit Microcontrollers. Application Note. Features. 1 Introduction

General Porting Considerations. Memory EEPROM XRAM

APPLICATION NOTE. Atmel AVR2033: SAM-ICE Adapter Hardware User Manual. 8-bit Atmel Microcontrollers. Features. Introduction

8051 Flash Microcontroller. Application Note. A Digital Thermometer Using the Atmel AT89LP2052 Microcontroller

AVR033: Getting Started with the CodeVisionAVR C Compiler. 8-bit Microcontrollers. Application Note. Features. 1 Introduction

AVR1600: Using the XMEGA Quadrature Decoder. 8-bit Microcontrollers. Application Note. Features. 1 Introduction. Sensors

Application Note. 8-bit Microcontrollers. AVR272: USB CDC Demonstration UART to USB Bridge

Using CryptoMemory in Full I 2 C Compliant Mode. Using CryptoMemory in Full I 2 C Compliant Mode AT88SC0104CA AT88SC0204CA AT88SC0404CA AT88SC0808CA

APPLICATION NOTE. Secure Personalization with Transport Key Authentication. ATSHA204A, ATECC108A, and ATECC508A. Introduction.

AVR353: Voltage Reference Calibration and Voltage ADC Usage. 8-bit Microcontrollers. Application Note. Features. 1 Introduction

AVR319: Using the USI module for SPI communication. 8-bit Microcontrollers. Application Note. Features. Introduction

Application Note. 1. Introduction. 2. Associated Documentation. 3. Gigabit Ethernet Implementation on SAMA5D3 Series. AT91SAM ARM-based Embedded MPU

APPLICATION NOTE. AT03155: Real-Time-Clock Calibration and Compensation. SAM3 / SAM4 Series. Scope

AVR317: Using the Master SPI Mode of the USART module. 8-bit Microcontrollers. Application Note. Features. Introduction

Atmel AVR4027: Tips and Tricks to Optimize Your C Code for 8-bit AVR Microcontrollers. 8-bit Atmel Microcontrollers. Application Note.

AVR1318: Using the XMEGA built-in AES accelerator. 8-bit Microcontrollers. Application Note. Features. 1 Introduction

AVR131: Using the AVR s High-speed PWM. Introduction. Features. AVR 8-bit Microcontrollers APPLICATION NOTE

APPLICATION NOTE. Atmel AT01180: Barcode and QR code scanner User Guide. Atmel 32-bit Microcontroller. Features. Introduction

AT15007: Differences between ATmega328/P and ATmega328PB. Introduction. Features. Atmel AVR 8-bit Microcontrollers APPLICATION NOTE

AVR127: Understanding ADC Parameters. Introduction. Features. Atmel 8-bit and 32-bit Microcontrollers APPLICATION NOTE

AVR1324: XMEGA ADC Selection Guide. 8-bit Atmel Microcontrollers. Application Note. Features. 1 Introduction

3-output Laser Driver for HD-DVD/ Blu-ray/DVD/ CD-ROM ATR0885. Preliminary. Summary. Features. Applications. 1. Description

Application Note. 8-bit Microcontrollers. AVR293: USB Composite Device

Atmel AVR4905: ASF - USB Device HID Generic. 8-/32-bit Atmel Microcontrollers. Application Note. Features. 1 Introduction

AVR030: Getting Started with IAR Embedded Workbench for Atmel AVR. 8-bit Microcontrollers. Application Note. Features.

AVR305: Half Duplex Compact Software UART. 8-bit Microcontrollers. Application Note. Features. 1 Introduction

Section 1 Introduction to the AT91SAMD20 and the Development Environment

AN3265 Application note

APPLICATION NOTE. AT16268: JD Smart Cloud Based Smart Plug Getting. Started Guide ATSAMW25. Introduction. Features

AN2680 Application note

AVR2006: Design and characterization of the Radio Controller Board's 2.4GHz PCB Antenna. Application Note. Features.

AN3252 Application note

APPLICATION NOTE. Atmel AVR911: AVR Open Source Programmer. 8-bit Atmel Microcontrollers. Features. Introduction

1Mb (64K x 16) One-time Programmable Read-only Memory

8-bit RISC Microcontroller. Application Note. AVR182: Zero Cross Detector

AVR245: Code Lock with 4x4 Keypad and I2C LCD. 8-bit Microcontrollers. Application Note. Features. 1 Introduction

Application Note. C51 Bootloaders. C51 General Information about Bootloader and In System Programming. Overview. Abreviations

Designing Feature-Rich User Interfaces for Home and Industrial Controllers

AVR311: Using the TWI Module as I2C Slave. Introduction. Features. AVR 8-bit Microcontrollers APPLICATION NOTE

Capacitive Touch Technology Opens the Door to a New Generation of Automotive User Interfaces

AVR126: ADC of megaavr in Single Ended Mode. Introduction. Features. AVR 8-bit Microcontrollers APPLICATION NOTE

8-bit Microcontroller. Application Note. AVR400: Low Cost A/D Converter

Atmel AVR1923: XMEGA-A3BU Xplained Hardware User Guide. 8-bit Atmel Microcontrollers. Application Note. Features. 1 Introduction

AVR315: Using the TWI Module as I2C Master. Introduction. Features. AVR 8-bit Microcontrollers APPLICATION NOTE

Atmel AVR4950: ASF - USB Host Stack. 8-bit Atmel Microcontrollers. Application Note. Features. 1 Introduction

STK User Guide

RC2200DK Demonstration Kit User Manual

AN3332 Application note

AVR106: C Functions for Reading and Writing to Flash Memory. Introduction. Features. AVR 8-bit Microcontrollers APPLICATION NOTE

8-bit Atmel Microcontrollers. Application Note. Atmel AVR211: Wafer Level Chip Scale Packages

AT11805: Capacitive Touch Long Slider Design with PTC. Introduction. Features. Touch Solutions APPLICATION NOTE

HANDLING SUSPEND MODE ON A USB MOUSE

APPLICATION NOTE. AT12405: Low Power Sensor Design with PTC. Atmel MCU Integrated Touch. Introduction

AVR055: Using a 32kHz XTAL for run-time calibration of the internal RC. 8-bit Microcontrollers. Application Note. Features.

APPLICATION NOTE. Authentication Counting. Atmel CryptoAuthentication. Features. Introduction

PC Base Adapter Daughter Card UART GPIO. Figure 1. ToolStick Development Platform Block Diagram

APPLICATION NOTE. Atmel AVR1300: Using the Atmel AVR XMEGA ADC. Atmel 8-bit Microcontrollers PRELIMINARY. Introduction

Transcription:

APPLICATION NOTE Features Atmel AT01095: Joystick Game Controller Reference Design 8-/16-bit Atmel Microcontrollers Joystick Game Controller Atmel ATxmega32A4U microcontroller In System Programming (ISP) and debugging via Program and Debug Interface (PDI) Analog inputs Two analog joysticks w/ two axis movement Digital I/Os Six digital push buttons Introduction This document shows the implementation of a joystick game controller based on the Atmel ATxmega32A4U microcontroller. This design allows users to control the mouse cursor and simulate left/right clicks from a personal computer (PC) or laptop via push buttons on the joystick of a game controller.

Table of Contents 1. Glossary... 3 2. Overview... 3 3. ATxmega Base Board... 3 4. Joystick Board... 4 5. Software Implementation... 5 5.1 Joystick program flowchart... 5 5.2 System initialization... 5 5.3 ADC initialization... 6 5.4 ADC sampling / start conversion... 7 6. User Interface (UI)... 8 6.1 HID Descriptor file... 8 6.2 Mouse operations... 8 6.3 Defines and prototypes... 10 7. Hardware Design... 11 7.1 Atmel ATxmega base board... 11 7.2 Joystick daughter board... 12 7.3 Base board and daughter board setup... 13 8. References... 14 9. Revision History... 15 2

1. Glossary ISP Atmel Studio 6 USB HID In-System Programming Integrated Development Environment (IDE) for Atmel AVR applications Universal Serial Bus Human Interface Device 2. Overview This application requires the user to provide analog signals to the Atmel ATxmega32A4U in which passes the obtained values to coordinates to the HID device which in this case is a standard PC mouse. The hardware design will be split between three separate boards: ATxmega Base Board Assembled with an Atmel ATxmega device which has the USB connector, 3.3V regulator, and appropriate headers pins Joystick Daughter Board This board was meant to mount on top of the ATxmega baseboard. This board has two analog joysticks that are equipped with pushbutton switches. In addition, there are four tactile pushbuttons connected to the standard I/O of the ATMEGA device 3. ATxmega Base Board The base board block diagram is shown in Figure 3-1. The board itself consists of the following components: ATxmega324AU device Handles user input from either joystick, pushbutton, touch pad Micro USB connector Provides supply (5V) to the game controller board. In addition, provides the connection medium between the game controller board and the PC Voltage regulator The ATmega32A4U device operates at a V CC range between 1.6V to 3.6V. This regulator converts the 5V provided by the USB to a 3.3V for the ATmega32A4U device ISP/PDI header ISP programming interface to update the firmware on the device Six 2x5 header These headers pins are for the I/O from the ATxmega device to communicate with the other daughter boards. In addition, these provide an anchor when both boards are connected to one another Figure 3-1. ATxmega base board, block diagram. USB Voltage Regulator: Output (3.3V) ATmega32A4U Touch Data PDI / ISP GPIO Pin Header 3

4. Joystick Board The joystick daughter board block diagram is shown on Figure 4-1 and consists of the following components: Two analog joysticks Directional movements are simply two potentiometers (10kΩ) one for each axis Joystick has a select button that is actuated when the joystick is pressed down Four tactile pushbuttons These pushbuttons are directly connected to the headers of the board which are connected to ports E and D of the Atmel ATxmega device Figure 4-1. Joystick board, block diagram. LEFT JOYSTICK Push Button RIGHT JOYSTICK GPIO Pin Header 4

5. Software Implementation 5.1 Joystick program flowchart Figure 5-1. Joystick program flowchart. System Initialization ADC / GPIO Initialization Start ADC Conversion Detect GPIO Pushbutton Convert ADC value X-Y Position Pushbutton Click 5.2 System initialization The Atmel ATxmega32A4U has a large number of clock sources to choose from. For the fastest ADC conversion time while saving space on our reference board, the code will initialize and calibrate the onboard 32Mhz internal RC oscillator. The internal oscillators do not require any external components to run. For more details concerning the characteristics and accuracy of the internal oscillators, refer to the devices datasheet. The GPIO ports of the ATxmega32A4U need to be configured properly in order to handle the incoming signals from the joystick and pushbuttons. Each port pin on the microcontroller can be configured as an input or output with a selectable driver and pull settings. For this application, we will have a total of four analog signals and six digital signals from the two joysticks and four tactile pushbuttons. For the tactile push buttons, the ATxmega32A4U I/O pins will be set as inputs with internal pull-up enabled. 5

5.3 ADC initialization This reference design will utilize the on-board ADC of the Atmel ATxmega32A4 to handle the analog signals that are generated by the two joysticks. Each joystick contains two variable resistors (X- and Y-position) that will increase/decrease in value in comparison of the joystick s position. The ADC will be configured in the following mode to ensure that the signals from the joysticks are interpreted correctly. The ADC will be configured as follows: Single Ended mode 12-bit resolution, unsigned results Port A input channels External V REF @ 3.3V Manual conversion triggering In main.c the full ADC initialization can be found in under the adc_hw_init function. Each input channel used must be initialized properly. The code has defined the input port channels as follows: In addition to properly setting up the ADC to receive the analog values, the ATxmega32AU must have a defined threshold of values that can ensure that the joystick movement is correctly represented. In addition, by applying a threshold we can give users a faster cursor movement when the joystick is being fully accelerated in one direction. By applying V CC and GND to the joystick the voltage levels and appropriate converted values can be seen in Figure 5-2. Figure 5-2. Joystick threshold values. Y- Position ADC: 190 Vcc: 0V REST Position ADC X: Vcc: 3.3V X - Position ADC: 190 Vcc: 0V X - Position ADC: 4900 Vcc: 3.3V Y- Position ADC: 4900 Vcc: 3.3V 6

5.4 ADC sampling / start conversion Once the ADC has been properly been configured, joystick movement can be then be detected. The ADC will setup as free-running to provide constant updates to the user with real time position of the mouse cursor. In Figure 5-2, the ADC thresholds are given in each position axis along with the threshold of when the joystick is not being used at all (REST). The ADC will constantly sample the values on the input ports and will provide real time movement updates to the mouse cursor when the joystick is moved in any direction. The push button implementation is pretty straight forward. Each push button is connected to an I/O port to the Atmel ATxmega32A4U. When the push button is activated, the I/O pin will be pulled low signaling an active button press. Two of the buttons that are located on the joystick will simulate the standard left and right click of a mouse. The ADC values and GPIO detection will be passed to UI (User Interface Block) that will handle the standard mouse interface. This block will be discussed in detailed later in the document. 7

6. User Interface (UI) 6.1 HID Descriptor file Once system initialization has been completed, the user can then initiate the game controller and begin cursor simulating cursor movements with the joystick/touchpad. The following source files will be discussed in detail concerning the implementation of the HID (Human Interface Device) class: udi_hid_mouse.c udi_hid_mouse_desc.c ui.c When a HID device is connected to the PC, the device (mouse) sends data is predefined blocks or reports at regular intervals back to the computer. These reports contain critical information about which buttons are pressed or how far the joysticks have moved. However, in order for the host (PC) to understand the data format, the device (Atmel ATxmega) must describe the reports to the host which we will call a Descriptor File. In the udi_hid_mouse.c the descriptor file is created and initialized in Figure 6-1. Figure 6-1. Descriptor files implementation. This standard descriptor file is sent recurringly as long as the device is connected to the PC. This is the framework of data that the mouse will send that will correspond to its movements, buttons, and acceleration. 6.2 Mouse operations A standard mouse has three main outputs: position, left mouse button, right mouse button. The file ui.c will describe how these outputs are defined and implemented. For the position of the cursor, standard Cartesian coordinates will be used. The file ui.c contains the function used to correctly represent the ADC value to the cursor position. Figure 6-2 shows the full function declaration. 8

Figure 6-2. Cursor position definition. The function takes two inputs and returns true when the new position has been sent. The first input, pos, would be the actual position which has been obtained through the ADC sampling. The second input, index_report would be to determine which axis movement will be updated. A value of 1 would refer to movement along the X-axis while a value of 2 refers movement along the Y-axis. Once the position and axis has been set, the updated coordinates will be sent in the descriptor format and to the host (PC). As previously mentioned, there the device has set thresholds that will detect when a full move is being issued or if a fine move is wanted. After seeing what ADC values have been related to the joystick position, ui.c will constantly be checking whether a full move is being generated. The following Figure 6-3 shows the threshold check and corresponding movement of the left analog joystick (PA4). Figure 6-3. Threshold check. In ui.c, we have certain define thresholds that must be taken in account. Initially, when the joystick is not being moved/pushed, the ADC is still providing a corresponding value to this center position. The value of joystick_lower_value is a set middle range of the center position. Any values between the joystick_lower_value and joystick_higher_value will not affect movement of the cursor. When a value which is lower than the lower middle value, a position changed is wanted by the user. The threshold value of joystick_min_move determines if the user would like a full move which will call the hid movement function with the position of the newly obtained value. However, if the lower threshold is not satisfied, the fine move is being requested and a different position is calculated before passing it hid movement function. This implementation is for all axis movement is quite similar. The only values that need to be taken account would be the threshold values and how they relate to which axis (X or Y). Similarly, the buttons implementation operates in comparable fashion. Standard mouses come equipped with both a left and right button click functions. In ui.c the button function is defined in Figure 6-4. 9

Figure 6-4. Mouse button implementation. For this function, there are two inputs: b_state and btn. The first input will check whether the mouse button is actually being pressed. The second input, will determine which button is being enabled (0x01 = Left Button, 0x02 = Right Button). For this project we have assigned PE3 and PE4 as the left and right buttons, respectively. However, this can be reassigned to whichever GPIO the user may like. Today, computer mouses have a few more buttons/features that can be used differently in an application. Functions such as scrolling can implemented with this descriptor file already in place. The function for a mouse scroll feature can be found in the source file udi_hid_mouse.c. Similarly, the scroll function does call the same mouse move described in Figure 6-3. 6.3 Defines and prototypes Table 6-1 shows the critical function prototypes that are used with the game controller application. Table 6-2 shows the threshold values. Note: The following threshold will depend on each system and should be adjusted accordingly. Table 6-1. Function definitions. Prototypes udi_hid_mouse_move(int8_t pos, uint8_t index_report) udi_hid_mouse_btn(bool b_state, uint8_t btn) sysclk_init(void) adc_hw_init(int ch,int pin) board_init(void) Use Cursor position update Mouse button detection CLK initialization ADC initialization GPIO initialization Table 6-2. Threshold values. Parameter definitions Use #define JOYSTICK_MIDDLE_VALUE 2900 Threshold for REST Position #define JOYSTICK_LOWER_VALUE 2450 Threshold for REST Position #define JOYSTICK_MAX_MOVE 4000 Threshold for Full Move #define JOYSTICK_MIN_MOVE 290 Threshold for Full Move 10

7. Hardware Design 7.1 Atmel ATxmega base board Figure 7-1 shows the ATxmega base board. Figure 7-1. ATxmega base board. Micro USB (U2 / RED) This is the connection medium between the host (PC) and the Atmel ATxmega32A4 device. In addition, this provides the V CC supply voltage to the base board at 5V Voltage Regulator (U3 / YELLOW) This regulator is needed to step down voltage provided by the USB connector for the ATxmega since the operating voltage of the device is 1.8V to 3.3V. The input voltage of 5.0V will produce the desired 3.3V from the output of the regulator Power LED (D1 / GREEN) Power LED to ensure V CC to the board is properly provided PDI / ISP (U4 / PURPLE) Programming header for the ATxmega32A to update the firmware of the device. A programming tool, such as an Atmel JTAGICE3 can be used to program the IC while in-system I/O Headers (J1 J6 / ORANGE) These board headers serve two purposes: the first one be to anchor daughters board to the baseboard to add stability when they are conjoined, the second being to properly route the mix signal outputs from the joystick to the ATxmega32A4 11

7.2 Joystick daughter board Figure 7-2 shows the joystick daughter board. Figure 7-2. Joystick daughter board. Analog Joystick (Joy_Left and Joy_Right / RED) Two axis joysticks with push button switches Push Buttons (SW0 SW3 / YELLOW) Tactile push buttons switches I/O Header (J1 J6 / GREEN) Similar to the base board. These headers provide the routing of mix signals to the base board and device (ATxmega32A4) and provide stability when boards are connected to one another 12

7.3 Base board and daughter board setup Figure 7-3. Base board and daughter board. In Figure 7-3, the base board and daughter board are shown as a single unit. 13

8. References [1]. ATMEL Studio 6: http://www.atmel.com/microsite/atmel_studio6/default.aspx [2]. USB HID Report Descriptor Tutorial: http://www.frank-zhao.com/cache/hid_tutorial_1.php 14

9. Revision History Doc. Rev. Date Comments 42059A 01/2013 Initial document release 15

Atmel Corporation 1600 Technology Drive San Jose, CA 95110 USA Tel: (+1)(408) 441-0311 Fax: (+1)(408) 487-2600 www.atmel.com Atmel Asia Limited Unit 01-5 & 16, 19F BEA Tower, Millennium City 5 418 Kwun Tong Road Kwun Tong, Kowloon HONG KONG Tel: (+852) 2245-6100 Fax: (+852) 2722-1369 Atmel Munich GmbH Business Campus Parkring 4 D-85748 Garching b. Munich GERMANY Tel: (+49) 89-31970-0 Fax: (+49) 89-3194621 Atmel Japan G.K. 16F Shin-Osaki Kangyo Building 1-6-4 Osaki Shinagawa-ku, Tokyo 141-0032 JAPAN Tel: (+81)(3) 6417-0300 Fax: (+81)(3) 6417-0370 2013 Atmel Corporation. All rights reserved. / Rev.: Atmel, Atmel logo and combinations thereof, AVR, Enabling Unlimited Possibilities, and others are registered trademarks or trademarks of Atmel Corporation or its subsidiaries. Other terms and product names may be trademarks of others. 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 THE ATMEL TERMS AND CONDITIONS OF SALES LOCATED ON THE ATMEL WEBSITE, 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 AND 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 products 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 products are not intended, authorized, or warranted for use as components in applications intended to support or sustain life.