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.
Dependencies: DDRO_Farrari mbed
Fork of DDRO_Farrari by
main.cpp@2:e94460b2149f, 2014-02-20 (annotated)
- Committer:
- liangzhen
- Date:
- Thu Feb 20 03:40:20 2014 +0000
- Revision:
- 2:e94460b2149f
- Parent:
- 1:6a820a0ca03b
- Child:
- 3:e1a6e12233dd
updated with new PLL configuration function
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
liangzhen | 0:84a8bcfbdec9 | 1 | |
liangzhen | 0:84a8bcfbdec9 | 2 | #include "mbed.h" |
liangzhen | 0:84a8bcfbdec9 | 3 | #include "dac.h" |
liangzhen | 0:84a8bcfbdec9 | 4 | #include "board_test.h" |
liangzhen | 0:84a8bcfbdec9 | 5 | #include "scan.h" |
liangzhen | 0:84a8bcfbdec9 | 6 | #include "power.h" |
liangzhen | 0:84a8bcfbdec9 | 7 | #include "pinout.h" |
liangzhen | 0:84a8bcfbdec9 | 8 | #include "pll.h" |
liangzhen | 0:84a8bcfbdec9 | 9 | #include "lcd.h" |
liangzhen | 0:84a8bcfbdec9 | 10 | #include "jtag.h" |
liangzhen | 0:84a8bcfbdec9 | 11 | #include "mmap.h" |
liangzhen | 1:6a820a0ca03b | 12 | #include "clock.h" |
liangzhen | 0:84a8bcfbdec9 | 13 | #include "EasyBMP.h" |
liangzhen | 1:6a820a0ca03b | 14 | #include "main.h" |
liangzhen | 0:84a8bcfbdec9 | 15 | |
liangzhen | 2:e94460b2149f | 16 | //#define WRITE_RESULTS |
liangzhen | 2:e94460b2149f | 17 | FILE *results_file; |
liangzhen | 2:e94460b2149f | 18 | |
liangzhen | 2:e94460b2149f | 19 | DigitalOut myled(LED4); |
liangzhen | 2:e94460b2149f | 20 | #ifdef WRITE_RESULTS |
liangzhen | 2:e94460b2149f | 21 | //LocalFileSystem local("local"); // Create the local filesystem under the name "local" |
liangzhen | 2:e94460b2149f | 22 | #endif |
liangzhen | 2:e94460b2149f | 23 | |
liangzhen | 1:6a820a0ca03b | 24 | int main() |
liangzhen | 1:6a820a0ca03b | 25 | { |
liangzhen | 1:6a820a0ca03b | 26 | float core_volt = 1; |
liangzhen | 2:e94460b2149f | 27 | #ifdef WRITE_RESULTS |
liangzhen | 2:e94460b2149f | 28 | results_file=fopen("/local/results.txt", "a"); // Open "out.txt" on the local file system for writing |
liangzhen | 2:e94460b2149f | 29 | #endif |
liangzhen | 2:e94460b2149f | 30 | |
liangzhen | 0:84a8bcfbdec9 | 31 | |
liangzhen | 1:6a820a0ca03b | 32 | //wdt.kick(20.0); |
liangzhen | 0:84a8bcfbdec9 | 33 | pc.printf("Begin FFT\r\n"); |
liangzhen | 0:84a8bcfbdec9 | 34 | power_down(); |
liangzhen | 1:6a820a0ca03b | 35 | power_up(core_volt); // Power Up Chip |
liangzhen | 0:84a8bcfbdec9 | 36 | pc.printf("Powered up!\r\n"); |
liangzhen | 0:84a8bcfbdec9 | 37 | |
liangzhen | 0:84a8bcfbdec9 | 38 | PORESETn = 0; |
liangzhen | 0:84a8bcfbdec9 | 39 | CORERESETn = 0; |
liangzhen | 1:6a820a0ca03b | 40 | wait_us(100); |
liangzhen | 2:e94460b2149f | 41 | pc.getc(); |
liangzhen | 0:84a8bcfbdec9 | 42 | PORESETn = 1; |
liangzhen | 0:84a8bcfbdec9 | 43 | CORERESETn = 1; |
liangzhen | 2:e94460b2149f | 44 | pc.getc(); |
liangzhen | 0:84a8bcfbdec9 | 45 | JTAG jtag; |
liangzhen | 0:84a8bcfbdec9 | 46 | int idcode = jtag.readID(); |
liangzhen | 0:84a8bcfbdec9 | 47 | if(idcode != 0x4ba00477) { |
liangzhen | 0:84a8bcfbdec9 | 48 | pc.printf("ERROR: IDCode %X\r\n", idcode); |
liangzhen | 1:6a820a0ca03b | 49 | wait(2); |
liangzhen | 0:84a8bcfbdec9 | 50 | power_down(); |
liangzhen | 0:84a8bcfbdec9 | 51 | return -1; |
liangzhen | 0:84a8bcfbdec9 | 52 | } |
liangzhen | 0:84a8bcfbdec9 | 53 | pc.printf("IDCode %X\r\n", idcode); |
liangzhen | 1:6a820a0ca03b | 54 | |
liangzhen | 0:84a8bcfbdec9 | 55 | jtag.reset(); |
liangzhen | 0:84a8bcfbdec9 | 56 | jtag.leaveState(); |
liangzhen | 0:84a8bcfbdec9 | 57 | jtag.PowerupDAP(); |
liangzhen | 1:6a820a0ca03b | 58 | // setup necessary internal clock source selection |
liangzhen | 1:6a820a0ca03b | 59 | jtag.writeMemory(intclk_source, 2); |
liangzhen | 1:6a820a0ca03b | 60 | jtag.writeMemory(extclk_source, 1); |
liangzhen | 1:6a820a0ca03b | 61 | jtag.writeMemory(ext_div_by, 10); |
liangzhen | 2:e94460b2149f | 62 | for(int iter=0; iter<3; iter++) { |
liangzhen | 2:e94460b2149f | 63 | #ifdef WRITE_RESULTS |
liangzhen | 2:e94460b2149f | 64 | fprintf(results_file,"Iteration: %d\n", iter); |
liangzhen | 2:e94460b2149f | 65 | #endif |
liangzhen | 2:e94460b2149f | 66 | float voltage=1; |
liangzhen | 2:e94460b2149f | 67 | for(int i=0; i<=5; i++) { |
liangzhen | 2:e94460b2149f | 68 | voltage = 1 - 0.04*i; |
liangzhen | 2:e94460b2149f | 69 | power_core(voltage); |
liangzhen | 2:e94460b2149f | 70 | #ifdef WRITE_RESULTS |
liangzhen | 2:e94460b2149f | 71 | fprintf(results_file,"V: %f\n", voltage); |
liangzhen | 2:e94460b2149f | 72 | #endif |
liangzhen | 2:e94460b2149f | 73 | int upper = 120; |
liangzhen | 2:e94460b2149f | 74 | int lower = 22; |
liangzhen | 2:e94460b2149f | 75 | while (upper-lower > 1) { |
liangzhen | 2:e94460b2149f | 76 | int middle = (upper+lower)/2; |
liangzhen | 2:e94460b2149f | 77 | middle = middle * 5; |
liangzhen | 2:e94460b2149f | 78 | bool if_pass = true; |
liangzhen | 2:e94460b2149f | 79 | for (int j=1; j<10; j++) { |
liangzhen | 2:e94460b2149f | 80 | if(!check_FFT_Freq(jtag,middle)) { |
liangzhen | 2:e94460b2149f | 81 | if_pass = false; |
liangzhen | 2:e94460b2149f | 82 | j=10; |
liangzhen | 2:e94460b2149f | 83 | } |
liangzhen | 2:e94460b2149f | 84 | } |
liangzhen | 2:e94460b2149f | 85 | if(if_pass) { |
liangzhen | 2:e94460b2149f | 86 | lower = middle/5; |
liangzhen | 2:e94460b2149f | 87 | } else { |
liangzhen | 2:e94460b2149f | 88 | upper = middle/5; |
liangzhen | 2:e94460b2149f | 89 | } |
liangzhen | 2:e94460b2149f | 90 | } |
liangzhen | 2:e94460b2149f | 91 | pc.printf("fft working frequency: %d MHz\r\n", lower*5); |
liangzhen | 2:e94460b2149f | 92 | #ifdef WRITE_RESULTS |
liangzhen | 2:e94460b2149f | 93 | fprintf(results_file,"FFT: %d\n", lower*5); |
liangzhen | 2:e94460b2149f | 94 | #endif |
liangzhen | 2:e94460b2149f | 95 | set_pll_frequency (200, jtag); |
liangzhen | 2:e94460b2149f | 96 | DDRO_Sensor(jtag); |
liangzhen | 2:e94460b2149f | 97 | wait(1); |
liangzhen | 2:e94460b2149f | 98 | gain_ctrl=1; |
liangzhen | 2:e94460b2149f | 99 | #ifdef WRITE_RESULTS |
liangzhen | 2:e94460b2149f | 100 | fprintf(results_file,"GAIN_CTRL = 1\r\n"); |
liangzhen | 2:e94460b2149f | 101 | fprintf(results_file,"SEN: %f\r\n",meas_sen.read()); |
liangzhen | 2:e94460b2149f | 102 | fprintf(results_file,"MEM1: %f\r\n",meas_mem1.read()); |
liangzhen | 2:e94460b2149f | 103 | fprintf(results_file,"MEM2: %f\r\n",meas_mem2.read()); |
liangzhen | 2:e94460b2149f | 104 | fprintf(results_file,"CORE: %f\r\n",meas_core.read()); |
liangzhen | 2:e94460b2149f | 105 | #endif |
liangzhen | 2:e94460b2149f | 106 | wait(1); |
liangzhen | 2:e94460b2149f | 107 | gain_ctrl=0; |
liangzhen | 2:e94460b2149f | 108 | #ifdef WRITE_RESULTS |
liangzhen | 2:e94460b2149f | 109 | |
liangzhen | 2:e94460b2149f | 110 | fprintf(results_file,"GAIN_CTRL = 0\r\n"); |
liangzhen | 2:e94460b2149f | 111 | fprintf(results_file,"SEN: %f\r\n",meas_sen.read()); |
liangzhen | 2:e94460b2149f | 112 | fprintf(results_file,"MEM1: %f\r\n",meas_mem1.read()); |
liangzhen | 2:e94460b2149f | 113 | fprintf(results_file,"MEM2: %f\r\n",meas_mem2.read()); |
liangzhen | 2:e94460b2149f | 114 | fprintf(results_file,"CORE: %f\r\n",meas_core.read()); |
liangzhen | 2:e94460b2149f | 115 | #endif |
liangzhen | 2:e94460b2149f | 116 | } |
liangzhen | 2:e94460b2149f | 117 | } |
liangzhen | 1:6a820a0ca03b | 118 | /* |
liangzhen | 2:e94460b2149f | 119 | |
liangzhen | 0:84a8bcfbdec9 | 120 | jtag.writeMemory(ddro_pad_out, 0xffffffff); |
liangzhen | 1:6a820a0ca03b | 121 | printf("Reading ddro pad out %x\r\n", jtag.readMemory(ddro_pad_out)); |
liangzhen | 0:84a8bcfbdec9 | 122 | jtag.writeMemory(ddro_div_by, 0xffffffff); |
liangzhen | 1:6a820a0ca03b | 123 | printf("Reading ddro div by %x\r\n", jtag.readMemory(ddro_div_by)); |
liangzhen | 2:e94460b2149f | 124 | */ |
liangzhen | 1:6a820a0ca03b | 125 | |
liangzhen | 2:e94460b2149f | 126 | |
liangzhen | 1:6a820a0ca03b | 127 | |
liangzhen | 0:84a8bcfbdec9 | 128 | pc.printf("Powering Down\r\n"); |
liangzhen | 0:84a8bcfbdec9 | 129 | power_down(); |
liangzhen | 2:e94460b2149f | 130 | #ifdef WRITE_RESULTS |
liangzhen | 2:e94460b2149f | 131 | fclose(results_file); |
liangzhen | 2:e94460b2149f | 132 | #endif |
liangzhen | 0:84a8bcfbdec9 | 133 | pc.printf("Done\r\n"); |
liangzhen | 2:e94460b2149f | 134 | while(1) { |
liangzhen | 2:e94460b2149f | 135 | myled = 1; |
liangzhen | 2:e94460b2149f | 136 | wait(0.2); |
liangzhen | 2:e94460b2149f | 137 | myled = 0; |
liangzhen | 2:e94460b2149f | 138 | wait(0.2); |
liangzhen | 2:e94460b2149f | 139 | } |
liangzhen | 0:84a8bcfbdec9 | 140 | } |
liangzhen | 0:84a8bcfbdec9 | 141 | |
liangzhen | 1:6a820a0ca03b | 142 | int check_FFT_Freq(JTAG &jtag, int fMHz) |
liangzhen | 1:6a820a0ca03b | 143 | { |
liangzhen | 1:6a820a0ca03b | 144 | if(jtag.loadProgram()) { |
liangzhen | 1:6a820a0ca03b | 145 | dual_printf("Load Failed"); |
liangzhen | 1:6a820a0ca03b | 146 | exit(1); |
liangzhen | 1:6a820a0ca03b | 147 | } |
liangzhen | 1:6a820a0ca03b | 148 | set_pll_frequency (fMHz, jtag); |
liangzhen | 1:6a820a0ca03b | 149 | //dual_printf("Resetting"); |
liangzhen | 1:6a820a0ca03b | 150 | CORERESETn = 0; |
liangzhen | 1:6a820a0ca03b | 151 | CORERESETn = 1; |
liangzhen | 1:6a820a0ca03b | 152 | wait(0.2); |
liangzhen | 1:6a820a0ca03b | 153 | jtag.reset(); |
liangzhen | 1:6a820a0ca03b | 154 | jtag.leaveState(); |
liangzhen | 1:6a820a0ca03b | 155 | jtag.PowerupDAP(); |
liangzhen | 1:6a820a0ca03b | 156 | unsigned int buffer_fft[64]; |
liangzhen | 1:6a820a0ca03b | 157 | for (int number1=0; number1<=63; number1++) { |
liangzhen | 1:6a820a0ca03b | 158 | buffer_fft[number1] = jtag.readMemory(0x24000100 + number1*4); |
liangzhen | 1:6a820a0ca03b | 159 | jtag.writeMemory(0x24000100 + number1*4,0xF0F0F0F0); |
liangzhen | 1:6a820a0ca03b | 160 | //printf("new[%d]: %d\r\n", number1, buffer_fft[number1]); |
liangzhen | 0:84a8bcfbdec9 | 161 | } |
liangzhen | 1:6a820a0ca03b | 162 | if ( buffer_fft[0] == 0x0000fffc && buffer_fft[1]==0x0000fffd && buffer_fft[2]==0xffc0000a && buffer_fft[3]==0x0000fffe && |
liangzhen | 1:6a820a0ca03b | 163 | buffer_fft[4]==0x0000fffd && buffer_fft[5]==0x0000ffff && buffer_fft[6]==0x0000fffd && buffer_fft[7]==0x00000000 && |
liangzhen | 1:6a820a0ca03b | 164 | buffer_fft[8]==0x0000ffff && buffer_fft[9]==0x0000ffff && buffer_fft[10]==0xfffeffff && buffer_fft[11]==0xffff0000 && |
liangzhen | 1:6a820a0ca03b | 165 | buffer_fft[12]==0x0000ffff && buffer_fft[13]==0xffff0000 && buffer_fft[14]==0xfffffffe && buffer_fft[15]==0xffff0000 && |
liangzhen | 1:6a820a0ca03b | 166 | buffer_fft[16]==0x00010000 && buffer_fft[17]==0x0001ffff && buffer_fft[18]==0x0000ffff && buffer_fft[19]==0x0001ffff && |
liangzhen | 1:6a820a0ca03b | 167 | buffer_fft[20]==0x0001fffe && buffer_fft[21]==0x0000fffe && buffer_fft[22]==0x0001fffe && buffer_fft[23]==0x0000ffff && |
liangzhen | 1:6a820a0ca03b | 168 | buffer_fft[24]==0x0000ffff && buffer_fft[25]==0x0001fffe && buffer_fft[26]==0x0000ffff && buffer_fft[27]==0x00010000 && |
liangzhen | 1:6a820a0ca03b | 169 | buffer_fft[28]==0x0001ffff && buffer_fft[29]==0x00010000 && buffer_fft[30]==0x0000ffff && buffer_fft[31]==0x00010000 && |
liangzhen | 1:6a820a0ca03b | 170 | buffer_fft[32]==0x0000ffff && buffer_fft[33]==0x0000ffff && buffer_fft[34]==0x0000ffff && buffer_fft[35]==0x0000ffff && |
liangzhen | 1:6a820a0ca03b | 171 | buffer_fft[36]==0x0000fffe && buffer_fft[37]==0x0000ffff && buffer_fft[38]==0x0000fffe && buffer_fft[39]==0x00000000 && |
liangzhen | 1:6a820a0ca03b | 172 | buffer_fft[40]==0xffffffff && buffer_fft[41]==0x0000ffff && buffer_fft[42]==0xffffffff && buffer_fft[43]==0x00000000 && |
liangzhen | 1:6a820a0ca03b | 173 | buffer_fft[44]==0x0000ffff && buffer_fft[45]==0x00000000 && buffer_fft[46]==0xffffffff && buffer_fft[47]==0x00000000 && |
liangzhen | 1:6a820a0ca03b | 174 | buffer_fft[48]==0x00000000 && buffer_fft[49]==0x00000000 && buffer_fft[50]==0x00000000 && buffer_fft[51]==0x00000000 && |
liangzhen | 1:6a820a0ca03b | 175 | buffer_fft[52]==0x0000ffff && buffer_fft[53]==0x0000ffff && buffer_fft[54]==0x0000ffff && buffer_fft[55]==0x00000000 && |
liangzhen | 1:6a820a0ca03b | 176 | buffer_fft[56]==0xfffeffff && buffer_fft[57]==0xffffffff && buffer_fft[58]==0xffff0000 && buffer_fft[59]==0x00000000 && |
liangzhen | 1:6a820a0ca03b | 177 | buffer_fft[60]==0x0000ffff && buffer_fft[61]==0x00000000 && buffer_fft[62]==0x003d000c && buffer_fft[63]==0x00000000 ) { |
liangzhen | 1:6a820a0ca03b | 178 | return 1; |
liangzhen | 1:6a820a0ca03b | 179 | } else { |
liangzhen | 1:6a820a0ca03b | 180 | return 0; |
liangzhen | 1:6a820a0ca03b | 181 | } |
liangzhen | 0:84a8bcfbdec9 | 182 | } |
liangzhen | 0:84a8bcfbdec9 | 183 | |
liangzhen | 1:6a820a0ca03b | 184 | void DDRO_Sensor(JTAG &jtag) |
liangzhen | 1:6a820a0ca03b | 185 | { |
liangzhen | 0:84a8bcfbdec9 | 186 | /**********************enable****************************************/ |
liangzhen | 0:84a8bcfbdec9 | 187 | jtag.writeMemory(ddro_syn_en, 0xffffffff); |
liangzhen | 0:84a8bcfbdec9 | 188 | jtag.writeMemory(ddro_inv_en, 0xffffffff); |
liangzhen | 0:84a8bcfbdec9 | 189 | /**********************set ref_clk and samp_clk**********************/ |
liangzhen | 1:6a820a0ca03b | 190 | jtag.writeMemory(ddro_ref_src, 0x00000002); |
liangzhen | 0:84a8bcfbdec9 | 191 | /**********************write threshold*******************************/ |
liangzhen | 1:6a820a0ca03b | 192 | jtag.writeMemory(ddro_threshold, 100000); |
liangzhen | 1:6a820a0ca03b | 193 | //jtag.writeMemory(0xe000e104, 0x000000ff); // enable interrupts |
liangzhen | 0:84a8bcfbdec9 | 194 | |
liangzhen | 2:e94460b2149f | 195 | for (int ro_id=3; ro_id<=15; ro_id++) { |
liangzhen | 2:e94460b2149f | 196 | unsigned int meas1_s, meas1_e, meas2_s, meas2_e; |
liangzhen | 2:e94460b2149f | 197 | int delta1, delta2; |
liangzhen | 2:e94460b2149f | 198 | //pc.printf("RO %d\r\n ", ro_id-2); |
liangzhen | 1:6a820a0ca03b | 199 | jtag.writeMemory(ddro_samp_src, ro_id); |
liangzhen | 1:6a820a0ca03b | 200 | jtag.writeMemory(ddro_start, 0); |
liangzhen | 2:e94460b2149f | 201 | meas1_s = jtag.readMemory(ddro_count); |
liangzhen | 2:e94460b2149f | 202 | //pc.printf("Counter starts at: %d ", meas1); |
liangzhen | 2:e94460b2149f | 203 | jtag.writeMemory(ddro_start, 1); |
liangzhen | 2:e94460b2149f | 204 | wait_us(50000); |
liangzhen | 2:e94460b2149f | 205 | jtag.writeMemory(ddro_start, 0); |
liangzhen | 2:e94460b2149f | 206 | meas1_e = jtag.readMemory(ddro_count); |
liangzhen | 2:e94460b2149f | 207 | //pc.printf("ends at: %d\r\n", meas1); |
liangzhen | 2:e94460b2149f | 208 | delta1 = meas1_e - meas1_s; |
liangzhen | 2:e94460b2149f | 209 | |
liangzhen | 2:e94460b2149f | 210 | jtag.writeMemory(ddro_samp_src, ro_id); |
liangzhen | 2:e94460b2149f | 211 | jtag.writeMemory(ddro_start, 0); |
liangzhen | 2:e94460b2149f | 212 | meas2_s = jtag.readMemory(ddro_count); |
liangzhen | 2:e94460b2149f | 213 | //pc.printf("Counter starts at: %d ", meas1); |
liangzhen | 1:6a820a0ca03b | 214 | jtag.writeMemory(ddro_start, 1); |
liangzhen | 1:6a820a0ca03b | 215 | wait_us(50000); |
liangzhen | 1:6a820a0ca03b | 216 | jtag.writeMemory(ddro_start, 0); |
liangzhen | 2:e94460b2149f | 217 | meas2_e = jtag.readMemory(ddro_count); |
liangzhen | 2:e94460b2149f | 218 | delta2 = meas2_e - meas2_s; |
liangzhen | 2:e94460b2149f | 219 | //printf("ends at: %d\r\n", meas1); |
liangzhen | 2:e94460b2149f | 220 | |
liangzhen | 2:e94460b2149f | 221 | if ( (float)delta2/meas1_e>=0.95 && (float)delta2/meas1_e<=1.05 ) { |
liangzhen | 2:e94460b2149f | 222 | pc.printf("RO %d: %d\n\r", ro_id, (delta2+meas1_e)/2); |
liangzhen | 2:e94460b2149f | 223 | #ifdef WRITE_RESULTS |
liangzhen | 2:e94460b2149f | 224 | fprintf(results_file,"RO %d: %d\n\r", ro_id, (delta2+meas1_e)/2); |
liangzhen | 2:e94460b2149f | 225 | #endif |
liangzhen | 2:e94460b2149f | 226 | } else if ((float)delta1/meas2_e>=0.95 && (float)delta1/meas2_e<=1.05 ) { |
liangzhen | 2:e94460b2149f | 227 | pc.printf("RO %d: %d\n\r", ro_id, (delta1+meas2_e)/2); |
liangzhen | 2:e94460b2149f | 228 | #ifdef WRITE_RESULTS |
liangzhen | 2:e94460b2149f | 229 | fprintf(results_file,"RO %d: %d\n\r", ro_id, (delta1+meas2_e)/2); |
liangzhen | 2:e94460b2149f | 230 | #endif |
liangzhen | 2:e94460b2149f | 231 | } else if ( (float)delta2/delta1 >=0.95 && (float)delta2/delta1<=1.05 ) { |
liangzhen | 2:e94460b2149f | 232 | pc.printf("RO %d: %d\n\r", ro_id, (delta1+delta2)/2); |
liangzhen | 2:e94460b2149f | 233 | #ifdef WRITE_RESULTS |
liangzhen | 2:e94460b2149f | 234 | fprintf(results_file,"RO %d: %d\n\r", ro_id, (delta1+delta2)/2); |
liangzhen | 2:e94460b2149f | 235 | #endif |
liangzhen | 2:e94460b2149f | 236 | } else if ( (float)meas2_e/meas1_e >=0.95 && (float)meas2_e/meas1_e<=1.05 ) { |
liangzhen | 2:e94460b2149f | 237 | pc.printf("RO %d: %d\n\r", ro_id, (meas1_e+meas2_e)/2); |
liangzhen | 2:e94460b2149f | 238 | #ifdef WRITE_RESULTS |
liangzhen | 2:e94460b2149f | 239 | fprintf(results_file,"RO %d: %d\n\r", ro_id, (meas1_e+meas2_e)/2); |
liangzhen | 2:e94460b2149f | 240 | #endif |
liangzhen | 2:e94460b2149f | 241 | } else { |
liangzhen | 2:e94460b2149f | 242 | pc.printf("Error in measuring DDRO %d\n\r", ro_id); |
liangzhen | 2:e94460b2149f | 243 | #ifdef WRITE_RESULTS |
liangzhen | 2:e94460b2149f | 244 | fprintf(results_file,"Error in measuring DDRO %d\n\r", ro_id); |
liangzhen | 2:e94460b2149f | 245 | #endif |
liangzhen | 2:e94460b2149f | 246 | } |
liangzhen | 1:6a820a0ca03b | 247 | } |
liangzhen | 1:6a820a0ca03b | 248 | } |