program for external ADC ADS8320 Based on the program for the SCP1000. Still figuring out timing issues

Dependencies:   mbed

main.cpp

Committer:
marcelvandekamp
Date:
2011-02-18
Revision:
0:918a2b064be6

File content as of revision 0:918a2b064be6:

#include "mbed.h"
#include "ads8320.h"


# define SAMPLENRS 7000
# define SAMPLES_SEC 161364
# define SAMPLERATE 9600

Serial pc(USBTX, USBRX);
ads8320 adsx8320(p5,p6,p7,p8);  
Serial lcd (p28, p27);
InterruptIn Potmeter(p23);
DigitalOut led(LED1);

void clear(void);
void Measure(void);
unsigned int samples[SAMPLENRS];
unsigned int average;
unsigned int sum;
Timer t;

int main() {
    Potmeter.rise(&Measure); //if P5 high, then measure
    while (1) {
        led = !led;
        wait(0.25);
        pc.printf("say something");
    }
}



void Measure() {
__disable_irq();
    unsigned int pause = (SAMPLES_SEC/SAMPLERATE) / SAMPLES_SEC;
    int c=0;
    clear();
    lcd.baud(9600);
    while (1) {

        t.reset();
        t.start();
       /* for (int i=0; i < SAMPLENRS; i++) {
            samples[i] = adsx8320.readTemperature();
            sum+= samples[i];
            wait(0.0001041);  //divider 0.0001355
        }*/
        pc.printf("waarde is: %u \n\r",adsx8320.readTemperature());
        t.stop();
        clear();
        average = sum/SAMPLENRS;
        //lcd.printf("gem is %u\n\r", average);
        //lcd.printf("t: %f \n\r", t.read());
        sum =0;
        wait(1);
        clear();
        average=0;
__enable_irq();

    }
}

void clear(void) {
    // lcd.putc(0xFE);
    lcd.putc(0x01);
    lcd.printf("                \n\r");
    lcd.printf("                \n\r");
}