Abstract:
A capacitance sensing system can filter noise that presents in a subset of electrodes in the proximity of a sense object (i.e., finger). A capacitance sensing system can include a sense network comprising a plurality of electrodes for generating sense values; a noise listening circuit configured to detect noise on a plurality of the electrodes; and a filtering circuit that enables a filtering for localized noise events when detected noise values are above one level, and disables the filtering for localized noise events when detected noise values are below the one level.

Description:
[0001]    This application claims the benefit of U.S. Provisional Patent Application Ser. No. 61/440,327, filed on Feb 2, 2011, the contents of which are incorporated by reference herein. 
     
    
     TECHNICAL FIELD 
       [0002]    The present disclosure relates generally to capacitance sensing systems, and more particularly to noise filtering in such systems. 
       BACKGROUND 
       [0003]    Capacitance sensing systems can sense electrical signals generated on electrodes that reflect changes in capacitance. Such changes in capacitance can indicate a touch event (i.e., the proximity of an object to particular electrodes). Electrical sense signals can be degraded by the presence of noise. 
         [0004]    Noise in capacitance sensing systems can be conceptualized as including “internal” noise and “external noise”. Internal noise can be noise that can affect an entire system at the same time. Thus, internal noise can appear on all electrodes at the same time. That is, internal noise can be a “common” mode type noise with respect to the sensors (e.g., electrodes) of a system. Sources of internal noise can include, but are not limited to: sensor power supply noise (noise present on a power supply provided to the capacitance sensing circuit) and sensor power generation noise (noise arising from power generating circuits, such as charge pumps, that generate a higher magnitude voltage from a lower magnitude voltage). 
         [0005]    In touchscreen devices (i.e., devices having a display overlaid with a capacitance sensing network), a display can give rise to internal noise. As but a few examples, display noise sources can include, but are not limited to: LCD VCOM noise (noise from a liquid crystal display that drives a segment common voltage between different values), LCD VCOM coupled noise (noise from modulating a thin film transistor layer in an LCD device that can be coupled through a VCOM node), and display power supply noise (like sensor power generation noise, but for power supplied of the display). 
         [0006]    Common mode type noise can be addressed by a common mode type filter that filters out noise common to all electrodes in a sense phase. 
         [0007]    External noise, unlike internal noise, can arise from charge coupled by a sensed object (e.g., finger or stylus), and thus can be local to a touch area. Consequently, external noise is typically not common to all electrodes in a sense phase, but only to a sub-set of the electrodes proximate to a touch event. 
         [0008]    Sources of external noise can include charger noise. Charger noise can arise from charger devices (e.g., battery chargers that plug into AC mains, or those that plug into automobile power supplies). Chargers operating from AC mains can often include a “flyback” transform that can create an unstable device ground with respect to “true” ground (earth ground). Consequently, if a user at earth ground touches a capacitance sense surface of a device while the device is connected to a charger, due to the varying device ground, a touch can inject charge at a touch location, creating a localized noise event. 
         [0009]    Other sources of external noise can arise from various other electrical fields that can couple to a human body, including but not limited to AC mains (e.g., 50/60 Hz line voltage), fluorescent lighting, brushed motors, arc welding, and cell phones or other radio frequency (RF) noise sources. Fields from these devices can be coupled to a human body, which can then be coupled to a capacitance sensing surface in a touch event. 
         [0010]      FIG. 21  is a schematic diagram of model showing charger noise in a conventional mutual capacitance sensing device. A voltage source VTX can be a transmit signal generated on a TX electrode, Rp 1  can be a resistance of a TX electrode, Cp 1  can be (self) capacitance between a TX electrode and device ground (which can be a charger ground CGND), Cm can be a mutual capacitance between a TX electrode and a receive (RX) electrode, Cp 2  can be a self-capacitance of an RX electrode, Rp 2  can be a resistance of a RX electrode. Rx can represent an impedance of a capacitance sensing circuit. 
         [0011]    Cf can be a capacitance between a sense object  2100  (e.g., finger). A voltage source VCh_Noise can represent noise arising from differences between CGND and earth ground (EGND). Voltage source VCh_Noise can be connected to a device ground by an equivalent capacitance Ceq. 
         [0012]    As shown in  FIG. 21 , a sense current (Isense) can be generated in response to source VTX that can vary in response to changes in Cm. However, at the same time, a noise current (Inoise) can arise a touch event, due to the operation of a charger. A noise current (Inoise) can be additive and subtractive to an Isense signal, and can give rise to erroneous sense events (touch indicated when no touch occurs) and/or erroneous non-sense events (touch not detected). 
         [0013]      FIG. 22  shows capacitance sense values (in this case counts) corresponding to non-touch and touch events in a conventional system subject to external noise. As shown, while a device is not touched (NO TOUCH) noise levels are relatively small. However, while a device is touched (TOUCH) noise levels at the touch location are considerably higher. 
         [0014]    While capacitance sensing systems can include common mode type filtering, such filtering typically does not address the adverse affects of external noise, as such noise is not present on all electrodes, but rather localized to electrodes proximate a sense event. 
     
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
         [0015]      FIG. 1  is a flow diagram of a capacitance sensing operation according to an embodiment. 
           [0016]      FIG. 2  is a flow diagram of a capacitance sensing operation according to another embodiment.  FIG. 3  is a block schematic diagram of a capacitance sensing system according to an embodiment. 
           [0017]      FIG. 4  is a block schematic diagram of a capacitance sensing system having charger detection according to an embodiment. 
           [0018]      FIG. 5  is a block schematic diagram of a capacitance sensing system having a display alarm according to an embodiment. 
           [0019]      FIG. 6  is a block schematic diagram of a capacitance sensing system according to another embodiment. 
           [0020]      FIG. 7  is a schematic diagram of a noise listening circuit according to an embodiment. 
           [0021]      FIGS. 8A and 8B  are plan views of a noise listening configurations for a mutual capacitance sense network according to embodiments. 
           [0022]      FIG. 9A and 9B  are diagrams showing noise listening operations according to an embodiment. 
           [0023]      FIG. 10  is a flow diagram of a noise listening operation according to an embodiment. 
           [0024]      FIG. 11  is a flow diagram of a noise listening scan initialization operation according to an embodiment. 
           [0025]      FIG. 12  is a flow diagram of a noise listening restore-to-normal operation according to an embodiment. 
           [0026]      FIG. 13  is a flow diagram of a noise detection operation according to an embodiment. 
           [0027]      FIG. 14  is a timing diagram showing a noise detection operation that can provide an alarm condition according to an embodiment. 
           [0028]      FIG. 15  is a flow diagram of a local noise filtering operation according to an embodiment. 
           [0029]      FIGS. 16A and 16B  are plan views showing electrode selection for scaling in a filter operation according to an embodiment. 
           [0030]      FIGS. 17A and 17B  are flow diagrams of an adaptive jitter filter (AJF) according to an embodiment. 
           [0031]      FIGS. 18A and 18B  are flow diagrams of a weighting function that can be included in the AJF according to an embodiment. 
           [0032]      FIG. 19  is a diagram showing an AJF operation another to an embodiment. 
           [0033]      FIG. 20  is a flow diagram of a median filter that can be included in embodiments. 
           [0034]      FIG. 21  is a schematic diagram showing charger noise in a conventional mutual capacitance sensing device. 
           [0035]      FIG. 22  shows capacitance sense values with external noise corresponding to non-touch and touch events in a conventional system. 
       
    
    
     DETAILED DESCRIPTION 
       [0036]    Various embodiments will now be described that show capacitance sensing systems and methods that listen for noise and alter filtering of sensed values according to a noise level. In particular embodiments, if noise levels are below a certain threshold, indicating the absence of (or low levels of) external noise (i.e., noise localized to a touch area), sensed values can be filtered for common mode type noise. However, if noise levels are above the threshold, sensed valued can be filtered to account for external noise. In particular embodiments, filtering for localized noise can include a median filter. 
         [0037]    In the embodiments below, like items are referred to by the same reference character but with the leading digit(s) corresponding to the figure number. 
         [0038]      FIG. 1  shows a flow diagram of a capacitance sensing system operation  100  according to one embodiment. A system operation  100  can include a listening operation  102 , a no local noise processing path  104 , and a local noise processing path  106 . A listening operation  102  can monitor a sense network  108  for noise. A sense network  108  can include multiple electrodes for sensing a capacitance in a sensing area. In a particular embodiment, a sense network  108  can be a mutual capacitance sensing network having transmit (TX) electrodes that can be driven with a transmit signal, and receive (RX) electrodes coupled to the TX electrodes by a mutual capacitance. 
         [0039]    In some embodiments, a listening operation  102  can use the same electrodes used for capacitance sensing (e.g., touch position detection) for noise detection. In a very particular embodiment, a listening operation  102  can monitor all RX electrodes for noise. In an alternate embodiment, a listening operation  102  can monitor all RX electrodes in a noise listening operation. In yet another embodiment, a listening operation  102  can monitor both TX and RX electrodes in a listening operation. 
         [0040]    A listening operation  102  can compare detected noise to one or more threshold values to make a determination on the presence of noise. If noise is determined to be present (Noise), a local noise processing path  106  can be followed. In contrast, if no noise is determined to be present (No Noise), a no local noise processing path  104  can be followed. 
         [0041]    Processing paths  104  and  106  show how sense signals derived from sense network  108  can be acquired and filtered. A no local noise processing path  104  can acquire sense values from a sense network  108  with a standard scan  110  and non-local filtering  112 . A standard scan  110  can sample electrode values to generate sense values using a set number of sample operations and/or a set duration. Non-local filtering  112  can provide filtering that is not directed at local noise events, such as those arising from external noise. In particular embodiments, non-local filtering  112  can include common mode type filtering that filters for noise common to all sense electrodes. 
         [0042]    A local noise processing path  106  can address the adverse affects of local noise, like that arising from external noise. A local noise processing path  106  can acquire sense values from a sense network  108  with an extended scan  114  and local filtering  116 . An extended scan  114  can sample electrode values with a larger number of sample operations and/or a longer duration than the standard scan  110 . In addition, local filtering  116  can provide filtering to remove local noise events, such as those arising from external noise. In particular embodiments, local filtering  116  can include median filtering. 
         [0043]    In this way, in response to the detection of noise, a processing of capacitance sense signals can switch from a standard scan time and non-local filtering to an increased scan time and local filtering. 
         [0044]      FIG. 2  shows a flow diagram of a capacitance sensing system operation  200  according to another embodiment. In one particular embodiment, system operation  200  can be one implementation of that shown in  FIG. 1 . In addition to items like those shown in  FIG. 1 ,  FIG. 2  further shows a noise alarm operation  218  and touch position calculation operation  220 . 
         [0045]    In the embodiment shown, a listening operation  202  can include listener scanning  222 , listener common mode filtering (CMF)  224 , and noise detection  226 . Listener scanning  222  can include measuring signals on multiple electrodes of sense network  208 . Scanning (noise signal acquisition) times can be selected based on sense network and expected noise source(s). A listener CMF  224  can filter for noise common to all electrodes being scanned. Such filtering can enable external type noise (noise local to a subset of the scanned electrodes) to pass through for noise detection  226 . 
         [0046]    Noise detection  226  can establish whether any detected noise exceeds one or more thresholds. In the embodiment shown, if noise is below a first threshold, noise detection  226  can activate a “No Noise” indication. If noise is above a first threshold, noise detection  226  can activate a “Noise” indication. If noise is above a second threshold, greater than the first threshold, noise detection  226  can activate a “High Noise” indication. 
         [0047]    In the case of a “No Noise” indication, processing can proceed according to no local noise processing path  204 . Such a processing path  204  can utilize a standard scanning  210 , which in the particular embodiment shown can include 8 subconversions per electrode. A subconversion can be an elementary signal conversion event, and can reflect demodulation and/or integration results for one or more full input signal periods. Such processing can further include a CMF filtering  212  of values sensed on multiple electrodes. Such values can then be subject to baseline and difference calculations  228 , which can determine and difference between current sense values and baseline values. A sufficiently large difference can indicate a touch event. 
         [0048]    In the case of a “Noise” indication, processing can proceed according to local noise processing path  206 . Local noise processing  206  can increase signal acquisition time with an extended scanning  214  that utilizes  16  subconversion (i.e., doubles a scanning time versus the no noise case). A processing path  206  can further include non-CMF filtering  216  that can filter for external noise events affecting a local set of electrodes. In the particular embodiment shown, non-CMF filtering  216  can include median filtering  216 - 0  and non-linear filtering  216 - 1 . Resulting filtered sense values can then be subject to baseline and difference calculations  228 , like that described for the no local noise processing path  204 . 
         [0049]    In the case of a “High Noise” indication, processing can include activation of an alarm indication  218 . An alarm indication  218  can inform a user and/or a system that noise levels are high enough to result in erroneous capacitance sensing results. In a very particular embodiment, such a warning can be a visual warning on a display associated with the sense network  208  (e.g., a touchscreen display). However, warnings may include various other indication types, including but not limited to: a different type of visual alarm (e.g., LED), an audio alarm, or a processor interrupt, to name just a few. In the embodiment of  FIG. 2 , in response to a “High Noise” indication, processing may also proceed according to local noise processing path  206 . However, in other embodiments, capacitance sense processing could be interrupted, or additional filtering or signal boosting could occur. 
         [0050]    Operation  200  can also include touch position calculations  220 . Such actions can derive positions of touch events from sense values generated by processing paths  204  and  206 . Touch position values generated by calculations  220  can be provided to a device application, or the like. 
         [0051]    In this way, a listening circuit can include common mode filtering of sense electrodes to listen for localized noise events, such as external noise from a device charger or the like. Sense signals can be filtered based on sensed noise values and/or an alarm can be triggered if noise levels exceed a high threshold value. 
         [0052]    Referring now to  FIG. 3 , a capacitance sensing system according to an embodiment is shown in a block schematic diagram and designated by the general reference character  300 . A system  300  can include a sense network  308 , switch circuits  332 , an analog-to-digital converter (ADC)  334 , a signal generator  336 , and a controller  330 . A sense network  308  can be any suitable capacitance sense network, including a mutual capacitance sensing network, as disclosed herein. A sense network  308  can include multiple sensors (e.g., electrodes) for sensing changes in capacitance. 
         [0053]    Switch circuits  332  can selectively enable signal paths, both input and output signal paths, between a sense network  308  and a controller  330 . In the embodiment shown, switch circuits  332  can also enable a signal path between a signal generator  336  and sense network  308 . 
         [0054]    An ADC  334  can convert analog signals received from sense network  308  via switching circuits  308  into digital values. An ADC  334  can be any suitable ADC, including but not limited to a successive approximation (SAR) ADC, integrating ADC, sigma-delta modulating ADC, and a “flash” (voltage ladder type) ADC, as but a few examples. 
         [0055]    A signal generator  336  can generate a signal for inducing sense signals from sense network  308 . As but one example, a signal generator  336  can be a periodic transmit (TX) signal applied to one or more transmit electrodes in a mutual capacitance type sense network. A TX signal can induce a response on corresponding RX signals, which can be sensed to determine whether a touch event has occurred. 
         [0056]    A controller  330  can control capacitance sensing operations in a system  300 . In the embodiment shown, a controller can include sense control circuits  338 , filter circuits  311 , position determination circuits  320 , and noise listening circuits  302 . In some embodiments, controller  330  circuits (e.g.,  338 ,  311 ,  320  and  302 ) can be implemented by a processor executing instructions. However, in other embodiments, all or a portion of such circuits can be implemented by custom logic and/or programmable logic. 
         [0057]    Sense control circuits  338  can generate signals for controlling acquisition of signals from sense network  308 . In the embodiment shown, sense control circuits  338  can activate switch control signals SW_CTRL applied to switching circuits  332 . In a particular embodiment, mutual capacitance sensing can be employed, and sense control circuits  338  can sequentially connect a TX signal from signal generator  336  to TX electrodes within sense network  308 . As each TX electrode is driven with the TX signal, sense control circuits  338  can sequentially connect RX electrodes to ADC  334  to generate digital sense values for each RX electrode. It is understood that other embodiments can use different sensing operations. 
         [0058]    Noise listening circuits  302  can also control acquisition of signals from sense network  308  by activating switch control signals SW_CTRL. However, noise listening circuit  302  can configure paths to sense network  308  to enable the detection of local noise, as opposed to touch events. In a particular embodiment, noise listening circuit  302  can isolate signal generator  336  from sense network  308 . In addition, multiple groups of electrodes (e.g., RX, TX or both) can be simultaneously connected to ADC  334 . Noise listener  302  can filter such digital values and then compare them to noise thresholds to determine a noise level. Such actions can include arriving at “No Noise”, “Noise” and optionally “High Noise” determinations as described for  FIG. 2 . 
         [0059]    In response to a noise determination from noise listening circuit  302 , a controller  330  can alter capacitance sensing operations. In one embodiment, if noise is detected, signal acquisition times can be increased (e.g., subconversions increased) and filtering can be changed (e.g., median filtering instead of common mode filtering). 
         [0060]    Filter circuits  311  can filter sense values generated during sense operations and noise detection operations. In the embodiment shown, filter circuits  311  can enable one or more types of median filtering  316  and one or more types of CMF  312 . It is understood that filter circuits can be digital circuits operating on digital values representing sensed capacitance. In a particular embodiment, filter circuits  311  can include a processor creating sense value data arrays from values output from ADC  334 . These arrays of sense values can be manipulated according to one or more selected filtering algorithm to create an output array of filtered sense values. A type of filtering employed by filter circuits  311  can be selected based on detected noise levels. 
         [0061]    Position determination circuits  320  can take filtered sense values to generate touch position values (or no detected touches) for use by other processes, such as applications run by a device. 
         [0062]    In this way, a capacitance sensing system can include listening circuits for detecting noise values and digital filters, selectable based on a detected noise level. 
         [0063]    Referring now to  FIG. 4 , a capacitance sensing system according to another embodiment is shown in a block schematic diagram and designated by the general reference character  400 . In the embodiment of  FIG. 4 , a noise listening operation can vary based on a system condition. In the particular embodiment shown, noise listening can be enabled or disabled based on the presence of a charger. 
         [0064]    A system  400  can include sections like those of  FIG. 3 , and such sections can have the same or equivalent structures as  FIG. 3 .  FIG. 4  differs from  FIG. 3  in that it also shows a charger interface  440 , battery interface  448 , power control circuits  441 , and application(s)  446 . 
         [0065]    A charger interface  440  can enable power to be provided to system  400  that charges a battery via a battery interface  448 . In some embodiments, a charger interface  440  can be a physical interface that creates a mechanical connection between a charger  442  and the system  400 . In a particular embodiment, such a physical connection can include a ground connection that can give rise to injected current as represented in  FIG. 22 . However, alternate embodiments can include wireless charging interfaces. 
         [0066]    Power control circuits  441  can activate a charging indication (Charging) when a charger  442  is coupled to a system  400 , and thus can present an external noise source. 
         [0067]    In addition, power control circuits  441  can control charging operations of a battery via batter interface  448 . 
         [0068]    Referring still to  FIG. 4 , listening circuits  402 ′ can vary listening operations in response to a charger indication (Charging). In one embodiment, if the Charging indication is inactive, indicating that a charger  442  is not present, listening circuits  402 ′ can be disabled. If the Charging indication is active, listening circuits  402 ′ can be enabled. However in other embodiments, listening circuits  402 ′ can switch between different types of listening operations based on a charger indication (Charging). 
         [0069]    It is understood that while a charger can be one source of noise, other types of power supplies for a device can be a source of noise (e.g., AC/DC converters within such devices). For example, some devices can be connected to a computer with its own external power supply, or even a charger within an automobile. 
         [0070]    Application(s)  446  can be programs executable by a system  400  utilizing position values from position determination circuits  420 . 
         [0071]    In this way, a capacitance sensing system can vary listening circuit operations that detect noise values based on a physical condition of the system. 
         [0072]    Referring now to  FIG. 5 , a capacitance sensing system according to a further embodiment is shown in a block schematic diagram and designated by the general reference character  500 . In the embodiment of  FIG. 5 , an alarm can be generated when noise exceeds a threshold value. 
         [0073]    A system  500  can include sections like those of  FIG. 3 , and such sections can have the same or equivalent structures as  FIG. 3 .  FIG. 5  differs from  FIG. 3  in that is also shows an alarm circuit  518 , a display  548  and application(s)  546 . 
         [0074]    A listening circuit  502  can provide a noise level indication to alarm circuit  516  when detected noise is determined to exceed a high threshold. An alarm circuit  516  can activate one or more alarms, when the high noise threshold is exceeded. In the very particular embodiment shown, alarm circuit  516  can provide an alarm (Alarm-Display) to display  548 . In response to such an alarm, a display  548  can show a visual alarm indicating that touch inputs are affected by noise (e.g., touch inputs will not be accepted, etc.). In one particular embodiment, display  548  and sense network  508  can be a touchscreen assembly (i.e., sense network  508  is physically overlaid on display  548 ) 
         [0075]    In some embodiments, an alarm circuit  516  can provide an alarm to application(s)  546 . Such applications can then alter execution and/or generate their own alarm. Further, as noted in conjunction with  FIG. 2 , an alarm can take various other forms (e.g., an interrupt, or the like). 
         [0076]    In this way, a capacitance sensing system can generate an alarm for a user in the event noise levels exceed a predetermined threshold. 
         [0077]    Referring now to  FIG. 6 , a capacitance sensing system according to another embodiment is shown in a block schematic diagram and designated by the general reference character  600 . The embodiment of  FIG. 6  shows an implementation utilizing a processor and instructions to provide listening, selectable filtering, and alarm functions. 
         [0078]    A system  600  can include switching circuits  632 , controller  630 , a capacitance sense system  678 , oscillator circuits  650 , an ADC  634 , instruction memory  660 , communication circuits  656 , random access memory (RAM)  658 , and a power control circuits  644 . 
         [0079]    Switching circuits  632  can provide analog signal paths between a sense network  608  and circuits within a system  600 . In the embodiment shown, switching circuits  632  can include a number of channels  664 - 0  to - 7  and a channel multiplexer (MUX)  672 . Switching and MUXing operations within switching circuits  632  can be controlled by switch control signals (SW_CTRL) provided by controller  630 . Each channel ( 664 - 0  to - 7 ) can include a number of input/output (I/O) switches (one shown  666 ) connected to an I/O connection  631 , an I/O MUX  668 , and a sample and hold (S/H) circuit  670 . Each I/O switch ( 666 ) can connect a corresponding I/O  631  to a RX path (one shown as  674 ) or a TX path (one shown as  676 ). I/O MUX  668  can connect one of RX paths  674  within a channel to the corresponding S/H circuit  670 . TX paths  676  can receive a TX signal. A channel MUX  672  can selectively connect a S/H circuit  670  within each channel ( 664 - 0  to - 7 ) to ADC  634 . 
         [0080]    An ADC  634  can include any suitable ADC as described herein, or an equivalent. 
         [0081]      FIG. 6  shows a system  600  connected to mutual capacitance sense network  608 . Sense network  608  can include TX electrodes formed by TX plates (one shown as  608 - 0 ) and RX plates (one shown as  608 - 1 ). By operation of switching circuits  632 , TX electrodes can be connected to a TX path  676 , while multiple RX electrodes are connected to corresponding RX paths  674 . 
         [0082]    In the embodiment of  FIG. 6 , a controller  630  can include a processor  630 - 0  and digital processing circuits  630 - 1 . A processor  630 - 0  can control operations of digital processing circuits  630 - 1  in response to instructions stored in instruction memory  660 . Instruction memory  660  can include noise listening instructions  602 , alarm control instructions  618 , and filter instructions  611 . Filter instructions  611  can include multiple filtering operations, and in the embodiment shown, can include median filter instructions  616  and CMF instructions  612 . 
         [0083]    In response to noise listening instructions  602 , a controller  630  can generate signals that connect multiple I/Os  631  to ADC  634 . In one embodiment, values can be subject to an initial listening CMF operation. Such an operation can be called from filter instructions  611  or be built into noise listening instructions  602 . Resulting values can then be compared to one or more thresholds to determine a noise level. If a noise level exceeds a certain level, a listening circuit  602  can establish capacitance sensing parameters directed to filtering local noise (e.g., an external noise source). In some embodiments, such parameters can include those described for other embodiments, including an increased scan time and/or non-common mode (e.g., median) filtering. In addition, if a noise threshold level is above another certain level, alarm instructions  618  can be called to generate an appropriate alarm. 
         [0084]    Processor  630 - 0  alone, or in combination with digital processing circuits  630 - 1 , can perform arithmetic and logic operations for detecting noise and/or filtering sense values. 
         [0085]    Capacitance sensing system  678  can include circuits for performing capacitance sensing operations. In some embodiments, capacitance sensing system  678  can include sense control circuits  638  that generate switch control signals for controlling switching circuits  632 . In one embodiment, capacitance sensing system  678  can perform sensing operation based on criteria established by controller  630 . In a particular embodiment, a controller  630  can vary a sensing time (e.g., number of subconversions) based on a noise level. 
         [0086]    Referring still to  FIG. 6 , oscillator circuits  650  can generate signals for controlling timing of operations within system  600 . In one embodiment a TX signal presented at TX paths  676  can be provided by, or derived from signals generated by oscillator circuits  650 . 
         [0087]    Communication circuits  656  can provide capacitance sensing results to other systems or circuits of a device containing the capacitance sensing system  600 . RAM  658  can be provided to enable processor  630 - 0  to execute arithmetic operations and/or temporarily store instruction data. In particular embodiments, a RAM  658  can store sense value matrices that are manipulated by processor  630 - 0  to detect noise and/or filter capacitance sense values. 
         [0088]    Power control circuits  644  can generate power supply voltages for various portions within a system  600 . In some embodiments, power control circuits  644  provide a charging indication, like that described for  FIG. 4 , which can indicate when a charger is coupled to the system  600 . A processor  630 - 0  can then bypass noise listening instructions  602  in the absence of a charger, or may select between multiple listening algorithms based on the presence or absence of a charger. 
         [0089]      FIG. 6  also shows timer circuits  652  and programmable circuits  654 . Timer circuits  652  can provide timing functions for use by various sections of system  600 . Programmable circuits  654  can be programmed with configuration data to perform custom function. In the embodiment shown, programmable circuits  654  can include programmable digital blocks. 
         [0090]    In a very particular embodiment, a system  600  can be implemented with a PSoC®3 type programmable system-on-chip fabricated by Cypress Semiconductor Corporation of San Jose, Calif. U.S.A. 
         [0091]    In this way, a capacitance sensing system can include a processor that can execute any of: noise listening instructions, noise alarm instructions, median filtering, and CMF. 
         [0092]      FIG. 7  is a schematic diagram showing a noise listening configuration for a mutual capacitance sense network  708  according to an embodiment. A sense network  708  can include first electrodes (one shown as  780 ) and second electrodes (one shown as  782 ) coupled to one another by a mutual capacitance Cm. Noise, represented by noise voltage source  784 , on one or more first electrodes  780  can induce a noise signal (Ix) by mutual capacitance coupling. In a very particular embodiment, first electrodes  780  can be TX electrodes and second electrodes  782  can be RX electrodes. However, the TX electrodes are not driven by any system generated TX signal, but rather are used to detect noise. 
         [0093]      FIGS. 8A and 8B  show different noise listening configurations according to embodiments. 
         [0094]      FIG. 8A  shows a noise listening configuration for a mutual capacitance sense network  808  according to one embodiment. Sense network  808  can include TX electrodes (one highlighted as  880 ) arranged in one direction and RX electrodes (one highlighted as  882 ) arranged in another direction. In the embodiment shown, sets of RX electrodes  882  (in this embodiment, sets of two) can be connected to RX paths (RX 0  to RX 7 ) for noise listening operations. TX electrodes  880  can be connected to ground. 
         [0095]      FIG. 8B  shows a noise listening configuration for a mutual capacitance sense network  808  according to another embodiment. Sense network  808  can have the structure shown in  FIG. 8A . However, RX electrodes  882  and TX electrodes  880  can be commonly connected to a same RX path. In the particular embodiment shown, RX paths RX 0  to RX 3  can be connected to two RX electrodes  882  and one TX electrode  880 , while RX paths RX 4  to RX 7  can be connected to two RX electrodes  882  and two TX electrodes  880 . 
         [0096]    In this way, RX and/or TX electrodes of a mutual capacitance sense network can be connected to capacitance sensing inputs to listen for noise while a TX signal is prevented from being applied to the network. 
         [0097]      FIGS. 9A and 9B  show listening operations according to embodiments. 
         [0098]      FIG. 9A  shows a listening operation  900 -A having serial noise listening operations. Progression of time is shown by arrow “t”. A listening operation  900 -A can begin with a listening scanning action  902 . Such an action can include acquiring capacitance values across multiple sensors (e.g., electrodes). In particular embodiments, such a step can include establishing connections to a mutual capacitance sense array like that shown in  FIGS. 8A  or  8 B. Following a listening scanning  902 , acquired values can be subject to listening CMF  904 . A listening CMF can include common mode filtering that can filter out noise common to all electrodes and thus help isolate local noise (e.g., external type noise). Filtered sense values can then be subject to a noise detection action  906 . Such an action can compare sensed capacitance levels to one or more limits to determine a noise level. Following a noise detection action  906 , a listening operation  900 -A can repeat, performing another listening scanning action  902 . 
         [0099]      FIG. 9B  shows a listening operation  900 -B having pipelined noise listening operations. Progression of time is shown by arrow “t”. A listening operation  900 -B can begin with a listening scanning action  902 - 1 , which can acquire a first set of raw capacitance values. Following listening scanning operation  902 - 1 , a next listening scanning operation  902 - 2  can begin. However, while such second scanning action ( 902 - 2 ) is undertaken, the first set of raw data acquired with the first scanning action  902 - 1  can be common mode filtered  904 - 1  and subject to noise detection  906 - 1 . 
         [0100]    In this way, while raw data is gathered for noise listening on electrodes, previously gathered raw data can be common mode filtered and checked for noise events. 
         [0101]    In some mutual capacitance embodiments, that drive TX electrodes with a transmit (i.e., excitation) signal while RX electrodes provide sense signals via a mutual capacitance, in a listening scanning action (e.g.,  902  and/or  902 - 1 ), capacitance can be sensed on RX electrodes, but without the TX electrodes being driven with a transmit signal. 
         [0102]      FIG. 10  shows a noise listening operation  1000  according to one embodiment in a flow diagram. An operation  1000  can include a scanning initialization  1010 . A scanning initialization can configure connections to a sense network to enable the sensing of noise across multiple channels. Such an initialization can include changing sense network configurations from a standard touch sensing configuration to a noise listening configuration. 
         [0103]    Once scanning initialization  1010  is complete, an operation  1000  can, in parallel, perform noise scanning  1012  and noise detection  1014 . Noise scanning  1012  can include acquiring sense values from electrodes. Noise detection  1014  can include detecting noise from previously acquired sense values. Once noise scanning is complete (Yes from  1016 ), a noise listening operation  1000  can restore a sense network to a normal state  1018 . A normal state can be that utilized for standard sensing operations (e.g., touch sensing). 
         [0104]      FIG. 11  shows a scanning initialization operation  1100  according to an embodiment. A scanning initialization operation  1100  can be one particular implementation of that shown as  1010  in  FIG. 10 . Scanning initialization operation  1100  can be a scanning initialization operation for a mutual capacitance sense network. An operation  1100  can include disabling any circuits utilized in standard scanning operations that could interfere with noise detection ( 1120 ). In the embodiment shown, an action  1120  can include turning off current digital-to-analog converters (iDACs) connected to a sense network. RX paths can be configured as high impedance inputs ( 1122 ). RX paths can then be connected to input channels ( 1124 ). A signal acquisition time (e.g., scan time) can then be set that is suitable for the noise to be detected. In the embodiment of  FIG. 11 , such an action can include setting a number of subconversions ( 1126 ) to a predetermined value. All active channels can then be turned on ( 1128 ). Such an action can enable electrodes to be connected to capacitance sensing circuits. A scan can then start ( 1130 ). Such an action can acquire raw sense values to enable noise to be detected. A scanning initialization operation  1100  can then end. 
         [0105]      FIG. 12  shows a restore-to-normal operation  1232  according to an embodiment. A restore-to-normal operation  1232  can be one particular implementation of that shown as  1018  in  FIG. 10 . Restore-to-normal operation  1232  can include disconnecting all RX paths from input channels ( 1234 ). Such RX channels can then be configured for standard sensing operations ( 1236 ). A signal acquisition time (e.g., scan time) can then be returned to that utilized for standard sensing operations ( 1238 ). In the embodiment of  FIG. 12 , such an action can include setting a number of subconversions. An operation  1232  can include enabling previously disabled circuits utilized in standard scanning operations ( 1240 ). In the embodiment shown, an action  1240  can include turning on iDACs. A restore to normal operation  1232  can then end. 
         [0106]      FIG. 13  shows a noise detection operation  1314  according to an embodiment. A noise detection operation  1314  can be one particular implementation of that shown as  1014  in  FIG. 10 . A noise detection operation  1314  can include a CMF operation  1340 . 
         [0107]    Such filtering can remove noise common to electrodes and thus can improve a signal from any local noise (i.e., external noise). Operation  1314  can then determine a noise value. In the particular embodiment shown determining a noise value can include finding maximum and minimum values from the CMF filtered values ( 1342 ), and then determining the difference between such values ( 1344 ). 
         [0108]    A noise value can then be compared to a first threshold ( 1346 ). If a noise value is above a first threshold (Yes from  1346 ), a listening timeout value can be reset ( 1348 ) and a noise level can be set to a first value (ON) ( 1350 ). If noise has been determined to above a first threshold, the noise can also be compared to a second threshold ( 1352 ). If a noise value is above a second threshold (Yes from  1352 ), a noise level can be set to a second value (Alarm) ( 1354 ). An operation can then end  1366 . If a noise value is below a second threshold (No from  1352 ), an operation can also end  1366 . 
         [0109]    If a noise value is not above a first threshold (No from  1346 ), a noise detection operation  1314  can determine if a noise level should be returned to a zero value (i.e., no noise). In the embodiment shown, if a noise level can be checked to see if it still indicates a high noise state (i.e., ON or Alarm) ( 1356 ). If no elevated noise is indicated (No from  1356 ) a timeout value can be reset ( 1348 ). If elevated noise is indicated (Yes from  1356 ) a timeout value can be incremented ( 1348 ). The timeout value can then be compared to a limit ( 1362 ). If a timeout value exceeds a limit (Yes from  1362 ), the noise level can be returned to the no noise state ( 1350 ). If a timeout value does not exceed a limit (No from  1362 ), an operation can end  1366 . 
         [0110]      FIG. 14  is a timing diagram showing a noise detection operation according to one embodiment.  FIG. 14  includes a waveform NOISE DATA, showing noise sense values acquired by a noise listening operation. Projected onto the NOISE DATA waveform are two noise threshold levels (1 st _Threshold and 2 nd _Threshold). 
         [0111]      FIG. 14  also includes a waveform NOISE LEVEL that shows noise levels determined by a noise detection operation. NOISE LEVEL can indicate three different noise levels. NoiseState=OFF can show noise values below a first threshold (1 st _Threshold). NoiseState=ON can show noise values above the first threshold (1 st _Threshold). NoiseState=Alarm can show noise values above a second threshold (2nd_Threshold). 
         [0112]    Referring still to  FIG. 14 , at about time t 0 , noise values can exceed a first threshold. As a result, a noise detection operation can set a noise level to ON. Eventually, noise levels time out, and at time t 1 , noise levels can return to an OFF state. 
         [0113]    At about time t 2 , noise values can exceed a second threshold. As a result, a noise detection operation can set a noise level to Alarm. Eventually, noise levels time out, and at time t 3 , noise levels can return to an OFF state. 
         [0114]    Referring now to  FIG. 15 , a local noise filtering operation  1516  according to an embodiment is shown in a flow diagram. A local noise filtering operation  1516  can be performed on sense data in the event local (i.e., not common mode) noise levels are determined to exceed a certain level. An operation  1516  can include inputting sense signals ( 1568 ). Such an action can include inputting raw count values generated from an ADC connected to sense electrodes. 
         [0115]    An operation  1516  can find a main signal ( 1570 ). Such an action can locate a potential touch location. As will be recalled, local noise can present around touch locations. In one embodiment, a main signal can correspond to a sensor having a highest response (which would, in the absence of noise, indicate a touch). An operation  1516  can then scale signals from neighboring sensors to the corresponding main sensor signal ( 1572 ). Neighbor sensors can be sensors physically proximate to the main sensor. In one embodiment, neighbor sensors can be sensor on opposing sides of a main sensor. A scaling operation can alter a sense value of a neighbor electrode based on how such an electrode varies from the main when a valid touch event occurs. 
         [0116]    In one very particular embodiment, scaling can be based on a mean value when a touch is present for an electrode. Sense values for neighboring electrodes can be scaled according to scaling factors as follows: 
         [0000]        k   A =( B   Tmean   /A   Tmean ), k   C =( B   Tmean   /C   Tmean ) 
         [0000]    where k A  is a scaling factor for a count value from an electrode A which is a neighbor of an electrode B, k C  is a scaling factor for a count value from an electrode C which is a neighbor of an electrode B opposite electrode A, and A Tmean , B Tmean , and C Tmean  are mean sense values derived from touches to such electrodes. 
         [0117]    Following a scaling of neighbor sensors, a median filter can be applied with respect to the main signal ( 1574 ). Such an action can include applying a median filter to sense values for electrodes. In one embodiment, a median filter can be applied to sensor signals from three consecutive time periods. A true touch event can provide an increase count value that may be sustained over multiple time periods. In contrast, local noise levels may vary in polarity over time. A median filter operation (e.g.,  1574 ) can be a first type of non-linear filtering that is performed. 
         [0118]    An operation  1516  can also include an adaptive jitter filter (AJF) operation ( 1576 ). An AJF operation (e.g.,  1576 ) can be another non-linear filter operation. One particular example of an AJF operation is described below in more detail. 
         [0119]    Following an AJF operation ( 1576 ), a previous scaling operation (e.g.,  1572 ) can be reversed. That is filtered sense values corresponding to neighbor sensors proximate a main sensor can be “unscaled” ( 1578 ). A resulting set of sense values can then be output  1580 . 
         [0120]      FIGS. 16A and 16B  show a determination of a main signal from electrodes according to an embodiment.  FIGS. 16A and 16B  show electrodes physically arranged into two groups, shown as slots  1684 - 0 / 1 . A sense operation can sense capacitance values for different slots with different sense operations. In one very particular embodiment, slots  1684 - 0 / 1  can be RX electrodes coupled to a same TX electrode(s) by a mutual capacitance. 
         [0121]      FIG. 16A  shows a sense operation that determines electrode  1688  has a highest response (count in this embodiment). Consequently, such an electrode can be considered a “main” electrode. Electrodes  1686  adjacent to main electrode  1688  can be considered neighbor electrodes. Sense values corresponding to neighbor electrodes  1686  can be scaled with respect to a sense value for main electrode. 
         [0122]      FIG. 16B  shows a sense operation in which main electrodes  1688  occur on ends of adjacent slots  1684 - 0 / 1 . In such an arrangement, a neighbor electrode  1686  for each main electrode can be an electrode in a different slot. 
         [0123]    Referring now to  FIGS. 17A and 17B , an AJF operation  1700  according to one embodiment is shown in flow diagram. An AJF can be one particular implementation of that shown as  1576  in  FIG. 15 . An AJF operation  1700  can perform filtering on a subset of electrodes based on average difference of such electrodes over time.  FIGS. 17A and 17B  are different portions of a flow diagram, with connections between the two shown as circled letters “a” and “b”. 
         [0124]    Referring first to  FIG. 17A , an AJF operation  1700  can include inputting arrays of current signal values, and previously generated filtered signal values ( 1702 ). In the embodiment shown, this can include inputting values Msig −1 {0 . . . k} which can be previous filtered values generated by an AJF operation  1700  for an electrode set (e.g., a slot), values Sig −1 {0 . . . k} which can be previously input sense values for the same electrode set (which in some embodiments can include scaling and/or median filtering), and values Sig{0 . . . k} which can be current input sense values for the same electrode set. 
         [0125]    Various values can be initialized to zero, including a positive disparity value sdp, a negative disparity value sdn, and iteration count values i and it ( 1704 ). As will be understood from the discussion below, a positive disparity value sdp can represent the degree of correlation in a positive change from a previous sense value set and current a sense value set. A negative disparity value sdn can represent a same correlation, but in the other (i.e., opposite polarity) direction. 
         [0126]    An operation  1700  can determine a difference between previous sense signals and current sense signals ( 1706 ). In the embodiment shown, an array Mdiff{0 . . . k} can be created that holds such values (referred to herein as difference values). 
         [0127]    An operation  1700  can then generate positive and negative disparity values utilizing such difference values ( 1708 ). In the embodiment shown, such an action can include determining if a difference between a previous sense value and its current level is positive, negative, or zero. A positive value will increase a positive disparity for the electrode set. Similarly, a negative value will decrease a negative disparity for the electrode set. In the embodiment shown, no difference in values (zero) can result in both positive and negative disparity values being increased. 
         [0128]    Once disparity values have been generated, an operation can then calculate an average sum of the differences between sense signal sets (i.e., current and previous set) ( 1710 ). A function “fix” can remove a fractional part of a number ( 1711 ). Such an average value is shown as th_av in the embodiment of  FIG. 17 . If an average difference (th_av) is above a threshold value (n from  1712 ), filtering can stop, and current set of input values Sig{0 . . . k} can be saved as filter values for a next filter operation and can be output as filtered values ( 1718 ,  1722 ,  1724 ). Such a threshold check can account from a multi-touch event occurring on the set of electrodes. 
         [0129]    If an average difference (th_av) is below a threshold value (y from  1712 ), disparity values can be compared against correlation limits ( 1714 ). If either (i.e., positive or negative) disparity value is sufficiently small (n from  1714 ) filtering can once again end, with the current set of input values Sig{0 . . . k} can be saved as filter values for a next filter operation and output as filtered values ( 1718 ,  1722 ,  1724 ). 
         [0130]    If an average difference (th_av) is below a threshold value and correlation between sense signal sets is high (y from  1714 ) an average difference value th_av can be compared against a minimum value (in this case 0) ( 1716 ). If there is little difference between sense signal sets (y from  1716 ), a current signal sense value set and previous filtered sense value set can be averaged to create a current filtered sense value set ( 1720 ). This set can be saved as filter values for a next filter operation and output as filtered values ( 1718 ,  1722 ,  1724 ). 
         [0131]    Referring now to  FIG. 17B , when an average difference value (th_av) and disparity values are within predetermined ranges, an operation  1700  can call a weighting function  1726 . A weighting function can increase sense values when a limited number of sense values in a set exceed a weighing threshold. A weighting function according to one particular embodiment will be described in more detail below. A weighting function can return a weighting value (delta_av) that can be used to weight sense values in a filtered set. 
         [0132]    If a weighting function indicates no weighting (i.e., delta_av=0) (y from  1728 ), filtering can stop, and current set of input values Sig{0 . . . k} can be saved as filter values for a next filter operation and output as filtered values ( 1718 ,  1722 ,  1724 ). 
         [0133]    If a weighting function provides a weighting value (i.e., delta_av≠0) (n from  1728 ), an operation can selectively weight current sense values based on polarities of a difference value and the weighting value (delta_av). In particular, if a difference value for an electrode has the same polarity as the weighting value (n from  1730 ), the sense value may not be weighted. 
         [0134]    However, if a difference value for an electrode has a different polarity than the weighting value (y from  1730 ), a magnitude of difference value can be compared to the weighting value ( 1732 ). If a magnitude of a difference is less than that of a weighting value (n from  1732 ), a multi-pass value can be checked to determine if the present operation is an initial pass ( 1734 ). If it is an initial weighting pass (n from  1734 ), an operation  1700  can continue to a next value of the set ( 1738 ). However, if it is a follow on weighting pass (y from  1734 ), a current value can be set to a previous filtered value, and an operation  1700  can continue to a next value of the set ( 1738 ). If the magnitude of a difference between sense values is greater than that of a weighting value (y from  1732 ), the weighting value can be subtracted from the current value ( 1740 ), and an operation  1700  can continue to a next value of the set ( 1738 ). 
         [0135]    When all sense values of a set have been examined for weighting, a difference set can be created from the weighted values ( 1742 ). A multi-pass value can then be checked to determine if the present operation is a last pass ( 1744 ). If the operation is not a last pass (y from  1744 ), a weighting function can be called again with the updated values. If the operation is a last pass (n from  1744 ), a current set of filtered values can be saved as filter values for a next operation and output as filtered values ( 1718 ,  1722 ,  1724 ). 
         [0136]    Referring now to  FIGS. 18A and 18B , a weighting function  1800  according to one embodiment is shown in flow diagram. A weighting function  1800  can be one particular implementation of that shown as  1726  in  FIG. 17 . A weighting function  1800  can weight sense values in a set of electrodes when limited numbers of electrodes in the set exceed a weight threshold.  FIGS. 18A and 18B  are different portions of a flow diagram, with a connection between the two shown as circled letter “a”. 
         [0137]    Referring first to  FIG. 18A , a weighting function  1800  can include inputting current filtered values Msig{0 . . . k} and difference values Mdiff{0 . . . k} ( 1846 ). A function  1800  can then examine a filtered value for each electrode in a set to see if it exceeds a weighting threshold (WTH). Each time a sense value exceeds a weighting threshold (WTH) a range value can be incremented ( 1848 ). Thus, a range value (range) can represent how many electrodes in a set exceed WTH. 
         [0138]    Once a range value is established, a weighting value can be initialized ( 1849 ). 
         [0139]    Each filtered value can be compared to a weighting threshold ( 1850 ). According to such a comparison, components of a resulting weighting value (delta_av) can be increased or decreased depending upon a range value. In the embodiment shown, if a range value outside of some minimum and maximum value (in the embodiment shown, less than or greater than two), a weighting component can be a difference value for the filtered value (delta_av=delta_av+Mdiff[i]). However, if a range value is within a predetermined range (in this embodiment, is “2”), a weighting component can be increased by multiplying by the difference value by a weighting factor (Nwg) (delta_av=delta_av+Nwg*Mdiff[i]). 
         [0140]    Once all filtered values have been compared and components for the weighting value added up, an average of the values can be generated  1852 . In the embodiment shown, fractional portions of weighting values can then be removed ( 1853 ). 
         [0141]    Referring now to  FIG. 18B , if a weighting value is zero (y from  1854 ) a weighting function can end, and a the weighting value (zero) can be provided as an output weighting value ( 1856 ) (for use in the AJF). If a weighting value is positive, a maximum difference value (Max) from the set of difference values can be determined ( 1856 ). If a weighting value (delta_av) is greater than a maximum value (Max), the weighting value can be set to the maximum value ( 1858 ). In a similar fashion, if a weighting value is negative, a minimum value (Min) from the set of difference values can be determined ( 1860 ). If a weighting value (delta_av) is greater than a minimum value (Min), the weighting value can be set to the minimum value ( 1862 ). 
         [0142]    A weighting value (delta_av) can then be bounded by a high limit value DF_MAX and low limit value DF_MIN ( 1864 ). If a weighting value (delta_av) is greater than high limit, it can be set to the high limit. Similarly, if a weighting value (delta_av) is less than low limit, it can be set to the low limit. 
         [0143]    The resulting weighting value can then be provided as an output weighting value ( 1856 ) (for use in the AJF). 
         [0144]    It is understood that  FIGS. 17A to 18B  show an AJF and weighting function according to a very particular embodiment. Alternate embodiments can realize such operations, or equivalent operation, with other circuits and/or architectures. 
         [0145]      FIG. 19  is a flow diagram showing another implementation of an AJF filter and weighting function like that shown in  FIGS. 17A to 18B .  FIG. 19  shows processing  1900  that includes a first section  1966  that can generate an average difference value (th_av), a positive disparity value (sdp), and negative disparity value (sdn), as described for  FIG. 17A . A second section  1970  can generate a weighting value (delta_av) like that described for FIGS.  18 A/B. A third section  1968  can generate filter output values as shown in  FIG. 17B . 
         [0146]    Referring now to  FIG. 20 , a median filter  2000  that can be included in the embodiments is shown in a flow diagram. A median filter  2000  can include inputting a set of sense values from consecutive sample periods (i.e., a sample window) ( 2003 ). In the particular embodiment of  FIG. 20 , a sample window is three. A median of the three values can be determined, and then provided as an output value ( 2005 ). 
         [0147]    Embodiments can be utilized in capacitance sense systems to reduce the adverse affects of noise local to a subset of all electrodes, such as that arising from external noise sources. 
         [0148]    Embodiments can improve capacitance sensing of a device when it is coupled to a charging device by filtering charger noise coupled to a touch object (e.g., finger). 
         [0149]    It should be appreciated that reference throughout this specification to “one embodiment” or “an embodiment” means that a particular feature, structure or characteristic described in connection with the embodiment is included in at least one embodiment of the present invention. Therefore, it is emphasized and should be appreciated that two or more references to “an embodiment” or “one embodiment” or “an alternative embodiment” in various portions of this specification are not necessarily all referring to the same embodiment. Furthermore, the particular features, structures or characteristics may be combined as suitable in one or more embodiments of the invention. 
         [0150]    Similarly, it should be appreciated that in the foregoing description of exemplary embodiments of the invention, various features of the invention are sometimes grouped together in a single embodiment, figure, or description thereof for the purpose of streamlining the disclosure aiding in the understanding of one or more of the various inventive aspects. This method of disclosure, however, is not to be interpreted as reflecting an intention that the claims require more features than are expressly recited in each claim. Rather, inventive aspects lie in less than all features of a single foregoing disclosed embodiment. Thus, the claims following the detailed description are hereby expressly incorporated into this detailed description, with each claim standing on its own as a separate embodiment of this invention.