ADE120x Library Files
ADE120x.h@2:f9a986799375, 2019-10-15 (annotated)
- Committer:
- mlambe
- Date:
- Tue Oct 15 12:06:51 2019 +0000
- Revision:
- 2:f9a986799375
- Parent:
- 1:2eb9d6296ec3
- Child:
- 3:6c708642886d
Updated comments
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
mlambe | 1:2eb9d6296ec3 | 1 | /** |
mlambe | 1:2eb9d6296ec3 | 2 | * @file ADE120x.h |
mlambe | 1:2eb9d6296ec3 | 3 | * @brief ADE120x library. This file contains all ADE120x library functions. |
mlambe | 1:2eb9d6296ec3 | 4 | * @version V0.0.1 |
mlambe | 1:2eb9d6296ec3 | 5 | * @author ADI |
mlambe | 2:f9a986799375 | 6 | * @date October 2019 |
mlambe | 1:2eb9d6296ec3 | 7 | * @par Revision History: |
mlambe | 1:2eb9d6296ec3 | 8 | * |
mlambe | 1:2eb9d6296ec3 | 9 | * Copyright (c) 2017-2019 Analog Devices, Inc. All Rights Reserved. |
mlambe | 1:2eb9d6296ec3 | 10 | * |
mlambe | 1:2eb9d6296ec3 | 11 | * This software is proprietary to Analog Devices, Inc. and its licensors. |
mlambe | 1:2eb9d6296ec3 | 12 | * By using this software you agree to the terms of the associated |
mlambe | 1:2eb9d6296ec3 | 13 | * Analog Devices Software License Agreement. |
mlambe | 1:2eb9d6296ec3 | 14 | **/ |
mlambe | 2:f9a986799375 | 15 | |
mlambe | 1:2eb9d6296ec3 | 16 | #ifndef _ADE120x_h_ |
mlambe | 1:2eb9d6296ec3 | 17 | #define _ADE120x_h_ |
mlambe | 1:2eb9d6296ec3 | 18 | |
mlambe | 1:2eb9d6296ec3 | 19 | #include "stdio.h" |
mlambe | 1:2eb9d6296ec3 | 20 | #include "math.h" |
mlambe | 1:2eb9d6296ec3 | 21 | #include "string.h" |
mlambe | 1:2eb9d6296ec3 | 22 | #include <stdint.h> |
mlambe | 1:2eb9d6296ec3 | 23 | |
mlambe | 1:2eb9d6296ec3 | 24 | #include "mbed.h" |
mlambe | 1:2eb9d6296ec3 | 25 | |
mlambe | 2:f9a986799375 | 26 | |
mlambe | 2:f9a986799375 | 27 | /** |
mlambe | 2:f9a986799375 | 28 | * Structure for configuring threshold levels |
mlambe | 2:f9a986799375 | 29 | */ |
mlambe | 2:f9a986799375 | 30 | typedef struct threshold{ |
mlambe | 2:f9a986799375 | 31 | float BIN_HighThresh; /** Binary channel high threshold */ |
mlambe | 2:f9a986799375 | 32 | float BIN_LowThresh; /** Binary channel low threshold */ |
mlambe | 2:f9a986799375 | 33 | float WARNA_HighThresh; /** WARNA channel high threshold */ |
mlambe | 2:f9a986799375 | 34 | float WARNA_LowThresh; /** WARNA channel Low threshold */ |
mlambe | 2:f9a986799375 | 35 | float WARNB_HighThresh; /** WARNB channel high threshold */ |
mlambe | 2:f9a986799375 | 36 | float WARNB_LowThresh; /** WARNB channel Low threshold */ |
mlambe | 2:f9a986799375 | 37 | float WARNC_HighThresh; /** WARNC channel high threshold */ |
mlambe | 2:f9a986799375 | 38 | float WARNC_LowThresh; /** WARNC channel Low threshold */ |
mlambe | 2:f9a986799375 | 39 | uint8_t BIN_Mode; /** Binary Channel comparator mode */ |
mlambe | 2:f9a986799375 | 40 | uint8_t WARNA_Mode; /** WARNA Channel comparator mode */ |
mlambe | 2:f9a986799375 | 41 | uint8_t WARNB_Mode; /** WARNB Channel comparator mode */ |
mlambe | 2:f9a986799375 | 42 | uint8_t WARNC_Mode; /** WARNC Channel comparator mode */ |
mlambe | 2:f9a986799375 | 43 | uint8_t ADCPga; /** ADC PGA setting */ |
mlambe | 2:f9a986799375 | 44 | float VGain; /** Voltage divider gain */ |
mlambe | 1:2eb9d6296ec3 | 45 | }THRESHCfg_Type; |
mlambe | 2:f9a986799375 | 46 | |
mlambe | 2:f9a986799375 | 47 | /** |
mlambe | 2:f9a986799375 | 48 | * Structure for setting programmable load |
mlambe | 2:f9a986799375 | 49 | */ |
mlambe | 1:2eb9d6296ec3 | 50 | typedef struct{ |
mlambe | 1:2eb9d6296ec3 | 51 | uint8_t enable; /** Enable PL */ |
mlambe | 2:f9a986799375 | 52 | uint8_t mode; /** Configure mode, HIGH_IDLE, LOW_IDLE */ |
mlambe | 2:f9a986799375 | 53 | float HighCurrent; /** High current in mA */ |
mlambe | 1:2eb9d6296ec3 | 54 | float LowCurrent; /** Low current in mA */ |
mlambe | 1:2eb9d6296ec3 | 55 | float HighTime; /** Duration of current pulse in us */ |
mlambe | 1:2eb9d6296ec3 | 56 | float VoltThresh; /** VOltage threshold to trigger programmable load */ |
mlambe | 1:2eb9d6296ec3 | 57 | uint8_t ADCPga; /** ADC PGA setting */ |
mlambe | 2:f9a986799375 | 58 | float VGain; /** Voltage gain set by external resister divider */ |
mlambe | 1:2eb9d6296ec3 | 59 | }PLOADCfg_Type; |
mlambe | 1:2eb9d6296ec3 | 60 | |
mlambe | 2:f9a986799375 | 61 | /** |
mlambe | 2:f9a986799375 | 62 | * Structure for configuring energy meter |
mlambe | 2:f9a986799375 | 63 | */ |
mlambe | 1:2eb9d6296ec3 | 64 | typedef struct{ |
mlambe | 2:f9a986799375 | 65 | uint8_t enable; /** Enable energy meter function */ |
mlambe | 2:f9a986799375 | 66 | float FET_Energy; /** SOA energy of exernal FET used */ |
mlambe | 1:2eb9d6296ec3 | 67 | float PulseMagnitude; /** AMplitude of current pulse in mA */ |
mlambe | 2:f9a986799375 | 68 | float PulseTime; /** Length of current pulse in ms */ |
mlambe | 1:2eb9d6296ec3 | 69 | float WorkingVoltage; /** Working voltage of system in V*/ |
mlambe | 1:2eb9d6296ec3 | 70 | uint32_t AvgADCCode; /** Average ADC code */ |
mlambe | 2:f9a986799375 | 71 | float SampleRate; /** Sample rate, 20us for ADE1202, 10us foe ADE1201 */ |
mlambe | 2:f9a986799375 | 72 | uint8_t Cooldown_TimeStep; /** Set cooldown timestep */ |
mlambe | 2:f9a986799375 | 73 | uint8_t Cooldown_Decr; /* Set cooldown decrement */ |
mlambe | 2:f9a986799375 | 74 | uint8_t Cooldown_Sec; /** Set cooldown period */ |
mlambe | 2:f9a986799375 | 75 | uint8_t Ov_Scale; /** Set over voltage scale factor */ |
mlambe | 2:f9a986799375 | 76 | uint8_t ADCPga; /** ADC PGA setting */ |
mlambe | 2:f9a986799375 | 77 | float VGain; /** Voltage gain set by external resister divider */ |
mlambe | 1:2eb9d6296ec3 | 78 | }EnergyMtrCfg_Type; |
mlambe | 1:2eb9d6296ec3 | 79 | |
mlambe | 2:f9a986799375 | 80 | /** |
mlambe | 2:f9a986799375 | 81 | * Data sreuture for reading back register data |
mlambe | 2:f9a986799375 | 82 | */ |
mlambe | 1:2eb9d6296ec3 | 83 | typedef struct{ |
mlambe | 1:2eb9d6296ec3 | 84 | uint16_t reg_addr; |
mlambe | 1:2eb9d6296ec3 | 85 | uint32_t reg_data; |
mlambe | 1:2eb9d6296ec3 | 86 | }RegisterData_Type; |
mlambe | 1:2eb9d6296ec3 | 87 | |
mlambe | 1:2eb9d6296ec3 | 88 | /******* REGISTER DEFINITION ***********/ |
mlambe | 1:2eb9d6296ec3 | 89 | |
mlambe | 1:2eb9d6296ec3 | 90 | #define REG_LOCK 0x000 |
mlambe | 1:2eb9d6296ec3 | 91 | #define REG_CTRL 0x001 |
mlambe | 1:2eb9d6296ec3 | 92 | #define REG_BIN_CTRL 0x002 |
mlambe | 1:2eb9d6296ec3 | 93 | #define REG_BIN_THR 0x003 |
mlambe | 1:2eb9d6296ec3 | 94 | #define REG_WARNA_THR 0x004 |
mlambe | 1:2eb9d6296ec3 | 95 | #define REG_WARNB_THR 0x005 |
mlambe | 1:2eb9d6296ec3 | 96 | #define REG_WARNC_THR 0x006 |
mlambe | 1:2eb9d6296ec3 | 97 | #define REG_BIN_FILTER 0x007 |
mlambe | 1:2eb9d6296ec3 | 98 | #define REG_WARNA_FILTER 0x008 |
mlambe | 1:2eb9d6296ec3 | 99 | #define REG_WARNB_FILTER 0x009 |
mlambe | 1:2eb9d6296ec3 | 100 | #define REG_WARNC_FILTER 0x00A |
mlambe | 1:2eb9d6296ec3 | 101 | #define REG_MASK 0x00B |
mlambe | 1:2eb9d6296ec3 | 102 | #define REG_INT_STATUS 0x00C |
mlambe | 1:2eb9d6296ec3 | 103 | #define REG_STATUS 0x00D |
mlambe | 1:2eb9d6296ec3 | 104 | #define REG_ADC 0x00E |
mlambe | 1:2eb9d6296ec3 | 105 | #define REG_ADCDEC 0x00F |
mlambe | 1:2eb9d6296ec3 | 106 | #define REG_PL_CTRL 0x010 |
mlambe | 1:2eb9d6296ec3 | 107 | #define REG_PL_RISE_THR 0x011 |
mlambe | 1:2eb9d6296ec3 | 108 | #define REG_PL_LOW_CODE 0x012 |
mlambe | 1:2eb9d6296ec3 | 109 | #define REG_PL_HIGH_CODE 0x013 |
mlambe | 1:2eb9d6296ec3 | 110 | #define REG_PL_HIGH_TIME 0x014 |
mlambe | 1:2eb9d6296ec3 | 111 | #define REG_EGY_MTR_CTRL 0x015 |
mlambe | 1:2eb9d6296ec3 | 112 | #define REG_EGY_MTR_THR 0x016 |
mlambe | 1:2eb9d6296ec3 | 113 | #define REG_EGY_MTR1 0x017 |
mlambe | 1:2eb9d6296ec3 | 114 | #define REG_PL_EN 0x200 |
mlambe | 1:2eb9d6296ec3 | 115 | #define REG_PGA_GAIN 0x201 |
mlambe | 1:2eb9d6296ec3 | 116 | |
mlambe | 1:2eb9d6296ec3 | 117 | /**************************************/ |
mlambe | 1:2eb9d6296ec3 | 118 | |
mlambe | 1:2eb9d6296ec3 | 119 | /******** BIT DEFINITION **************/ |
mlambe | 2:f9a986799375 | 120 | /** Config_LOCK **/ |
mlambe | 2:f9a986799375 | 121 | #define DEV_UNLOCK 0xADE0 |
mlambe | 2:f9a986799375 | 122 | #define DEV_LOCK 0xADE1 |
mlambe | 1:2eb9d6296ec3 | 123 | |
mlambe | 2:f9a986799375 | 124 | /** CTRL **/ |
mlambe | 2:f9a986799375 | 125 | #define DEV_ADE1201 0x0 |
mlambe | 2:f9a986799375 | 126 | #define DEV_ADE1202 0x1000 |
mlambe | 2:f9a986799375 | 127 | #define SW_RST 0x10 |
mlambe | 2:f9a986799375 | 128 | #define ADDR_RELOAD 0x8 |
mlambe | 2:f9a986799375 | 129 | #define ADE1202_IRQ 0x4 |
mlambe | 2:f9a986799375 | 130 | #define CRC_EN 0x1 |
mlambe | 1:2eb9d6296ec3 | 131 | |
mlambe | 2:f9a986799375 | 132 | /** BIN_CTRL **/ |
mlambe | 2:f9a986799375 | 133 | #define Mode_Hysteretic 0 |
mlambe | 2:f9a986799375 | 134 | #define Mode_Inbetween 1 |
mlambe | 2:f9a986799375 | 135 | #define Mode_Greater 2 |
mlambe | 2:f9a986799375 | 136 | #define Mode_LessEqual 3 |
mlambe | 2:f9a986799375 | 137 | #define Decrate_Bypass 0 |
mlambe | 2:f9a986799375 | 138 | #define Decrate_2 1 |
mlambe | 2:f9a986799375 | 139 | #define Decrate_4 2 |
mlambe | 2:f9a986799375 | 140 | #define Decrate_8 3 |
mlambe | 1:2eb9d6296ec3 | 141 | |
mlambe | 2:f9a986799375 | 142 | /** xxx_FILTER **/ |
mlambe | 2:f9a986799375 | 143 | #define Filter_En (1<<15) |
mlambe | 2:f9a986799375 | 144 | #define Filter_UpDown (1<<14) |
mlambe | 1:2eb9d6296ec3 | 145 | |
mlambe | 2:f9a986799375 | 146 | /** Interrupt source selection. These sources are defined as bit mask. |
mlambe | 2:f9a986799375 | 147 | * They are available for register INT_STATUS and STATUS **/ |
mlambe | 1:2eb9d6296ec3 | 148 | #define INTSRC_DOUT1 0x0001 /**< Bit0, DOUT1 */ |
mlambe | 1:2eb9d6296ec3 | 149 | #define INTSRC_WARNA1 0x0002 /**< Bit1, Warning A from channel 1 */ |
mlambe | 1:2eb9d6296ec3 | 150 | #define INTSRC_WARNB1 0x0004 /**< Bit2, Warning B from channel 1 */ |
mlambe | 1:2eb9d6296ec3 | 151 | #define INTSRC_WARNC1 0x0008 /**< Bit3, Warning C from channel 1 */ |
mlambe | 1:2eb9d6296ec3 | 152 | #define INTSRC_DOUT2 0x0010 /**< Bit4, DOUT2 */ |
mlambe | 1:2eb9d6296ec3 | 153 | #define INTSRC_WARNA2 0x0020 /**< Bit5, Warning A from channel 2 */ |
mlambe | 1:2eb9d6296ec3 | 154 | #define INTSRC_WARNB2 0x0040 /**< Bit6, Warning B from channel 2 */ |
mlambe | 1:2eb9d6296ec3 | 155 | #define INTSRC_WARNC2 0x0080 /**< Bit7, Warning C from channel 2 */ |
mlambe | 1:2eb9d6296ec3 | 156 | #define INTSRC_MEMFLT 0x0100 /**< Bit8, Memory fault. After a memory fault is detected the user could reconfigure the device. */ |
mlambe | 1:2eb9d6296ec3 | 157 | #define INTSRC_COMFLT 0x0200 /**< Bit9, Communication fault */ |
mlambe | 1:2eb9d6296ec3 | 158 | #define INTSRC_TSD 0x0400 /**< Bit10, Thermal shutdown detected */ |
mlambe | 1:2eb9d6296ec3 | 159 | #define INTSRC_COOLDOWN1 0x0800 /**< Bit12, Channel 1 is in Cooldown mode */ |
mlambe | 1:2eb9d6296ec3 | 160 | #define INTSRC_COOLDOWN2 0x1000 /**< Bit13, Channel 2 is in Cooldown mode */ |
mlambe | 1:2eb9d6296ec3 | 161 | #define INTSRC_BUSY 0x2000 /**< Bit13, During busy assertion, internal communication is in progress. Once busy is deasserted, an irq can be triggered which indicates normal operation has resumed */ |
mlambe | 1:2eb9d6296ec3 | 162 | #define INTSRC_RSTDONE 0x4000 /**< Bit14, Indicates that the device has reset and is ready to be programmed or begin default normal operation */ |
mlambe | 2:f9a986799375 | 163 | #define INTSRC_ALL 0x7FFF /**< All bits. Used to clear all interrupt sources */ |
mlambe | 2:f9a986799375 | 164 | |
mlambe | 2:f9a986799375 | 165 | /** ADC **/ |
mlambe | 2:f9a986799375 | 166 | #define ADC_RAW 0 |
mlambe | 2:f9a986799375 | 167 | #define ADC_DECIMATOR 1 |
mlambe | 2:f9a986799375 | 168 | |
mlambe | 2:f9a986799375 | 169 | /** PL_CTRL **/ |
mlambe | 2:f9a986799375 | 170 | #define LOW_IDLE 0 |
mlambe | 2:f9a986799375 | 171 | #define HIGH_IDLE 1 |
mlambe | 2:f9a986799375 | 172 | |
mlambe | 2:f9a986799375 | 173 | /** EGY_MTR_CTRL **/ |
mlambe | 2:f9a986799375 | 174 | #define OV_SCALE_1 0 |
mlambe | 2:f9a986799375 | 175 | #define OV_SCALE_4 1 |
mlambe | 2:f9a986799375 | 176 | #define OV_SCALE_8 2 |
mlambe | 2:f9a986799375 | 177 | #define OV_SCALE_16 3 |
mlambe | 2:f9a986799375 | 178 | |
mlambe | 1:2eb9d6296ec3 | 179 | |
mlambe | 2:f9a986799375 | 180 | typedef enum |
mlambe | 2:f9a986799375 | 181 | { |
mlambe | 2:f9a986799375 | 182 | COOLDOWN_TS_10us = 0, |
mlambe | 2:f9a986799375 | 183 | COOLDOWN_TS_20us = 1, |
mlambe | 2:f9a986799375 | 184 | COOLDOWN_TS_40us = 2, |
mlambe | 2:f9a986799375 | 185 | COOLDOWN_TS_80us = 3 |
mlambe | 2:f9a986799375 | 186 | }COOLDOWN_TIMESTAMP; |
mlambe | 2:f9a986799375 | 187 | |
mlambe | 2:f9a986799375 | 188 | #define CH1_Enable 1 |
mlambe | 2:f9a986799375 | 189 | #define CH2_Enable 2 |
mlambe | 2:f9a986799375 | 190 | #define CH1_CH2_Enable 3 |
mlambe | 2:f9a986799375 | 191 | #define CH1_Disable 0 |
mlambe | 2:f9a986799375 | 192 | #define CH2_disable 0 |
mlambe | 2:f9a986799375 | 193 | #define CH1_CH2_Disable 0 |
mlambe | 2:f9a986799375 | 194 | |
mlambe | 2:f9a986799375 | 195 | /** PL_EN **/ |
mlambe | 2:f9a986799375 | 196 | #define PL_CH2_ENABLE (1<<15) |
mlambe | 2:f9a986799375 | 197 | #define PL_CH1_ENABLE (1<<14) |
mlambe | 2:f9a986799375 | 198 | #define PL_CH2_DISABLE (0<<15) |
mlambe | 2:f9a986799375 | 199 | #define PL_CH1_DISABLE (0<<14) |
mlambe | 2:f9a986799375 | 200 | |
mlambe | 2:f9a986799375 | 201 | /** PGA_GAIN **/ |
mlambe | 2:f9a986799375 | 202 | #define ADCPGA_1 1 |
mlambe | 2:f9a986799375 | 203 | #define ADCPGA_2 3 |
mlambe | 2:f9a986799375 | 204 | #define ADCPGA_5 7 |
mlambe | 2:f9a986799375 | 205 | #define ADCPGA_10 0xF |
mlambe | 2:f9a986799375 | 206 | |
mlambe | 1:2eb9d6296ec3 | 207 | |
mlambe | 1:2eb9d6296ec3 | 208 | /** |
mlambe | 1:2eb9d6296ec3 | 209 | * Method to identify ADE120x |
mlambe | 1:2eb9d6296ec3 | 210 | * [15:14][13:12][11:9] [8:5] |
mlambe | 1:2eb9d6296ec3 | 211 | * [ RES ][MODEL][Addr][RevIf] |
mlambe | 1:2eb9d6296ec3 | 212 | * |
mlambe | 1:2eb9d6296ec3 | 213 | */ |
mlambe | 2:f9a986799375 | 214 | #define ADE120x_Model(data) ((((uint32_t)data)>>12)&0x3) /**< Return model. 0: ADE1201, 1:ADE1202 */ |
mlambe | 2:f9a986799375 | 215 | #define ADE120x_ChipAddr(data) ((((uint32_t)data)>>9)&0x7) /**< Return Chip address*/ |
mlambe | 2:f9a986799375 | 216 | #define ADE120x_RevId(data) ((((uint32_t)data)>>5)&0xf) /**< Return silicon rev ID */ |
mlambe | 1:2eb9d6296ec3 | 217 | |
mlambe | 1:2eb9d6296ec3 | 218 | class ADE120x{ |
mlambe | 1:2eb9d6296ec3 | 219 | public: |
mlambe | 1:2eb9d6296ec3 | 220 | ADE120x(PinName mosi, PinName miso, PinName sclk, PinName cs); |
mlambe | 1:2eb9d6296ec3 | 221 | |
mlambe | 1:2eb9d6296ec3 | 222 | void WriteReg(uint8_t addr, uint32_t reg_addr, uint32_t data); |
mlambe | 1:2eb9d6296ec3 | 223 | uint32_t ReadReg(uint8_t addr, uint32_t reg_addr); |
mlambe | 1:2eb9d6296ec3 | 224 | |
mlambe | 1:2eb9d6296ec3 | 225 | |
mlambe | 1:2eb9d6296ec3 | 226 | uint8_t Reset(uint8_t addr); |
mlambe | 1:2eb9d6296ec3 | 227 | uint16_t GetDevID(uint8_t addr); |
mlambe | 1:2eb9d6296ec3 | 228 | void UnLock(uint8_t addr); |
mlambe | 1:2eb9d6296ec3 | 229 | void Lock(uint8_t addr); |
mlambe | 1:2eb9d6296ec3 | 230 | uint8_t DefaultConfig(uint8_t addr); |
mlambe | 1:2eb9d6296ec3 | 231 | |
mlambe | 1:2eb9d6296ec3 | 232 | void ClearIntStatus(uint8_t addr, uint16_t IntSrcSel); |
mlambe | 1:2eb9d6296ec3 | 233 | uint16_t GetIntStatus(uint8_t addr); |
mlambe | 1:2eb9d6296ec3 | 234 | void SetInt(uint8_t addr, uint16_t IntSrcSel); |
mlambe | 1:2eb9d6296ec3 | 235 | |
mlambe | 1:2eb9d6296ec3 | 236 | void SetBinaryThresh(uint8_t addr, uint16_t thresh); |
mlambe | 1:2eb9d6296ec3 | 237 | uint8_t CalculateThreshCode(float V_Thresh, uint8_t ADCPga, float V_Gain); |
mlambe | 1:2eb9d6296ec3 | 238 | uint8_t ThresholdCfg(uint8_t addr, THRESHCfg_Type *pCfg); |
mlambe | 1:2eb9d6296ec3 | 239 | uint8_t ProgrammableLoadCfg(uint8_t addr, PLOADCfg_Type *pCfg); |
mlambe | 1:2eb9d6296ec3 | 240 | uint8_t EnergyMtrCfg(uint8_t addr, EnergyMtrCfg_Type *pCfg); |
mlambe | 1:2eb9d6296ec3 | 241 | |
mlambe | 1:2eb9d6296ec3 | 242 | void SetPgaGain(uint8_t addr, uint16_t gain); |
mlambe | 1:2eb9d6296ec3 | 243 | uint8_t ReadADC(uint8_t addr, int8_t src); |
mlambe | 1:2eb9d6296ec3 | 244 | float ADCCode2Volt(uint32_t ADCCode, uint8_t ADCPga, float VOLTAGE_Gain); |
mlambe | 1:2eb9d6296ec3 | 245 | void GetRegisterData(uint8_t addr, RegisterData_Type *pBuff); |
mlambe | 1:2eb9d6296ec3 | 246 | private: |
mlambe | 1:2eb9d6296ec3 | 247 | SPI spi_; |
mlambe | 1:2eb9d6296ec3 | 248 | DigitalOut nCS_; |
mlambe | 1:2eb9d6296ec3 | 249 | |
mlambe | 1:2eb9d6296ec3 | 250 | }; |
mlambe | 1:2eb9d6296ec3 | 251 | |
mlambe | 1:2eb9d6296ec3 | 252 | #endif |