MSP430 Touch Pad Experiments

download MSP430 Touch Pad Experiments

of 39

Transcript of MSP430 Touch Pad Experiments

  • 7/28/2019 MSP430 Touch Pad Experiments

    1/39

    Hands-on: Capacitive TouchSensing with MSP430

    StevMS

    Texa

  • 7/28/2019 MSP430 Touch Pad Experiments

    2/39

    Agenda How can we sense a finger on a control?

    How can we capacitively sense a finger? The detailed issues in charge rate sensing Experimenting with some code

    LAB1-3: Basic touch pad detection detecting the center pad of the 4

    on the ATC boardLAB4: Achieving very low power consumptionLAB5: Extending a pad to a slider detecting around the whole 4

  • 7/28/2019 MSP430 Touch Pad Experiments

    3/39

    Strategies for detecting a finger The disturbance of acoustic waves across the

    surface of the touch padDirt resistant, but can use a lot of energy

    The disturbance of optical beams over the touch padDirt resistant, but hard to make compact. Good for information booths

    Resistive coupling between conductive padsCheap, simple, low power. Wear and tear, and ESD problems

    Resistive changes between layers caused bypressure

    The usual technique for PDAs. Can require significant pressure

    Capacitance changes due to the finger Several variants of this technique existLow cost and power. Can achieve fine positional detection, with a lighttouch

  • 7/28/2019 MSP430 Touch Pad Experiments

    4/39

    Agenda How can we sense a finger on a control?

    How can we capacitively sense a finger? The detailed issues in charge rate sensing Experimenting with some code

    LAB1-3: Basic touch pad detection detecting the center pad of the 4

    on the ATC boardLAB4: Achieving very low power consumptionLAB5: Extending a pad to a slider detecting around the whole 4

  • 7/28/2019 MSP430 Touch Pad Experiments

    5/39

    Capacitive ways to detect a finger A number of strategies for detecting the capacitive

    effect of a fingers presence have been used:Make the touch pad a tuning element in an oscillator,and detect the change in frequency as a fingerapproachesVarious charge transfer techniques, some of whichresemble a sigma-delta ADCMeasure the charge/discharge time of an RC or currensource and capacitor circuit, and look for changes as afinger approaches

  • 7/28/2019 MSP430 Touch Pad Experiments

    6/39

    Using P1 and 2 to sense a touch pad Each P1 or P2 pin can

    generate an interrupt MSP430 digital I/O pins

    have

  • 7/28/2019 MSP430 Touch Pad Experiments

    7/39

    Agenda How can we sense a finger on a control?

    How can we capacitively sense a finger? The detailed issues in charge rate sensing Experimenting with some code

    LAB1-3: Basic touch pad detection detecting the center pad of the 4

    on the ATC boardLAB4: Achieving very low power consumptionLAB5: Extending a pad to a slider detecting around the whole 4

  • 7/28/2019 MSP430 Touch Pad Experiments

    8/39

    50Hz/60Hz pickup Touching a high impedance oscilloscope probe

    produces a large mains waveform on the display The same effect happens with a touch pad. Mains

    pickup from touching or waving cables near the padmust be tolerated

    Heavy filtering of touch pad measurements wouldmake the pad unresponsive

    If we measure the charge time, quickly followed bythe discharge time, their average is only slightlyaffected by mains pickup

    Lightweight digital filtering can clean up theremainder of the mains effect. This gives a clean,responsive, measurement of the effects of a finger

  • 7/28/2019 MSP430 Touch Pad Experiments

    9/39

    Mains tolerant sensing Use 2 I/O pins for 2 pads

    5M ohms between pairs Time charging of a pad

    Set pin B to output highPin A to output low, to dischargePin A to input, and time the charge

    Immediately timedischarging of that padSet pin B to output lowPin A to output high, to chargePin A to input, and time the discharge

    Sum the charge and dischargetimes, use a single pole IIRfilter to smooth the results

    Swap use of the pins, sensethe other pad

    Pin A

    Pin B

    5M ohm

    Pin A

    Pin B

    5M ohm

    Pin A

    Pin B

    5M ohm

    High

    Low

  • 7/28/2019 MSP430 Touch Pad Experiments

    10/39

    Other sources of interference Tolerance of other internal and external sources of

    interference may be important Cellular phones may be a problem Interference from fast logic in the product itself ma

    be an issueA clean power supply for the MSP430 is importantA stable supply for the MSP430 is importantGood screening and ground plane layout on the sensing PCB is importa

  • 7/28/2019 MSP430 Touch Pad Experiments

    11/39

    Labs ahead lets get prepared The ATC board contains an MSP430FG4619, which

    has an LCD and an isolated RS232C port. We will uthis MCU to receive key information by I2C, displaand also pass it to a PC, by RS232C youworking serial port on your PC for this

    The board contains an MSP430F2013, whichconnects to the 16 pads which form the large 4. Italso connects by I2C to the MSP430FG4619

    Eight I/O pins are used for the pads 2 pads to each I/O pinFour 5.1Mohm resistors are connected between pairs of I/O pins

    Header H1 must have only jumpers 1-2 and 3

    Jumper JP2 must be removed , so LED3 doaffect touch pad sensing

  • 7/28/2019 MSP430 Touch Pad Experiments

    12/39

    Agenda How can we sense a finger on a control?

    How can we capacitively sense a finger? The detailed issues in charge rate sensing Experimenting with some code

    LAB1-3: Basic touch pad detection detecting the center pad of the 4

    on the ATC boardLAB4: Achieving very low power consumptionLAB5: Extending a pad to a slider detecting around the whole 4

  • 7/28/2019 MSP430 Touch Pad Experiments

    13/39

    A basic touch button We will now look at some core sensing code,

    implementing the basic technique we have looked a In this initial exercise we will only sense the big

    square pad at the centre of the 4

    The provided code for the MSP430FG4619 can becompiled, loaded into the device and used withoutchange

    The provided code for the MSP430F2013 will be usas the basis for some experiments

    After this we will extend the sensing technique tomore complex requirements

  • 7/28/2019 MSP430 Touch Pad Experiments

    14/39

    The elements of sensing a keyunsigned int measure_key_capacitance(void)

    { int sum;/* All keys are driven low, forming a "ground" area */P1OUT |= BIT1; /* Charge the key */

    _NOP(); _NOP(); _NOP(); /* Allow time to charge */P1IES |= BIT1; /* Configure a port interrupt */P1IE |= BIT1; /* as the pin discharges */P1DIR &= ~BIT1;timer_count = TAR; /* Snapshot the timer... */LPM0; /* ...and wait for interrupt */P1IE &= ~BIT1; /* Disable key interrupts */P1OUT &= ~BIT1; /* Discharge the key */P1DIR |= BIT1;

    sum = timer_count; /* Record the discharge time */...

    unsigned int measure_key_capacitance(void){

    int sum;/* All keys are driven low, forming a "ground" area */P1OUT |= BIT1; /* Charge the key */

    _NOP(); _NOP(); _NOP(); /* Allow time to charge */P1IES |= BIT1; /* Configure a port interrupt P1IE |= BIT1; /* as the pin discharges */

    P1DIR &= ~BIT1;timer_count = TAR; /* Snapshot the timer... */LPM0; /* ...and wait for interrupt */P1IE &= ~BIT1; /* Disable key interrupts */P1OUT &= ~BIT1; /* Discharge the key */P1DIR |= BIT1;sum = timer_count; /* Record the discharge time ...

  • 7/28/2019 MSP430 Touch Pad Experiments

    15/39

    The elements of sensing a keyP1OUT |= BIT0; /* Prepare for charging */

    _NOP(); _NOP(); _NOP(); /* Allow time to discharge */P1IES &= ~BIT1; /* Configure a port interrupt */P1IE |= BIT1; /* as the pin charges */P1DIR &= ~BIT1;timer_count = TAR; /* Snapshot the timer... */LPM0; /* ...and wait for interrupt. */P1IE &= ~BIT1; /* Disable key interrupts */P1OUT &= ~(BIT1 | BIT0); /* Ground" the key */P1DIR |= BIT1;sum += timer_count;/* The sum of the two readings is our answer */return sum;

    }

    P1OUT |= BIT0; /* Prepare for charging */ _NOP(); _NOP(); _NOP(); /* Allow time to discharge *

    P1IES &= ~BIT1; /* Configure a port interrupt P1IE |= BIT1; /* as the pin charges */P1DIR &= ~BIT1;timer_count = TAR; /* Snapshot the timer... */LPM0; /* ...and wait for interrupt. */P1IE &= ~BIT1; /* Disable key interrupts */

    P1OUT &= ~(BIT1 | BIT0); /* Ground" the key */P1DIR |= BIT1;sum += timer_count;/* The sum of the two readings is our answer */return sum;

    }

  • 7/28/2019 MSP430 Touch Pad Experiments

    16/39

    The elements of sensing a key#pragma vector=PORT1_VECTOR

    __interrupt void port_1_interrupt(void){P1IFG = 0; /* Clear port interrupt flags */timer_count = TAR - timer_count; /* Record time */LPM0_EXIT;

    }

    #pragma vector=PORT1_VECTOR __interrupt void port_1_interrupt(void){

    P1IFG = 0; /* Clear port interrupt flags */timer_count = TAR - timer_count; /* Record time LPM0_EXIT;

    }

    {/* Filtering of individual readings, using a

    single pole IIR low pass filter. */ margin = measure_key_capacitance() - base_capacitance;

    filtered += (margin - (filtered >> 4));}

    {/* Filtering of individual readings, using a

    single pole IIR low pass filter. */ margin = measure_key_capacitance() - base_capacitance;

    filtered += (margin - (filtered >> 4));}

  • 7/28/2019 MSP430 Touch Pad Experiments

    17/39

    Lab 1 getting started Load IAR workspace MSP430 Touch Sensing

    Find project FG4619 host_comms for the FG461Open, compile, and load it into the MSP430FG4619 on your boardNo changes are needed

    Find the program scope.exe, and run it on your PIf you are using COM1, just click and run the program

    If you are using another COM port (e.g. a USB->serial interface) find thport number, and use the Windows runoption to run scope

    Find project F2013 touchbutton for the F2013 This is the code we will experiment with, and extendOpen, compile, and load it into the MCU on your boardRun it and look at the response on the LCD (0 to 255) and your PC (aresponse waveform), as you touch the square pad of the 4When this is working we will try some experimentsHuge responses mean metal contact put tape over the touch pad

  • 7/28/2019 MSP430 Touch Pad Experiments

    18/39

    The effect of insulators The ATC board only separates your finger from the

    capacitor plates by a thin film of solder resist A real product will require an insulating layer

    typically the plastic case

    Insulator material mattersIt is the dielectric in a capacitorUse of non-hygroscopic glues is especially importantStable attachment, with no air gaps is important

    Insulator thickness has a big impact on the responsefrom a pad

    Insulator thickness varies considerably0.5mm of textured plastic on the touchpad of your notebook10mm thick glass panel on a kitchen appliance1 to 2mm of plastic is more common

  • 7/28/2019 MSP430 Touch Pad Experiments

    19/39

    Lab 2 the effects of insulators Try holding a layer of insulation over the pad, and s

    the effect Try different thicknesses, and look at the effect You may need to raise the sensitivity of the display

    Reduce or remove the shift of the values to the hostRemove ID_3to stop prescaling Timer A

    scan_key();to_host = filtered >> 4;

    scan_key();to_host = filtered >> 4;

    TACTL = TASSEL_2 | MC_2 | ID_3;TACTL = TASSEL_2 | MC_2 | ID_3;

  • 7/28/2019 MSP430 Touch Pad Experiments

    20/39

    Adapting to environmental change We must calibrate each pad at startup

    Components varyMechanical assembly (glue, etc.) varies

    We need to dynamically adapt that calibrationCapacitance and the input threshold vary with temperatureSupply voltage and other parameters may drift

    We need to avoid adapting to the wrong thingHands waving near the touch pad should not cause the threshold to riseundulyObviously we should not adapt when a finger is detectedWe should freeze adaptation of all keys, when any one is detectingAdapt slowly, as real changes occur slowlyAdapting downwards faster than we adapt up helps tolerate waving hand

    A fixed threshold above the base capacitance worksOK for touch switches

  • 7/28/2019 MSP430 Touch Pad Experiments

    21/39

    Lab 3 a single touch switch The code already measures and sets an initial base

    capacitance, at startup 1. Try to make it implement a fixed threshold for ke

    detection i.e. a switch You can simply implement a fixed threshold that suits the tolerances of your own board, by running and measuring the readings

    A value between 0 and 255 is being sent to the MSP430FG4619, so trychange this to 0 for off and 255 for on

    2. Try to adapt the base capacitance dynamically torespond to changes in temperature, etc

    What would be a good adaptation scheme?Should you adapt faster when the signal is farther from its base level?How much faster should you adapt downwards than you adapt upwards?

  • 7/28/2019 MSP430 Touch Pad Experiments

    22/39

    Disturbances from other I/O We have seen that practical insulation cover can

    make the response from a finger very small The thickness of the PCB also affects the response

    Thin PCBs in hand-held products give a smaller response The increasing popularity of very thin flexible PCBs for small consumeproducts made things even harder

    Noise from other I/O on the MCU can disturb resul The most stable results are achieved if I/O only

    occurs between scans of the touch pad

  • 7/28/2019 MSP430 Touch Pad Experiments

    23/39

    Agenda How can we sense a finger on a control?

    How can we capacitively sense a finger? The detailed issues in charge rate sensing Experimenting with some code

    LAB1-3: Basic touch pad detection detecting the center pad of the 4

    on the ATC boardLAB4: Achieving very low power consumptionLAB5: Extending a pad to a slider detecting around the whole 4

  • 7/28/2019 MSP430 Touch Pad Experiments

    24/39

    Minimizing power consumption Many touch pad applications are in portable

    appliances, so power consumption is important We charge and discharge in LPM0 tens of We can rest between scans in LPM3

  • 7/28/2019 MSP430 Touch Pad Experiments

    25/39

    Lab 4 low power operation Minimize power consumption as we wait for a sing

    key to be pressedLike a real product, saving power, waiting for the onbutton to bepressed

    Try to adapt the code from the last exercise tominimize its power consumption

    The code currently idles in a loop between key scans Try to make it sleep in LPM3 during these idle periodsInterrupts can be generated from the watchdog, for simplicity

    There is no 32kHz crystal for the MSP430F2013 on this board, but theis the VLO. It runs at ~12kHz, and is operating as the ACLK source incode

  • 7/28/2019 MSP430 Touch Pad Experiments

    26/39

    Agenda How can we sense a finger on a control?

    How can we capacitively sense a finger? The detailed issues in charge rate sensing Experimenting with some code

    LAB1-3: Basic touch pad detection detecting the center pad of the 4

    on the ATC boardLAB4: Achieving very low power consumptionLAB5: Extending a pad to a slider detecting around the whole 4

  • 7/28/2019 MSP430 Touch Pad Experiments

    27/39

    Extending a button to a slider People tend to be most interested in touch pads for

    sliders, dials, and other complex configurations The benefits of tactile feedback reduce the

    acceptability of individual touch buttons for someapplications

    Fine resolution sliders can be made with a row of jua few individual pads, using interpolation

    Thick insulation would make this harder

    Usable pad size is related to the size of fingersA finger needs to excite multiple padsA compromise size can work well for children and large adults

    The 4has oversized pads at the extreme top and left, whichcompromise its performance this is a demo, not an end pr

  • 7/28/2019 MSP430 Touch Pad Experiments

    28/39

    Interpolating slider positions How can we interpolate for

    high resolution sliders? The base reading is large, and variesfrom pad to pad, so we work withpad response = current reading base readingPerform a linear weighted average of the pad responsesGrass cutweak responses. Thesecan bias the weighted average

    There are issues at the ends of rows,because there are no further pads onone side of the peak for a properlyweighed calculationInterpolating to 1/16 th of a pad ispractical

    There are issues at the ends of rows,because there are no further pads onone side of the peak for a properlyweighed calculation

  • 7/28/2019 MSP430 Touch Pad Experiments

    29/39

    Interpolating slider positions What will affect the stability of the positional

    estimate?Noise will cause some jitteriness in the positional estimateFingers still move a little while stationaryAs a finger lifts, we need to avoid generating false steps

    How can we smooth out these effects?

    Most applications are looking for movement along a slider, rather thanabsolute positionUse hysteresis in accepting apparent changes of finger directionUp to half a pad of hysteresis is needed for good results as a finger liftsSoft flesh flexes as we change direction, so there is a natural dead zone,regardless of hysteresis we introduce. The final feeling is quite natural

  • 7/28/2019 MSP430 Touch Pad Experiments

    30/39

    Sliders with less I/O pins 10 pads makes a good long

    slider For dial type structures more

    pads say 16 may be better

    With care we can double up theI/O pins, and use the pattern of responses to work out the realposition of the finger

    The 4 shape we areexperimenting with is like this

    16 pads, connected to 8 I/O lines The large pads at the extreme top andleft compromise the resultsMore regular shapes work well

  • 7/28/2019 MSP430 Touch Pad Experiments

    31/39

    Compact multi-key code Use array of structures in flash to describe each

    key Use array of structures in RAM for their working

    data/* This defines the static data to maintain one key */typedef struct{ unsigned char port;

    unsigned char port_bit;int threshold;

    } key_config_data_t;

    /* This defines the static data to maintain one key */typedef struct{ unsigned char port;

    unsigned char port_bit;int threshold;} key_config_data_t;

    /* This defines the working data to maintain one key */typedef struct

    { int base_capacitance;int filtered;

    } key_data_t;

    /* This defines the working data to maintain one key */typedef struct

    { int base_capacitance;int filtered;} key_data_t;

  • 7/28/2019 MSP430 Touch Pad Experiments

    32/39

    Compact multi-key codeunsigned int measure_key_capacitance(int key_no)

    { char active_key;const key_line_config_data_t *keyp;const key_line_config_data_t *partner;int sum;keyp = &key_line_config[key_no];

    partner = &key_line_config[key_no ^ 1];active_key = keyp->port_bit;if (keyp->port == 1)

    P1OUT |= active_key;else

    P2OUT |= active_key; _NOP();

    _NOP(); _NOP();

    unsigned int measure_key_capacitance(int key_no){

    char active_key;const key_line_config_data_t *keyp;const key_line_config_data_t *partner;int sum;keyp = &key_line_config[key_no];

    partner = &key_line_config[key_no 1];

    active_key = keyp->port_bit;if (keyp->port == 1)

    P1OUT |= active_key;else

    P2OUT |= active_key; _NOP(); _NOP(); _NOP();

  • 7/28/2019 MSP430 Touch Pad Experiments

    33/39

    Compact multi-key code

    int scan_keys(void){

    int i;int margin;

    for (i = 0; i < NUM_LINES; i++){

    margin = measure_key_capacitance(i)- key_line[i].base_capacitance;

    key_line[i].filtered += (margin - (key_line[i].filtered >> 4));

    }return 0;

    }

    int scan_keys(void){

    int i;int margin;

    for (i = 0; i < NUM_LINES; i++){

    margin = measure_key_capacitance(i)- key_line[i].base_capacitance;

    key_line[i].filtered += (margin - (key_line[i].filtered >> 4));

    }return 0;

    }

  • 7/28/2019 MSP430 Touch Pad Experiments

    34/39

    Compact multi-key codeint find_finger_position(void)

    { int i, j, k, l, min, max, max_pos;long int a, b;/* Find the min and max responses for the key lines */

    min = 32767; max = -32768; max_pos = -1;for (i = 0; i < NUM_KEYS; i++){

    if (key_line[i].filtered < min) min = key_line[i].filtered;

    if (key_line[i].filtered > max){

    max = key_line[i].filtered; max_pos = i;

    }}/* If max response isn't that big, no finger present. */if (max < 100) return -1;

    int find_finger_position(void){

    int i, j, k, l, min, max, max_pos;long int a, b;/* Find the min and max responses for the key lines */

    min = 32767; max = -32768; max_pos = -1;for (i = 0; i < NUM_KEYS; i++){

    if (key_line[i].filtered < min) min = key_line[i].filtered;

    if (key_line[i].filtered > max){

    max = key_line[i].filtered; max_pos = i;

    }}/* If max response isn't that big, no finger present. */if (max < 100) return -1;

  • 7/28/2019 MSP430 Touch Pad Experiments

    35/39

    Compact multi-key codegrass_level = (max - min) >> 3;

    a = 0; b = 0;for (i = 0; i grass_level){

    a += (key_line[i].filtered - min); b += (i + 1)*(key_line[i].filtered - min);

    }}

    b /= (a >> 4); /* Calculate average, in 1/16 b -= 16; /* Compensate for adding 1 in the loop */

    return b;

    }

    grass_level = (max - min) >> 3;a = 0;

    b = 0;for (i = 0; i grass_level){

    a += (key_line[i].filtered - min);

    b += (i + 1)*(key_line[i].filtered - min);}

    } b /= (a >> 4); /* Calculate average, in 1/16 b -= 16; /* Compensate for adding 1 in the loop */

    return b;}

  • 7/28/2019 MSP430 Touch Pad Experiments

    36/39

  • 7/28/2019 MSP430 Touch Pad Experiments

    37/39

    Lab 5 a touch slider The picture shows the

    allocation of I/O lines

    Heavy I/O reuse createscompromises in this complexshape

    When the finger movesacross the central pad, itmust be tracked to get themovement correct

    Fine progressive tracking of the finger can be seen in the3 straight runs of pads

  • 7/28/2019 MSP430 Touch Pad Experiments

    38/39

    Summary For requirements up to 16 sense lines, the

    charge/discharge approach to capacitive sensingworks very well with the MSP430

    Very low power consumption is possible Simple switches can be implemented with thick

    insulation

    Interpolation allows fine resolution sliders to beimplemented through the typical plastic shell of ahandheld device

    SLAP119

  • 7/28/2019 MSP430 Touch Pad Experiments

    39/39

    I M P O R T A N T N O T I C E

    T e x a s I n s t r u m e n t s I n c o r p o r a t e d a n d i t s s u b s i d i a r i e s ( T I ) r e s e r v e t h e r i g h ti m p r o v e m e n t s , a n d o t h e r c h a n g e s t o i t s p r o d u c t s a n d s e r v i c e s a t a n y t i m e C u s t o m e r s s h o u l d o b t a i n t h e l a t e s t r e l e v a n t i n f o r m a t i o n b e f o r e p l a c i n g o r c o m p l e t e . A l l p r o d u c t s a r e s o l d s u b j e c t t o T I s t e r m s a n d c o n d i t i o n s o f s a l e

    T I w a r r a n t s p e r f o r m a n c e o f i t s h a r d w a r e p r o d u c t s t o t h e s p e c i f i c a t i o n s a p s t a n d a r d w a r r a n t y . T e s t i n g a n d o t h e r q u a l i t y c o n t r o l t e c h n i q u e s a r e u s e d x t e n t T I d e e m s n e c e s s a r y t o s u p p o r t t h i w a r r a n t y . E x c e p t w h e r e m a n d a t e d b y g o v e r n m e n t r e q u i r e m e n t s , t e s t i n g op e r f o r m e d .

    T I a s s u m e s n o l i a b i l i t y f o r a p p l i c a t i o n s a s s i s t a n c e o r c u s t o m e r p r o d u c t d e s i g n . C u s t o m e r s a r e r e s p o n s i b l e f o r t h e i r p r o d u ca p p l i c a t i o n s u s i n g T I c o m p o n e n t s . T o m i n i m i z e t h e r i s k s a s s o c i a t e d w i t h p r o v i d e a d e q u a t e d e s i g n a n d o p e r a t i n g s a f e g u a r d s .

    T I d o e s n o t w a r r a n t o r r e p r e s e n t t h a t a n y l i c e n s e , e i t h e r e x p r e s s o r i m p l i e d , i s g r a n t e d u n d e r a n y T I p a t e n t r i g h t , c o p y r i g h t , mw o r k r i g h t , o r o t h e r T I i n t e l l e c t u a l p r o p e r t y r i g h t r e l a t i n g t o a n y c o m b i n a t i o n , m a c h i n e , o r p r o c e s s i n w h i c h T I p r o d u c t s o r a r e u s e d . I n f o r m a t i o n p u b l i s h e d b y T I r e g a r d i n g t h i r d - p a r t y p r o d u c t s o r s ep r o d u c t s o r s e r v i c e s o r a w a r r a n t y o r e n d o r s e m e n t t h e r e o f . U s e o f s u c h i n f o r m a t i o n m a y r e q u i r e a l i c e n s e f r o m a t h i r d p a r t yt h e p a t e n t s o r o t h e r i n t e l l e c t u a l p r o p e r t y o f t h e t h i r d p a r t y , o r a l i c e n s e f r o m T I u n d e r t h e p a t e n t s o r o t h e r i n t e l l e c t u a l p r o p e

    R e p r o d u c t i o n o f i n f o r m a t i o n i n T I d a t a b o o k s o r d a t a s h e e t s i s p e r m i s s i b l e o n l y i f r e p r o d u c t i o n i s w i t h o u t a l t e r a t i o n a n d i s a c c o m p a n i e d b y a l l a s s o c i a t e d w a r r a n t i e s , c o n d i t i o n s , l i m i t a t i o n s , a n d n o u n f a i r a n d d e c e p t i v e b u s i n e s s p r a c t i c e . T I i s n o t r e s p o n s i b l e o r l i a b l e f o r s u c h a l t e r e d d o c u m e n t a t i o n .

    R e s a l e o f T I p r o d u c t s o r s e r v i c e s w i t h s t a t e m e n t s d i f f e r e n t f r o m o r b e y o n dv o i d s a l l e x p r e s s a n d a n y i m p l i e d w a r r a n t i e s f o r t h e a s s o c i a t e d T I p r o d u c tp r a c t i c e . T I i s n o t r e s p o n s i b l e o r l i a b l e f o r a n y s u c h s t a t e m e n t s .

    T I p r o d u c t s a r e n o t a u t h o r i z e d f o r u s e i n s a f e t y - c r i t i c a l a p p l i c a t i o n s ( s u c h r e a s o n a b l y b e e x p e c t e d t o c a u s e s e v e r e p e r s o n a l i n j u r y o r d e a t h , u n l e s s o s p e c i f i c a l l y g o v e r n i n g s u c h u s e . B u y e r s r e p r e s e n t t h a t t h e y h a v e a l l n e c e so f t h e i r a p p l i c a t i o n s , a n d a c k n o w l e d g e a n d a g r e e t h a t t h e y a r e s o l e l y r e s p r e q u i r e m e n t s c o n c e r n i n g t h e i r p r o d u c t s a n d a n y u s e o f T I p r o d u c t s i n s u c ha p p l i c a t i o n s - r e l a t e d i n f o r m a t i o n o r s u p p o r t t h a t m a y b e p r o v i d e d b y T I . F ur e p r e s e n t a t i v e s a g a i n s t a n y d a m a g e s a r i s i n g o u t o f t h e u s e o f T I p r o d u c t s

    T I p r o d u c t s a r e n e i t h e r d e s i g n e d n o r i n t e n d e d f o r u s e i n m i l i t a r y / a e r o s p a c s p e c i f i c a l l y d e s i g n a t e d b y T I a s m i l i t a r y - g r a d e o r " e n h a n c e d p l a s t i c . " O n l s p e c i f i c a t i o n s . B u y e r s a c k n o w l e d g e a n d a g r e e t h a t a n y s u c h u s e o f T I p r o s o l e l y a t t h e B u y e r ' s r i s k , a n d t h a t t h e y a r e s o l e l y r e s p o n s i b l e f o r c o m p l i a nc o n n e c t i o n w i t h s u c h u s e .

    T I p r o d u c t s a r e n e i t h e r d e s i g n e d n o r i n t e n d e d f o r u s e i n a u t o m o t i v e a p p l i ca r e d e s i g n a t e d b y T I a s c o m p l i a n t w i t h I S O / T S 1 6 9 4 9 r e q u i r e m e n t s . B u y en o n - d e s i g n a t e d p r o d u c t s i n a u t o m o t i v e a p p l i c a t i o n s , T I w i l l n o t b e r e s p o n

    F o l l o w i n g a r e U R L s w h e r e y o u c a n o b t a i n i n f o r m a t i o n o n o t h e r T e x a s I n s

    P r o d u c t s A p p l i c a t i o n s

    A m p l i f i e r s a m p l i f i e r . t i . c o m A u d i o w w w . t i . c o m / a u d i o

    D a t a C o n v e r t e r s d a t a c o n v e r t e r . t i . c o m A u t o m o t i v e w w w . t i . c o m / a u t o m o t i v e

    D S P d s p . t i . c o m B r o a d b a n d w w w . t i . c o m / b r o a d b a n d

    I n t e r f a c e i n t e r f a c e . t i . c o m D i g i t a l C o n t r o l w w w . t i . c o m / d i g i t a l c o n t r o l

    L o g i c l o g i c . t i . c o m M i l i t a r y w w w . t i . c o m / m i l i t a r y

    P o w e r M g m t p o w e r . t i . c o m O p t i c a l N e t w o r k i n g w w w . t i . c o m / o p t i c a l n e t w o r k

    M i c r o c o n t r o l l e r s m i c r o c o n t r o l l e r . t i . c o m S e c u r i t y w w w . t i . c o m / s e c u r i t y

    R F I D w w w . t i - r f i d . c o m T e l e p h o n y w w w . t i . c o m / t e l e p h o n y

    L o w P o w e r w w w . t i . c o m / l p w V i d e o & I m a g i n g w w w . t i . c o m / v i d e o W i r e l e s s

    W i r e l e s s w w w . t i . c o m / w i r e l e s s

    M a i l i n g A d d r e s s : T e x a s I n s t r u m e n t s , P o s t O f f i c e B o x 6 5 5 3 0 C o p y r i g h t 2 0 0 7 , T e x a s I n s t r u m e n t s I n c o r p o r a t e d

    http://www.ti.com/wirelesshttp://www.ti-rfid.com/http://www.ti.com/telephonyhttp://microcontroller.ti.com/http://power.ti.com/http://www.ti.com/opticalnetworkhttp://logic.ti.com/http://www.ti.com/militaryhttp://interface.ti.com/http://www.ti.com/digitalcontrolhttp://dsp.ti.com/http://www.ti.com/broadbandhttp://dataconverter.ti.com/http://www.ti.com/automotivehttp://amplifier.ti.com/http://www.ti.com/audiohttp://www.ti.com/wirelesshttp://www.ti.com/videohttp://www.ti.com/lpwhttp://www.ti.com/telephonyhttp://www.ti-rfid.com/http://www.ti.com/securityhttp://microcontroller.ti.com/http://www.ti.com/opticalnetworkhttp://power.ti.com/http://www.ti.com/militaryhttp://logic.ti.com/http://www.ti.com/digitalcontrolhttp://interface.ti.com/http://www.ti.com/broadbandhttp://dsp.ti.com/http://www.ti.com/automotivehttp://dataconverter.ti.com/http://www.ti.com/audiohttp://amplifier.ti.com/