Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Fork of MAX11410-test by
main.cpp@9:5d9509c15e8a, 2018-03-16 (annotated)
- Committer:
- shawjo
- Date:
- Fri Mar 16 20:18:44 2018 +0000
- Revision:
- 9:5d9509c15e8a
- Parent:
- 8:882a6cdb1bf3
- Child:
- 11:1050ffc0e9ef
Changed to include all of the bytes of the data in the checksum, not just the LSB. I think this is the version.
Who changed what in which revision?
| User | Revision | Line number | New contents of line |
|---|---|---|---|
| simon | 0:4f78cdfc99de | 1 | // I2CU - Search for devices on an I2C bus |
| simon | 0:4f78cdfc99de | 2 | // Copyright (c) 2009, sford |
| simon | 0:4f78cdfc99de | 3 | // Released under the MIT License: http://mbed.org/license/mit |
| simon | 0:4f78cdfc99de | 4 | // |
| simon | 0:4f78cdfc99de | 5 | // Goes through each device address, seeing if it gets a response |
| simon | 0:4f78cdfc99de | 6 | // - for every device if finds, it prints the 8-bit address |
| simon | 0:4f78cdfc99de | 7 | // - if the program hangs, the bus isn't working (check pull-ups etc) |
| simon | 0:4f78cdfc99de | 8 | // - if it doesn't find your device, check power/bus wiring etc |
| smartsystemdesign | 3:42120705a9bd | 9 | // |
| smartsystemdesign | 3:42120705a9bd | 10 | // - Note: if you plug / unplug devices try cycling power |
| smartsystemdesign | 2:39ba9beabf3c | 11 | |
| simon | 0:4f78cdfc99de | 12 | #include "mbed.h" |
| laserdad | 5:d7b803aa9079 | 13 | #include "MAX11410.h" |
| simon | 0:4f78cdfc99de | 14 | |
| laserdad | 5:d7b803aa9079 | 15 | #define CS1 D9 |
| laserdad | 5:d7b803aa9079 | 16 | #define CS2 D10 |
| laserdad | 5:d7b803aa9079 | 17 | #define MOSI_1 D11 |
| laserdad | 5:d7b803aa9079 | 18 | #define MISO_1 D12 |
| laserdad | 5:d7b803aa9079 | 19 | #define SCLK_1 D13 |
| laserdad | 5:d7b803aa9079 | 20 | #define VDD 3.3 |
| laserdad | 6:c3db4eff9170 | 21 | |
| laserdad | 6:c3db4eff9170 | 22 | |
| laserdad | 5:d7b803aa9079 | 23 | AnalogOut vOut1(A3); |
| laserdad | 5:d7b803aa9079 | 24 | AnalogOut vOut2(A4); |
| laserdad | 5:d7b803aa9079 | 25 | DigitalOut cs_pin1(CS1); |
| laserdad | 5:d7b803aa9079 | 26 | DigitalOut cs_pin2(CS2); |
| laserdad | 5:d7b803aa9079 | 27 | SPI spi(MOSI_1, MISO_1, SCLK_1); |
| laserdad | 5:d7b803aa9079 | 28 | MAX11410 adc1(&spi,&cs_pin1); |
| laserdad | 5:d7b803aa9079 | 29 | MAX11410 adc2(&spi,&cs_pin2); |
| laserdad | 7:5295cbdb123c | 30 | Serial pc(USBTX, USBRX,115200); |
| laserdad | 7:5295cbdb123c | 31 | //Serial pc(USBTX, USBRX, 9600); |
| laserdad | 6:c3db4eff9170 | 32 | Serial rpi(PA_9,PA_10,115200); |
| laserdad | 5:d7b803aa9079 | 33 | |
| laserdad | 5:d7b803aa9079 | 34 | void starting() |
| smartsystemdesign | 2:39ba9beabf3c | 35 | { |
| laserdad | 5:d7b803aa9079 | 36 | pc.printf("this program has started\r\n"); |
| laserdad | 5:d7b803aa9079 | 37 | } |
| laserdad | 5:d7b803aa9079 | 38 | |
| simon | 0:4f78cdfc99de | 39 | |
| laserdad | 6:c3db4eff9170 | 40 | char getNthByte(int32_t data, int ind) |
| laserdad | 6:c3db4eff9170 | 41 | { |
| laserdad | 6:c3db4eff9170 | 42 | return (data>>(8*ind)) & 0x000000FF ; |
| laserdad | 6:c3db4eff9170 | 43 | } |
| laserdad | 5:d7b803aa9079 | 44 | |
| laserdad | 5:d7b803aa9079 | 45 | |
| laserdad | 5:d7b803aa9079 | 46 | void print8bitRegsAdc1(char start_reg,char end_reg) |
| laserdad | 5:d7b803aa9079 | 47 | { |
| laserdad | 5:d7b803aa9079 | 48 | bool int_status; |
| laserdad | 5:d7b803aa9079 | 49 | char val; |
| laserdad | 5:d7b803aa9079 | 50 | for(int n=start_reg;n<=end_reg;n++) |
| laserdad | 5:d7b803aa9079 | 51 | { |
| laserdad | 5:d7b803aa9079 | 52 | val = adc1.read8bits(n,&int_status); |
| laserdad | 5:d7b803aa9079 | 53 | pc.printf("reg %02x, val =%02x\r\n",n,val); |
| simon | 0:4f78cdfc99de | 54 | } |
| laserdad | 5:d7b803aa9079 | 55 | |
| laserdad | 5:d7b803aa9079 | 56 | } |
| laserdad | 5:d7b803aa9079 | 57 | |
| laserdad | 5:d7b803aa9079 | 58 | void print8bitRegsAdc2(char start_reg,char end_reg) |
| laserdad | 5:d7b803aa9079 | 59 | { |
| laserdad | 5:d7b803aa9079 | 60 | bool int_status; |
| laserdad | 5:d7b803aa9079 | 61 | char val; |
| laserdad | 5:d7b803aa9079 | 62 | for(int n=start_reg;n<=end_reg;n++) |
| laserdad | 5:d7b803aa9079 | 63 | { |
| laserdad | 5:d7b803aa9079 | 64 | val = adc2.read8bits(n,&int_status); |
| laserdad | 5:d7b803aa9079 | 65 | pc.printf("reg %02x, val =%02x\r\n",n,val); |
| laserdad | 5:d7b803aa9079 | 66 | } |
| simon | 0:4f78cdfc99de | 67 | } |
| smartsystemdesign | 2:39ba9beabf3c | 68 | |
| laserdad | 7:5295cbdb123c | 69 | |
| laserdad | 5:d7b803aa9079 | 70 | int main() |
| smartsystemdesign | 2:39ba9beabf3c | 71 | { |
| laserdad | 5:d7b803aa9079 | 72 | int32_t channel_data[10]; |
| laserdad | 7:5295cbdb123c | 73 | int32_t channel_data2[10]; |
| laserdad | 7:5295cbdb123c | 74 | int32_t checksum2 =0; |
| laserdad | 7:5295cbdb123c | 75 | int32_t checksum = 0; |
| laserdad | 7:5295cbdb123c | 76 | char checksum_byte = 0; |
| laserdad | 7:5295cbdb123c | 77 | char byte2print[40]; |
| laserdad | 6:c3db4eff9170 | 78 | double vdiff=0.01; |
| laserdad | 5:d7b803aa9079 | 79 | vOut1 = 0.5-vdiff/2; |
| laserdad | 5:d7b803aa9079 | 80 | vOut2 = 0.5+vdiff/2; |
| laserdad | 5:d7b803aa9079 | 81 | starting(); |
| laserdad | 7:5295cbdb123c | 82 | |
| laserdad | 5:d7b803aa9079 | 83 | bool int_state; |
| laserdad | 5:d7b803aa9079 | 84 | spi.format(8,MAX11410_SPI_MODE); //configure number of spi bits 8, 16 |
| laserdad | 5:d7b803aa9079 | 85 | spi.frequency(8000000); // Max 8MHz |
| laserdad | 5:d7b803aa9079 | 86 | //read chip ID |
| laserdad | 5:d7b803aa9079 | 87 | |
| laserdad | 5:d7b803aa9079 | 88 | pc.printf("chip ID %d\r\n",adc1.read8bits(REG_PART_ID,&int_state) ); |
| laserdad | 5:d7b803aa9079 | 89 | |
| laserdad | 5:d7b803aa9079 | 90 | //config ADC 1 |
| laserdad | 5:d7b803aa9079 | 91 | adc1.reset(); //POR |
| laserdad | 5:d7b803aa9079 | 92 | // adc2.reset(); |
| laserdad | 5:d7b803aa9079 | 93 | |
| laserdad | 5:d7b803aa9079 | 94 | //check default register configs |
| laserdad | 5:d7b803aa9079 | 95 | pc.printf("default regs for ADC1\r\n"); |
| laserdad | 5:d7b803aa9079 | 96 | print8bitRegsAdc1(REG_PD,REG_WAIT_START); |
| laserdad | 5:d7b803aa9079 | 97 | |
| laserdad | 5:d7b803aa9079 | 98 | pc.printf("default regs for ADC2\r\n"); |
| laserdad | 5:d7b803aa9079 | 99 | print8bitRegsAdc2(REG_PD,REG_WAIT_START); |
| laserdad | 5:d7b803aa9079 | 100 | |
| laserdad | 5:d7b803aa9079 | 101 | |
| laserdad | 5:d7b803aa9079 | 102 | //config interrupts, PGA, Buffer, polarity, reference |
| laserdad | 5:d7b803aa9079 | 103 | char mode_config = MODE_NORMAL; |
| laserdad | 5:d7b803aa9079 | 104 | adc1.write8bitReg(REG_PD,mode_config); //got to normal mode |
| laserdad | 5:d7b803aa9079 | 105 | adc2.write8bitReg(REG_PD,mode_config); //got to normal mode |
| laserdad | 5:d7b803aa9079 | 106 | |
| laserdad | 5:d7b803aa9079 | 107 | char filter_config = FIR_SIXTY | _RATE(4) ; // |
| laserdad | 5:d7b803aa9079 | 108 | adc1.write8bitReg( REG_FILTER,filter_config ); |
| laserdad | 5:d7b803aa9079 | 109 | adc2.write8bitReg( REG_FILTER,filter_config ); |
| laserdad | 5:d7b803aa9079 | 110 | |
| laserdad | 5:d7b803aa9079 | 111 | char ctrl_config = INT_CLOCK | BIPOLAR | TWOS_COMP | _PBUF_EN(0) | _NBUF_EN(0) | REF_AVDD ; //ADC configuration |
| laserdad | 5:d7b803aa9079 | 112 | adc1.write8bitReg( REG_CTRL, ctrl_config ); |
| laserdad | 5:d7b803aa9079 | 113 | adc2.write8bitReg( REG_CTRL, ctrl_config ); |
| laserdad | 5:d7b803aa9079 | 114 | |
| laserdad | 5:d7b803aa9079 | 115 | char source_config = VBIAS_ACTIVE | BRN_OFF | _IDAC(0); //not sourcing current |
| laserdad | 5:d7b803aa9079 | 116 | adc1.write8bitReg( REG_SOURCE,source_config ); |
| laserdad | 5:d7b803aa9079 | 117 | adc2.write8bitReg( REG_SOURCE,source_config ); |
| laserdad | 5:d7b803aa9079 | 118 | |
| laserdad | 5:d7b803aa9079 | 119 | uint32_t status_ie_config = DATA_RDY_INT | CAL_RDY_INT | CONV_RDY_INT; |
| laserdad | 5:d7b803aa9079 | 120 | adc1.write24bitReg(REG_STATUS_IE,status_ie_config); |
| laserdad | 5:d7b803aa9079 | 121 | adc2.write8bitReg( REG_SOURCE,source_config ); |
| laserdad | 5:d7b803aa9079 | 122 | |
| laserdad | 5:d7b803aa9079 | 123 | char gain_setting = 0; |
| laserdad | 5:d7b803aa9079 | 124 | char pga_config = PGA | _GAIN_EXP(gain_setting) ; //no gain |
| laserdad | 5:d7b803aa9079 | 125 | adc1.write8bitReg(REG_PGA,pga_config); |
| laserdad | 5:d7b803aa9079 | 126 | adc2.write8bitReg(REG_PGA,pga_config); |
| laserdad | 5:d7b803aa9079 | 127 | |
| laserdad | 5:d7b803aa9079 | 128 | pc.printf("PGA gain = %d\r\n",1<<gain_setting); |
| laserdad | 5:d7b803aa9079 | 129 | |
| laserdad | 5:d7b803aa9079 | 130 | //check register writes |
| laserdad | 5:d7b803aa9079 | 131 | pc.printf("checking register writes\r\n"); |
| laserdad | 5:d7b803aa9079 | 132 | pc.printf("reg %02x, val %02x, set to %02x\r\n",REG_PD,adc1.read8bits(REG_PD,&int_state),mode_config); |
| laserdad | 5:d7b803aa9079 | 133 | pc.printf("reg %02x, val %02x, set to %02x\r\n",REG_FILTER,adc1.read8bits(REG_FILTER,&int_state),filter_config); |
| laserdad | 5:d7b803aa9079 | 134 | pc.printf("reg %02x, val %02x, set to %02x\r\n",REG_CTRL,adc1.read8bits(REG_CTRL,&int_state),ctrl_config); |
| laserdad | 5:d7b803aa9079 | 135 | pc.printf("reg %02x, val %02x, set to %02x\r\n",REG_SOURCE,adc1.read8bits(REG_SOURCE,&int_state),source_config); |
| laserdad | 5:d7b803aa9079 | 136 | pc.printf("reg %02x, val %06x, set to %06x\r\n",REG_STATUS_IE,adc1.read24bits(REG_STATUS_IE,&int_state),status_ie_config); |
| laserdad | 5:d7b803aa9079 | 137 | pc.printf("reg %02x, val %02x, set to %02x\r\n",REG_PGA,adc1.read8bits(REG_PGA,&int_state),pga_config); |
| laserdad | 5:d7b803aa9079 | 138 | |
| laserdad | 5:d7b803aa9079 | 139 | // for each channel 1-5 |
| shawjo | 9:5d9509c15e8a | 140 | /// for(int n=0;n<5;n++) |
| shawjo | 9:5d9509c15e8a | 141 | /// { |
| shawjo | 9:5d9509c15e8a | 142 | /// //select channel |
| shawjo | 9:5d9509c15e8a | 143 | /// char p_ch = 2*n<<4; |
| shawjo | 9:5d9509c15e8a | 144 | /// char n_ch = 2*n+1; |
| shawjo | 9:5d9509c15e8a | 145 | /// adc1.write8bitReg(REG_MUX_CTRL0, p_ch | n_ch ); |
| shawjo | 9:5d9509c15e8a | 146 | /// |
| shawjo | 9:5d9509c15e8a | 147 | /// //select data output register and begin conversion |
| shawjo | 9:5d9509c15e8a | 148 | /// adc1.write8bitReg(REG_CONV_START, (_DEST(n) | SINGLE_CONV) ); |
| shawjo | 9:5d9509c15e8a | 149 | /// |
| shawjo | 9:5d9509c15e8a | 150 | /// //optional: cal Gain |
| shawjo | 9:5d9509c15e8a | 151 | /// |
| shawjo | 9:5d9509c15e8a | 152 | /// //optional: cal Offset |
| shawjo | 9:5d9509c15e8a | 153 | /// |
| shawjo | 9:5d9509c15e8a | 154 | /// //optional: store cal parameters |
| shawjo | 9:5d9509c15e8a | 155 | /// |
| shawjo | 9:5d9509c15e8a | 156 | /// //begin conversion |
| shawjo | 9:5d9509c15e8a | 157 | /// |
| shawjo | 9:5d9509c15e8a | 158 | /// //wait for interrupt |
| shawjo | 9:5d9509c15e8a | 159 | /// while(!adc1.interrupt() ) |
| shawjo | 9:5d9509c15e8a | 160 | /// { |
| shawjo | 9:5d9509c15e8a | 161 | /// wait_ms(CONV_DELAY_MS);//do nothing |
| shawjo | 9:5d9509c15e8a | 162 | ///// pc.printf("waiting for int"); |
| shawjo | 9:5d9509c15e8a | 163 | /// } |
| shawjo | 9:5d9509c15e8a | 164 | /// |
| shawjo | 9:5d9509c15e8a | 165 | /// //read conversion |
| shawjo | 9:5d9509c15e8a | 166 | /// channel_data[n] = adc1.read24bitsSigned(REG_DATA0+n,&int_state); |
| shawjo | 9:5d9509c15e8a | 167 | /// pc.printf("%d, ",channel_data[n]); |
| shawjo | 9:5d9509c15e8a | 168 | /// } //channel sweep |
| shawjo | 9:5d9509c15e8a | 169 | /// pc.printf("\r\n"); |
| shawjo | 9:5d9509c15e8a | 170 | /// |
| shawjo | 9:5d9509c15e8a | 171 | /// |
| shawjo | 9:5d9509c15e8a | 172 | /// //config ADC 2: repeat above |
| laserdad | 5:d7b803aa9079 | 173 | |
| laserdad | 5:d7b803aa9079 | 174 | |
| laserdad | 7:5295cbdb123c | 175 | |
| laserdad | 7:5295cbdb123c | 176 | pc.printf("beginning while loop"); |
| laserdad | 7:5295cbdb123c | 177 | wait_ms(1000); |
| laserdad | 6:c3db4eff9170 | 178 | while(1) |
| laserdad | 6:c3db4eff9170 | 179 | { |
| laserdad | 6:c3db4eff9170 | 180 | for(int n=0; n<5; n++) |
| laserdad | 6:c3db4eff9170 | 181 | { |
| laserdad | 6:c3db4eff9170 | 182 | //read each channel |
| laserdad | 6:c3db4eff9170 | 183 | //select channel |
| shawjo | 9:5d9509c15e8a | 184 | char p_ch = 2*n+1<<4; |
| shawjo | 9:5d9509c15e8a | 185 | char n_ch = 2*n; |
| laserdad | 6:c3db4eff9170 | 186 | adc1.write8bitReg(REG_MUX_CTRL0, p_ch | n_ch ); |
| laserdad | 6:c3db4eff9170 | 187 | |
| laserdad | 6:c3db4eff9170 | 188 | //select data output register and begin conversion |
| laserdad | 6:c3db4eff9170 | 189 | adc1.write8bitReg(REG_CONV_START, (_DEST(n) | SINGLE_CONV) ); |
| laserdad | 6:c3db4eff9170 | 190 | |
| laserdad | 6:c3db4eff9170 | 191 | //optional: cal Gain |
| laserdad | 6:c3db4eff9170 | 192 | |
| laserdad | 6:c3db4eff9170 | 193 | //optional: cal Offset |
| laserdad | 6:c3db4eff9170 | 194 | |
| laserdad | 6:c3db4eff9170 | 195 | //optional: store cal parameters |
| laserdad | 6:c3db4eff9170 | 196 | |
| laserdad | 6:c3db4eff9170 | 197 | //begin conversion |
| laserdad | 6:c3db4eff9170 | 198 | |
| laserdad | 6:c3db4eff9170 | 199 | //wait for interrupt |
| laserdad | 6:c3db4eff9170 | 200 | while(!adc1.interrupt() ) |
| laserdad | 6:c3db4eff9170 | 201 | { |
| laserdad | 6:c3db4eff9170 | 202 | wait_ms(CONV_DELAY_MS);//do nothing |
| laserdad | 7:5295cbdb123c | 203 | // pc.printf("waiting for int"); |
| laserdad | 6:c3db4eff9170 | 204 | } |
| laserdad | 6:c3db4eff9170 | 205 | |
| laserdad | 6:c3db4eff9170 | 206 | //read conversion |
| laserdad | 6:c3db4eff9170 | 207 | channel_data[n] = adc1.read24bitsSigned(REG_DATA0+n,&int_state); |
| laserdad | 6:c3db4eff9170 | 208 | |
| laserdad | 6:c3db4eff9170 | 209 | } |
| laserdad | 6:c3db4eff9170 | 210 | for(int n=0; n<5; n++) |
| laserdad | 6:c3db4eff9170 | 211 | { |
| laserdad | 6:c3db4eff9170 | 212 | //read each channel |
| laserdad | 6:c3db4eff9170 | 213 | //select channel |
| shawjo | 9:5d9509c15e8a | 214 | char p_ch = 2*n+1<<4; |
| shawjo | 9:5d9509c15e8a | 215 | char n_ch = 2*n; |
| laserdad | 6:c3db4eff9170 | 216 | adc2.write8bitReg(REG_MUX_CTRL0, p_ch | n_ch ); |
| laserdad | 6:c3db4eff9170 | 217 | |
| laserdad | 6:c3db4eff9170 | 218 | //select data output register and begin conversion |
| laserdad | 6:c3db4eff9170 | 219 | adc2.write8bitReg(REG_CONV_START, (_DEST(n) | SINGLE_CONV) ); |
| laserdad | 6:c3db4eff9170 | 220 | |
| laserdad | 6:c3db4eff9170 | 221 | //optional: cal Gain |
| laserdad | 6:c3db4eff9170 | 222 | |
| laserdad | 6:c3db4eff9170 | 223 | //optional: cal Offset |
| laserdad | 6:c3db4eff9170 | 224 | |
| laserdad | 6:c3db4eff9170 | 225 | //optional: store cal parameters |
| laserdad | 6:c3db4eff9170 | 226 | |
| laserdad | 6:c3db4eff9170 | 227 | //begin conversion |
| laserdad | 6:c3db4eff9170 | 228 | |
| laserdad | 6:c3db4eff9170 | 229 | //wait for interrupt |
| laserdad | 6:c3db4eff9170 | 230 | while(!adc2.interrupt() ) |
| laserdad | 6:c3db4eff9170 | 231 | { |
| laserdad | 6:c3db4eff9170 | 232 | wait_ms(CONV_DELAY_MS);//do nothing |
| laserdad | 6:c3db4eff9170 | 233 | } |
| laserdad | 6:c3db4eff9170 | 234 | |
| laserdad | 6:c3db4eff9170 | 235 | //read conversion |
| laserdad | 6:c3db4eff9170 | 236 | channel_data[n+5] = adc2.read24bitsSigned(REG_DATA0+n,&int_state); |
| laserdad | 6:c3db4eff9170 | 237 | } |
| laserdad | 6:c3db4eff9170 | 238 | |
| laserdad | 6:c3db4eff9170 | 239 | // calc checksum |
| shawjo | 8:882a6cdb1bf3 | 240 | checksum= 0x66 + 0x01; |
| shawjo | 8:882a6cdb1bf3 | 241 | // for (int n=0; n<10; n++) |
| shawjo | 8:882a6cdb1bf3 | 242 | // { |
| shawjo | 8:882a6cdb1bf3 | 243 | // checksum += channel_data[n]; |
| shawjo | 8:882a6cdb1bf3 | 244 | // } |
| shawjo | 8:882a6cdb1bf3 | 245 | // checksum_byte = (char) checksum; |
| laserdad | 6:c3db4eff9170 | 246 | |
| laserdad | 6:c3db4eff9170 | 247 | for (int n=0; n<10; n++) |
| laserdad | 6:c3db4eff9170 | 248 | { |
| laserdad | 6:c3db4eff9170 | 249 | for(int m=0;m<4;m++) |
| laserdad | 6:c3db4eff9170 | 250 | { |
| laserdad | 6:c3db4eff9170 | 251 | byte2print[n*4+m] = getNthByte(channel_data[n],3-m); |
| shawjo | 8:882a6cdb1bf3 | 252 | checksum += getNthByte(channel_data[n],3-m); |
| shawjo | 8:882a6cdb1bf3 | 253 | } |
| laserdad | 6:c3db4eff9170 | 254 | } |
| shawjo | 8:882a6cdb1bf3 | 255 | checksum_byte = (char) checksum; |
| shawjo | 8:882a6cdb1bf3 | 256 | |
| laserdad | 6:c3db4eff9170 | 257 | //print data and checksum |
| laserdad | 6:c3db4eff9170 | 258 | |
| laserdad | 6:c3db4eff9170 | 259 | // print header 0x6601 |
| laserdad | 6:c3db4eff9170 | 260 | rpi.putc(0x66); |
| laserdad | 6:c3db4eff9170 | 261 | rpi.putc(0x01); |
| laserdad | 6:c3db4eff9170 | 262 | for (int n =0; n<40;n++) |
| laserdad | 6:c3db4eff9170 | 263 | { |
| laserdad | 6:c3db4eff9170 | 264 | rpi.putc(byte2print[n]); |
| laserdad | 6:c3db4eff9170 | 265 | } |
| laserdad | 7:5295cbdb123c | 266 | rpi.putc( checksum_byte ); |
| laserdad | 7:5295cbdb123c | 267 | // now reassemble the bits and print them |
| laserdad | 7:5295cbdb123c | 268 | |
| laserdad | 7:5295cbdb123c | 269 | for (int n=0;n<10;n++) |
| laserdad | 7:5295cbdb123c | 270 | { |
| laserdad | 7:5295cbdb123c | 271 | channel_data2[n] = (byte2print[4*n]<<24 ) | ( byte2print[4*n+1]<<16 ) | ( byte2print[4*n+2] << 8 ) | byte2print[4*n+3]; |
| laserdad | 7:5295cbdb123c | 272 | } |
| laserdad | 7:5295cbdb123c | 273 | pc.printf("orig reconstructed\r\n"); |
| laserdad | 7:5295cbdb123c | 274 | for (int n=0;n<10;n++) |
| laserdad | 7:5295cbdb123c | 275 | { |
| laserdad | 7:5295cbdb123c | 276 | pc.printf("%d, %d, %d\r\n",n,channel_data[n],channel_data2[n]); |
| laserdad | 7:5295cbdb123c | 277 | } |
| laserdad | 7:5295cbdb123c | 278 | checksum2 = 0; |
| laserdad | 7:5295cbdb123c | 279 | for(int n=0;n<10;n++) |
| laserdad | 7:5295cbdb123c | 280 | { |
| laserdad | 7:5295cbdb123c | 281 | checksum2 += channel_data2[n]; |
| laserdad | 7:5295cbdb123c | 282 | } |
| laserdad | 7:5295cbdb123c | 283 | pc.printf("checksum %02X, %08X, %08X\r\n",checksum_byte,checksum,checksum2); |
| laserdad | 6:c3db4eff9170 | 284 | } //end while |
| laserdad | 5:d7b803aa9079 | 285 | |
| laserdad | 5:d7b803aa9079 | 286 | } //END MAIN |
