initial commit

Files at this revision

API Documentation at this revision

Comitter:
Vkadaba
Date:
Tue Jan 07 05:45:58 2020 +0000
Parent:
42:c9c5a22e539e
Child:
44:94bdfaefddac
Commit message:
Added CycleTime units in seconds Added global scopes for .excitationState and .groundSwitch on mbed and added same on all config files

Changed in this revision

bridge_4w_load_cell_config.c Show annotated file Show diff for this revision Revisions of this file
inc/admw1001/ADMW1001_REGISTERS.h Show annotated file Show diff for this revision Revisions of this file
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
multichannel_continuous_config.c Show annotated file Show diff for this revision Revisions of this file
multichannel_singlecycle_config.c Show annotated file Show diff for this revision Revisions of this file
rtd_3w_pt100_config.c Show annotated file Show diff for this revision Revisions of this file
rtd_4w_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
thermocouple_typeJ_cjc0_config.c Show annotated file Show diff for this revision Revisions of this file
thermocouple_typeK_cjc0_config.c Show annotated file Show diff for this revision Revisions of this file
thermocouple_typeT_cjc0_config.c Show annotated file Show diff for this revision Revisions of this file
--- a/bridge_4w_load_cell_config.c	Tue Dec 10 09:00:11 2019 +0000
+++ b/bridge_4w_load_cell_config.c	Tue Jan 07 05:45:58 2020 +0000
@@ -52,6 +52,7 @@
         .measurement = {
             .operatingMode = ADMW1001_OPERATING_MODE_CONTINUOUS,
             .dataReadyMode = ADMW1001_DATAREADY_PER_CYCLE, // FIX: Temporarily all values from json are hardcoded to this one in the Contracts.FileGenerator - > file translations!!
+            .groundSwitch = ADMW1001_ADC_GND_SW_CLOSED,
             .cycleInterval = 0,
             .RSenseValue = 1000.0,
         },
@@ -84,7 +85,6 @@
                         .sf = ADMW1001_SF_8P24HZ,
                         .chopMode = ADMW1001_CHOP_MD_SW,
                         .notch1p2 = true,
-                        .groundSwitch = ADMW1001_ADC_GND_SW_CLOSED
                     },
                     .reference = ADMW1001_ADC_REFERENCE_VOLTAGE_AVDD,
                     .bufferBypass = ADMW1001_BUFFER_BYPASSS_DISABLED,
--- a/inc/admw1001/ADMW1001_REGISTERS.h	Tue Dec 10 09:00:11 2019 +0000
+++ b/inc/admw1001/ADMW1001_REGISTERS.h	Tue Jan 07 05:45:58 2020 +0000
@@ -755,16 +755,24 @@
 /* -------------------------------------------------------------------------------------------------------------------------
           CORE_CYCLE_CONTROL                   Pos/Masks         Description
    ------------------------------------------------------------------------------------------------------------------------- */
+#define BITP_CORE_CYCLE_CONTROL_PST_MEAS_EXC_CTRL 15            /*  Disable Current Sources After Measurement Completes */
 #define BITP_CORE_CYCLE_CONTROL_CYCLE_TIME_UNITS 14            /*  Units for Cycle Time */
 #define BITP_CORE_CYCLE_CONTROL_VBIAS        13            /*  Voltage Bias Global Enable */
+#define BITP_CORE_CYCLE_CONTROL_GND_SW_CTRL  12            /*  Ground Switch Cycle Control */
 #define BITP_CORE_CYCLE_CONTROL_CYCLE_TIME    0            /*  Time Between Measurement Cycles */
+#define BITM_CORE_CYCLE_CONTROL_PST_MEAS_EXC_CTRL 0x00008000    /*  Disable Current Sources After Measurement Completes */
 #define BITM_CORE_CYCLE_CONTROL_CYCLE_TIME_UNITS 0x00004000    /*  Units for Cycle Time */
 #define BITM_CORE_CYCLE_CONTROL_VBIAS        0x00002000    /*  Voltage Bias Global Enable */
+#define BITM_CORE_CYCLE_CONTROL_GND_SW_CTRL  0x00001000    /*  Ground Switch Cycle Control */
 #define BITM_CORE_CYCLE_CONTROL_CYCLE_TIME   0x00000FFF    /*  Time Between Measurement Cycles */
+#define ENUM_CORE_CYCLE_CONTROL_POWERCYCLE   0x00000000
+#define ENUM_CORE_CYCLE_CONTROL_ALWAYSON     0x00008000
 #define ENUM_CORE_CYCLE_CONTROL_MILLISECONDS 0x00000000            /*  Cycle_Time_Units: Milli-seconds */
 #define ENUM_CORE_CYCLE_CONTROL_SECONDS      0x00004000            /*  Cycle_Time_Units: Seconds */
 #define ENUM_CORE_CYCLE_CONTROL_VBIAS_DISABLE 0x00000000            /*  Vbias: Vbias disabled */
 #define ENUM_CORE_CYCLE_CONTROL_VBIAS_ENABLE 0x00002000            /*  Vbias: Enable Vbias output for the duration of a cycle */
+#define ENUM_CORE_CYCLE_CONTROL_CLOSE_SW     0x00000000            /*  GND_SW_CTRL: Ground Switch Closed */
+#define ENUM_CORE_CYCLE_CONTROL_CYCLE_SW     0x00001000            /*  GND_SW_CTRL: Ground Switch Opens outside of measurement cycle to conserve power */
 
 /* -------------------------------------------------------------------------------------------------------------------------
           CORE_FIFO_NUM_CYCLES                 Pos/Masks         Description
@@ -1029,31 +1037,23 @@
           CORE_MEASUREMENT_SETUP[n]            Pos/Masks         Description
    ------------------------------------------------------------------------------------------------------------------------- */
 #define BITP_CORE_MEASUREMENT_SETUP_BUFFER_BYPASS 15            /*  Disable Buffers */
-#define BITP_CORE_MEASUREMENT_SETUP_GND_SW   13            /*  Ground Switch Selection */
 #define BITP_CORE_MEASUREMENT_SETUP_ADC_FILTER_TYPE 12            /*  ADC Digital Filter Type */
 #define BITP_CORE_MEASUREMENT_SETUP_CHOP_MODE 10            /*  Enabled and Disable Chop Mode */
-#define BITP_CORE_MEASUREMENT_SETUP_PST_MEAS_EXC_CTRL  9            /*  Disable Current Sources After Measurement Completes */
 #define BITP_CORE_MEASUREMENT_SETUP_NOTCH_EN_2  8            /*  Enable Notch 2 Filter Mode */
 #define BITP_CORE_MEASUREMENT_SETUP_ADC_SF    0            /*  ADC Digital Filter Speed */
 #define BITM_CORE_MEASUREMENT_SETUP_BUFFER_BYPASS 0x00008000    /*  Disable Buffers */
-#define BITM_CORE_MEASUREMENT_SETUP_GND_SW   0x00006000    /*  Ground Switch Selection */
 #define BITM_CORE_MEASUREMENT_SETUP_ADC_FILTER_TYPE 0x00001000    /*  ADC Digital Filter Type */
 #define BITM_CORE_MEASUREMENT_SETUP_CHOP_MODE 0x00000C00    /*  Enabled and Disable Chop Mode */
-#define BITM_CORE_MEASUREMENT_SETUP_PST_MEAS_EXC_CTRL 0x00000200    /*  Disable Current Sources After Measurement Completes */
 #define BITM_CORE_MEASUREMENT_SETUP_NOTCH_EN_2 0x00000100    /*  Enable Notch 2 Filter Mode */
 #define BITM_CORE_MEASUREMENT_SETUP_ADC_SF   0x0000007F    /*  ADC Digital Filter Speed */
 #define ENUM_CORE_MEASUREMENT_SETUP_BUFFERS_ENABLED 0x00000000            /*  Buffer_Bypass: Input buffers enabled */
 #define ENUM_CORE_MEASUREMENT_SETUP_BUFFERS_DISABLED 0x00008000            /*  Buffer_Bypass: Input buffers disabled */
-#define ENUM_CORE_MEASUREMENT_SETUP_GND_SW_OPEN 0x00000000            /*  GND_SW: GND_SW Open. The ground switch is not enabled for the sensor measurement */
-#define ENUM_CORE_MEASUREMENT_SETUP_GND_SW_CLOSED 0x00002000            /*  GND_SW: GND_SW Closed. The ground switch is enabled for the sensor measurement, bit wiil Remain Closed After the Measurement */
 #define ENUM_CORE_MEASUREMENT_SETUP_ENABLE_SINC4 0x00000000            /*  ADC_Filter_Type: Enabled SINC4 filter */
 #define ENUM_CORE_MEASUREMENT_SETUP_ENABLE_SINC3 0x00001000            /*  ADC_Filter_Type: Enabled SINC3 filter */
 #define ENUM_CORE_MEASUREMENT_SETUP_DISABLE_CHOP 0x00000000            /*  Chop_Mode: ADC front end chopping disabled */
 #define ENUM_CORE_MEASUREMENT_SETUP_HW_CHOP  0x00000400            /*  Chop_Mode: Hardware chopping enabled */
 #define ENUM_CORE_MEASUREMENT_SETUP_SW_CHOP  0x00000800            /*  Chop_Mode: SW chop enabled */
 #define ENUM_CORE_MEASUREMENT_SETUP_HW_SW_CHOP 0x00000C00            /*  Chop_Mode: Hardware and software chop enabled */
