initial commit

Files at this revision

API Documentation at this revision

Comitter:
Vkadaba
Date:
Tue Aug 20 12:19:31 2019 +0000
Parent:
17:2f0028880874
Child:
19:09d58952b65d
Commit message:
Added No excitation current config in host firmware

Changed in this revision

inc/admw1001/ADMW1001_REGISTERS_typedefs.h Show annotated file Show diff for this revision Revisions of this file
inc/admw1001/admw1001_config.h 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
sensor0_typeK_cjc0_config.c Show annotated file Show diff for this revision Revisions of this file
sensor2_bridge_4w_load_cell_config.c Show annotated file Show diff for this revision Revisions of this file
src/admw_1001.c Show annotated file Show diff for this revision Revisions of this file
--- a/inc/admw1001/ADMW1001_REGISTERS_typedefs.h	Wed Aug 07 06:46:25 2019 +0000
+++ b/inc/admw1001/ADMW1001_REGISTERS_typedefs.h	Tue Aug 20 12:19:31 2019 +0000
@@ -1233,15 +1233,16 @@
  *  ========================================================================= */
 typedef enum
 {
-  CORE_CHANNEL_EXCITATION_EXTERNAL    = 0,  /**< External Current Sourced */
-  CORE_CHANNEL_EXCITATION_RESERVED    = 1,  /**< Reserved                 */
-  CORE_CHANNEL_EXCITATION_IEXC_10UA   = 2,  /**< 10 \mu;A                 */
-  CORE_CHANNEL_EXCITATION_RESERVED2   = 3,  /**< Reserved                 */
-  CORE_CHANNEL_EXCITATION_IEXC_50UA   = 4,  /**< 50 \mu;A                 */
-  CORE_CHANNEL_EXCITATION_IEXC_100UA  = 5,  /**< 100 \mu;A                */
-  CORE_CHANNEL_EXCITATION_IEXC_250UA  = 6,  /**< 250 \mu;A                */
-  CORE_CHANNEL_EXCITATION_IEXC_500UA  = 7,  /**< 500 \mu;A                */
-  CORE_CHANNEL_EXCITATION_IEXC_1000UA = 8   /**< 1000 \mu;A               */
+  CORE_CHANNEL_EXCITATION_NONE =-1,  /**< No External  urrent Source */
+  CORE_CHANNEL_EXCITATION_EXTERNAL    = 0,  /**< External Current Sourced   */
+  CORE_CHANNEL_EXCITATION_RESERVED    = 1,  /**< Reserved                   */
+  CORE_CHANNEL_EXCITATION_IEXC_10UA   = 2,  /**< 10 \mu;A                   */
+  CORE_CHANNEL_EXCITATION_RESERVED2   = 3,  /**< Reserved                   */
+  CORE_CHANNEL_EXCITATION_IEXC_50UA   = 4,  /**< 50 \mu;A                   */
+  CORE_CHANNEL_EXCITATION_IEXC_100UA  = 5,  /**< 100 \mu;A                  */
+  CORE_CHANNEL_EXCITATION_IEXC_250UA  = 6,  /**< 250 \mu;A                  */
+  CORE_CHANNEL_EXCITATION_IEXC_500UA  = 7,  /**< 500 \mu;A                  */
+  CORE_CHANNEL_EXCITATION_IEXC_1000UA = 8   /**< 1000 \mu;A                 */
 } ADMW_CORE_Channel_Excitation_IOUT_Excitation_Current;
 
 
