test AnalogIn_Diff.lib for board K64F

Dependencies:   AnalogIn_Diff_ok mbed

Committer:
fblanc
Date:
Thu Jul 10 14:44:30 2014 +0000
Revision:
1:c340607e4661
Parent:
0:9eeda5b17b5b
Child:
2:bf4f474ff746
min et max OK

Who changed what in which revision?

UserRevisionLine numberNew contents of line
fblanc 0:9eeda5b17b5b 1 #include "mbed.h"
fblanc 0:9eeda5b17b5b 2 #include "math.h"
fblanc 0:9eeda5b17b5b 3 #include "MovingAverage.h"
fblanc 0:9eeda5b17b5b 4 //USBSerial pc;
fblanc 1:c340607e4661 5 #define max(a,b) (a>=b?a:b)
fblanc 1:c340607e4661 6 #define min(a,b) (a<=b?a:b)
fblanc 1:c340607e4661 7 struct {
fblanc 1:c340607e4661 8 double gain;
fblanc 1:c340607e4661 9 double offset;
fblanc 0:9eeda5b17b5b 10 //AnalogIn adc;
fblanc 1:c340607e4661 11 } adc_volt,adc_curr;
fblanc 0:9eeda5b17b5b 12 Serial pc(USBTX, USBRX);
fblanc 0:9eeda5b17b5b 13 AnalogIn adc_1(PTB2);
fblanc 0:9eeda5b17b5b 14 AnalogIn adc_2(PTB3);
fblanc 0:9eeda5b17b5b 15 Ticker flipperADC;
fblanc 0:9eeda5b17b5b 16 DigitalOut led1(LED_RED);
fblanc 0:9eeda5b17b5b 17 DigitalOut led2(LED_GREEN);
fblanc 0:9eeda5b17b5b 18 DigitalOut led3(LED_BLUE);
fblanc 1:c340607e4661 19 MovingAverage<float> Trms_float(100,230);
fblanc 1:c340607e4661 20 //MovingAverage<int> Trms_int(100,0);
fblanc 1:c340607e4661 21 float min=250000;
fblanc 1:c340607e4661 22 float max=0;
fblanc 1:c340607e4661 23 bool min_OK=false;
fblanc 1:c340607e4661 24 void flipADC()
fblanc 1:c340607e4661 25 {
fblanc 1:c340607e4661 26 float val;
fblanc 0:9eeda5b17b5b 27 led1=1;
fblanc 0:9eeda5b17b5b 28 int val_i32=adc_2.read_u16()-adc_1.read_u16(); //read ADC
fblanc 0:9eeda5b17b5b 29
fblanc 1:c340607e4661 30 val=((float)val_i32*adc_volt.gain)-adc_volt.offset;
fblanc 1:c340607e4661 31 Trms_float.Insert(val*val);
fblanc 1:c340607e4661 32 val=Trms_float.GetAverage();
fblanc 1:c340607e4661 33 max=max(val,max);
fblanc 1:c340607e4661 34 if(min_OK==true)
fblanc 1:c340607e4661 35 min=min(val,min);
fblanc 1:c340607e4661 36 led1=0;
fblanc 1:c340607e4661 37 }
fblanc 0:9eeda5b17b5b 38
fblanc 1:c340607e4661 39 int main()
fblanc 1:c340607e4661 40 {
fblanc 0:9eeda5b17b5b 41 led1=1;
fblanc 0:9eeda5b17b5b 42 led2=0;
fblanc 0:9eeda5b17b5b 43 led3=1;
fblanc 1:c340607e4661 44 pc.baud(115200);
fblanc 1:c340607e4661 45 adc_volt.gain=129.0*3.3/65535.0;
fblanc 1:c340607e4661 46 adc_volt.offset=0.0;
fblanc 1:c340607e4661 47
fblanc 1:c340607e4661 48 flipperADC.attach_us(&flipADC, 200); //200µs
fblanc 1:c340607e4661 49 wait (1);
fblanc 1:c340607e4661 50 min_OK=true;
fblanc 0:9eeda5b17b5b 51 while (true) {
fblanc 1:c340607e4661 52
fblanc 0:9eeda5b17b5b 53
fblanc 0:9eeda5b17b5b 54 led3=1;
fblanc 0:9eeda5b17b5b 55
fblanc 1:c340607e4661 56 pc.printf("RMS=%0.1f \r\n",sqrt(Trms_float.GetAverage()));
fblanc 1:c340607e4661 57 pc.printf("min=%0.1f max=%0.1f\r\n",sqrt(min),sqrt(max));
fblanc 0:9eeda5b17b5b 58 led3=0;
fblanc 1:c340607e4661 59 wait (1);
fblanc 0:9eeda5b17b5b 60 }
fblanc 0:9eeda5b17b5b 61 }