00001
00047 #ifndef CCADC_H
00048 #define CCADC_H
00049
00050
00051
00052
00053 #include <ioavr.h>
00054 #include "config.h"
00055
00056
00057
00058
00059
00061 #define SHUNT_RESISTANCE (10)
00063 #define ICC_STEP_SIZE_uV (26.855)
00065 #define ICC_STEP_SIZE_mA (ICC_STEP_SIZE_uV/SHUNT_RESISTANCE)
00067 #define ICC_SCALE (16)
00069 #define ICC_STEP_SIZE_mA_SCALED ( (int32_t)( ICC_STEP_SIZE_mA*(1ul<<ICC_SCALE) ) )
00070
00072 #define ACC_STEP_SIZE_uV (0.839233)
00074 #define ACC_STEP_SIZE_mA (ACC_STEP_SIZE_uV/SHUNT_RESISTANCE)
00076 #define ACC_SCALE (17)
00078 #define ACC_STEP_SIZE_uV_SCALED ( (int16_t)(ACC_STEP_SIZE_uV * (1ul<<ACC_SCALE) ) )
00080 #define ACC_STEP_SIZE_mA_SCALED ( (int32_t)(ACC_STEP_SIZE_mA * (1ul<<ACC_SCALE) ) )
00081
00083 typedef enum CCADC_modes_enum{
00084 CCADC_DISABLE = 0,
00085 CCADC_IAC = 1,
00086 CCADC_ICC = 2,
00087 CCADC_ACC = 3,
00088 CCADC_RCC = 4
00089 } CCADC_modes_t;
00090
00092 typedef enum CCADC_AccConversionPeriod_enum{
00093 ACCT_128 = ( (0<<CADAS1)|(0<<CADAS0) ),
00094 ACCT_256 = ( (0<<CADAS1)|(1<<CADAS0) ),
00095 ACCT_512 = ( (1<<CADAS1)|(0<<CADAS0) ),
00096 ACCT_1024 = ( (1<<CADAS1)|(1<<CADAS0) )
00097 }CCADC_AccConvPeriod_t;
00098
00100 typedef enum CCADC_RccConversionPeriod_enum{
00101 RCCI_256 = ( (0<<CADSI1)|(0<<CADSI0) ),
00102 RCCI_512 = ( (0<<CADSI1)|(1<<CADSI0) ),
00103 RCCI_1024 = ( (1<<CADSI1)|(0<<CADSI0) ),
00104 RCCI_2048 = ( (1<<CADSI1)|(1<<CADSI0) )
00105 }CCADC_RccConvPeriod_t;
00106
00108
00109 #define RCC_STEP_SIZE_uV 26.8549
00111 #define RCC_STEP_SIZE_mA RCC_STEP_SIZE_uV/SHUNT_RESISTANCE
00113 #define RCC_SCALE 8
00115 #define RCC_STEP_SIZE_mA_SCALED ( (uint16_t)(RCC_STEP_SIZE_mA * (1<< RCC_SCALE)))
00116
00117
00118 #define CCADC_POLARITY_POS (0<<CADPOL)
00119 #define CCADC_POLARITY_NEG (1<<CADPOL)
00120
00122 #define CONVERSION_COUNT 10
00123
00124
00125
00126
00127
00128
00129
00130
00131 void CCADC_Init( CCADC_AccConvPeriod_t accConversionTime, CCADC_RccConvPeriod_t rccSamplingInterval, uint16_t regularCurrentLevel );
00132 void CCADC_SetMode( CCADC_modes_t mode );
00133 uint8_t CCADC_GetMode( void );
00134 int32_t CCADC_GetAccResult( void );
00135 int32_t CCADC_GetIccResult( void );
00136 bool CCADC_isAccResultReady( void );
00137 bool CCADC_isIccResultReady( void );
00138
00139 #endif // CCADC_H