--- a/inc/admw1001/admw1001_config.h	Wed Aug 07 06:46:25 2019 +0000
+++ b/inc/admw1001/admw1001_config.h	Tue Aug 20 12:19:31 2019 +0000
@@ -220,6 +220,8 @@
  */
 typedef enum
 {
+    ADMW1001_ADC_EXC_STATE_OFF=-1,
+    /*!< Excitation for measurement is off*/
     ADMW1001_ADC_EXC_STATE_ALWAYS_ON,
     /*!< Excitation for measurement is always on */
     ADMW1001_ADC_EXC_STATE_CYCLE_POWER,
@@ -234,6 +236,8 @@
  */
 typedef enum
 {
+    ADMW1001_ADC_NO_EXTERNAL_EXC_CURRENT = -1,
+    /*!< NO External excitation is provided */ 
     ADMW1001_ADC_EXC_CURRENT_EXTERNAL = 0,
     /*!< External excitation is provided */ 
     ADMW1001_ADC_EXC_CURRENT_50uA,
--- a/main.cpp	Wed Aug 07 06:46:25 2019 +0000
+++ b/main.cpp	Tue Aug 20 12:19:31 2019 +0000
@@ -94,7 +94,7 @@
 extern ADMW_CONFIG sensor2_bridge_4w_load_cell_config;
 extern ADMW_CONFIG config;
 /* Change the following pointer to select any of the configurations above */
-static ADMW_CONFIG *pSelectedConfig = &config;
+static ADMW_CONFIG *pSelectedConfig = &sensor2_bridge_4w_load_cell_config;
 
 static ADMW_CONNECTION connectionInfo = PLATFORM_CONNECTION_INFO;
 
--- a/sensor0_typeK_cjc0_config.c	Wed Aug 07 06:46:25 2019 +0000
+++ b/sensor0_typeK_cjc0_config.c	Tue Aug 20 12:19:31 2019 +0000
@@ -1,99 +1,137 @@
-/*
-Copyright 2019 (c) Analog Devices, Inc.
+/*!
+ ******************************************************************************
+ * @file:   config.c
+ * @brief:
+ *-----------------------------------------------------------------------------
+ *
+Copyright (c) 2018 Analog Devices, Inc.
 
 All rights reserved.
 
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are met:
-  - Redistributions of source code must retain the above copyright
-    notice, this list of conditions and the following disclaimer.
-  - Redistributions in binary form must reproduce the above copyright
-    notice, this list of conditions and the following disclaimer in
-    the documentation and/or other materials provided with the
-    distribution.
+Redistribution and use in source and binary forms, with or without modification,
+are permitted provided that the following conditions are met:
+  - Redistributions of source code must retain the above copyright notice,
+    this list of conditions and the following disclaimer.
+  - Redistributions in binary form must reproduce the above copyright notice,
+    this list of conditions and the following disclaimer in the documentation
+    and/or other materials provided with the distribution.
+  - Modified versions of the software must be conspicuously marked as such.
+  - This software is licensed solely and exclusively for use with processors
+    manufactured by or for Analog Devices, Inc.
+  - This software may not be combined or merged with other code in any manner
+    that would cause the software to become subject to terms and conditions
+    which differ from those listed here.
   - Neither the name of Analog Devices, Inc. nor the names of its
     contributors may be used to endorse or promote products derived
     from this software without specific prior written permission.
-  - The use of this software may or may not infringe the patent rights
-    of one or more patent holders. This license does not release you
-    from the requirement that you obtain separate licenses from these
-    patent holders to use this software.
-  - Use of the software either in source or binary form, must be run
-    on or directly connected to an Analog Devices Inc. component.
+  - The use of this software may or may not infringe the patent rights of one
+    or more patent holders.  This license does not release you from the
+    requirement that you obtain separate licenses from these patent holders
+    to use this software.
 
-THIS SOFTWARE IS PROVIDED BY ANALOG DEVICES "AS IS" AND ANY EXPRESS OR
-IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, NON-INFRINGEMENT,
-MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
-IN NO EVENT SHALL ANALOG DEVICES BE LIABLE FOR ANY DIRECT, INDIRECT,
-INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-LIMITED TO, INTELLECTUAL PROPERTY RIGHTS, PROCUREMENT OF SUBSTITUTE GOODS OR
-SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
-CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
-OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+THIS SOFTWARE IS PROVIDED BY ANALOG DEVICES, INC. AND CONTRIBUTORS "AS IS" AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, NON-INFRINGEMENT,
+TITLE, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN
+NO EVENT SHALL ANALOG DEVICES, INC. OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
+INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, PUNITIVE OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, DAMAGES ARISING OUT OF CLAIMS OF INTELLECTUAL
+PROPERTY RIGHTS INFRINGEMENT; PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
+OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
+EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  *
  *****************************************************************************/
 
-/*!
- ******************************************************************************
- * @file:
- * @brief:
- *-----------------------------------------------------------------------------
- */
-#include "admw_config_types.h"
+#include "inc/admw_config_types.h"
 
-ADMW_CONFIG sensor0_typeK_cjc0_config = {
+ADMW_CONFIG sensor0_typeK_cjc0_config= {
     .versionId = { .major = 2, .minor = 0 },
     .productId = ADMW_PRODUCT_ID_ADMW1001,
     .admw1001 = {
-        .power = {
-            .powerMode = ADMW1001_POWER_MODE_ACTIVE,
-        },
-        .measurement = {
-            .operatingMode = ADMW1001_OPERATING_MODE_SINGLECYCLE,
-            .dataReadyMode = ADMW1001_DATAREADY_PER_CYCLE,
-        },
-        .channels = {
-            [ADMW1001_CH_ID_ANLG_1_UNIVERSAL] = {
-                .enableChannel = true,
-                .disablePublishing = false,
-                .compensationChannel = ADMW1001_CH_ID_NONE,
-                .measurementUnit = ADMW1001_MEASUREMENT_UNIT_CELSIUS,
-                .measurementsPerCycle = 10,
-                .extraSettlingTime = 0,
-                .adcChannelConfig = {
-                    .sensor = ADMW1001_ADC_SENSOR_RTD_2WIRE_PT100,
-                    .gain = ADMW1001_ADC_GAIN_8X,
-                    .current = {
-                        .outputLevel = ADMW1001_ADC_EXC_CURRENT_250uA,
+            .power = {
+                .powerMode = ADMW1001_POWER_MODE_ACTIVE,
+            },
+            .measurement = {
+                .operatingMode = ADMW1001_OPERATING_MODE_SINGLECYCLE,
+                .dataReadyMode = ADMW1001_DATAREADY_PER_CYCLE, // FIX: Temporarily all values from json are hardcoded to this one in the Contracts.FileGenerator - > file translations!!
+                .cycleInterval = 0,
+                .vBiasEnable = true,
+            },
+            .diagnostics = {
+                .disableGlobalDiag = true,
+                .disableMeasurementDiag = true,
+                .osdFrequency = ADMW1001_OPEN_SENSOR_DIAGNOSTICS_DISABLED,
+            },
+            .channels = {
+                [ADMW1001_CH_ID_ANLG_1_UNIVERSAL] = {
+                    .enableChannel = true,
+                    .disablePublishing = false,
+                    .compensationChannel = ADMW1001_CH_ID_NONE,
+                    .lutSelect = ADMW1001_LUT_DEFAULT,
+                    .measurementUnit = ADMW1001_MEASUREMENT_UNIT_CELSIUS,
+                    .lowThreshold = -50,
+                    .highThreshold = 250,
+                    .offsetAdjustment = 0.0,
+                    .gainAdjustment = 0.0,
+                    .sensorParameter = 0.0,
+                    .measurementsPerCycle = 1,
+                    .cycleSkipCount = 0,
+                    .extraSettlingTime = 0,
+                    .priority = 0,
+                    .adcChannelConfig = {
+                        .sensor = ADMW1001_ADC_SENSOR_RTD_2WIRE_PT100,
+                        .rtdCurve = ADMW1001_ADC_RTD_CURVE_EUROPEAN,
+                        .gain = ADMW1001_ADC_GAIN_1X,
+                        .current = {
+                            .excitationState= ADMW1001_ADC_EXC_STATE_ALWAYS_ON,
+                            .outputLevel = ADMW1001_ADC_EXC_CURRENT_250uA,
+                            .diodeRatio = 0,
+                        },
+                        .filter = {
+                            .type = ADMW1001_ADC_FILTER_SINC3,
+                            .sf = ADMW1001_SF_8P24HZ,
+                            .chopMode = ADMW1001_CHOP_MD_SW,
+                            .notch1p2 = false,
+                            .groundSwitch = ADMW1001_ADC_GND_SW_OPEN
+                        },
+                        .reference = ADMW1001_ADC_REFERENCE_VOLTAGE_INTERNAL,
                     },
-                    .filter = {
-                        .type = ADMW1001_ADC_FILTER_SINC3,
-                    },
-                    .reference = {
-                       ADMW1001_ADC_REFERENCE_VOLTAGE_INTERNAL,
+                },
+                [ADMW1001_CH_ID_ANLG_1_DIFFERENTIAL] = {
+                    .enableChannel = true,
+                    .disablePublishing = false,
+                    .compensationChannel = ADMW1001_CH_ID_ANLG_1_UNIVERSAL,
+                    .lutSelect = ADMW1001_LUT_DEFAULT,
+                    .measurementUnit = ADMW1001_MEASUREMENT_UNIT_CELSIUS,
+                    .lowThreshold = -50,
+                    .highThreshold = 250,
+                    .offsetAdjustment = 0.0,
+                    .gainAdjustment = 0.0,
+                    .sensorParameter = 0.0,
+                    .measurementsPerCycle = 1,
+                    .cycleSkipCount = 0,
+                    .extraSettlingTime = 4499.99986449257,
+                    .priority = 0,
+                    .adcChannelConfig = {
+                        .sensor = ADMW1001_ADC_SENSOR_THERMOCOUPLE_K,
+                        .rtdCurve = ADMW1001_ADC_RTD_CURVE_EUROPEAN,
+                        .gain = ADMW1001_ADC_GAIN_8X,
+                        .current = {
+                            .excitationState= ADMW1001_ADC_EXC_STATE_OFF,
+                            .outputLevel = ADMW1001_ADC_NO_EXTERNAL_EXC_CURRENT,
+                            .diodeRatio = 0,
+                        },
+                        .filter = {
+                            .type = ADMW1001_ADC_FILTER_SINC3,
+                            .sf = ADMW1001_SF_8P24HZ,
+                            .chopMode = ADMW1001_CHOP_MD_SW,
+                            .notch1p2 = false,
+                            .groundSwitch = ADMW1001_ADC_GND_SW_OPEN
+                        },
+                        .reference = ADMW1001_ADC_REFERENCE_VOLTAGE_INTERNAL,
                     },
                 },
             },
-            [ADMW1001_CH_ID_ANLG_1_DIFFERENTIAL] = {
-                .enableChannel = true,
-                .disablePublishing = false,
-                .compensationChannel = ADMW1001_CH_ID_ANLG_1_UNIVERSAL,
-                .measurementUnit = ADMW1001_MEASUREMENT_UNIT_CELSIUS,
-                .measurementsPerCycle = 10,
-                .extraSettlingTime = 0,
-                .adcChannelConfig = {
-                    .sensor = ADMW1001_ADC_SENSOR_THERMOCOUPLE_K,
-                    .gain = ADMW1001_ADC_GAIN_32X,
-                    .filter = {
-                        .type = ADMW1001_ADC_FILTER_SINC3,
-                    },
-                    .reference = {
-                     ADMW1001_ADC_REFERENCE_VOLTAGE_INTERNAL,
-                    },
-                },
-            },
-        },
     },
 };
-
--- a/sensor2_bridge_4w_load_cell_config.c	Wed Aug 07 06:46:25 2019 +0000
+++ b/sensor2_bridge_4w_load_cell_config.c	Tue Aug 20 12:19:31 2019 +0000
@@ -63,7 +63,7 @@
         .channels = {
                 [ADMW1001_CH_ID_ANLG_2_UNIVERSAL] = {
                         .enableChannel = true,
-                .measurementsPerCycle = 1,
+                .measurementsPerCycle = 10,
                         .extraSettlingTime = 0.00050000002374872565,
                 .disablePublishing = false,
                         
@@ -74,18 +74,18 @@
                     .sensor = ADMW1001_ADC_SENSOR_BRIDGE_4WIRE_1,
                     .gain = ADMW1001_ADC_GAIN_8X,
                     .current = {
-                        .excitationState = ADMW1001_ADC_EXC_STATE_ALWAYS_ON,
-                                .outputLevel = ADMW1001_ADC_EXC_CURRENT_250uA,
+                        .excitationState = ADMW1001_ADC_EXC_STATE_OFF,
+                                .outputLevel = ADMW1001_ADC_NO_EXTERNAL_EXC_CURRENT,
                     },
                     .filter = {
                         .type = ADMW1001_ADC_FILTER_SINC3,
                         .sf = 125,
-                        .chopMode = true,
+                        .chopMode = ADMW1001_CHOP_MD_SW,
                         .notch1p2 = false,
                         .groundSwitch = ADMW1001_ADC_GND_SW_CLOSED,
                     },
                     .reference = {
-                         ADMW1001_ADC_REFERENCE_VOLTAGE_INTERNAL,
+                         ADMW1001_ADC_REFERENCE_VOLTAGE_AVDD,
                     },
                 },
             },
--- a/src/admw_1001.c	Wed Aug 07 06:46:25 2019 +0000
+++ b/src/admw_1001.c	Tue Aug 20 12:19:31 2019 +0000
@@ -1573,10 +1573,11 @@
 
     channelExcitationReg.VALUE16 = REG_RESET_VAL(CORE_CHANNEL_EXCITATIONn);
 
-
-    if (pCurrentConfig->outputLevel == ADMW1001_ADC_EXC_CURRENT_EXTERNAL)
+    if (pCurrentConfig->outputLevel == ADMW1001_ADC_NO_EXTERNAL_EXC_CURRENT)
+        channelExcitationReg.IOUT_Excitation_Current = CORE_CHANNEL_EXCITATION_NONE;
+    else if (pCurrentConfig->outputLevel == ADMW1001_ADC_EXC_CURRENT_EXTERNAL)
         channelExcitationReg.IOUT_Excitation_Current = CORE_CHANNEL_EXCITATION_EXTERNAL;
-    if (pCurrentConfig->outputLevel == ADMW1001_ADC_EXC_CURRENT_50uA)
+    else if (pCurrentConfig->outputLevel == ADMW1001_ADC_EXC_CURRENT_50uA)
         channelExcitationReg.IOUT_Excitation_Current = CORE_CHANNEL_EXCITATION_IEXC_50UA;
     else if (pCurrentConfig->outputLevel == ADMW1001_ADC_EXC_CURRENT_100uA)
         channelExcitationReg.IOUT_Excitation_Current = CORE_CHANNEL_EXCITATION_IEXC_100UA;
@@ -1593,6 +1594,7 @@
         return ADMW_INVALID_PARAM;
     }
 
+
     
     switch(pCurrentConfig->diodeRatio) {
     case ADMW1001_ADC_EXC_CURRENT_IOUT_DIODE_10UA_100UA: