A collection of Analog Devices drivers for the mbed platform

For additional information check out the mbed page of the Analog Devices wiki: https://wiki.analog.com/resources/tools-software/mbed-drivers-all

Revision:
4:5c1b28aff7e1
Parent:
3:1a8c14043a4e
Child:
11:2e67c719ce37
--- a/examples/cn0357_example/main.cpp	Fri Apr 01 10:53:41 2016 +0300
+++ b/examples/cn0357_example/main.cpp	Tue Apr 19 17:55:14 2016 +0300
@@ -44,7 +44,6 @@
 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 *
 ********************************************************************************/
-
 #include "mbed.h"
 #include "cn0357.h"
 
@@ -88,9 +87,9 @@
  @param fdata2   - Gas Concentration reading to be displayed
 
  **/
-void display_data(uint16_t ui16Data, float fData1, float fdata2)
+void display_data(uint8_t ui8Status_Reg, uint16_t ui16Data, float fData1, float fdata2)
 {
-
+    pc.printf("\r\nStatus Register value: 0x%x", ui8Status_Reg);
     pc.printf("\r\nADC Data Register Value = %#08x", ui16Data); /** Send valid ADC data register value*/
     pc.printf("\r\nADC Input Voltage input = %f V", fData1); /** Send valid voltage input value */
     pc.printf("\r\nGas Concentration = %f PPM", fdata2); /** Send valid gas concentration value */
@@ -98,35 +97,46 @@
     pc.printf("\r\n");
 }
 
-
 /**
  * Project entry-point - initializes the CN0357 shield, reads the data when the ADC is ready and outputs the sensor
  * value in PPM
  */
+
+#define SINGLE_CONVERSION
+//#define CONTINOUS_CONVERSION
+
 int main()
 {
     /* Main variables */
-
+    CN0357 cn0357;
+    uint8_t ui8Status_Reg = 0;
+#ifdef SINGLE_CONVERSION
+    cn0357.init(SENSOR_RANGE, SENSOR_SENSITIVITY);
+#elif defined CONTINOUS_CONVERSION
+    cn0357.init(SENSOR_RANGE, SENSOR_SENSITIVITY, CN0357::INTERNAL_AD7790, 0x00, 0x07);
+#else
+#error define SINGLE_CONVERSION or CONTINOUS_CONVERSION, but not both
+#endif
 
-    CN0357 cn0357;
-    cn0357.init(SENSOR_RANGE, SENSOR_SENSITIVITY);
 
     /* Infinite loop */
     while (1) {
+        wait_ms(1000);
+#ifdef CONTINOUS_CONVERSION
+        ui8Status_Reg = cn0357.read_adc_status(); //  Read ADC Status Register        //
 
-        uint8_t ui8Status_Reg = cn0357.read_adc_status(); //  Read ADC Status Register
-
-        if (ui8Status_Reg == 0x08) { //  Checks if ADC data is available
+        if (ui8Status_Reg != 0x08) { //  Checks if ADC data is available
+            pc.printf("\r\nStatus Register value: 0x%x", ui8Status_Reg);
+        } else
+#endif
+        {
             uint16_t ui16Adcdata = cn0357.read_sensor();
             float fAdcVoltage    = cn0357.data_to_voltage(ui16Adcdata); //  Convert ADC data to voltage
             float fConcentration = cn0357.calc_ppm(fAdcVoltage); //  Convert voltage to Gas concentration
-            display_data(ui16Adcdata, fAdcVoltage, fConcentration); //  Display data thru UART
-
-            // printf("OneshotRead: %f PPM \r\n", cn0357.readPPM());
+            display_data(ui8Status_Reg, ui16Adcdata, fAdcVoltage, fConcentration); //  Display data thru UART
         }
+    }
 
-        wait_ms(1000);
-    }
 
     /* Infinite loop, never returns. */
 }