aboutsummaryrefslogtreecommitdiffstats
path: root/PICCode.X/bufferlib.c
blob: 4768c9531f89e330bd1fa2fcfe4f495ef8736f98 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
#include "xc.h"

#define BUFFERSIZE 32

volatile int write = 0, numE = 0;
volatile unsigned int buffer[BUFFERSIZE];

    void putVal(int newValue) {       // add a new value to the buffer
        buffer[write++] = newValue;
        write %= BUFFERSIZE;
        
        if (numE < BUFFERSIZE) {
            ++numE;
        }
    }
    
    int getAvg() {                    // average all buffer values
        unsigned long int sum = 0;
        unsigned int avg;
        
        int i;
        for (i = 0; i < BUFFERSIZE; i++) {
            sum += buffer[i];
        }
        avg = sum/numE;
        
        return(avg);
    }
    
    void initBuffer() {              // set all buffer values to zero
        int i;
        for(i = 0; i < BUFFERSIZE; i++) {
            buffer[i] = 0;
        }
    }