san m
/
WeightScale
Weight scale using ADS1220
Fork of WeightScale by
main.cpp@0:94208ccccbde, 2016-05-24 (annotated)
- 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?
User | Revision | Line number | New 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 | } |