ASF - Atmel QTouch with XMEGA USB HID - Atmel Corporation
ASF - Atmel QTouch with XMEGA USB HID - Atmel Corporation
ASF - Atmel QTouch with XMEGA USB HID - Atmel Corporation
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
APPLICATION NOTE<br />
<strong>Atmel</strong> AVR1632: <strong>ASF</strong> – <strong>Atmel</strong> <strong>QTouch</strong> <strong>with</strong> <strong>XMEGA</strong> <strong>USB</strong><br />
<strong>HID</strong><br />
Features<br />
8-bit <strong>Atmel</strong> Microcontrollers<br />
• Single-Chip solution<br />
• <strong>Atmel</strong> ® <strong>QTouch</strong> ® and <strong>USB</strong> <strong>HID</strong> on <strong>Atmel</strong> AVR ® ATxmega256A3BU<br />
• Using <strong>QTouch</strong> Library 4.4<br />
• Using <strong>Atmel</strong> Studio 6<br />
• Simple PC interface <strong>with</strong> Read/Write functions<br />
• Remote wake up and <strong>USB</strong> bus powered support<br />
Introduction<br />
This application note describes how to use the <strong>QTouch</strong> library <strong>with</strong> the<br />
ATxmega256A3BU microcontroller using <strong>QTouch</strong> button available on <strong>XMEGA</strong>-A3BU<br />
Xplained board. <strong>QTouch</strong> sensor status is acquired and reported over the <strong>USB</strong> <strong>HID</strong><br />
class to a host PC. It provides a single chip solution for sensing <strong>QTouch</strong> through <strong>USB</strong><br />
interface.<br />
<strong>USB</strong> interface<br />
42013A−AVR−07/12
Table of Contents<br />
1. Glossary ............................................................................................... 3<br />
2. Overview .............................................................................................. 3<br />
3. Quick start ............................................................................................ 4<br />
3.2 User interface .................................................................................................... 5<br />
4. Building a <strong>USB</strong> device <strong>HID</strong> Generic <strong>with</strong> <strong>QTouch</strong>................................ 5<br />
4.1 Importing and configuring <strong>USB</strong> module ............................................................. 5<br />
4.2 <strong>QTouch</strong> Library Integration ............................................................................... 6<br />
5. Project options ..................................................................................... 7<br />
5.1 Compiler and assembler options ....................................................................... 7<br />
5.2 Linker options .................................................................................................... 9<br />
6. Example firmware ................................................................................ 9<br />
6.1 <strong>QTouch</strong> interface file – touch.c.......................................................................... 9<br />
6.1.1 <strong>QTouch</strong> initialization............................................................................ 9<br />
6.1.1.1 config_sensor .................................................................... 9<br />
6.1.1.2 qt_init_sensing ................................................................ 10<br />
6.1.1.3 qt_set_parameters .......................................................... 10<br />
6.1.1.4 init_timer_isr .................................................................... 10<br />
6.1.2 Timer interrupt callback ..................................................................... 10<br />
6.1.3 Check key press ............................................................................... 10<br />
6.2 Example behavior ........................................................................................... 11<br />
6.2.1 ui_process ........................................................................................ 11<br />
7. Host application ................................................................................. 12<br />
8. Recommended reading ...................................................................... 13<br />
<strong>Atmel</strong> AVR1632: <strong>ASF</strong> – <strong>Atmel</strong> <strong>QTouch</strong> <strong>with</strong> <strong>XMEGA</strong> <strong>USB</strong> <strong>HID</strong> [APPLICATION NOTE]<br />
42013A−AVR−07/12<br />
2
1. Glossary<br />
<strong>ASF</strong><br />
<strong>HID</strong><br />
UDC<br />
UDD<br />
UDI<br />
<strong>USB</strong><br />
<strong>Atmel</strong> Studio 6<br />
<strong>Atmel</strong> <strong>QTouch</strong> Library<br />
<strong>Atmel</strong> Software Framework<br />
Human Interface Device<br />
<strong>USB</strong> Device Controller<br />
<strong>USB</strong> Device Descriptor<br />
<strong>USB</strong> Device Interface<br />
Universal Serial Bus<br />
Integrated Development Environment (IDE) for <strong>Atmel</strong> AVR applications<br />
Software library for touch applications on <strong>Atmel</strong> AT91SAM and AVR microcontrollers<br />
<strong>XMEGA</strong>-A3BU Xplained Evaluation Kit for the <strong>Atmel</strong> ATxmega256A3BU<br />
2. Overview<br />
This demo application acquires the change in <strong>QTouch</strong> key status (ON/OFF), generates the report, and sends it to a host<br />
(PC) on request. This application is built over the generic <strong>USB</strong> <strong>HID</strong> application which allows simple data exchange<br />
between host and the device. The host peridiocally requests for change in <strong>QTouch</strong> key status. The device will send<br />
changed status if available, otherwise it will send a NAK (No Acknowledge) to tell the host that there is no change in the<br />
key status. The data packet sent from the device to the host is called report IN.<br />
Figure 2-1. Application overview.<br />
<strong>USB</strong> + <strong>QTouch</strong> Application<br />
<strong>QTouch</strong> Library<br />
UDC<br />
UDI – <strong>HID</strong><br />
Generic<br />
UDI – <strong>HID</strong><br />
UDD<br />
<strong>USB</strong> Device stack from the <strong>ASF</strong><br />
The report sent to the host contains a set of bytes which can be used by the user application to transfer data depending<br />
on the requirement. Because this application transfers the status of one button at a time, one bit in a byte is sufficient to<br />
transfer the button status. The least significant byte (LSB) of the report byte has the value of the button status. This can<br />
be modified depending on the requirement.<br />
<strong>Atmel</strong> AVR1632: <strong>ASF</strong> – <strong>Atmel</strong> <strong>QTouch</strong> <strong>with</strong> <strong>XMEGA</strong> <strong>USB</strong> <strong>HID</strong> [APPLICATION NOTE]<br />
42013A−AVR−07/12<br />
3
Table 2-1.<br />
Push buttons and <strong>QTouch</strong> button mapping on <strong>XMEGA</strong>-A3BU Xplained.<br />
Button<br />
Push button SW0<br />
Push button SW1<br />
Push button SW2<br />
<strong>QTouch</strong> button QTB0<br />
Pin mapping<br />
PE5<br />
PF1<br />
PF2<br />
PF6 -> SNS, PF7 -> SNSK<br />
3. Quick start<br />
<strong>USB</strong> device generic <strong>HID</strong> example <strong>with</strong> <strong>QTouch</strong> for <strong>XMEGA</strong>-A3BU Xplained is available in <strong>Atmel</strong> Studio 6.<br />
<strong>Atmel</strong> Studio 6 allows the creation of a New Example Project. In the examples list, select a <strong>USB</strong> <strong>QTouch</strong> Device <strong>HID</strong><br />
Generic Example.<br />
The project does not require any modification and only needs to be built, loaded, and run.<br />
Figure 3-1. New example from <strong>Atmel</strong> Studio.<br />
<strong>Atmel</strong> AVR1632: <strong>ASF</strong> – <strong>Atmel</strong> <strong>QTouch</strong> <strong>with</strong> <strong>XMEGA</strong> <strong>USB</strong> <strong>HID</strong> [APPLICATION NOTE]<br />
42013A−AVR−07/12<br />
4
3.2 User interface<br />
The user interface consists of switches and LEDs. The resources used from <strong>XMEGA</strong>-A3BU Xplained board for this<br />
example are:<br />
• Two user LEDs – LED2 and LED3<br />
• One <strong>QTouch</strong> button QTB0<br />
• Three push buttons SW0, SW1 and SW2<br />
• LED0 is ON when <strong>USB</strong> line is in IDLE mode, and OFF in SUSPEND mode<br />
• LED1 blinks when <strong>USB</strong> Host has checked and enabled <strong>HID</strong> generic interface<br />
User LEDs<br />
Figure 3-2. <strong>XMEGA</strong> – A3BU Xplained.<br />
LED0<br />
Push buttons<br />
LED1<br />
<strong>QTouch</strong><br />
button<br />
4. Building a <strong>USB</strong> device <strong>HID</strong> Generic <strong>with</strong> <strong>QTouch</strong><br />
The <strong>USB</strong> device <strong>HID</strong> Generic modules provide a <strong>USB</strong> <strong>HID</strong> Generic interface which can be used to build a <strong>USB</strong><br />
application. These modules are available in <strong>Atmel</strong> Studio 6 and can be imported in an <strong>Atmel</strong> Studio 6 Project. To this,<br />
<strong>QTouch</strong> library should be added and configured.<br />
4.1 Importing and configuring <strong>USB</strong> module<br />
The <strong>USB</strong> device <strong>HID</strong> Generic modules can be added from the <strong>ASF</strong> wizard in <strong>Atmel</strong> Studio 6. Once these modules are<br />
added, it is necessary to configure them as per the application needs.<br />
The configuration details are illustrated in <strong>Atmel</strong> AVR4905: <strong>ASF</strong> – <strong>USB</strong> Device <strong>HID</strong> Generic Application:<br />
http://www.atmel.com/Images/doc8499.pdf [4] .<br />
<strong>Atmel</strong> AVR1632: <strong>ASF</strong> – <strong>Atmel</strong> <strong>QTouch</strong> <strong>with</strong> <strong>XMEGA</strong> <strong>USB</strong> <strong>HID</strong> [APPLICATION NOTE]<br />
42013A−AVR−07/12<br />
5
4.2 <strong>QTouch</strong> Library Integration<br />
To build the application, the appropriate <strong>QTouch</strong> header files, assembler files and library files (which are device and<br />
compiler specific) need to be integrated <strong>with</strong> other source files. To select the correct device and the application-specific<br />
library files, refer to the Library_Selection_Guide.xls file in the <strong>QTouch</strong> library [2] available for download on <strong>Atmel</strong><br />
website. The following should be options should be set for selecting the <strong>QTouch</strong> library for ATxmega256A3BU.<br />
Table 4-1.<br />
Options to be set for selecting <strong>QTouch</strong> Library for ATxmega256A3BU.<br />
Option<br />
Value<br />
Technology<br />
<strong>QTouch</strong><br />
MCU Family <strong>Atmel</strong> AVR <strong>XMEGA</strong> ®<br />
MCU Type<br />
8-bit<br />
MCU<br />
ATxmega256A3BU<br />
Ports available for <strong>QTouch</strong><br />
A, B, C, D, E, F<br />
Maximum number of channels 4<br />
Maximum number of rotors 0<br />
Toolchain<br />
GCC<br />
By selecting these parameters, the appropriate library files to be included can be seen.<br />
• libavrxmega6g1-4qt-k-0rs.a – GCC library file for the respective device<br />
• qt_asm_xmega.S – assembler file<br />
• touch_qt_config.h<br />
• touch_api.h<br />
<strong>Atmel</strong> AVR1632: <strong>ASF</strong> – <strong>Atmel</strong> <strong>QTouch</strong> <strong>with</strong> <strong>XMEGA</strong> <strong>USB</strong> <strong>HID</strong> [APPLICATION NOTE]<br />
42013A−AVR−07/12<br />
6
Figure 4-1. Library Selection Guide.<br />
5. Project options<br />
5.1 Compiler and assembler options<br />
For the <strong>QTouch</strong> application, certain options should be set in the compiler and assembler. In GCC, open Project Options<br />
-> Toolchain -> AVR/GNU C Compiler -> Symbols. Add the following to Defined symbols one by one in <strong>Atmel</strong> Studio 6<br />
(Figure 5-1).<br />
_QTOUCH_<br />
SNS1=F<br />
SNSK1=F<br />
_SNS1_SNSK1_SAME_PORT_<br />
QT_DELAY_CYCLES=1<br />
QT_NUM_CHANNELS=4<br />
QTOUCH_STUDIO_MASKS=1<br />
NUMBER_OF_PORTS=1<br />
<strong>Atmel</strong> AVR1632: <strong>ASF</strong> – <strong>Atmel</strong> <strong>QTouch</strong> <strong>with</strong> <strong>XMEGA</strong> <strong>USB</strong> <strong>HID</strong> [APPLICATION NOTE]<br />
42013A−AVR−07/12<br />
7
Figure 5-1. GCC compiler options.<br />
Add Symbols<br />
The above options have to be set in the assembler as well, as shown in Figure 5-2.<br />
Figure 5-2. GCC assembler options.<br />
Add here<br />
<strong>Atmel</strong> AVR1632: <strong>ASF</strong> – <strong>Atmel</strong> <strong>QTouch</strong> <strong>with</strong> <strong>XMEGA</strong> <strong>USB</strong> <strong>HID</strong> [APPLICATION NOTE]<br />
42013A−AVR−07/12<br />
8
5.2 Linker options<br />
In GCC, open Project Options -> Toolchain -> AVR/GNU C Linker -> Libraries. Add the following library (Figure 5-3)<br />
avrxmega6g1-4qt-k-0rs<br />
Also specify the path where the library is located.<br />
Figure 5-3. Linker options.<br />
Add library<br />
Add library path<br />
6. Example firmware<br />
This document explains only the <strong>QTouch</strong> interface file and example behavior. Description about <strong>USB</strong> Device <strong>HID</strong><br />
Generic is available in <strong>Atmel</strong> AVR4905: <strong>ASF</strong> – <strong>USB</strong> Device <strong>HID</strong> Generic Application:<br />
http://www.atmel.com/Images/doc8499.pdf.<br />
6.1 <strong>QTouch</strong> interface file – touch.c<br />
6.1.1 <strong>QTouch</strong> initialization<br />
The touch_init function is responsible for calling the initialization routines related to <strong>QTouch</strong> sensing.<br />
config_sensor();<br />
qt_init_sensing();<br />
qt_set_parameters();<br />
init_timer_isr();<br />
Each of the functions are described in the following sections.<br />
6.1.1.1 config_sensor<br />
The config_sensor function is responsible for configuring the sensors as keys and assigning the channel numbers.<br />
<strong>Atmel</strong> AVR1632: <strong>ASF</strong> – <strong>Atmel</strong> <strong>QTouch</strong> <strong>with</strong> <strong>XMEGA</strong> <strong>USB</strong> <strong>HID</strong> [APPLICATION NOTE]<br />
42013A−AVR−07/12<br />
9
channel_t<br />
qt_enable_key(CHANNEL_0, NO_AKS_GROUP, 10, HYST_6_25);<br />
– channel number to be configured for a key<br />
aks_group_t – Adjacent Key Suppression ® (AKS ® ) group associated <strong>with</strong> the sensor being configured as “key”<br />
threshold_t – Detect threshold for the sensor<br />
hysteresis_t – Detection hysteresis for the sensor<br />
Refer to the <strong>Atmel</strong> AVR <strong>QTouch</strong> Library User Guide:<br />
http://www.atmel.com/dyn/resources/prod_documents/doc8207.pdf for more information on this function.<br />
6.1.1.2 qt_init_sensing<br />
The qt_init_sensing function is used to initialize the <strong>QTouch</strong> sensing for all enabled channels. All required sensors<br />
should be configured before calling this function.<br />
#define qt_init_sensing( ) qt_init_sensing_<strong>with</strong>_burst( BURST_FUNC_NAME ,CALCULATE_MASKS)<br />
6.1.1.3 qt_set_parameters<br />
The qt_set_parameters function is used to initialize the global configuration settings in the variable qt_config_data of the<br />
<strong>QTouch</strong> acquisition method libraries. In other words, this will fill the default threshold values in the configuration data<br />
structure.<br />
6.1.1.4 init_timer_isr<br />
The example uses TC driver from <strong>ASF</strong>. It enables the timer, sets the timer period, clock source, interrupt level and<br />
interrupt callback functions. The timer period defines the time interval between consecutive <strong>QTouch</strong> measurements.<br />
6.1.2 Timer interrupt callback<br />
Sets the flag time_to_measure_touch and updates the current time that is used by the <strong>QTouch</strong> Library.<br />
6.1.3 Check key press<br />
The check_touch_key_pressed function in the <strong>QTouch</strong> interface file (touch.c) from example is responsible for<br />
measuring the <strong>QTouch</strong> sensing and reporting the key status.<br />
uint16_t status_flag;<br />
uint16_t burst_flag;<br />
#ifdef _DEBUG_INTERFACE_<br />
/* Process commands from PC */<br />
#endif<br />
QDebug_ProcessCommands();<br />
if (time_to_measure_touch)<br />
{<br />
time_to_measure_touch = false;<br />
do {<br />
status_flag = qt_measure_sensors( current_time_ms_touch );<br />
burst_flag = status_flag & QTLIB_BURST_AGAIN;<br />
#ifdef _DEBUG_INTERFACE_<br />
QDebug_SendData(status_flag);<br />
<strong>Atmel</strong> AVR1632: <strong>ASF</strong> – <strong>Atmel</strong> <strong>QTouch</strong> <strong>with</strong> <strong>XMEGA</strong> <strong>USB</strong> <strong>HID</strong> [APPLICATION NOTE]<br />
42013A−AVR−07/12<br />
10
#endif<br />
/* Time-critical host application code should be placed here since<br />
* a full burst cycle may delay critical task in the main application<br />
*/<br />
}while (burst_flag) ;<br />
#ifdef _DEBUG_INTERFACE_<br />
/* Process commands from PC */<br />
QDebug_ProcessCommands();<br />
#endif<br />
}<br />
if(GET_SENSOR_STATE(0))<br />
return 0;<br />
else<br />
return 1;<br />
6.2 Example behavior<br />
6.2.1 ui_process<br />
The main.c and ui.c implement the user interface for <strong>Atmel</strong> <strong>QTouch</strong> demonstration <strong>with</strong> <strong>Atmel</strong> <strong>XMEGA</strong> <strong>USB</strong> <strong>HID</strong><br />
application.<br />
The implementation is comprised of three steps:<br />
1. Start the <strong>USB</strong> Device<br />
udc_start();<br />
udc_attach(); // Must be called when the <strong>USB</strong> cable is plugged<br />
// Cable plugged is detected via VBUS events<br />
2. Wait for the <strong>HID</strong> Generic interface to be enabled via a callback<br />
UDI_<strong>HID</strong>_GENERIC_ENABLE_EXT() // Authorize the Generic <strong>HID</strong> events<br />
3. Scan the buttons and send the status<br />
b_btn_state = (!check_touch_key_pressed()) ? true : false;<br />
if (b_btn_state != btnq_last_state) {<br />
ui_hid_report[0]=b_btn_state;<br />
udi_hid_generic_send_report_in(ui_hid_report);<br />
btnq_last_state = b_btn_state;<br />
}<br />
Note:<br />
To simplify the <strong>USB</strong> implementation, the SOF event is used to scan switches every 1ms.<br />
More description on how Generic <strong>HID</strong> example works is available in the application note <strong>Atmel</strong> AVR4905: <strong>ASF</strong> – <strong>USB</strong><br />
Device <strong>HID</strong> Generic Application: http://www.atmel.com/Images/doc8499.pdf.<br />
<strong>Atmel</strong> AVR1632: <strong>ASF</strong> – <strong>Atmel</strong> <strong>QTouch</strong> <strong>with</strong> <strong>XMEGA</strong> <strong>USB</strong> <strong>HID</strong> [APPLICATION NOTE]<br />
42013A−AVR−07/12<br />
11
7. Host application<br />
<strong>Atmel</strong> PC tool allows communicating <strong>with</strong> the generic <strong>HID</strong> device. The PC tool is available <strong>with</strong> Application<br />
Note AVR153: <strong>USB</strong> PC Drivers Based on Generic <strong>HID</strong> Class:<br />
http://www.atmel.com/dyn/resources/prod_documents/doc7645.pdf AVR153 – <strong>USB</strong> PC Drivers Based on Generic <strong>HID</strong><br />
Class as AVR153.zip [6]. Whenever there is a key press and release, it updates in the display of PC Tool. The key<br />
press or release is displayed as shown in Figure 7-1.<br />
Use the LED2 ON/OFF and LED3 ON/OFF buttons to turn ON and OFF the LED2 and 3. Push and release the buttons<br />
SW0, SW1, SW2 and <strong>QTouch</strong> button QTB0 to see the status displayed on the PC application window.<br />
Information on integrating the <strong>Atmel</strong> <strong>USB</strong> <strong>HID</strong> DLL functions and simple code examples that demonstrate different types<br />
of implementation are available in the document “<strong>USB</strong> PC Drivers Based on Generic <strong>HID</strong> Class” [6].<br />
Figure 7-1. Ket status.<br />
Note:<br />
Caution:<br />
Use the PID 0x2402 in the graphic tool interface.<br />
The button ‘Firmware Upgrade’ only disconnects the <strong>USB</strong> device.<br />
<strong>Atmel</strong> AVR1632: <strong>ASF</strong> – <strong>Atmel</strong> <strong>QTouch</strong> <strong>with</strong> <strong>XMEGA</strong> <strong>USB</strong> <strong>HID</strong> [APPLICATION NOTE]<br />
42013A−AVR−07/12<br />
12
8. Recommended reading<br />
[1] <strong>Atmel</strong> <strong>XMEGA</strong> AU Manual: http://atmel.com/dyn/resources/prod_documents/doc8331.pdf<br />
[2] <strong>Atmel</strong> <strong>QTouch</strong> Library 4.4: http://www.atmel.com/tools/QTOUCHSTUDIO4_3_1.aspx<br />
[3] <strong>Atmel</strong> AVR <strong>QTouch</strong> Library User<br />
Guide: http://www.atmel.com/dyn/resources/prod_documents/doc8207.pdf<br />
[4] <strong>Atmel</strong> AVR4905: <strong>ASF</strong> – <strong>USB</strong> Device <strong>HID</strong> Generic Application: http://www.atmel.com/Images/doc8499.pdf<br />
[5] <strong>ASF</strong> Documentation: http://asf.atmel.com/docs/latest/<br />
[6] AVR153: <strong>USB</strong> PC Drivers Based on Generic <strong>HID</strong><br />
Class: http://www.atmel.com/dyn/resources/prod_documents/doc7645.pdf<br />
[7] AVR1923: <strong>XMEGA</strong>-A3BU Xplained Hardware User<br />
Guide: http://atmel.com/dyn/resources/prod_documents/doc8394.pdf<br />
[8] AVR1934: <strong>XMEGA</strong> A3BU Xplained Software User<br />
Guide: http://atmel.com/dyn/resources/prod_documents/doc8413.pdf<br />
[9] AVR1935: <strong>XMEGA</strong> A3BU Xplained Getting Started<br />
Guide: http://atmel.com/dyn/resources/prod_documents/doc8324.pdf<br />
<strong>Atmel</strong> AVR1632: <strong>ASF</strong> – <strong>Atmel</strong> <strong>QTouch</strong> <strong>with</strong> <strong>XMEGA</strong> <strong>USB</strong> <strong>HID</strong> [APPLICATION NOTE]<br />
42013A−AVR−07/12<br />
13
<strong>Atmel</strong> <strong>Corporation</strong><br />
1600 Technology Drive<br />
San Jose, CA 95110<br />
USA<br />
Tel: (+1)(408) 441-0311<br />
Fax: (+1)(408) 487-2600<br />
www.atmel.com<br />
<strong>Atmel</strong> Asia Limited<br />
Unit 01-5 & 16, 19F<br />
BEA Tower, Millennium City 5<br />
418 Kwun Tong Road<br />
Kwun Tong, Kowloon<br />
HONG KONG<br />
Tel: (+852) 2245-6100<br />
Fax: (+852) 2722-1369<br />
<strong>Atmel</strong> Munich GmbH<br />
Business Campus<br />
Parkring 4<br />
D-85748 Garching b. Munich<br />
GERMANY<br />
Tel: (+49) 89-31970-0<br />
Fax: (+49) 89-3194621<br />
<strong>Atmel</strong> Japan G.K.<br />
16F Shin-Osaki Kangyo Bldg.<br />
1-6-4 Osaki, Shinagawa-ku<br />
Tokyo 141-0032<br />
JAPAN<br />
Tel: (+81)(3) 6417-0300<br />
Fax: (+81)(3) 6417-0370<br />
© 2012 <strong>Atmel</strong> <strong>Corporation</strong>. All rights reserved. / Rev.: 42013A−AVR−07/12<br />
<strong>Atmel</strong> ® , <strong>Atmel</strong> logo and combinations thereof, AVR ® , Adjacent Key Suppression ® , AKS ® , Enabling Unlimited Possibilities ® , <strong>QTouch</strong> ® , <strong>XMEGA</strong> ® , and others are<br />
registered trademarks or trademarks of <strong>Atmel</strong> <strong>Corporation</strong> or its subsidiaries. Other terms and product names may be trademarks of others.<br />
Disclaimer: The information in this document is provided in connection <strong>with</strong> <strong>Atmel</strong> products. No license, express or implied, by estoppel or otherwise, to any intellectual property right is granted by this<br />
document or in connection <strong>with</strong> the sale of <strong>Atmel</strong> products. EXCEPT AS SET FORTH IN THE ATMEL TERMS AND CONDITIONS OF SALES LOCATED ON THE ATMEL WEBSITE, ATMEL ASSUMES<br />
NO LIABILITY WHATSOEVER AND DISCLAIMS ANY EXPRESS, IMPLIED OR STATUTORY WARRANTY RELATING TO ITS PRODUCTS INCLUDING, BUT NOT LIMITED TO, THE IMPLIED<br />
WARRANTY OF MERCHANTABILITY, 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 AND PROFITS, BUSINESS INTERRUPTION, OR LOSS OF<br />
INFORMATION) ARISING OUT OF THE USE OR INABILITY TO USE THIS DOCUMENT, EVEN IF ATMEL HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. <strong>Atmel</strong> makes no<br />
representations or warranties <strong>with</strong> 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<br />
<strong>with</strong>out notice. <strong>Atmel</strong> does not make any commitment to update the information contained herein. Unless specifically provided otherwise, <strong>Atmel</strong> products are not suitable for, and shall not be used in,<br />
automotive applications. <strong>Atmel</strong> products are not intended, authorized, or warranted for use as components in applications intended to support or sustain life.