# Cypress Developer CommunityTM

## How does the averaging modes work on adc?

Summary: 17 Replies, Latest post by danaaknight on 18 Feb 2014 06:04 AM PST
User
23 posts

Averaging Mode
This parameter sets how the averaging mode operates. If the accumulate option is selected,
each ADC result is added to the sum and allowed to grow until the sum attempts to outgrow a 16
bit value, at which point it is truncated. If the Fixed Resolution mode is selected, the LSb is
truncated so that the value does not grow beyond the maximum value for the given resolution.

Can someone give me an example of these 2 options?

User
2551 posts

OK, just to make some initial assumptions: the alternate ADC resolution is configured to 10 bits (so we have a range of 0..1023), and the number of averaged samples is 256. Also, for the sake of easy calculation, assume that all samples read 512.

Then what happens is (when a channel is configured to use averaging): 256 samples are taken, and their values are added together.

In 'accumulate mode' this will be 256 times the value 512. This means that at the 126th sample, the result will overflow to 0 (128*512=65536), the same happens with the last sample (so the final result is 0).

In 'fixed resolution' mode, the 8 LSBs are truncated, and only the two leftmost bits are added (which happens to be '2' in our case). So we get a result of 256*2=512

Now assume we average only 64 samples. In the 'accumulate' case we get a result of 64*512=32768, which we would need to divide by 64 again. In 'fixed resolution' mode, the 6 leftmost bits are truncated, so we get a result of 64*8=512.

Now the results will be a little bit different when the samples all have different values. Then the 'accumulate' mode with subsequent division might deliver more accurate results, since the LSBs are taken into account. But one needs to be careful not to run into an overflow situation (so the resolution and the number of samples should be checked).

User
7646 posts

If you go here -

Normal
0

false
false
false

EN-US
X-NONE
X-NONE

MicrosoftInternetExplorer4

/* Style Definitions */
table.MsoNormalTable
{mso-style-name:"Table Normal";
mso-tstyle-rowband-size:0;
mso-tstyle-colband-size:0;
mso-style-noshow:yes;
mso-style-priority:99;
mso-style-qformat:yes;
mso-style-parent:"";
mso-para-margin-top:0in;
mso-para-margin-right:0in;
mso-para-margin-bottom:10.0pt;
mso-para-margin-left:0in;
line-height:115%;
mso-pagination:widow-orphan;
font-size:11.0pt;
font-family:"Calibri","sans-serif";
mso-ascii-font-family:Calibri;
mso-ascii-theme-font:minor-latin;
mso-fareast-font-family:"Times New Roman";
mso-fareast-theme-font:minor-fareast;
mso-hansi-font-family:Calibri;
mso-hansi-theme-font:minor-latin;}

there is an Architecture TRM manual you can download, and an extensive chapter

in the analog section on the SAR including its avergaing modes and the registers

that control them.

Regards, Dana.

User
7646 posts

Maybe I am not reading this correctly but I think there is not any

situation where overflow can occur from averaging. From TRM -

User
7646 posts

Paste did not work, see attached.

Regards, Dana.

Attachments:
User
406 posts

Something I do not see the difference (((

Attachments:
User
9244 posts

One mode will give you the sum of n samples,

the other mode truly returns the average which is (sum of n Samples) / n

Bob

User
2551 posts

The second one is more like

sum of n (Samples / n)

where the /n part is done by right-shifting the values before the addition. So this looses some precision.

User
406 posts

Bob, I think have to make your way to the averaging result (GlidingAVRG)

Attachments:
User
9244 posts

Hmmm, GLIDING average with k samples is more like

AVn+1 = (AVn * (k-1) + Sample) / k

Do you agree?

Bob

User
7646 posts

Some considerations and alternatives -

Normal
0

false
false
false

EN-US
X-NONE
X-NONE

MicrosoftInternetExplorer4

/* Style Definitions */
table.MsoNormalTable
{mso-style-name:"Table Normal";
mso-tstyle-rowband-size:0;
mso-tstyle-colband-size:0;
mso-style-noshow:yes;
mso-style-priority:99;
mso-style-qformat:yes;
mso-style-parent:"";
mso-para-margin-top:0in;
mso-para-margin-right:0in;
mso-para-margin-bottom:10.0pt;
mso-para-margin-left:0in;
line-height:115%;
mso-pagination:widow-orphan;
font-size:11.0pt;
font-family:"Calibri","sans-serif";
mso-ascii-font-family:Calibri;
mso-ascii-theme-font:minor-latin;
mso-fareast-font-family:"Times New Roman";
mso-fareast-theme-font:minor-fareast;
mso-hansi-font-family:Calibri;
mso-hansi-theme-font:minor-latin;}

http://www.chem.uoa.gr/applets/appletsmooth/appl_smooth2.html

Regards, Dana.