SLAA475A October   2010  – March 2019 MSP430L092

 

  1.   MSP430x09x Analog Pool: Feature Set and Advanced Use
    1.     Trademarks
    2. 1 MSP430x09x Overview
    3. 2 Analog Pool (A-Pool)
      1. 2.1  Input Dividers
      2. 2.2  Internal Reference
      3. 2.3  Starting and Stopping the A-Pool
      4. 2.4  Comparator Function
      5. 2.5  8-Bit DAC Function
      6. 2.6  8-Bit ADC Function
        1. 2.6.1 ADC Conversion Using Ramp
          1. 2.6.1.1 ADC Conversion Without Error Compensation
          2. 2.6.1.2 ADC Conversions With Overdrive Compensation
          3. 2.6.1.3 ADC Conversions With Offset Compensation
          4. 2.6.1.4 ADC Conversions With Overall Compensation
          5. 2.6.1.5 Windowed ADC Conversion
        2. 2.6.2 ADC Conversion Using SAR
        3. 2.6.3 Multiple ADC Conversions
        4. 2.6.4 Comparison Between Different Measurement Methods
        5. 2.6.5 Error Dependencies
      7. 2.7  SVM Function
      8. 2.8  Use of Multiple Features
      9. 2.9  Temperature Measurements With the A-Pool
      10. 2.10 Fractional and Integer Number Use
      11. 2.11 APINTB and APFRACTB Use With ATBU and EOCBU
      12. 2.12 A-Pool Trigger Sources
      13. 2.13 Filtering ADC Conversions With Digital Filters
    4. 3 Summary
    5. 4 References
  2.   Revision History

Filtering ADC Conversions With Digital Filters

For ADC conversions that use the ADC ramp mechanism, it can make sense to use the internal digital filter to get more stable values. To do so, the digital filters must be triggered each time the measurement method is changed. Similar to the comparator function, the application must provide an additional write to LCMP of the APCNF register. The following code shows how this can be done.

#include "msp430l092.h" void main( void ) { // Stop watchdog timer to prevent time out reset WDTCTL = WDTPW + WDTHOLD; APCNF = CMPON+DBON+CONVON+APREFON+DFSET_1; // Enable comparator on + // Enable DAC buffer + // Enable conversion + // Enable reference + ... . ... _BIS_SR(GIE); // Switch on global interrupts APCTL = APPSEL0+APPSEL2+OSEL+CBSTP+SBSTP; // Set DAC buffer output to PSEL + // Enable DAC buffer + // Enable conversion + // Enable reverence + // Select output buffer + // Enable Comparator based stop + // Enable Saturation based stop + APCNF |= LCMP; // Trigger filter again APCTL |= RUNSTOP; // Start conversion _BIS_SR(LPM0); // Go to LPM0 ...

As a side effect, the filter can increase the deviation of the measured values depending on the selected filter settings. This must be taken into account when using these measured values. These filter methods also manage any possible deviation from the filter itself.

When the SAR logic is used for measurement, filtering is not useful, because of the way the SAR logic works. Wrong measurement values are the consequence of using filters in combination with the SAR logic.