yuhang zhu / Mbed 2 deprecated ADAM_menu

Dependencies:   mbed

Committer:
yuhangzhu
Date:
Tue Jul 16 20:47:21 2013 +0000
Revision:
16:fbe18dbc2fb7
Parent:
15:3f3560332bc1
Child:
17:54a003ac9610
the loopback is working good and next step is  spi now...

Who changed what in which revision?

UserRevisionLine numberNew contents of line
yuhangzhu 12:5e4cba1182ab 1 //This main funtion mainly implements a mode transfer.
yuhangzhu 12:5e4cba1182ab 2 //When mcu resets, it's in MODE_IDLE. Then depends on the keyboard input, the
yuhangzhu 12:5e4cba1182ab 3 //mode switches to transition modes such as
yuhangzhu 12:5e4cba1182ab 4 //MODE_CHAxPHA, which is for phase input of channel x, or
yuhangzhu 12:5e4cba1182ab 5 //MODE_CHAxAMP, which is for attenuation input of channel x, or
yuhangzhu 12:5e4cba1182ab 6 //MODE_DISPLAY, which is for displaying the current parameters, or
yuhangzhu 12:5e4cba1182ab 7 //MODE_HELP, which is for displaying the help infomation, or
yuhangzhu 12:5e4cba1182ab 8 //MODE_SEND, which is for sending the bit stream through the SPI bus.
yuhangzhu 12:5e4cba1182ab 9 //After each transition mode completes, mcu returns to MODE_IDLE to wait for another user input.
yuhangzhu 12:5e4cba1182ab 10
yuhangzhu 12:5e4cba1182ab 11
yuhangzhu 0:249f6f78cd05 12 #include "mbed.h"
yuhangzhu 0:249f6f78cd05 13 #include "menu.h"
yuhangzhu 0:249f6f78cd05 14 #include "parameters.h"
yuhangzhu 3:32e67d121c7f 15 #include "handlers.h"
yuhangzhu 8:f0c3d5911b87 16 //#define DEBUG
yuhangzhu 0:249f6f78cd05 17
yuhangzhu 0:249f6f78cd05 18 Serial pc(USBTX, USBRX);
yuhangzhu 15:3f3560332bc1 19 SPI spi(PTD2, PTD3, PTD1); // mosi, miso, sclk
yuhangzhu 15:3f3560332bc1 20 DigitalOut cs(PTD0);
yuhangzhu 2:45db4f4ca70d 21
yuhangzhu 3:32e67d121c7f 22 char recv;
yuhangzhu 11:0e42dd431fb5 23 char temp;
yuhangzhu 11:0e42dd431fb5 24
yuhangzhu 2:45db4f4ca70d 25 int state;
yuhangzhu 6:e510aab8f2ce 26 char cha1_pha, cha2_pha;
yuhangzhu 6:e510aab8f2ce 27 char cha1_amp, cha2_amp;
yuhangzhu 6:e510aab8f2ce 28 int ret;
yuhangzhu 6:e510aab8f2ce 29
yuhangzhu 11:0e42dd431fb5 30 unsigned short spi_stream;
yuhangzhu 15:3f3560332bc1 31 unsigned char spi_first_byte_s;
yuhangzhu 15:3f3560332bc1 32 unsigned char spi_second_byte_s; // The first and second byte to send
yuhangzhu 15:3f3560332bc1 33
yuhangzhu 15:3f3560332bc1 34 unsigned char spi_first_byte_r; // The first and second byte to receive
yuhangzhu 15:3f3560332bc1 35 unsigned char spi_second_byte_r;
yuhangzhu 10:ff8c2470f019 36
yuhangzhu 12:5e4cba1182ab 37 char line_buf[4]; //line_buf[3] is used to indicate if it's empty 0 empty 1 not, other bytes for char data
yuhangzhu 4:e8142db2bbfd 38 int line_pt; //line buffer pointer points to next buffer location it's going to write
yuhangzhu 4:e8142db2bbfd 39 int line_length; //store the current line length
yuhangzhu 10:ff8c2470f019 40 int i;
yuhangzhu 2:45db4f4ca70d 41
yuhangzhu 0:249f6f78cd05 42 int main() {
yuhangzhu 0:249f6f78cd05 43
yuhangzhu 12:5e4cba1182ab 44 pc.baud(19200); //config buad rate. Note: 115200 seems too high for the current board
yuhangzhu 15:3f3560332bc1 45 cs = 1; //spi config
yuhangzhu 15:3f3560332bc1 46 spi.format(8,0); // 16 bit frame is not working, so need to send twice 8 bit frame
yuhangzhu 15:3f3560332bc1 47 spi.frequency(1000000);
yuhangzhu 15:3f3560332bc1 48
yuhangzhu 1:cb6811ef87de 49 state = MODE_IDLE;
yuhangzhu 3:32e67d121c7f 50 line_buf[3] = 0;
yuhangzhu 3:32e67d121c7f 51 line_buf[2] = 255;
yuhangzhu 3:32e67d121c7f 52 line_buf[1] = 255;
yuhangzhu 3:32e67d121c7f 53 line_buf[0] = 255;
yuhangzhu 10:ff8c2470f019 54 cha1_pha = 0;
yuhangzhu 10:ff8c2470f019 55 cha2_pha = 0;
yuhangzhu 10:ff8c2470f019 56 cha1_amp = 0;
yuhangzhu 10:ff8c2470f019 57 cha2_amp = 0;
yuhangzhu 0:249f6f78cd05 58
yuhangzhu 0:249f6f78cd05 59 while(1)
yuhangzhu 0:249f6f78cd05 60 {
yuhangzhu 1:cb6811ef87de 61 switch(state)
yuhangzhu 0:249f6f78cd05 62 {
yuhangzhu 1:cb6811ef87de 63 case MODE_IDLE:
yuhangzhu 1:cb6811ef87de 64 pc.printf("%s", main_menu);
yuhangzhu 3:32e67d121c7f 65 recv = pc.getc();
yuhangzhu 14:fb67a8b1d1a5 66 mode_idle_handler(&state, recv); //change state based on recv input
yuhangzhu 3:32e67d121c7f 67 //pc.printf("%d", state);
yuhangzhu 3:32e67d121c7f 68 break;
yuhangzhu 11:0e42dd431fb5 69
yuhangzhu 3:32e67d121c7f 70 case MODE_CHA1PHA:
yuhangzhu 5:50ea1502a949 71 case MODE_CHA1AMP:
yuhangzhu 5:50ea1502a949 72 case MODE_CHA2PHA:
yuhangzhu 5:50ea1502a949 73 case MODE_CHA2AMP:
yuhangzhu 5:50ea1502a949 74 if(state == MODE_CHA1PHA)
yuhangzhu 5:50ea1502a949 75 pc.printf("%s", cmd1);
yuhangzhu 5:50ea1502a949 76 else if(state == MODE_CHA1AMP)
yuhangzhu 5:50ea1502a949 77 pc.printf("%s", cmd2);
yuhangzhu 5:50ea1502a949 78 else if(state == MODE_CHA2PHA)
yuhangzhu 5:50ea1502a949 79 pc.printf("%s", cmd3);
yuhangzhu 5:50ea1502a949 80 else
yuhangzhu 5:50ea1502a949 81 pc.printf("%s", cmd4);
yuhangzhu 5:50ea1502a949 82
yuhangzhu 3:32e67d121c7f 83 line_buf[3] = 0;
yuhangzhu 5:50ea1502a949 84 line_buf[2] = 255;
yuhangzhu 5:50ea1502a949 85 line_buf[1] = 255;
yuhangzhu 5:50ea1502a949 86 line_buf[0] = 255;
yuhangzhu 3:32e67d121c7f 87 line_pt = 0;
yuhangzhu 4:e8142db2bbfd 88 line_length = 0;
yuhangzhu 3:32e67d121c7f 89
yuhangzhu 12:5e4cba1182ab 90 while(1) //Character input into line buffer, terminated by enter key
yuhangzhu 3:32e67d121c7f 91 {
yuhangzhu 3:32e67d121c7f 92 recv = pc.getc();
yuhangzhu 6:e510aab8f2ce 93 if(recv == 13) //enter is pressed, break
yuhangzhu 3:32e67d121c7f 94 {
yuhangzhu 4:e8142db2bbfd 95 if(line_length == 0)
yuhangzhu 6:e510aab8f2ce 96 line_buf[3] = LINEBUF_EMPTY;
yuhangzhu 6:e510aab8f2ce 97 else if(line_length > 3)
yuhangzhu 6:e510aab8f2ce 98 line_buf[3] = LINEBUF_TOOLONG;
yuhangzhu 3:32e67d121c7f 99 else
yuhangzhu 6:e510aab8f2ce 100 line_buf[3] = LINEBUF_OK;
yuhangzhu 8:f0c3d5911b87 101 #ifdef DEBUG
yuhangzhu 8:f0c3d5911b87 102 pc.printf("decimal output : %d %d %d %d", line_buf[3], line_buf[2], line_buf[1], line_buf[0]);
yuhangzhu 8:f0c3d5911b87 103 pc.printf("char output: %c %c %c %c", line_buf[3], line_buf[2], line_buf[1], line_buf[0]);
yuhangzhu 8:f0c3d5911b87 104 #endif
yuhangzhu 8:f0c3d5911b87 105
yuhangzhu 4:e8142db2bbfd 106 break;
yuhangzhu 3:32e67d121c7f 107 }
yuhangzhu 6:e510aab8f2ce 108 else if(recv == 8) //backspace is pressed, delete one character both on screen and line buffer
yuhangzhu 3:32e67d121c7f 109 {
yuhangzhu 3:32e67d121c7f 110 pc.putc(8);
yuhangzhu 3:32e67d121c7f 111 pc.putc(32);
yuhangzhu 3:32e67d121c7f 112 pc.putc(8);
yuhangzhu 4:e8142db2bbfd 113
yuhangzhu 4:e8142db2bbfd 114 if(line_length <= 3 && line_length>=1)
yuhangzhu 3:32e67d121c7f 115 {
yuhangzhu 4:e8142db2bbfd 116 line_pt --;
yuhangzhu 3:32e67d121c7f 117 line_buf[line_pt] = 255;
yuhangzhu 3:32e67d121c7f 118 }
yuhangzhu 4:e8142db2bbfd 119 if(line_length > 0)
yuhangzhu 4:e8142db2bbfd 120 line_length --;
yuhangzhu 3:32e67d121c7f 121 }
yuhangzhu 6:e510aab8f2ce 122 else //other character is pressed, record that in line buffer
yuhangzhu 3:32e67d121c7f 123 {
yuhangzhu 3:32e67d121c7f 124 pc.putc(recv);
yuhangzhu 4:e8142db2bbfd 125 line_length ++;
yuhangzhu 4:e8142db2bbfd 126
yuhangzhu 4:e8142db2bbfd 127 if(line_length <= 3)
yuhangzhu 4:e8142db2bbfd 128 {
yuhangzhu 4:e8142db2bbfd 129 line_buf[line_pt] = recv;
yuhangzhu 3:32e67d121c7f 130 line_pt ++;
yuhangzhu 4:e8142db2bbfd 131 }
yuhangzhu 3:32e67d121c7f 132 }
yuhangzhu 3:32e67d121c7f 133 }
yuhangzhu 6:e510aab8f2ce 134 //input over, now checking
yuhangzhu 12:5e4cba1182ab 135 //check phase shift input
yuhangzhu 6:e510aab8f2ce 136 if(state == MODE_CHA1PHA || state == MODE_CHA2PHA)
yuhangzhu 6:e510aab8f2ce 137 {
yuhangzhu 6:e510aab8f2ce 138 if(state == MODE_CHA1PHA)
yuhangzhu 6:e510aab8f2ce 139 ret = parse_phase(line_buf, &cha1_pha);
yuhangzhu 6:e510aab8f2ce 140 else
yuhangzhu 6:e510aab8f2ce 141 ret = parse_phase(line_buf, &cha2_pha);
yuhangzhu 6:e510aab8f2ce 142
yuhangzhu 7:c268547fb6c8 143 if(ret == PARSE_LONG) //Input string too long
yuhangzhu 6:e510aab8f2ce 144 {
yuhangzhu 6:e510aab8f2ce 145 pc.printf("%s", msg_strlong);
yuhangzhu 6:e510aab8f2ce 146 pc.getc();
yuhangzhu 6:e510aab8f2ce 147 }
yuhangzhu 7:c268547fb6c8 148 else if(ret == PARSE_EMPTY)
yuhangzhu 7:c268547fb6c8 149 {
yuhangzhu 7:c268547fb6c8 150 pc.printf("%s", msg_empty);
yuhangzhu 7:c268547fb6c8 151 pc.printf("%s", msg_ret);
yuhangzhu 7:c268547fb6c8 152 pc.getc();
yuhangzhu 7:c268547fb6c8 153 }
yuhangzhu 7:c268547fb6c8 154 else if(ret == PARSE_ERR) //Input string has error
yuhangzhu 6:e510aab8f2ce 155 {
yuhangzhu 6:e510aab8f2ce 156 pc.printf("%s", msg_err);
yuhangzhu 6:e510aab8f2ce 157 pc.getc();
yuhangzhu 6:e510aab8f2ce 158 }
yuhangzhu 7:c268547fb6c8 159 else if(ret == PARSE_ROUNDED) //Input is rounded,show the rounded value
yuhangzhu 6:e510aab8f2ce 160 {
yuhangzhu 6:e510aab8f2ce 161 if(state == MODE_CHA1PHA)
yuhangzhu 9:3eaacc1ad758 162 pc.printf("%s %d\n", msg_rounded, cha1_pha*-7);
yuhangzhu 6:e510aab8f2ce 163 else if(state == MODE_CHA2PHA)
yuhangzhu 9:3eaacc1ad758 164 pc.printf("%s %d\n", msg_rounded, cha2_pha*-7);
yuhangzhu 6:e510aab8f2ce 165
yuhangzhu 6:e510aab8f2ce 166 pc.printf("%s", msg_ret);
yuhangzhu 6:e510aab8f2ce 167 pc.getc();
yuhangzhu 6:e510aab8f2ce 168 }
yuhangzhu 7:c268547fb6c8 169 else //Input is good
yuhangzhu 6:e510aab8f2ce 170 {
yuhangzhu 6:e510aab8f2ce 171 pc.printf("%s", msg_ok);
yuhangzhu 8:f0c3d5911b87 172 #ifdef DEBUG
yuhangzhu 6:e510aab8f2ce 173 pc.printf("%d %d\n", cha1_pha*7, cha2_pha*7);
yuhangzhu 8:f0c3d5911b87 174 #endif
yuhangzhu 6:e510aab8f2ce 175 pc.printf("%s", msg_ret);
yuhangzhu 6:e510aab8f2ce 176 pc.getc();
yuhangzhu 6:e510aab8f2ce 177 }
yuhangzhu 6:e510aab8f2ce 178 }
yuhangzhu 3:32e67d121c7f 179
yuhangzhu 7:c268547fb6c8 180 //check attenuation input
yuhangzhu 7:c268547fb6c8 181 if(state == MODE_CHA1AMP || state == MODE_CHA2AMP)
yuhangzhu 7:c268547fb6c8 182 {
yuhangzhu 7:c268547fb6c8 183 if(state == MODE_CHA1AMP)
yuhangzhu 7:c268547fb6c8 184 ret = parse_amp(line_buf, &cha1_amp);
yuhangzhu 7:c268547fb6c8 185 else
yuhangzhu 7:c268547fb6c8 186 ret = parse_amp(line_buf, &cha2_amp);
yuhangzhu 7:c268547fb6c8 187
yuhangzhu 7:c268547fb6c8 188 if(ret == PARSE_LONG) //Input string too long
yuhangzhu 7:c268547fb6c8 189 {
yuhangzhu 7:c268547fb6c8 190 pc.printf("%s", msg_strlong);
yuhangzhu 7:c268547fb6c8 191 pc.getc();
yuhangzhu 7:c268547fb6c8 192 }
yuhangzhu 7:c268547fb6c8 193 else if(ret == PARSE_EMPTY)
yuhangzhu 7:c268547fb6c8 194 {
yuhangzhu 7:c268547fb6c8 195 pc.printf("%s", msg_empty);
yuhangzhu 7:c268547fb6c8 196 pc.printf("%s", msg_ret);
yuhangzhu 7:c268547fb6c8 197 pc.getc();
yuhangzhu 7:c268547fb6c8 198 }
yuhangzhu 7:c268547fb6c8 199 else if(ret == PARSE_ERR) //Input string has error
yuhangzhu 7:c268547fb6c8 200 {
yuhangzhu 7:c268547fb6c8 201 pc.printf("%s", msg_err);
yuhangzhu 7:c268547fb6c8 202 pc.getc();
yuhangzhu 7:c268547fb6c8 203 }
yuhangzhu 7:c268547fb6c8 204 else if(ret == PARSE_ROUNDED) //Input is rounded, show the rounded value
yuhangzhu 7:c268547fb6c8 205 {
yuhangzhu 7:c268547fb6c8 206 if(state == MODE_CHA1AMP)
yuhangzhu 8:f0c3d5911b87 207 pc.printf("%s %.1f\n", msg_rounded, cha1_amp*5.0/10.0);
yuhangzhu 7:c268547fb6c8 208 else if(state == MODE_CHA2AMP)
yuhangzhu 8:f0c3d5911b87 209 pc.printf("%s %.1f\n", msg_rounded, cha2_amp*5.0/10.0);
yuhangzhu 7:c268547fb6c8 210
yuhangzhu 7:c268547fb6c8 211 pc.printf("%s", msg_ret);
yuhangzhu 7:c268547fb6c8 212 pc.getc();
yuhangzhu 7:c268547fb6c8 213 }
yuhangzhu 7:c268547fb6c8 214 else //Input is good
yuhangzhu 7:c268547fb6c8 215 {
yuhangzhu 7:c268547fb6c8 216 pc.printf("%s", msg_ok);
yuhangzhu 8:f0c3d5911b87 217 #ifdef DEBUG
yuhangzhu 7:c268547fb6c8 218 pc.printf("%d %d\n", cha1_amp*5, cha2_amp*5);
yuhangzhu 8:f0c3d5911b87 219 #endif
yuhangzhu 7:c268547fb6c8 220 pc.printf("%s", msg_ret);
yuhangzhu 7:c268547fb6c8 221 pc.getc();
yuhangzhu 7:c268547fb6c8 222 }
yuhangzhu 7:c268547fb6c8 223 }
yuhangzhu 7:c268547fb6c8 224 state = MODE_IDLE; //back to idle state after input
yuhangzhu 3:32e67d121c7f 225 break;
yuhangzhu 5:50ea1502a949 226
yuhangzhu 12:5e4cba1182ab 227 // In display mode, show current parameters
yuhangzhu 8:f0c3d5911b87 228 case MODE_DISPLAY:
yuhangzhu 11:0e42dd431fb5 229
yuhangzhu 14:fb67a8b1d1a5 230 pc.printf("Phase shift for RF out1 is %d degrees\n", cha1_pha*-7);
yuhangzhu 14:fb67a8b1d1a5 231 pc.printf("Attentuation for RF out1 is %.1f dB\n", cha1_amp*5.0/10.0);
yuhangzhu 14:fb67a8b1d1a5 232 pc.printf("Phase shift for RF out2 is %d degrees\n", cha2_pha*-7);
yuhangzhu 14:fb67a8b1d1a5 233 pc.printf("Attentuation for RF out2 is %.1f dB\n", cha2_amp*5.0/10.0);
yuhangzhu 8:f0c3d5911b87 234 pc.printf("%s", msg_ret);
yuhangzhu 8:f0c3d5911b87 235 pc.getc();
yuhangzhu 8:f0c3d5911b87 236 state = MODE_IDLE;
yuhangzhu 8:f0c3d5911b87 237 break;
yuhangzhu 12:5e4cba1182ab 238 //Help mode, displays help info
yuhangzhu 9:3eaacc1ad758 239 case MODE_HELP:
yuhangzhu 11:0e42dd431fb5 240
yuhangzhu 9:3eaacc1ad758 241 pc.printf("%s", msg_help);
yuhangzhu 9:3eaacc1ad758 242 pc.printf("%s", msg_ret);
yuhangzhu 9:3eaacc1ad758 243 pc.getc();
yuhangzhu 9:3eaacc1ad758 244 state = MODE_IDLE;
yuhangzhu 9:3eaacc1ad758 245 break;
yuhangzhu 9:3eaacc1ad758 246
yuhangzhu 12:5e4cba1182ab 247 case MODE_SEND: //In sending mode, display and send through SPI
yuhangzhu 15:3f3560332bc1 248
yuhangzhu 15:3f3560332bc1 249 //Calculate the send info
yuhangzhu 15:3f3560332bc1 250 spi_stream = (cha2_amp << 12) | (cha2_pha << 8) | (cha1_amp << 4) | (cha1_pha);
yuhangzhu 15:3f3560332bc1 251 spi_first_byte_s = (cha2_amp << 4) | (cha2_pha);
yuhangzhu 15:3f3560332bc1 252 spi_second_byte_s = (cha1_amp << 4) | (cha1_pha);
yuhangzhu 11:0e42dd431fb5 253
yuhangzhu 15:3f3560332bc1 254 cs = 0; // start sending, send and recond the response(send and loopback in this case)
yuhangzhu 15:3f3560332bc1 255 spi_first_byte_r = spi.write(spi_first_byte_s);
yuhangzhu 15:3f3560332bc1 256 spi_second_byte_r = spi.write(spi_second_byte_s);
yuhangzhu 15:3f3560332bc1 257 cs = 1;
yuhangzhu 15:3f3560332bc1 258
yuhangzhu 15:3f3560332bc1 259 //Start printint...
yuhangzhu 14:fb67a8b1d1a5 260 pc.printf("Phase shift for RF out1 is %d degrees\n", cha1_pha*-7);
yuhangzhu 14:fb67a8b1d1a5 261 pc.printf("Attentuation for RF out1 is %.1f dB\n", cha1_amp*5.0/10.0);
yuhangzhu 14:fb67a8b1d1a5 262 pc.printf("Phase shift for RF out2 is %d degrees\n", cha2_pha*-7);
yuhangzhu 14:fb67a8b1d1a5 263 pc.printf("Attentuation for RF out2 is %.1f dB\n", cha2_amp*5.0/10.0);
yuhangzhu 15:3f3560332bc1 264 pc.printf("\nSPI bit stream sent:\n");
yuhangzhu 15:3f3560332bc1 265 pc.printf("%s", bit_index);
yuhangzhu 14:fb67a8b1d1a5 266
yuhangzhu 15:3f3560332bc1 267 //Output the SPI bit stream sent for user reference
yuhangzhu 10:ff8c2470f019 268 for(i=0; i<=15; i++)
yuhangzhu 10:ff8c2470f019 269 {
yuhangzhu 14:fb67a8b1d1a5 270
yuhangzhu 11:0e42dd431fb5 271 if(spi_stream >= 0x8000)
yuhangzhu 14:fb67a8b1d1a5 272 pc.printf("%d ", 1);
yuhangzhu 10:ff8c2470f019 273 else
yuhangzhu 14:fb67a8b1d1a5 274 pc.printf("%d ", 0);
yuhangzhu 14:fb67a8b1d1a5 275
yuhangzhu 14:fb67a8b1d1a5 276 if(i == 7)
yuhangzhu 14:fb67a8b1d1a5 277 pc.printf(" ");
yuhangzhu 14:fb67a8b1d1a5 278
yuhangzhu 11:0e42dd431fb5 279 spi_stream = spi_stream << 1;
yuhangzhu 10:ff8c2470f019 280 }
yuhangzhu 16:fbe18dbc2fb7 281 pc.printf("\n\nParameters sent OK\n\n\n\n");
yuhangzhu 11:0e42dd431fb5 282
yuhangzhu 15:3f3560332bc1 283
yuhangzhu 16:fbe18dbc2fb7 284 //output the previous parameters:
yuhangzhu 16:fbe18dbc2fb7 285 pc.printf("Now displaying the previous parameters\n");
yuhangzhu 16:fbe18dbc2fb7 286 pc.printf("\nPrevious phase shift for RF out1 is %d degrees\n", (spi_second_byte_r&0x07)*-7);
yuhangzhu 16:fbe18dbc2fb7 287 pc.printf("Previous attentuation for RF out1 is %.1f dB\n", (spi_second_byte_r>>4)*5.0/10.0);
yuhangzhu 16:fbe18dbc2fb7 288 pc.printf("Previous phase shift for RF out2 is %d degrees\n", (spi_first_byte_r&0x07)*-7);
yuhangzhu 16:fbe18dbc2fb7 289 pc.printf("Previous attentuation for RF out2 is %.1f dB\n", (spi_first_byte_r>>4)*5.0/10.0);
yuhangzhu 16:fbe18dbc2fb7 290 //spi bit stream for previous parameters
yuhangzhu 15:3f3560332bc1 291 pc.printf("\nSPI bit stream received:\n");
yuhangzhu 15:3f3560332bc1 292 pc.printf("%s", bit_index);
yuhangzhu 15:3f3560332bc1 293 for(i=0; i<=7; i++)
yuhangzhu 15:3f3560332bc1 294 {
yuhangzhu 15:3f3560332bc1 295 if(spi_first_byte_r >= 0x80)
yuhangzhu 15:3f3560332bc1 296 pc.printf("%d ", 1);
yuhangzhu 15:3f3560332bc1 297 else
yuhangzhu 15:3f3560332bc1 298 pc.printf("%d ", 0);
yuhangzhu 15:3f3560332bc1 299
yuhangzhu 15:3f3560332bc1 300 spi_first_byte_r = spi_first_byte_r << 1;
yuhangzhu 15:3f3560332bc1 301 }
yuhangzhu 15:3f3560332bc1 302 pc.printf(" ");
yuhangzhu 15:3f3560332bc1 303 for(i=0; i<=7; i++)
yuhangzhu 15:3f3560332bc1 304 {
yuhangzhu 15:3f3560332bc1 305 if(spi_second_byte_r >= 0x80)
yuhangzhu 15:3f3560332bc1 306 pc.printf("%d ", 1);
yuhangzhu 15:3f3560332bc1 307 else
yuhangzhu 15:3f3560332bc1 308 pc.printf("%d ", 0);
yuhangzhu 15:3f3560332bc1 309
yuhangzhu 15:3f3560332bc1 310 spi_second_byte_r = spi_second_byte_r << 1;
yuhangzhu 15:3f3560332bc1 311 }
yuhangzhu 16:fbe18dbc2fb7 312
yuhangzhu 15:3f3560332bc1 313 pc.printf("\n\n\n");
yuhangzhu 15:3f3560332bc1 314
yuhangzhu 10:ff8c2470f019 315 pc.printf("%s", msg_ret);
yuhangzhu 10:ff8c2470f019 316 pc.getc();
yuhangzhu 10:ff8c2470f019 317 state = MODE_IDLE;
yuhangzhu 10:ff8c2470f019 318 break;
yuhangzhu 9:3eaacc1ad758 319 default:
yuhangzhu 9:3eaacc1ad758 320 state = MODE_IDLE;
yuhangzhu 1:cb6811ef87de 321 }
yuhangzhu 0:249f6f78cd05 322
yuhangzhu 0:249f6f78cd05 323
yuhangzhu 0:249f6f78cd05 324 }
yuhangzhu 0:249f6f78cd05 325
yuhangzhu 0:249f6f78cd05 326
yuhangzhu 0:249f6f78cd05 327 return 0;
yuhangzhu 0:249f6f78cd05 328 }