Weight scale using ADS1220

Dependencies:   ADS1220 mbed

Fork of WeightScale by san m

Committer:
sandeepmalladi
Date:
Tue May 24 13:45:41 2016 +0000
Revision:
0:94208ccccbde
Child:
1:933f47cce5bf
ADS1220 interfacing with L053r8 and LCD Display ST7920

Who changed what in which revision?

UserRevisionLine numberNew contents of line
sandeepmalladi 0:94208ccccbde 1 #include "mbed.h"
sandeepmalladi 0:94208ccccbde 2 #include "ADS1220.h"
sandeepmalladi 0:94208ccccbde 3 #include "DigoleSerialDisp.h"
sandeepmalladi 0:94208ccccbde 4 #include "DataAnalysis.h"
sandeepmalladi 0:94208ccccbde 5 #include "MedianFilt.h"
sandeepmalladi 0:94208ccccbde 6 #include "math.h"
sandeepmalladi 0:94208ccccbde 7
sandeepmalladi 0:94208ccccbde 8
sandeepmalladi 0:94208ccccbde 9 #define NWIDTH 20 /* Size of the data buffer; length of the sequence. */
sandeepmalladi 0:94208ccccbde 10 #define STOPPER 0 /* Smaller than any datum */
sandeepmalladi 0:94208ccccbde 11 #define AVERGARE_COUNT 1000 /*Count can be any number from 2,4,8,16 */
sandeepmalladi 0:94208ccccbde 12
sandeepmalladi 0:94208ccccbde 13 #define PGA 128 // Programmable Gain = 1
sandeepmalladi 0:94208ccccbde 14 #define VREF 5.0 // Internal reference of 2.048V
sandeepmalladi 0:94208ccccbde 15 #define VFSR VREF/PGA
sandeepmalladi 0:94208ccccbde 16 #define FSR (((long int)1<<23))
sandeepmalladi 0:94208ccccbde 17 #define LSB_Size (VFSR/FSR)
sandeepmalladi 0:94208ccccbde 18
sandeepmalladi 0:94208ccccbde 19 ADS1220 ads1220_com(SPI_MOSI, SPI_MISO, SPI_SCK);
sandeepmalladi 0:94208ccccbde 20 Serial _serial_comm(SERIAL_TX,SERIAL_RX);
sandeepmalladi 0:94208ccccbde 21 Serial data_serial(USBTX, USBRX);
sandeepmalladi 0:94208ccccbde 22 SerialDisp Lcd_display(LCD_MOSI, LCD_MISO, LCD_SCK);
sandeepmalladi 0:94208ccccbde 23 InterruptIn DRDY(PC_5);
sandeepmalladi 0:94208ccccbde 24 InterruptIn Button_press(USER_BUTTON);
sandeepmalladi 0:94208ccccbde 25
sandeepmalladi 0:94208ccccbde 26 unsigned char str[] = "PCE Force Gauge ";
sandeepmalladi 0:94208ccccbde 27 unsigned char removeweight_str[] = "Please Remove Weights....... ";
sandeepmalladi 0:94208ccccbde 28 unsigned char placeweight_str[] = "Calculating the offset..... ";
sandeepmalladi 0:94208ccccbde 29
sandeepmalladi 0:94208ccccbde 30
sandeepmalladi 0:94208ccccbde 31
sandeepmalladi 0:94208ccccbde 32
sandeepmalladi 0:94208ccccbde 33
sandeepmalladi 0:94208ccccbde 34 char New_data_avialable,button_pressed = 0,Analysis;
sandeepmalladi 0:94208ccccbde 35 void ext_int_DRDY(void);
sandeepmalladi 0:94208ccccbde 36 void showvolt(float volts);
sandeepmalladi 0:94208ccccbde 37 void menu(void);
sandeepmalladi 0:94208ccccbde 38 signed long avg_filter(signed long avg_val, int n);
sandeepmalladi 0:94208ccccbde 39 void Caliberation(void);
sandeepmalladi 0:94208ccccbde 40 void pressed(void);
sandeepmalladi 0:94208ccccbde 41 float code2enob(float c);
sandeepmalladi 0:94208ccccbde 42 void weight_cal(void);
sandeepmalladi 0:94208ccccbde 43 signed long Median(signed long median_val, int n, int median_cnt);
sandeepmalladi 0:94208ccccbde 44 float g2scale(float g, int scale);
sandeepmalladi 0:94208ccccbde 45 float medfilter(signed long datum);
sandeepmalladi 0:94208ccccbde 46 float median(signed long data[]);
sandeepmalladi 0:94208ccccbde 47 float Mode_Filter(signed long avg_val, int n);
sandeepmalladi 0:94208ccccbde 48 float code2volt(float c);
sandeepmalladi 0:94208ccccbde 49
sandeepmalladi 0:94208ccccbde 50 signed long tData,avg_tdata;
sandeepmalladi 0:94208ccccbde 51 unsigned config_Buff[4];
sandeepmalladi 0:94208ccccbde 52 float offset_Val = 0, actual_weight = 0,disp_wt,volt;
sandeepmalladi 0:94208ccccbde 53 char get_char;
sandeepmalladi 0:94208ccccbde 54
sandeepmalladi 0:94208ccccbde 55 int main()
sandeepmalladi 0:94208ccccbde 56 {
sandeepmalladi 0:94208ccccbde 57 char buf[10],time_buf[14];
sandeepmalladi 0:94208ccccbde 58 Button_press.mode(PullUp);
sandeepmalladi 0:94208ccccbde 59 // Delay for initial pullup to take effect
sandeepmalladi 0:94208ccccbde 60 wait(0.1);
sandeepmalladi 0:94208ccccbde 61 DRDY.rise(&ext_int_DRDY);
sandeepmalladi 0:94208ccccbde 62 Button_press.fall(&pressed);
sandeepmalladi 0:94208ccccbde 63 ads1220_com.Config();
sandeepmalladi 0:94208ccccbde 64 ads1220_com.SendStartCommand();
sandeepmalladi 0:94208ccccbde 65 Lcd_display.LCD12864_Initialise();
sandeepmalladi 0:94208ccccbde 66 data_serial.baud(115200);
sandeepmalladi 0:94208ccccbde 67 // Setup a serial interrupt function to receive data
sandeepmalladi 0:94208ccccbde 68 _serial_comm.attach(&SerialData::Rx_interrupt, _serial_comm.RxIrq);
sandeepmalladi 0:94208ccccbde 69 // Setup a serial interrupt function to transmit data
sandeepmalladi 0:94208ccccbde 70 _serial_comm.attach(&SerialData::Tx_interrupt, _serial_comm.TxIrq);
sandeepmalladi 0:94208ccccbde 71 Lcd_display.LCD12864_DrawLogo();
sandeepmalladi 0:94208ccccbde 72 set_time(1887180123); // Set RTC time to 16 December 2013 10:05:23 UTC
sandeepmalladi 0:94208ccccbde 73 while(1)
sandeepmalladi 0:94208ccccbde 74 {
sandeepmalladi 0:94208ccccbde 75 clock_t seconds = time(NULL);
sandeepmalladi 0:94208ccccbde 76 weight_cal();
sandeepmalladi 0:94208ccccbde 77 strftime(time_buf,sizeof(time_buf), "%I:%M:%S (%p)", localtime(&seconds));
sandeepmalladi 0:94208ccccbde 78 Lcd_display.LCD12864_DisplayString(0,0,(uint8_t *)&str[0],COUNTOF(str));
sandeepmalladi 0:94208ccccbde 79 Lcd_display.LCD12864_DisplayString(1,0,(uint8_t *)&time_buf[0],COUNTOF(time_buf));
sandeepmalladi 0:94208ccccbde 80 sprintf(buf,"%.4f KG", (float)disp_wt);
sandeepmalladi 0:94208ccccbde 81 wait_ms(2);
sandeepmalladi 0:94208ccccbde 82 Lcd_display.LCD12864_DisplayString(2,2,(uint8_t *)&buf[0],COUNTOF(buf));
sandeepmalladi 0:94208ccccbde 83 wait(0.5);
sandeepmalladi 0:94208ccccbde 84 if(Button_press)
sandeepmalladi 0:94208ccccbde 85 {
sandeepmalladi 0:94208ccccbde 86 Analysis = 1;
sandeepmalladi 0:94208ccccbde 87 }
sandeepmalladi 0:94208ccccbde 88 }
sandeepmalladi 0:94208ccccbde 89 }
sandeepmalladi 0:94208ccccbde 90
sandeepmalladi 0:94208ccccbde 91
sandeepmalladi 0:94208ccccbde 92
sandeepmalladi 0:94208ccccbde 93 void weight_cal(void)
sandeepmalladi 0:94208ccccbde 94 {
sandeepmalladi 0:94208ccccbde 95 if(button_pressed)
sandeepmalladi 0:94208ccccbde 96 {
sandeepmalladi 0:94208ccccbde 97 button_pressed = 0;
sandeepmalladi 0:94208ccccbde 98 if(New_data_avialable)
sandeepmalladi 0:94208ccccbde 99 {
sandeepmalladi 0:94208ccccbde 100 New_data_avialable = 0;
sandeepmalladi 0:94208ccccbde 101 Caliberation();
sandeepmalladi 0:94208ccccbde 102 wait(1);
sandeepmalladi 0:94208ccccbde 103 }
sandeepmalladi 0:94208ccccbde 104 }
sandeepmalladi 0:94208ccccbde 105 else
sandeepmalladi 0:94208ccccbde 106 {
sandeepmalladi 0:94208ccccbde 107 if(New_data_avialable)
sandeepmalladi 0:94208ccccbde 108 {
sandeepmalladi 0:94208ccccbde 109 //led = !led;
sandeepmalladi 0:94208ccccbde 110 New_data_avialable = 0;
sandeepmalladi 0:94208ccccbde 111 tData = ads1220_com.ReadData();
sandeepmalladi 0:94208ccccbde 112 volt = code2volt(tData);
sandeepmalladi 0:94208ccccbde 113 data_serial.printf("\rVoltage : %f\n",volt);
sandeepmalladi 0:94208ccccbde 114 avg_tdata = Mode_Filter(tData, AVERGARE_COUNT);
sandeepmalladi 0:94208ccccbde 115 //data_serial.printf("\r\nHex code %x",avg_tdata);
sandeepmalladi 0:94208ccccbde 116 actual_weight = avg_tdata - offset_Val;
sandeepmalladi 0:94208ccccbde 117 disp_wt = actual_weight/weight_gram ;
sandeepmalladi 0:94208ccccbde 118 disp_wt = disp_wt * gain_error_correction;
sandeepmalladi 0:94208ccccbde 119 disp_wt = g2scale(disp_wt,3);
sandeepmalladi 0:94208ccccbde 120 //data_serial.printf("\r%.4f\n",disp_wt);
sandeepmalladi 0:94208ccccbde 121 //data_serial.printf("\t KG\n");
sandeepmalladi 0:94208ccccbde 122 }
sandeepmalladi 0:94208ccccbde 123 }
sandeepmalladi 0:94208ccccbde 124 }
sandeepmalladi 0:94208ccccbde 125
sandeepmalladi 0:94208ccccbde 126
sandeepmalladi 0:94208ccccbde 127 float code2volt(float c)
sandeepmalladi 0:94208ccccbde 128 {
sandeepmalladi 0:94208ccccbde 129 float Vout = 0;
sandeepmalladi 0:94208ccccbde 130 Vout = (float)(c*LSB_Size*1000); //In mV
sandeepmalladi 0:94208ccccbde 131 return Vout;
sandeepmalladi 0:94208ccccbde 132 }
sandeepmalladi 0:94208ccccbde 133
sandeepmalladi 0:94208ccccbde 134
sandeepmalladi 0:94208ccccbde 135 float g2scale(float g, int scale)
sandeepmalladi 0:94208ccccbde 136 {
sandeepmalladi 0:94208ccccbde 137 switch(scale)
sandeepmalladi 0:94208ccccbde 138 {
sandeepmalladi 0:94208ccccbde 139 case 0:
sandeepmalladi 0:94208ccccbde 140 return g*1e6;
sandeepmalladi 0:94208ccccbde 141 case 1:
sandeepmalladi 0:94208ccccbde 142 return g*1e3;
sandeepmalladi 0:94208ccccbde 143 case 2:
sandeepmalladi 0:94208ccccbde 144 return g;
sandeepmalladi 0:94208ccccbde 145 case 3:
sandeepmalladi 0:94208ccccbde 146 return g/1e3;
sandeepmalladi 0:94208ccccbde 147 case 4:
sandeepmalladi 0:94208ccccbde 148 return g*(16.0/453.59237);
sandeepmalladi 0:94208ccccbde 149 case 5:
sandeepmalladi 0:94208ccccbde 150 return g/453.59237;
sandeepmalladi 0:94208ccccbde 151 case 6:
sandeepmalladi 0:94208ccccbde 152 return g/(14.0*453.59237);
sandeepmalladi 0:94208ccccbde 153 default: // something wrong
sandeepmalladi 0:94208ccccbde 154 return 0;
sandeepmalladi 0:94208ccccbde 155 }
sandeepmalladi 0:94208ccccbde 156 }
sandeepmalladi 0:94208ccccbde 157
sandeepmalladi 0:94208ccccbde 158 float code2enob(float c)
sandeepmalladi 0:94208ccccbde 159 {
sandeepmalladi 0:94208ccccbde 160 if (c==0) return 24.0;
sandeepmalladi 0:94208ccccbde 161 return 24.0- logf(c);
sandeepmalladi 0:94208ccccbde 162
sandeepmalladi 0:94208ccccbde 163 }
sandeepmalladi 0:94208ccccbde 164
sandeepmalladi 0:94208ccccbde 165 void pressed(void)
sandeepmalladi 0:94208ccccbde 166 {
sandeepmalladi 0:94208ccccbde 167 button_pressed = 1;
sandeepmalladi 0:94208ccccbde 168 }
sandeepmalladi 0:94208ccccbde 169 signed long avg_filter(signed long avg_val, int n)
sandeepmalladi 0:94208ccccbde 170 {
sandeepmalladi 0:94208ccccbde 171 int i;
sandeepmalladi 0:94208ccccbde 172 signed long mean;
sandeepmalladi 0:94208ccccbde 173 mean=0;
sandeepmalladi 0:94208ccccbde 174 for (i=0;i<n;++i)
sandeepmalladi 0:94208ccccbde 175 mean+= avg_val;
sandeepmalladi 0:94208ccccbde 176 return mean/n;
sandeepmalladi 0:94208ccccbde 177 }
sandeepmalladi 0:94208ccccbde 178 void Caliberation(void)
sandeepmalladi 0:94208ccccbde 179 {
sandeepmalladi 0:94208ccccbde 180 signed long cal_offset = 0;
sandeepmalladi 0:94208ccccbde 181 Lcd_display.LCD12864_CLEAR();
sandeepmalladi 0:94208ccccbde 182 wait_ms(2);
sandeepmalladi 0:94208ccccbde 183 Lcd_display.LCD12864_DisplayString(1,0,(unsigned char *)&removeweight_str[0],COUNTOF(removeweight_str));
sandeepmalladi 0:94208ccccbde 184 data_serial.printf("\rPlease Remove Weights.......\n");
sandeepmalladi 0:94208ccccbde 185 wait(2);
sandeepmalladi 0:94208ccccbde 186 Lcd_display.LCD12864_CLEAR();
sandeepmalladi 0:94208ccccbde 187 wait_ms(2);
sandeepmalladi 0:94208ccccbde 188 Lcd_display.LCD12864_DisplayString(1,0,(unsigned char *)&placeweight_str[0],COUNTOF(placeweight_str));
sandeepmalladi 0:94208ccccbde 189 data_serial.printf("\rCalculating the offset......\n");
sandeepmalladi 0:94208ccccbde 190 wait(2);
sandeepmalladi 0:94208ccccbde 191 tData = ads1220_com.ReadData();
sandeepmalladi 0:94208ccccbde 192 offset_Val = Mode_Filter(tData, AVERGARE_COUNT);
sandeepmalladi 0:94208ccccbde 193 cal_offset = (offset_Val / (weight_gram));
sandeepmalladi 0:94208ccccbde 194 cal_offset = cal_offset * gain_error_correction;
sandeepmalladi 0:94208ccccbde 195 cal_offset = g2scale(cal_offset,3);
sandeepmalladi 0:94208ccccbde 196 data_serial.printf("\r%.4f",(float *)cal_offset);
sandeepmalladi 0:94208ccccbde 197 Lcd_display.LCD12864_CLEAR();
sandeepmalladi 0:94208ccccbde 198 wait_ms(1);
sandeepmalladi 0:94208ccccbde 199 }
sandeepmalladi 0:94208ccccbde 200
sandeepmalladi 0:94208ccccbde 201
sandeepmalladi 0:94208ccccbde 202 float Mode_Filter(signed long avg_val, int n)
sandeepmalladi 0:94208ccccbde 203 {
sandeepmalladi 0:94208ccccbde 204 float returnval = 0;
sandeepmalladi 0:94208ccccbde 205 // read multiple values and sort them to take the mode
sandeepmalladi 0:94208ccccbde 206 signed long sortedValues[n];
sandeepmalladi 0:94208ccccbde 207 for(int i=0;i<n;i++)
sandeepmalladi 0:94208ccccbde 208 {
sandeepmalladi 0:94208ccccbde 209 signed long value = avg_val;
sandeepmalladi 0:94208ccccbde 210 int j;
sandeepmalladi 0:94208ccccbde 211 if(value < sortedValues[0] || i==0)
sandeepmalladi 0:94208ccccbde 212 {
sandeepmalladi 0:94208ccccbde 213 j=0; //insert at first position
sandeepmalladi 0:94208ccccbde 214 }
sandeepmalladi 0:94208ccccbde 215 else
sandeepmalladi 0:94208ccccbde 216 {
sandeepmalladi 0:94208ccccbde 217 for(j=1;j<i;j++){
sandeepmalladi 0:94208ccccbde 218 if(sortedValues[j-1]<=value && sortedValues[j]>=value)
sandeepmalladi 0:94208ccccbde 219 {
sandeepmalladi 0:94208ccccbde 220 // j is insert position
sandeepmalladi 0:94208ccccbde 221 break;
sandeepmalladi 0:94208ccccbde 222 }
sandeepmalladi 0:94208ccccbde 223 }
sandeepmalladi 0:94208ccccbde 224 }
sandeepmalladi 0:94208ccccbde 225 for(int k=i;k>j;k--)
sandeepmalladi 0:94208ccccbde 226 {
sandeepmalladi 0:94208ccccbde 227 // move all values higher than current reading up one position
sandeepmalladi 0:94208ccccbde 228 sortedValues[k]=sortedValues[k-1];
sandeepmalladi 0:94208ccccbde 229 }
sandeepmalladi 0:94208ccccbde 230 sortedValues[j]=value; //insert current reading
sandeepmalladi 0:94208ccccbde 231 }
sandeepmalladi 0:94208ccccbde 232 //return scaled mode of 700 values
sandeepmalladi 0:94208ccccbde 233 for(int i=200;i<800;i++)
sandeepmalladi 0:94208ccccbde 234 {
sandeepmalladi 0:94208ccccbde 235 returnval +=sortedValues[i];
sandeepmalladi 0:94208ccccbde 236 }
sandeepmalladi 0:94208ccccbde 237 returnval = returnval/600;
sandeepmalladi 0:94208ccccbde 238 return returnval;
sandeepmalladi 0:94208ccccbde 239 }
sandeepmalladi 0:94208ccccbde 240
sandeepmalladi 0:94208ccccbde 241 void Set_Disp_Mux_config()
sandeepmalladi 0:94208ccccbde 242 {
sandeepmalladi 0:94208ccccbde 243 char Mux_data;
sandeepmalladi 0:94208ccccbde 244
sandeepmalladi 0:94208ccccbde 245
sandeepmalladi 0:94208ccccbde 246 Mux_data = data_serial.getc();
sandeepmalladi 0:94208ccccbde 247 data_serial.printf("\n");
sandeepmalladi 0:94208ccccbde 248
sandeepmalladi 0:94208ccccbde 249 switch(Mux_data)
sandeepmalladi 0:94208ccccbde 250 {
sandeepmalladi 0:94208ccccbde 251
sandeepmalladi 0:94208ccccbde 252 case '0':
sandeepmalladi 0:94208ccccbde 253 ads1220_com.set_MUX(0);
sandeepmalladi 0:94208ccccbde 254 data_serial.printf("Input Multiplexer Configuration Set to 0: AINP = AIN0, AINN = AIN1\n");
sandeepmalladi 0:94208ccccbde 255 ads1220_com.ReadRegister(ADS1220_0_REGISTER, 0x01, &config_Buff[0]);
sandeepmalladi 0:94208ccccbde 256 data_serial.printf("\r REG0 : %x\n",config_Buff[0]);
sandeepmalladi 0:94208ccccbde 257 break;
sandeepmalladi 0:94208ccccbde 258 case '1':
sandeepmalladi 0:94208ccccbde 259 ads1220_com.set_MUX(1);
sandeepmalladi 0:94208ccccbde 260 data_serial.printf("Input Multiplexer Configuration Set to 1: AINP = AIN0, AINN = AIN2\n");
sandeepmalladi 0:94208ccccbde 261 ads1220_com.ReadRegister(ADS1220_0_REGISTER, 0x01, &config_Buff[0]);
sandeepmalladi 0:94208ccccbde 262 data_serial.printf("\r REG0 : %x\n",config_Buff[0]);
sandeepmalladi 0:94208ccccbde 263 break;
sandeepmalladi 0:94208ccccbde 264 case '2':
sandeepmalladi 0:94208ccccbde 265 ads1220_com.set_MUX(2);
sandeepmalladi 0:94208ccccbde 266 data_serial.printf("Input Multiplexer Configuration Set to 2: AINP = AIN0, AINN = AIN3\n");
sandeepmalladi 0:94208ccccbde 267 ads1220_com.ReadRegister(ADS1220_0_REGISTER, 0x01, &config_Buff[0]);
sandeepmalladi 0:94208ccccbde 268 data_serial.printf("\r REG0 : %x\n",config_Buff[0]);
sandeepmalladi 0:94208ccccbde 269 break;
sandeepmalladi 0:94208ccccbde 270 case '3':
sandeepmalladi 0:94208ccccbde 271 ads1220_com.set_MUX(3);
sandeepmalladi 0:94208ccccbde 272 data_serial.printf("Input Multiplexer Configuration Set to 3: AINP = AIN1, AINN = AIN2\n");
sandeepmalladi 0:94208ccccbde 273 ads1220_com.ReadRegister(ADS1220_0_REGISTER, 0x01, &config_Buff[0]);
sandeepmalladi 0:94208ccccbde 274 data_serial.printf("\r REG0 : %x\n",config_Buff[0]);
sandeepmalladi 0:94208ccccbde 275 break;
sandeepmalladi 0:94208ccccbde 276 case '4':
sandeepmalladi 0:94208ccccbde 277 ads1220_com.set_MUX(4);
sandeepmalladi 0:94208ccccbde 278 data_serial.printf("Input Multiplexer Configuration Set to 4: AINP = AIN1, AINN = AIN3\n");
sandeepmalladi 0:94208ccccbde 279 ads1220_com.ReadRegister(ADS1220_0_REGISTER, 0x01, &config_Buff[0]);
sandeepmalladi 0:94208ccccbde 280 data_serial.printf("\r REG0 : %x\n",config_Buff[0]);
sandeepmalladi 0:94208ccccbde 281 break;
sandeepmalladi 0:94208ccccbde 282 case '5':
sandeepmalladi 0:94208ccccbde 283 ads1220_com.set_MUX(5);
sandeepmalladi 0:94208ccccbde 284 data_serial.printf("Input Multiplexer Configuration Set to 5: AINP = AIN2, AINN = AIN3\n");
sandeepmalladi 0:94208ccccbde 285 ads1220_com.ReadRegister(ADS1220_0_REGISTER, 0x01, &config_Buff[0]);
sandeepmalladi 0:94208ccccbde 286 data_serial.printf("\r REG0 : %x\n",config_Buff[0]);
sandeepmalladi 0:94208ccccbde 287 break;
sandeepmalladi 0:94208ccccbde 288 case '6':
sandeepmalladi 0:94208ccccbde 289 ads1220_com.set_MUX(6);
sandeepmalladi 0:94208ccccbde 290 data_serial.printf("Input Multiplexer Configuration Set to 6: AINP = AIN1, AINN = AIN0\n");
sandeepmalladi 0:94208ccccbde 291 ads1220_com.ReadRegister(ADS1220_0_REGISTER, 0x01, &config_Buff[0]);
sandeepmalladi 0:94208ccccbde 292 data_serial.printf("\r REG0 : %x\n",config_Buff[0]);
sandeepmalladi 0:94208ccccbde 293 break;
sandeepmalladi 0:94208ccccbde 294 case '7':
sandeepmalladi 0:94208ccccbde 295 ads1220_com.set_MUX(7);
sandeepmalladi 0:94208ccccbde 296 data_serial.printf("Input Multiplexer Configuration Set to 7: AINP = AIN3, AINN = AIN2\n");
sandeepmalladi 0:94208ccccbde 297 ads1220_com.ReadRegister(ADS1220_0_REGISTER, 0x01, &config_Buff[0]);
sandeepmalladi 0:94208ccccbde 298 data_serial.printf("\r REG0 : %x\n",config_Buff[0]);
sandeepmalladi 0:94208ccccbde 299 break;
sandeepmalladi 0:94208ccccbde 300 case '8':
sandeepmalladi 0:94208ccccbde 301 ads1220_com.set_MUX(8);
sandeepmalladi 0:94208ccccbde 302 data_serial.printf("Input Multiplexer Configuration Set to 8: AINP = AIN0, AINN = AVSS\n");
sandeepmalladi 0:94208ccccbde 303 ads1220_com.ReadRegister(ADS1220_0_REGISTER, 0x01, &config_Buff[0]);
sandeepmalladi 0:94208ccccbde 304 data_serial.printf("\r REG0 : %x\n",config_Buff[0]);
sandeepmalladi 0:94208ccccbde 305 break;
sandeepmalladi 0:94208ccccbde 306 case '9':
sandeepmalladi 0:94208ccccbde 307 ads1220_com.set_MUX(9);
sandeepmalladi 0:94208ccccbde 308 data_serial.printf("Input Multiplexer Configuration Set to 9: AINP = AIN1, AINN = AVSS\n");
sandeepmalladi 0:94208ccccbde 309 ads1220_com.ReadRegister(ADS1220_0_REGISTER, 0x01, &config_Buff[0]);
sandeepmalladi 0:94208ccccbde 310 data_serial.printf("\r REG0 : %x\n",config_Buff[0]);
sandeepmalladi 0:94208ccccbde 311 break;
sandeepmalladi 0:94208ccccbde 312 default:
sandeepmalladi 0:94208ccccbde 313 break;
sandeepmalladi 0:94208ccccbde 314
sandeepmalladi 0:94208ccccbde 315
sandeepmalladi 0:94208ccccbde 316 }
sandeepmalladi 0:94208ccccbde 317 }
sandeepmalladi 0:94208ccccbde 318
sandeepmalladi 0:94208ccccbde 319 void Set_Disp_Gain_config(void)
sandeepmalladi 0:94208ccccbde 320 {
sandeepmalladi 0:94208ccccbde 321 char Mux_data;
sandeepmalladi 0:94208ccccbde 322
sandeepmalladi 0:94208ccccbde 323
sandeepmalladi 0:94208ccccbde 324 Mux_data = data_serial.getc();
sandeepmalladi 0:94208ccccbde 325 data_serial.printf("\n");
sandeepmalladi 0:94208ccccbde 326
sandeepmalladi 0:94208ccccbde 327 switch(Mux_data)
sandeepmalladi 0:94208ccccbde 328 {
sandeepmalladi 0:94208ccccbde 329
sandeepmalladi 0:94208ccccbde 330 case '0':
sandeepmalladi 0:94208ccccbde 331 ads1220_com.set_GAIN(0);
sandeepmalladi 0:94208ccccbde 332 data_serial.printf("Set Gain Configuration to 0 for Gain = 1 \n");
sandeepmalladi 0:94208ccccbde 333 ads1220_com.ReadRegister(ADS1220_0_REGISTER, 0x01, &config_Buff[0]);
sandeepmalladi 0:94208ccccbde 334 data_serial.printf("\r REG0 : %x\n",config_Buff[0]);
sandeepmalladi 0:94208ccccbde 335 break;
sandeepmalladi 0:94208ccccbde 336 case '1':
sandeepmalladi 0:94208ccccbde 337 ads1220_com.set_GAIN(1);
sandeepmalladi 0:94208ccccbde 338 data_serial.printf("Set Gain Configuration to 1 for Gain = 2 \n");
sandeepmalladi 0:94208ccccbde 339 ads1220_com.ReadRegister(ADS1220_0_REGISTER, 0x01, &config_Buff[0]);
sandeepmalladi 0:94208ccccbde 340 data_serial.printf("\r REG0 : %x\n",config_Buff[0]);
sandeepmalladi 0:94208ccccbde 341 break;
sandeepmalladi 0:94208ccccbde 342 case '2':
sandeepmalladi 0:94208ccccbde 343 ads1220_com.set_GAIN(2);
sandeepmalladi 0:94208ccccbde 344 data_serial.printf("Set Gain Configuration to 2 for Gain = 4 \n");
sandeepmalladi 0:94208ccccbde 345 ads1220_com.ReadRegister(ADS1220_0_REGISTER, 0x01, &config_Buff[0]);
sandeepmalladi 0:94208ccccbde 346 data_serial.printf("\r REG0 : %x\n",config_Buff[0]);
sandeepmalladi 0:94208ccccbde 347 break;
sandeepmalladi 0:94208ccccbde 348 case '3':
sandeepmalladi 0:94208ccccbde 349 ads1220_com.set_GAIN(3);
sandeepmalladi 0:94208ccccbde 350 data_serial.printf("Set Gain Configuration to 3 for Gain = 8 \n");
sandeepmalladi 0:94208ccccbde 351 ads1220_com.ReadRegister(ADS1220_0_REGISTER, 0x01, &config_Buff[0]);
sandeepmalladi 0:94208ccccbde 352 data_serial.printf("\r REG0 : %x\n",config_Buff[0]);
sandeepmalladi 0:94208ccccbde 353 break;
sandeepmalladi 0:94208ccccbde 354 case '4':
sandeepmalladi 0:94208ccccbde 355 ads1220_com.set_GAIN(4);
sandeepmalladi 0:94208ccccbde 356 data_serial.printf("Set Gain Configuration to 4 for Gain = 16 \n");
sandeepmalladi 0:94208ccccbde 357 ads1220_com.ReadRegister(ADS1220_0_REGISTER, 0x01, &config_Buff[0]);
sandeepmalladi 0:94208ccccbde 358 data_serial.printf("\r REG0 : %x\n",config_Buff[0]);
sandeepmalladi 0:94208ccccbde 359 break;
sandeepmalladi 0:94208ccccbde 360 case '5':
sandeepmalladi 0:94208ccccbde 361 ads1220_com.set_GAIN(5);
sandeepmalladi 0:94208ccccbde 362 data_serial.printf("Set Gain Configuration to 5 for Gain = 32 \n");
sandeepmalladi 0:94208ccccbde 363 ads1220_com.ReadRegister(ADS1220_0_REGISTER, 0x01, &config_Buff[0]);
sandeepmalladi 0:94208ccccbde 364 data_serial.printf("\r REG0 : %x\n",config_Buff[0]);
sandeepmalladi 0:94208ccccbde 365 break;
sandeepmalladi 0:94208ccccbde 366 case '6':
sandeepmalladi 0:94208ccccbde 367 ads1220_com.set_GAIN(6);
sandeepmalladi 0:94208ccccbde 368 data_serial.printf("Set Gain Configuration to 6 for Gain = 64 \n");
sandeepmalladi 0:94208ccccbde 369 ads1220_com.ReadRegister(ADS1220_0_REGISTER, 0x01, &config_Buff[0]);
sandeepmalladi 0:94208ccccbde 370 data_serial.printf("\r REG0 : %x\n",config_Buff[0]);
sandeepmalladi 0:94208ccccbde 371 break;
sandeepmalladi 0:94208ccccbde 372 case '7':
sandeepmalladi 0:94208ccccbde 373 ads1220_com.set_GAIN(7);
sandeepmalladi 0:94208ccccbde 374 data_serial.printf("Set Gain Configuration to 7 for Gain = 128 \n");
sandeepmalladi 0:94208ccccbde 375 ads1220_com.ReadRegister(ADS1220_0_REGISTER, 0x01, &config_Buff[0]);
sandeepmalladi 0:94208ccccbde 376 data_serial.printf("\r REG0 : %x\n",config_Buff[0]);
sandeepmalladi 0:94208ccccbde 377 break;
sandeepmalladi 0:94208ccccbde 378 default:
sandeepmalladi 0:94208ccccbde 379 break;
sandeepmalladi 0:94208ccccbde 380 }
sandeepmalladi 0:94208ccccbde 381 }
sandeepmalladi 0:94208ccccbde 382
sandeepmalladi 0:94208ccccbde 383 void Set_Disp_Bypass_config(void)
sandeepmalladi 0:94208ccccbde 384 {
sandeepmalladi 0:94208ccccbde 385 char Bypass_data;
sandeepmalladi 0:94208ccccbde 386
sandeepmalladi 0:94208ccccbde 387
sandeepmalladi 0:94208ccccbde 388 Bypass_data = data_serial.getc();
sandeepmalladi 0:94208ccccbde 389 data_serial.printf("\n");
sandeepmalladi 0:94208ccccbde 390
sandeepmalladi 0:94208ccccbde 391 switch(Bypass_data)
sandeepmalladi 0:94208ccccbde 392 {
sandeepmalladi 0:94208ccccbde 393
sandeepmalladi 0:94208ccccbde 394 case '0':
sandeepmalladi 0:94208ccccbde 395 ads1220_com.set_PGA_BYPASS(0);
sandeepmalladi 0:94208ccccbde 396 data_serial.printf("Set PGA Bypass Configuration to 0 for PGA Enabling \n");
sandeepmalladi 0:94208ccccbde 397 ads1220_com.ReadRegister(ADS1220_0_REGISTER, 0x01, &config_Buff[0]);
sandeepmalladi 0:94208ccccbde 398 data_serial.printf("\r REG0 : %x\n",config_Buff[0]);
sandeepmalladi 0:94208ccccbde 399 break;
sandeepmalladi 0:94208ccccbde 400 case '1':
sandeepmalladi 0:94208ccccbde 401 ads1220_com.set_PGA_BYPASS(1);
sandeepmalladi 0:94208ccccbde 402 data_serial.printf("Set PGA Bypass Configuration to 1 for PGA Disabled and bypassed\n");
sandeepmalladi 0:94208ccccbde 403 ads1220_com.ReadRegister(ADS1220_0_REGISTER, 0x01, &config_Buff[0]);
sandeepmalladi 0:94208ccccbde 404 data_serial.printf("\r REG0 : %x\n",config_Buff[0]);
sandeepmalladi 0:94208ccccbde 405 break;
sandeepmalladi 0:94208ccccbde 406
sandeepmalladi 0:94208ccccbde 407 default:
sandeepmalladi 0:94208ccccbde 408 break;
sandeepmalladi 0:94208ccccbde 409 }
sandeepmalladi 0:94208ccccbde 410 }
sandeepmalladi 0:94208ccccbde 411
sandeepmalladi 0:94208ccccbde 412 void menu(void)
sandeepmalladi 0:94208ccccbde 413 {
sandeepmalladi 0:94208ccccbde 414 uint8_t data;
sandeepmalladi 0:94208ccccbde 415
sandeepmalladi 0:94208ccccbde 416 data_serial.printf("Menu :\n");
sandeepmalladi 0:94208ccccbde 417 data_serial.printf("\r0.Set Input Multiplexer Configuration\n");
sandeepmalladi 0:94208ccccbde 418 data_serial.printf("\r1.Set Gain\n");
sandeepmalladi 0:94208ccccbde 419 data_serial.printf("\r2.Set Data Rate\n");
sandeepmalladi 0:94208ccccbde 420 data_serial.printf("\r3.Set Operation Mode\n");
sandeepmalladi 0:94208ccccbde 421 data_serial.printf("\r4.Set Conversion Mode\n");
sandeepmalladi 0:94208ccccbde 422 data_serial.printf("\r5.Set Temprature Sensor Mode\n");
sandeepmalladi 0:94208ccccbde 423 data_serial.printf("\r6.Set Burn out Current Sources\n");
sandeepmalladi 0:94208ccccbde 424 data_serial.printf("\r7.Set Voltage Refernce Selection\n");
sandeepmalladi 0:94208ccccbde 425 data_serial.printf("\r8.Set Power Down Configuration\n");
sandeepmalladi 0:94208ccccbde 426
sandeepmalladi 0:94208ccccbde 427 data = data_serial.getc();
sandeepmalladi 0:94208ccccbde 428 data_serial.printf("\n");
sandeepmalladi 0:94208ccccbde 429 switch(data)
sandeepmalladi 0:94208ccccbde 430 {
sandeepmalladi 0:94208ccccbde 431 case '0':
sandeepmalladi 0:94208ccccbde 432 data_serial.printf("\rEnter the value to set Input Multiplexer Configuration\n");
sandeepmalladi 0:94208ccccbde 433 data_serial.printf("\r0: AINP = AIN0, AINN = AIN1 \n");
sandeepmalladi 0:94208ccccbde 434 data_serial.printf("\r1: AINP = AIN0, AINN = AIN2 \n");
sandeepmalladi 0:94208ccccbde 435 data_serial.printf("\r2: AINP = AIN0, AINN = AIN3 \n");
sandeepmalladi 0:94208ccccbde 436 data_serial.printf("\r3: AINP = AIN1, AINN = AIN2 \n");
sandeepmalladi 0:94208ccccbde 437 data_serial.printf("\r4: AINP = AIN1, AINN = AIN3 \n");
sandeepmalladi 0:94208ccccbde 438 data_serial.printf("\r5: AINP = AIN2, AINN = AIN3 \n");
sandeepmalladi 0:94208ccccbde 439 data_serial.printf("\r6: AINP = AIN1, AINN = AIN0 \n");
sandeepmalladi 0:94208ccccbde 440 data_serial.printf("\r7: AINP = AIN3, AINN = AIN2 \n");
sandeepmalladi 0:94208ccccbde 441 data_serial.printf("\r8: AINP = AIN0, AINN = AVSS \n");
sandeepmalladi 0:94208ccccbde 442 data_serial.printf("\r9: AINP = AIN1, AINN = AVSS \n");
sandeepmalladi 0:94208ccccbde 443 data_serial.printf("\rs.Exit\n");
sandeepmalladi 0:94208ccccbde 444
sandeepmalladi 0:94208ccccbde 445 Set_Disp_Mux_config();
sandeepmalladi 0:94208ccccbde 446 break;
sandeepmalladi 0:94208ccccbde 447 case '1':
sandeepmalladi 0:94208ccccbde 448 data_serial.printf("\rEnter the value to set Gain\n");
sandeepmalladi 0:94208ccccbde 449 data_serial.printf("\r0: Gain = 1 \n");
sandeepmalladi 0:94208ccccbde 450 data_serial.printf("\r1: Gain = 2 \n");
sandeepmalladi 0:94208ccccbde 451 data_serial.printf("\r2: Gain = 4 \n");
sandeepmalladi 0:94208ccccbde 452 data_serial.printf("\r3: Gain = 8 \n");
sandeepmalladi 0:94208ccccbde 453 data_serial.printf("\r4: Gain = 16 \n");
sandeepmalladi 0:94208ccccbde 454 data_serial.printf("\r5: Gain = 32 \n");
sandeepmalladi 0:94208ccccbde 455 data_serial.printf("\r6: Gain = 64 \n");
sandeepmalladi 0:94208ccccbde 456 data_serial.printf("\r7: Gain = 128 \n");
sandeepmalladi 0:94208ccccbde 457 data_serial.printf("\rs.Exit\n");
sandeepmalladi 0:94208ccccbde 458
sandeepmalladi 0:94208ccccbde 459 Set_Disp_Gain_config();
sandeepmalladi 0:94208ccccbde 460 break;
sandeepmalladi 0:94208ccccbde 461 case '2':
sandeepmalladi 0:94208ccccbde 462 data_serial.printf("\rEnter the value to set Bypass\n");
sandeepmalladi 0:94208ccccbde 463 data_serial.printf("\r0: PGA Enabled\n");
sandeepmalladi 0:94208ccccbde 464 data_serial.printf("\r1: PGA Disabled\n");
sandeepmalladi 0:94208ccccbde 465 data_serial.printf("\rs.Exit\n");
sandeepmalladi 0:94208ccccbde 466
sandeepmalladi 0:94208ccccbde 467 Set_Disp_Bypass_config();
sandeepmalladi 0:94208ccccbde 468 break;
sandeepmalladi 0:94208ccccbde 469
sandeepmalladi 0:94208ccccbde 470 default:
sandeepmalladi 0:94208ccccbde 471 break;
sandeepmalladi 0:94208ccccbde 472 }
sandeepmalladi 0:94208ccccbde 473
sandeepmalladi 0:94208ccccbde 474 }
sandeepmalladi 0:94208ccccbde 475
sandeepmalladi 0:94208ccccbde 476
sandeepmalladi 0:94208ccccbde 477
sandeepmalladi 0:94208ccccbde 478
sandeepmalladi 0:94208ccccbde 479 void ext_int_DRDY(void)
sandeepmalladi 0:94208ccccbde 480 {
sandeepmalladi 0:94208ccccbde 481 New_data_avialable = 1;
sandeepmalladi 0:94208ccccbde 482 }