15kHz with multiplexing

Dependencies:   FastAnalogIn mbed

Files at this revision

API Documentation at this revision

Comitter:
keithbehrman
Date:
Fri Feb 17 20:37:32 2017 +0000
Child:
1:8e7e9ef6b0bd
Commit message:
15Khz code with multiplexing

Changed in this revision

FastAnalogIn.lib Show annotated file Show diff for this revision Revisions of this file
main.cpp Show annotated file Show diff for this revision Revisions of this file
mbed.bld Show annotated file Show diff for this revision Revisions of this file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/FastAnalogIn.lib	Fri Feb 17 20:37:32 2017 +0000
@@ -0,0 +1,1 @@
+http://mbed.org/users/Sissors/code/FastAnalogIn/#46fbc645de4d
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/main.cpp	Fri Feb 17 20:37:32 2017 +0000
@@ -0,0 +1,106 @@
+#include "mbed.h"
+#include "FastAnalogIn.h"
+
+
+FastAnalogIn ain(p20); //Analog Input to PDmux
+DigitalOut LEDout(p8); //5V output to LED mux
+DigitalOut LEDmux0(p9); //s0
+DigitalOut LEDmux1(p10); //s1
+DigitalOut LEDmux2(p11); //s2
+DigitalOut LEDmux3(p12); //s3
+
+DigitalOut PDmux0(p14); //s0
+DigitalOut PDmux1(p15); //s1
+DigitalOut PDmux2(p16); //s2
+DigitalOut PDmux3(p17); //s3
+
+
+
+double alpha; //dummy variable for ADC
+
+
+int main()
+{
+//   double ADCtime=.000000116; //1.6 us
+    double time=.000029;  // ~15kHz
+//    double time=.0000029; //100 kHz
+//    double time=.003;
+
+    //counters for various while loops
+    int mPD=0;
+    int nPD=0;
+    int mLED=0;
+    int nLED=0;
+    int pd=0;
+    int i=0;
+
+    //boolean bits for multiplexing
+    LEDmux0=0;
+    LEDmux1=0;
+    LEDmux2=0;
+    LEDmux3=0; //MSB is always 0
+    PDmux0=0;
+    PDmux1=0;
+    PDmux2=0;
+    PDmux3=0;  //MSB is always 0
+
+
+    //while loop that runs continously through code to constantly give measuremtn while MCU is on
+    while(1) {
+
+
+        //loop to mux through the 8 photodiodes
+        while(pd<8) {
+            //loop will take 5 measurements for the selected LED/PD combo
+            while(i<5) {
+                LEDout = 1;
+                alpha=ain.read();
+                wait(time);
+
+                LEDout = 0;
+                alpha=ain.read();
+                wait(time);
+                i++;
+            }
+            i=0;
+
+            PDmux0=!PDmux0; //flip LSB
+
+            //flips 2nd bit every other cycle
+            if (mPD==1) {
+                PDmux1=!PDmux1;
+                mPD=0;
+            } else {
+                mPD++;
+            }
+
+            //flips 3rd bit after every 4th cycle
+            if (nPD==3) {
+                PDmux2=!PDmux2;
+                nPD=0;
+            } else {
+                nPD++;
+            }
+            pd++;
+        }
+        pd=0;
+
+        //same multiplexing code above, but for LEDs
+        LEDmux0=!LEDmux0;
+
+        if (mLED==1) {
+            LEDmux1=!LEDmux1;
+            mLED=0;
+        } else {
+            mLED++;
+        }
+
+        if (nLED==3) {
+            LEDmux2=!LEDmux2;
+            nLED=0;
+        } else {
+            nLED++;
+        }
+
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mbed.bld	Fri Feb 17 20:37:32 2017 +0000
@@ -0,0 +1,1 @@
+http://mbed.org/users/mbed_official/code/mbed/builds/ad3be0349dc5
\ No newline at end of file