Email: Password: Remember Me | Create Account (Free)

Back to Subject List

Old thread has been locked -- no new posts accepted in this thread
???
05/17/08 04:59
Read: times


 
#154833 - Here's my code
Responding to: ???'s previous message
This is for the LPC925, and is the combination of works from Code Architect and the SILABs code (thanks to original authours)

Please note that for some reason when posting some of the [-i-] stuff got converted to italics. I have gone through and added dashes before and after the [-i-] to make it look right but it won't compile obviously. Anyway you get the gist of it.


INT_DEC = 256
Marshall







void adc_isr ( void ) interrupt 14 using 1{

   static xdata unsigned int accumulator[ANALOG_INPUTS] ={0};
                                       // Here's where we integrate the
                                       // ADC samples from input AIN0.0
   static xdata unsigned int_dec=INT_DEC;   // Integrate/decimate counter
                                       		// we post a new result when
                                       		// int_dec = 0
   unsigned char i;


  // adc1 conversion complete?
  if (ADCON1 & 0x08)  {
    // clear ADCI1 flag
    ADCON1 &= ~0x08;
    
    // read results from AD1DAT0 - AD1DAT3
    //the inputs are swapped in the hardware so swapp them to correct order ASAP
    accumulator[0] += AD1DAT1;  // Read ADC value and add to running total
    accumulator[1] += AD1DAT0;  // Read ADC value and add to running total
    accumulator[2] += AD1DAT3;  // Read ADC value and add to running total
    accumulator[3] += AD1DAT2;  // Read ADC value and add to running total   

  
    int_dec--;                       // Update decimation counter
                                       // when last of the analog inputs
                                       // sampled
   

    if (int_dec == 0){                  // If zero, then post result
      int_dec = INT_DEC;               // Reset counter
      for(i=0; i<ANALOG_INPUTS; i++) {
         gui_AIResult[-i-] = accumulator[-i-] >> 4; //Copy decimated values into Result 
                                               //as we have added the result 256 times
                                               //we can shift only 4 bits to the right 
                                               //in order to get our extra 4bits of resolution
                                               //if we shift it 8 bits then we get an average of 
                                               //the last 256 samples.
                                               
         accumulator[-i-] = 0;          // Reset accumulators
         
  
         
		}
    }
  }







List of 41 messages in thread
TopicAuthorDate
ADC smoothing assistance...            01/01/70 00:00      
   Low-pass filter            01/01/70 00:00      
      How stabile is your power supply?            01/01/70 00:00      
         Not very, apparently.            01/01/70 00:00      
            Getting better...            01/01/70 00:00      
            To ground            01/01/70 00:00      
            Start by cleaning up the supply ...            01/01/70 00:00      
               Right!            01/01/70 00:00      
            Correction.            01/01/70 00:00      
               Maybe what you need is a low-impedance probe            01/01/70 00:00      
                  Springtime...            01/01/70 00:00      
                     yes, that looks like mine ... sort-of            01/01/70 00:00      
      Still listening...            01/01/70 00:00      
   Digital and Analog            01/01/70 00:00      
   try steady and more than minimum            01/01/70 00:00      
   ahhhhhh...........so its not only me!            01/01/70 00:00      
   is 2 lsb random error close enough?            01/01/70 00:00      
      Thanks...            01/01/70 00:00      
      Yep.....and that IS the final answer......            01/01/70 00:00      
      Don't truncate ...            01/01/70 00:00      
   LSB flickering            01/01/70 00:00      
      Erm ... not quite true.            01/01/70 00:00      
         Specific Case....            01/01/70 00:00      
            Should work in any case ...            01/01/70 00:00      
         Sorry, but you are entirely wrong...            01/01/70 00:00      
            You must know more about the flickering            01/01/70 00:00      
            I shouldn\\\'t post after a long workday ...            01/01/70 00:00      
   I need to chime in on this thread,,,,            01/01/70 00:00      
      throwing away bits            01/01/70 00:00      
      Integrate and Decimate            01/01/70 00:00      
         Here's my code            01/01/70 00:00      
            Where's the integration?            01/01/70 00:00      
         Dropping bits will not prevent flickering...            01/01/70 00:00      
            this confuses the issue            01/01/70 00:00      
               Immanent flickering            01/01/70 00:00      
                  I don't disagree ...            01/01/70 00:00      
                     Precision...            01/01/70 00:00      
   How I solved my Midi Controller LSB Flicker/Flutte            01/01/70 00:00      
      "Slack" same as hystersis            01/01/70 00:00      
         Sorry!            01/01/70 00:00      
      slack            01/01/70 00:00      

Back to Subject List