-#define ENUM_CORE_MEASUREMENT_SETUP_POWERCYCLE 0x00000000
-#define ENUM_CORE_MEASUREMENT_SETUP_ALWAYSON 0x00000200
 #define ENUM_CORE_MEASUREMENT_SETUP_NOTCH_DIS 0x00000000            /*  NOTCH_EN_2: Disable notch filter */
 #define ENUM_CORE_MEASUREMENT_SETUP_NOTCH_EN 0x00000100            /*  NOTCH_EN_2: Enable notch 2 filter option. */
 
--- a/inc/admw1001/ADMW1001_REGISTERS_typedefs.h	Tue Dec 10 09:00:11 2019 +0000
+++ b/inc/admw1001/ADMW1001_REGISTERS_typedefs.h	Tue Jan 07 05:45:58 2020 +0000
@@ -534,6 +534,16 @@
  */
 
 /*  =========================================================================
+ *! \enum   ADMW_CORE_Cycle_Control_GND_SW_CTRL
+ *! \brief  Ground Switch Cycle Control (GND_SW_CTRL) Enumerations
+ *  ========================================================================= */
+typedef enum
+{
+  CORE_CYCLE_CONTROL_CLOSE_SW = 0,  /**< Ground Switch Closed                                               */
+  CORE_CYCLE_CONTROL_CYCLE_SW = 1   /**< Ground Switch Opens outside of measurement cycle to conserve power */
+} ADMW_CORE_Cycle_Control_GND_SW_CTRL;
+
+/*  =========================================================================
  *! \enum   ADMW_CORE_Cycle_Control_Vbias
  *! \brief  Voltage Bias Global Enable (Vbias) Enumerations
  *  ========================================================================= */
@@ -554,6 +564,15 @@
   CORE_CYCLE_CONTROL_SECONDS      = 1   /**< Seconds       */
 } ADMW_CORE_Cycle_Control_Cycle_Time_Units;
 
+/*  =========================================================================
+ *! \enum   ADMW_CORE_Cycle_Control_PST_MEAS_EXC_CTRL
+ *! \brief  Disable Current Sources After Measurement Completes (PST_MEAS_EXC_CTRL) Enumerations
+ *  ========================================================================= */
+typedef enum
+{
+  CORE_CYCLE_CONTROL_POWERCYCLE = 0,  /**<  */
+  CORE_CYCLE_CONTROL_ALWAYSON   = 1   /**<  */
+} ADMW_CORE_Cycle_Control_PST_MEAS_EXC_CTRL;
 
 /* ==========================================================================
  *! \struct ADMW_CORE_Cycle_Control_Struct
@@ -563,10 +582,10 @@
   union {
     struct {
       uint16_t Cycle_Time : 12;  /**< Time Between Measurement Cycles */
-      uint16_t reserved12 :  1;
+      uint16_t GND_SW_CTRL :  1;  /**< Ground Switch Cycle Control */
       uint16_t Vbias      :  1;  /**< Voltage Bias Global Enable */
       uint16_t Cycle_Time_Units :  1;  /**< Units for Cycle Time */
-      uint16_t reserved15       :  1;
+      uint16_t PST_MEAS_EXC_CTRL :  1;  /**< Disable Current Sources After Measurement Completes */
     };
     uint16_t VALUE16;
   };
@@ -741,6 +760,27 @@
 } ADMW_CORE_External_Voltage_Reference_t;
 
 /*@}*/
+
+/** @defgroup AVDD_Voltage AVDD Voltage (AVDD_Voltage) Register
+ *  AVDD Voltage (AVDD_Voltage) Register.
+ *  @{
+ */
+
+/* ==========================================================================
+ *! \struct ADMW_CORE_AVDD_Voltage_Struct
+ *! \brief  AVDD Voltage Register bit field structure
+ * ========================================================================== */
+typedef struct _ADMW_CORE_AVDD_Voltage_t {
+  union {
+    struct {
+      float Avdd_Voltage;  /**< AVDD Voltage */
+    };
+    float VALUE32;
+  };
+} ADMW_CORE_AVDD_Voltage_t;
+
+/*@}*/
+
 /** @defgroup Diagnostics_Control Diagnostic Control (Diagnostics_Control) Register
  *  Diagnostic Control (Diagnostics_Control) Register.
  *  @{
@@ -1204,18 +1244,6 @@
   CORE_MEASUREMENT_SETUP_NOTCH_EN  = 1   /**< Enable notch 2 filter option. */
 } ADMW_CORE_Measurement_Setup_NOTCH_EN_2;
 
