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

Dependencies:   mbed

Committer:
marcelvandekamp
Date:
Fri Feb 18 13:46:46 2011 +0000
Revision:
0:918a2b064be6
V3

Who changed what in which revision?

UserRevisionLine numberNew contents of line
marcelvandekamp 0:918a2b064be6 1 #include "mbed.h"
marcelvandekamp 0:918a2b064be6 2 #include "ads8320.h"
marcelvandekamp 0:918a2b064be6 3
marcelvandekamp 0:918a2b064be6 4
marcelvandekamp 0:918a2b064be6 5 # define SAMPLENRS 7000
marcelvandekamp 0:918a2b064be6 6 # define SAMPLES_SEC 161364
marcelvandekamp 0:918a2b064be6 7 # define SAMPLERATE 9600
marcelvandekamp 0:918a2b064be6 8
marcelvandekamp 0:918a2b064be6 9 Serial pc(USBTX, USBRX);
marcelvandekamp 0:918a2b064be6 10 ads8320 adsx8320(p5,p6,p7,p8);
marcelvandekamp 0:918a2b064be6 11 Serial lcd (p28, p27);
marcelvandekamp 0:918a2b064be6 12 InterruptIn Potmeter(p23);
marcelvandekamp 0:918a2b064be6 13 DigitalOut led(LED1);
marcelvandekamp 0:918a2b064be6 14
marcelvandekamp 0:918a2b064be6 15 void clear(void);
marcelvandekamp 0:918a2b064be6 16 void Measure(void);
marcelvandekamp 0:918a2b064be6 17 unsigned int samples[SAMPLENRS];
marcelvandekamp 0:918a2b064be6 18 unsigned int average;
marcelvandekamp 0:918a2b064be6 19 unsigned int sum;
marcelvandekamp 0:918a2b064be6 20 Timer t;
marcelvandekamp 0:918a2b064be6 21
marcelvandekamp 0:918a2b064be6 22 int main() {
marcelvandekamp 0:918a2b064be6 23 Potmeter.rise(&Measure); //if P5 high, then measure
marcelvandekamp 0:918a2b064be6 24 while (1) {
marcelvandekamp 0:918a2b064be6 25 led = !led;
marcelvandekamp 0:918a2b064be6 26 wait(0.25);
marcelvandekamp 0:918a2b064be6 27 pc.printf("say something");
marcelvandekamp 0:918a2b064be6 28 }
marcelvandekamp 0:918a2b064be6 29 }
marcelvandekamp 0:918a2b064be6 30
marcelvandekamp 0:918a2b064be6 31
marcelvandekamp 0:918a2b064be6 32
marcelvandekamp 0:918a2b064be6 33 void Measure() {
marcelvandekamp 0:918a2b064be6 34 __disable_irq();
marcelvandekamp 0:918a2b064be6 35 unsigned int pause = (SAMPLES_SEC/SAMPLERATE) / SAMPLES_SEC;
marcelvandekamp 0:918a2b064be6 36 int c=0;
marcelvandekamp 0:918a2b064be6 37 clear();
marcelvandekamp 0:918a2b064be6 38 lcd.baud(9600);
marcelvandekamp 0:918a2b064be6 39 while (1) {
marcelvandekamp 0:918a2b064be6 40
marcelvandekamp 0:918a2b064be6 41 t.reset();
marcelvandekamp 0:918a2b064be6 42 t.start();
marcelvandekamp 0:918a2b064be6 43 /* for (int i=0; i < SAMPLENRS; i++) {
marcelvandekamp 0:918a2b064be6 44 samples[i] = adsx8320.readTemperature();
marcelvandekamp 0:918a2b064be6 45 sum+= samples[i];
marcelvandekamp 0:918a2b064be6 46 wait(0.0001041); //divider 0.0001355
marcelvandekamp 0:918a2b064be6 47 }*/
marcelvandekamp 0:918a2b064be6 48 pc.printf("waarde is: %u \n\r",adsx8320.readTemperature());
marcelvandekamp 0:918a2b064be6 49 t.stop();
marcelvandekamp 0:918a2b064be6 50 clear();
marcelvandekamp 0:918a2b064be6 51 average = sum/SAMPLENRS;
marcelvandekamp 0:918a2b064be6 52 //lcd.printf("gem is %u\n\r", average);
marcelvandekamp 0:918a2b064be6 53 //lcd.printf("t: %f \n\r", t.read());
marcelvandekamp 0:918a2b064be6 54 sum =0;
marcelvandekamp 0:918a2b064be6 55 wait(1);
marcelvandekamp 0:918a2b064be6 56 clear();
marcelvandekamp 0:918a2b064be6 57 average=0;
marcelvandekamp 0:918a2b064be6 58 __enable_irq();
marcelvandekamp 0:918a2b064be6 59
marcelvandekamp 0:918a2b064be6 60 }
marcelvandekamp 0:918a2b064be6 61 }
marcelvandekamp 0:918a2b064be6 62
marcelvandekamp 0:918a2b064be6 63 void clear(void) {
marcelvandekamp 0:918a2b064be6 64 // lcd.putc(0xFE);
marcelvandekamp 0:918a2b064be6 65 lcd.putc(0x01);
marcelvandekamp 0:918a2b064be6 66 lcd.printf(" \n\r");
marcelvandekamp 0:918a2b064be6 67 lcd.printf(" \n\r");
marcelvandekamp 0:918a2b064be6 68 }