-
-/*  =========================================================================
- *! \enum   ADMW_CORE_Measurement_Setup_PST_MEAS_EXC_CTRL
- *! \brief  Disable Current Sources After Measurement Completes (PST_MEAS_EXC_CTRL) Enumerations
- *  ========================================================================= */
-typedef enum
-{
-  CORE_MEASUREMENT_SETUP_POWERCYCLE = 0,  /**<  */
-  CORE_MEASUREMENT_SETUP_ALWAYSON   = 1   /**<  */
-} ADMW_CORE_Measurement_Setup_PST_MEAS_EXC_CTRL;
-
-
 /*  =========================================================================
  *! \enum   ADMW_CORE_Measurement_Setup_Chop_Mode
  *! \brief  Enabled and Disable Chop Mode (Chop_Mode) Enumerations
@@ -1241,17 +1269,6 @@
 
 
 /*  =========================================================================
- *! \enum   ADMW_CORE_Measurement_Setup_GND_SW
- *! \brief  Ground Switch Selection (GND_SW) Enumerations
- *  ========================================================================= */
-typedef enum
-{
-  CORE_MEASUREMENT_SETUP_GND_SW_OPEN   = 0,  /**< GND_SW Open. The ground switch is not enabled for the sensor measurement                                             */
-  CORE_MEASUREMENT_SETUP_GND_SW_CLOSED = 1   /**< GND_SW Closed. The ground switch is enabled for the sensor measurement, bit wiil Remain Closed After the Measurement */
-} ADMW_CORE_Measurement_Setup_GND_SW;
-
-
-/*  =========================================================================
  *! \enum   ADMW_CORE_Measurement_Setup_Buffer_Bypass
  *! \brief  Disable Buffers (Buffer_Bypass) Enumerations
  *  ========================================================================= */
@@ -1272,12 +1289,12 @@
       uint32_t ADC_SF     :  7;  /**< ADC Digital Filter Speed */
       uint32_t reserved7  :  1;
       uint32_t NOTCH_EN_2 :  1;  /**< Enable Notch 2 Filter Mode */
-      uint32_t PST_MEAS_EXC_CTRL :  1;  /**< Disable Current Sources After Measurement Completes */
-      uint32_t Chop_Mode         :  2;  /**< Enabled and Disable Chop Mode */
-      uint32_t ADC_Filter_Type   :  1;  /**< ADC Digital Filter Type */
-      uint32_t GND_SW            :  2;  /**< Ground Switch Selection */
-      uint32_t Buffer_Bypass     :  1;  /**< Disable Buffers */
-      uint32_t reserved16        : 16;
+      uint32_t reserved9  :  1;
+      uint32_t Chop_Mode  :  2;  /**< Enabled and Disable Chop Mode */
+      uint32_t ADC_Filter_Type :  1;  /**< ADC Digital Filter Type */
+      uint32_t reserved13      :  2;
+      uint32_t Buffer_Bypass   :  1;  /**< Disable Buffers */
+      uint32_t reserved16      : 16;
     };
     uint32_t VALUE32;
   };
--- a/inc/admw1001/admw1001_config.h	Tue Dec 10 09:00:11 2019 +0000
+++ b/inc/admw1001/admw1001_config.h	Tue Jan 07 05:45:58 2020 +0000
@@ -463,7 +463,11 @@
      *   configurations, settling time is always skipped between consecutive
      *   measurements in a measurement cycle.
      */
-    uint8_t                     reserved0[3];
+    ADMW1001_ADC_EXC_STATE                excitationState;
+    /*!< Excitation current state */
+    ADMW1001_ADC_GND_SW                         groundSwitch;
+    /*!< Option to open or close sensor ground switch */         
+    uint8_t                     reserved0;
     /*!< Reserved for future use and ensure word alignment.
      */
     uint32_t                    cycleInterval;
@@ -495,8 +499,6 @@
  *        specific sensor types
  */
 typedef struct {
-    ADMW1001_ADC_EXC_STATE                excitationState;
-    /*!< Excitation current state */
     ADMW1001_ADC_EXC_CURRENT              outputLevel;
     /*!< Excitation current output level */
     ADMW1001_ADC_EXC_CURRENT_DIODE_RATIO  diodeRatio;
@@ -517,9 +519,6 @@
     /*!< Enable filter chop */
     bool                        notch1p2;
     /*!< Enable Notch 2 Filter Mode */
-    ADMW1001_ADC_GND_SW         groundSwitch;
-    /*!< Option to open or close sensor ground switch */
-
 }   ADMW1001_ADC_FILTER_CONFIG;
 
 /*! ADMW1001 ADC analog channel configuration details
--- a/multichannel_continuous_config.c	Tue Dec 10 09:00:11 2019 +0000
+++ b/multichannel_continuous_config.c	Tue Jan 07 05:45:58 2020 +0000
@@ -42,7 +42,7 @@
 #include "admw_config_types.h"
 
 ADMW_CONFIG multichannel_continuous_config = {
-    .versionId = { .major = 2, .minor = 0 },
+     .versionId = { .major = 2, .minor = 0 },
     .productId = ADMW_PRODUCT_ID_ADMW1001,
     .admw1001 = {
         .power = {
@@ -52,9 +52,13 @@
             .externalRefVoltage=0.0,
             .operatingMode = ADMW1001_OPERATING_MODE_CONTINUOUS,
             .dataReadyMode = ADMW1001_DATAREADY_PER_CYCLE, // FIX: Temporarily all values from json are hardcoded to this one in the Contracts.FileGenerator - > file translations!!
+            .excitationState= ADMW1001_ADC_EXC_STATE_ALWAYS_ON,                
+            .groundSwitch = ADMW1001_ADC_GND_SW_CLOSED,             
+            .excitationState= ADMW1001_ADC_EXC_STATE_CYCLE_POWER,                
+            .groundSwitch = ADMW1001_ADC_GND_SW_OPEN,              
             .cycleInterval = 0,
             .vBiasEnable = true,
-            .RSenseValue = 1000.0,
+            .RSenseValue = 1000.0,          
         },
         .diagnostics = {
             .disableGlobalDiag = true,
@@ -82,7 +86,6 @@
                     .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,
                     },
@@ -91,7 +94,6 @@
                         .sf = ADMW1001_SF_8P24HZ,
                         .chopMode = ADMW1001_CHOP_MD_SW,
                         .notch1p2 = false,
-                        .groundSwitch = ADMW1001_ADC_GND_SW_OPEN
                     },
                     .reference = ADMW1001_ADC_REFERENCE_VOLTAGE_INTERNAL,
                     .bufferBypass = ADMW1001_BUFFER_BYPASSS_DISABLED,
@@ -117,7 +119,6 @@
                     .rtdCurve = ADMW1001_ADC_RTD_CURVE_EUROPEAN,
                     .gain = ADMW1001_ADC_GAIN_8X,
                     .current = {
-                        .excitationState= ADMW1001_ADC_EXC_STATE_CYCLE_POWER,
                         .outputLevel = ADMW1001_ADC_NO_EXTERNAL_EXC_CURRENT,
                         .diodeRatio = 0,
                     },
@@ -126,7 +127,6 @@
                         .sf = ADMW1001_SF_8P24HZ,
                         .chopMode = ADMW1001_CHOP_MD_SW,
                         .notch1p2 = false,
-                        .groundSwitch = ADMW1001_ADC_GND_SW_OPEN
                     },
                     .reference = ADMW1001_ADC_REFERENCE_VOLTAGE_INTERNAL,
                     .bufferBypass = ADMW1001_BUFFER_BYPASSS_DISABLED,
--- a/multichannel_singlecycle_config.c	Tue Dec 10 09:00:11 2019 +0000
+++ b/multichannel_singlecycle_config.c	Tue Jan 07 05:45:58 2020 +0000
@@ -52,6 +52,8 @@
             .externalRefVoltage=0.0,
             .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!!
+            .excitationState= ADMW1001_ADC_EXC_STATE_CYCLE_POWER,                
+            .groundSwitch = ADMW1001_ADC_GND_SW_OPEN,             
             .cycleInterval = 0,
             .vBiasEnable = true,
             .RSenseValue = 1000.0,
@@ -82,7 +84,6 @@
                     .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,
                     },
@@ -91,7 +92,6 @@
                         .sf = ADMW1001_SF_8P24HZ,
                         .chopMode = ADMW1001_CHOP_MD_SW,
                         .notch1p2 = false,
-                        .groundSwitch = ADMW1001_ADC_GND_SW_OPEN
                     },
                     .reference = ADMW1001_ADC_REFERENCE_VOLTAGE_INTERNAL,
                     .bufferBypass = ADMW1001_BUFFER_BYPASSS_DISABLED,
@@ -117,7 +117,6 @@
                     .rtdCurve = ADMW1001_ADC_RTD_CURVE_EUROPEAN,
                     .gain = ADMW1001_ADC_GAIN_8X,
                     .current = {
-                        .excitationState= ADMW1001_ADC_EXC_STATE_CYCLE_POWER,
                         .outputLevel = ADMW1001_ADC_NO_EXTERNAL_EXC_CURRENT,
                         .diodeRatio = 0,
                     },
@@ -126,7 +125,6 @@
                         .sf = ADMW1001_SF_8P24HZ,
                         .chopMode = ADMW1001_CHOP_MD_SW,
                         .notch1p2 = false,
-                        .groundSwitch = ADMW1001_ADC_GND_SW_OPEN
                     },
                     .reference = ADMW1001_ADC_REFERENCE_VOLTAGE_INTERNAL,
                     .bufferBypass = ADMW1001_BUFFER_BYPASSS_DISABLED,
--- a/rtd_3w_pt100_config.c	Tue Dec 10 09:00:11 2019 +0000
+++ b/rtd_3w_pt100_config.c	Tue Jan 07 05:45:58 2020 +0000
@@ -53,6 +53,8 @@
         .externalRefVoltage =0.0,
             .operatingMode = ADMW1001_OPERATING_MODE_CONTINUOUS,
             .dataReadyMode = ADMW1001_DATAREADY_PER_CYCLE, // FIX: Temporarily all values from json are hardcoded to this one in the Contracts.FileGenerator - > file translations!!
+            .excitationState= ADMW1001_ADC_EXC_STATE_CYCLE_POWER,                
+            .groundSwitch = ADMW1001_ADC_GND_SW_OPEN,              
             .cycleInterval = 0,
             .vBiasEnable = false,
         .RSenseValue = 1000.0, 
@@ -83,7 +85,6 @@
                     .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,
                     },
@@ -92,7 +93,6 @@
                         .sf = ADMW1001_SF_8P24HZ,
                         .chopMode = ADMW1001_CHOP_MD_SW,
                         .notch1p2 = false,
-                        .groundSwitch = ADMW1001_ADC_GND_SW_OPEN
                     },
                     .reference = ADMW1001_ADC_REFERENCE_VOLTAGE_INTERNAL,
                 },
--- a/rtd_4w_config.c	Tue Dec 10 09:00:11 2019 +0000
+++ b/rtd_4w_config.c	Tue Jan 07 05:45:58 2020 +0000
@@ -53,6 +53,8 @@
             .externalRefVoltage = 0.0,
             .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!!
+            .excitationState= ADMW1001_ADC_EXC_STATE_CYCLE_POWER,                
+            .groundSwitch = ADMW1001_ADC_GND_SW_OPEN,             
             .cycleInterval = 0,
             .RSenseValue = 1000.0, 
         },
@@ -81,7 +83,6 @@
                     .sensor = ADMW1001_ADC_SENSOR_RTD_4WIRE_PT100,
                     .gain = ADMW1001_ADC_GAIN_1X,
                     .current = {
-                        .excitationState= ADMW1001_ADC_EXC_STATE_ALWAYS_ON,
                         .outputLevel = ADMW1001_ADC_EXC_CURRENT_250uA,
                         .diodeRatio = 0,
                     },
@@ -91,7 +92,6 @@
                         .sf = ADMW1001_SF_8P24HZ,
                         .chopMode = ADMW1001_CHOP_MD_SW,
                         .notch1p2 = true,
-                        .groundSwitch = ADMW1001_ADC_GND_SW_OPEN
                     },
                     .reference = ADMW1001_ADC_REFERENCE_VOLTAGE_INTERNAL,
                     .bufferBypass = ADMW1001_BUFFER_BYPASSS_DISABLED,
--- a/src/admw_1001.c	Tue Dec 10 09:00:11 2019 +0000
+++ b/src/admw_1001.c	Tue Jan 07 05:45:58 2020 +0000
@@ -1082,18 +1082,19 @@
 
 ADMW_RESULT admw_SetCycleControl(ADMW_DEVICE_HANDLE hDevice,
                                  uint32_t           nCycleInterval,
-                                 bool               vBiasEnable)
+                                 bool               vBiasEnable,                                 
+                                 bool           vPostExecCurrentState,
+                                 bool               vGroundSwitch)
 {
     ADMW_CORE_Cycle_Control_t cycleControlReg;
 
     cycleControlReg.VALUE16 = REG_RESET_VAL(CORE_CYCLE_CONTROL);
 
-    if (nCycleInterval < (1000 * (1 << 12))) {
-        cycleControlReg.Cycle_Time_Units = CORE_CYCLE_CONTROL_MILLISECONDS;
-        nCycleInterval /= 1000;
+    if (nCycleInterval < (1 << 12)) {
+        cycleControlReg.Cycle_Time_Units = CORE_CYCLE_CONTROL_SECONDS;
     } else {
-        cycleControlReg.Cycle_Time_Units = CORE_CYCLE_CONTROL_SECONDS;
-        nCycleInterval /= 1000000;
+        ADMW_LOG_ERROR("Invalid nCycleInterval %d specified", nCycleInterval);
+        return ADMW_INVALID_PARAM;   
     }
 
     if (vBiasEnable == true) {
@@ -1101,7 +1102,35 @@
     }
     CHECK_REG_FIELD_VAL(CORE_CYCLE_CONTROL_CYCLE_TIME, nCycleInterval);
     cycleControlReg.Cycle_Time = nCycleInterval;
-
+    
+    switch(vPostExecCurrentState)
+    {
+    case ADMW1001_ADC_EXC_STATE_CYCLE_POWER:
+        cycleControlReg.PST_MEAS_EXC_CTRL = CORE_CYCLE_CONTROL_POWERCYCLE;
+        break;
+    case ADMW1001_ADC_EXC_STATE_ALWAYS_ON:
+        cycleControlReg.PST_MEAS_EXC_CTRL = CORE_CYCLE_CONTROL_ALWAYSON;
+        break;
+    default:
+        ADMW_LOG_ERROR("Invalid Post measurement Excitation Current state %d specified",
+                            vPostExecCurrentState);
+        return ADMW_INVALID_PARAM;
+    }
+    
+    switch(vGroundSwitch)
+    {
+    case ADMW1001_ADC_GND_SW_OPEN:
+        cycleControlReg.GND_SW_CTRL = CORE_CYCLE_CONTROL_CYCLE_SW;
+        break;
+    case ADMW1001_ADC_GND_SW_CLOSED:
+        cycleControlReg.GND_SW_CTRL = CORE_CYCLE_CONTROL_CLOSE_SW;
+        break;
+    default:
+        ADMW_LOG_ERROR("Invalid ground switch state %d specified",
+                            vGroundSwitch);
+        return ADMW_INVALID_PARAM;
+    }
+    
     WRITE_REG_U16(hDevice, cycleControlReg.VALUE16, CORE_CYCLE_CONTROL);
 
     return ADMW_SUCCESS;
@@ -1139,13 +1168,15 @@
     }
 
     eRet = admw_SetCycleControl(hDevice, pMeasConfig->cycleInterval,
-                                pMeasConfig->vBiasEnable);
+                                pMeasConfig->vBiasEnable,
+                                pMeasConfig->excitationState,
+                                pMeasConfig->groundSwitch );
     if (eRet != ADMW_SUCCESS) {
         ADMW_LOG_ERROR("Failed to set cycle control");
         return eRet;
     }
 
-    if(pMeasConfig->externalRef1Value>0) {
+    if(pMeasConfig->externalRef1Value > 0) {
         eRet = admw_SetExternalReferenceValues(hDevice,
                                                pMeasConfig->externalRef1Value);
     }
@@ -1512,7 +1543,6 @@
     ADMW_CORE_Measurement_Setup_t MeasSetupReg;
     ADMW1001_ADC_FILTER_CONFIG *pFilterConfig = &pAdcChannelConfig->filter;
     MeasSetupReg.VALUE32 = REG_RESET_VAL(CORE_MEASUREMENT_SETUPn);
-    MeasSetupReg.PST_MEAS_EXC_CTRL = pAdcChannelConfig->current.excitationState;
     MeasSetupReg.Buffer_Bypass = pAdcChannelConfig->bufferBypass;
 
     if (pFilterConfig->type == ADMW1001_ADC_FILTER_SINC4) {
@@ -1535,19 +1565,6 @@
     else
         MeasSetupReg.NOTCH_EN_2 = 0;
 
-    switch(pFilterConfig->groundSwitch) {
-        case ADMW1001_ADC_GND_SW_OPEN:
-            MeasSetupReg.GND_SW = CORE_MEASUREMENT_SETUP_GND_SW_OPEN;
-            break;
-        case ADMW1001_ADC_GND_SW_CLOSED:
-            MeasSetupReg.GND_SW = CORE_MEASUREMENT_SETUP_GND_SW_CLOSED;
-            break;
-        default:
-            ADMW_LOG_ERROR("Invalid ground switch state %d specified",
-                           pFilterConfig->groundSwitch);
-            return ADMW_INVALID_PARAM;
-    }
-
     WRITE_REG_U32(hDevice, MeasSetupReg.VALUE32, CORE_MEASUREMENT_SETUPn(eChannelId));
 
     return ADMW_SUCCESS;
--- a/thermocouple_typeJ_cjc0_config.c	Tue Dec 10 09:00:11 2019 +0000
+++ b/thermocouple_typeJ_cjc0_config.c	Tue Jan 07 05:45:58 2020 +0000
@@ -55,6 +55,8 @@
             .externalRefVoltage = 0.0,
             .operatingMode = ADMW1001_OPERATING_MODE_CONTINUOUS,
             .dataReadyMode = ADMW1001_DATAREADY_PER_CYCLE, // FIX: Temporarily all values from json are hardcoded to this one in the Contracts.FileGenerator - > file translations!!
+            .excitationState= ADMW1001_ADC_EXC_STATE_CYCLE_POWER,                
+            .groundSwitch = ADMW1001_ADC_GND_SW_OPEN,             
             .cycleInterval = 0,
             .RSenseValue = 1000.0,  
         },
@@ -83,7 +85,6 @@
                     .sensor = ADMW1001_ADC_SENSOR_RTD_2WIRE_PT100,
                     .gain = ADMW1001_ADC_GAIN_1X,
                     .current = {
-                        .excitationState= ADMW1001_ADC_EXC_STATE_ALWAYS_ON,
                         .outputLevel = ADMW1001_ADC_EXC_CURRENT_250uA,
                         .diodeRatio = 0,
                     },
@@ -93,7 +94,6 @@
                         .sf = ADMW1001_SF_8P24HZ,
                         .chopMode = ADMW1001_CHOP_MD_SW,
                         .notch1p2 = true,
-                        .groundSwitch = ADMW1001_ADC_GND_SW_OPEN
                     },
                     .reference = ADMW1001_ADC_REFERENCE_VOLTAGE_INTERNAL,
                     .bufferBypass = ADMW1001_BUFFER_BYPASSS_DISABLED,
@@ -122,7 +122,6 @@
                         .sf = ADMW1001_SF_8P24HZ,
                         .chopMode = ADMW1001_CHOP_MD_SW,
                         .notch1p2 = true,
-                        .groundSwitch = ADMW1001_ADC_GND_SW_OPEN
                     },
                     .reference = ADMW1001_ADC_REFERENCE_VOLTAGE_INTERNAL,
                     .bufferBypass = ADMW1001_BUFFER_BYPASSS_DISABLED,
--- a/thermocouple_typeK_cjc0_config.c	Tue Dec 10 09:00:11 2019 +0000
+++ b/thermocouple_typeK_cjc0_config.c	Tue Jan 07 05:45:58 2020 +0000
@@ -57,6 +57,8 @@
             .externalRefVoltage=0.0,
             .operatingMode = ADMW1001_OPERATING_MODE_CONTINUOUS,
             .dataReadyMode = ADMW1001_DATAREADY_PER_CYCLE, // FIX: Temporarily all values from json are hardcoded to this one in the Contracts.FileGenerator - > file translations!!
+            .excitationState= ADMW1001_ADC_EXC_STATE_CYCLE_POWER,                
+            .groundSwitch = ADMW1001_ADC_GND_SW_OPEN,               
             .cycleInterval = 0,
             .vBiasEnable = true,
             .RSenseValue = 1000.0,
@@ -87,7 +89,6 @@
                     .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,
                     },
@@ -96,7 +97,6 @@
                         .sf = ADMW1001_SF_8P24HZ,
                         .chopMode = ADMW1001_CHOP_MD_SW,
                         .notch1p2 = false,
-                        .groundSwitch = ADMW1001_ADC_GND_SW_OPEN
                     },
                     .reference = ADMW1001_ADC_REFERENCE_VOLTAGE_INTERNAL,
                     .bufferBypass = ADMW1001_BUFFER_BYPASSS_DISABLED,
@@ -122,7 +122,6 @@
                     .rtdCurve = ADMW1001_ADC_RTD_CURVE_EUROPEAN,
                     .gain = ADMW1001_ADC_GAIN_8X,
                     .current = {
-                        .excitationState= ADMW1001_ADC_EXC_STATE_CYCLE_POWER,
                         .outputLevel = ADMW1001_ADC_NO_EXTERNAL_EXC_CURRENT,
                         .diodeRatio = 0,
                     },
@@ -131,7 +130,6 @@
                         .sf = ADMW1001_SF_8P24HZ,
                         .chopMode = ADMW1001_CHOP_MD_SW,
                         .notch1p2 = false,
-                        .groundSwitch = ADMW1001_ADC_GND_SW_OPEN
                     },
                     .reference = ADMW1001_ADC_REFERENCE_VOLTAGE_INTERNAL,
                     .bufferBypass = ADMW1001_BUFFER_BYPASSS_DISABLED,
--- a/thermocouple_typeT_cjc0_config.c	Tue Dec 10 09:00:11 2019 +0000
+++ b/thermocouple_typeT_cjc0_config.c	Tue Jan 07 05:45:58 2020 +0000
@@ -52,6 +52,8 @@
             .externalRefVoltage = 0.0,
             .operatingMode = ADMW1001_OPERATING_MODE_CONTINUOUS,
             .dataReadyMode = ADMW1001_DATAREADY_PER_CYCLE, // FIX: Temporarily all values from json are hardcoded to this one in the Contracts.FileGenerator - > file translations!!
+            .excitationState= ADMW1001_ADC_EXC_STATE_CYCLE_POWER,                
+            .groundSwitch = ADMW1001_ADC_GND_SW_OPEN,              
             .cycleInterval = 0,
             .RSenseValue = 1000.0, 
         },
@@ -80,7 +82,6 @@
                     .sensor = ADMW1001_ADC_SENSOR_RTD_2WIRE_PT100,
                     .gain = ADMW1001_ADC_GAIN_1X,
                     .current = {
-                        .excitationState= ADMW1001_ADC_EXC_STATE_ALWAYS_ON,
                         .outputLevel = ADMW1001_ADC_EXC_CURRENT_250uA,
                         .diodeRatio = 0,
                     },
@@ -90,7 +91,6 @@
                         .sf = ADMW1001_SF_8P24HZ,
                         .chopMode = ADMW1001_CHOP_MD_SW,
                         .notch1p2 = true,
-                        .groundSwitch = ADMW1001_ADC_GND_SW_OPEN
                     },
                     .reference = ADMW1001_ADC_REFERENCE_VOLTAGE_INTERNAL,
                     .bufferBypass = ADMW1001_BUFFER_BYPASSS_DISABLED,
@@ -119,7 +119,6 @@
                         .sf = ADMW1001_SF_8P24HZ,
                         .chopMode = ADMW1001_CHOP_MD_SW,
                         .notch1p2 = true,
-                        .groundSwitch = ADMW1001_ADC_GND_SW_OPEN
                     },
                     .reference = ADMW1001_ADC_REFERENCE_VOLTAGE_INTERNAL,
                     .bufferBypass = ADMW1001_BUFFER_BYPASSS_DISABLED,