Revision 1562
updated baud rate code (it works for 9600 and 115200 now, haven't tested the others)
xbee.c | ||
---|---|---|
293 | 293 |
WL_DEBUG_PRINT("Entered command mode.\r\n"); |
294 | 294 |
|
295 | 295 |
// reset baud rate |
296 |
usb_puts("Resetting Baud to ");
|
|
297 |
usb_puts(XBEE_BAUD_STR);
|
|
298 |
usb_puts("\r\n");
|
|
296 |
WL_DEBUG_PRINT("Resetting Baud to ");
|
|
297 |
WL_DEBUG_PRINT(XBEE_BAUD_STR);
|
|
298 |
WL_DEBUG_PRINT("\r\n");
|
|
299 | 299 |
|
300 | 300 |
// set baud on xbee |
301 |
//#if (XBEE_BAUD == 250000) |
|
301 | 302 |
#if (XBEE_BAUD == 115200) |
302 |
xbee_send_string("ATBD7\r"); |
|
303 |
#end if |
|
303 |
xbee_send_string("ATBD7\r\n"); |
|
304 |
#elif (XBEE_BAUD == 57600) |
|
305 |
xbee_send_string("ATBD6\r\n"); |
|
306 |
#elif (XBEE_BAUD == 38400) |
|
307 |
xbee_send_string("ATBD5\r\n"); |
|
308 |
#elif (XBEE_BAUD == 19200) |
|
309 |
xbee_send_string("ATBD4\r\n"); |
|
310 |
#elif (XBEE_BAUD == 9600) |
|
311 |
// already at this baud rate |
|
312 |
//xbee_send_string("ATBD3\r\n"); |
|
313 |
#else |
|
314 |
WL_DEBUG_PRINT("undefined baud rate\r\n"); |
|
315 |
#endif |
|
304 | 316 |
// exit command mode |
305 | 317 |
xbee_wait_for_ok(); |
306 |
xbee_send_string("ATCN\r"); |
|
318 |
WL_DEBUG_PRINT("got ok from baud reset\r\n"); |
|
319 |
xbee_send_string("ATCN\r\n"); |
|
307 | 320 |
xbee_wait_for_ok(); |
321 |
WL_DEBUG_PRINT("got ok from exiting command mode\r\n"); |
|
308 | 322 |
|
309 | 323 |
// set UART baud |
310 | 324 |
#if (XBEE_BAUD == 250000) |
... | ... | |
316 | 330 |
UBRR1L = 8; |
317 | 331 |
UCSR1A |= _BV(U2X1); |
318 | 332 |
#elif (XBEE_BAUD == 57600) |
319 |
if (xbee_send_modify_at_command("BD","6")) { |
|
320 |
return -1; |
|
321 |
} |
|
322 | 333 |
UBRR1H = 0x00; |
323 | 334 |
UBRR1L = 16; |
324 | 335 |
UCSR1A |= _BV(U2X1); |
325 | 336 |
#elif (XBEE_BAUD == 38400) |
326 |
if (xbee_send_modify_at_command("BD","5")) { |
|
327 |
return -1; |
|
328 |
} |
|
329 | 337 |
UBRR1H = 0x00; |
330 | 338 |
UBRR1L = 25; |
331 | 339 |
UCSR1A |= _BV(U2X1); |
332 | 340 |
#elif (XBEE_BAUD == 19200) |
333 |
if (xbee_send_modify_at_command("BD","4")) { |
|
334 |
return -1; |
|
335 |
} |
|
336 | 341 |
UBRR1H = 0x00; |
337 | 342 |
UBRR1L = 51; |
338 | 343 |
UCSR1A |= _BV(U2X1); |
339 | 344 |
#elif (XBEE_BAUD == 9600) |
340 | 345 |
/* this is the default baud rate, so do nothing |
341 |
if (xbee_send_modify_at_command("BD","3")) { |
|
342 |
return -1; |
|
343 |
} |
|
344 | 346 |
UBRR1H = 0x00; |
345 | 347 |
UBRR1L = 103; |
346 | 348 |
UCSR1A |= _BV(U2X1);*/ |
347 | 349 |
#else //Baud rate is defined in the header file, we should not get here |
348 | 350 |
return 0; |
349 | 351 |
#endif |
352 |
delay_ms(50); |
|
350 | 353 |
|
351 | 354 |
// enter command mode |
352 |
if (xbee_enter_command_mode() != 0) {
|
|
353 |
usb_puts("error entering command mode after baud set\r\n");
|
|
354 |
return -1;
|
|
355 |
}
|
|
355 |
WL_DEBUG_PRINT("entering command mode 2\r\n");
|
|
356 |
xbee_send_string("+++");
|
|
357 |
xbee_wait_for_ok();
|
|
358 |
WL_DEBUG_PRINT("entered command mode 2\r\n");
|
|
356 | 359 |
|
357 | 360 |
if (xbee_enter_api_mode() != 0) { |
358 |
usb_puts("can't enter api mode\r\n");
|
|
361 |
WL_DEBUG_PRINT("can't enter api mode\r\n");
|
|
359 | 362 |
return -1; |
360 | 363 |
} |
361 | 364 |
|
362 | 365 |
WL_DEBUG_PRINT("Entered api mode.\r\n"); |
363 | 366 |
|
364 | 367 |
if (xbee_exit_command_mode() != 0) { |
365 |
usb_puts("can't exit command mode\r\n");
|
|
368 |
WL_DEBUG_PRINT("can't exit command mode\r\n");
|
|
366 | 369 |
return -1; |
367 | 370 |
} |
368 | 371 |
|
... | ... | |
370 | 373 |
|
371 | 374 |
// get MY address |
372 | 375 |
if (xbee_send_read_at_command("BD")) { |
373 |
usb_puts("can't send BD command\r\n");
|
|
376 |
WL_DEBUG_PRINT("can't send BD command\r\n");
|
|
374 | 377 |
return -1; |
375 | 378 |
} |
376 | 379 |
WL_DEBUG_PRINT("Getting ATBD rate.\n"); |
377 | 380 |
|
378 | 381 |
// get MY address |
379 | 382 |
if (xbee_send_read_at_command("MY")) { |
380 |
usb_puts("can't send my command\r\n");
|
|
383 |
WL_DEBUG_PRINT("can't send my command\r\n");
|
|
381 | 384 |
return -1; |
382 | 385 |
} |
383 | 386 |
WL_DEBUG_PRINT("Getting ATMY address.\n"); |
... | ... | |
579 | 582 |
if (buffer_first == XBEE_BUFFER_SIZE) { |
580 | 583 |
buffer_first = 0; |
581 | 584 |
} |
582 |
WL_DEBUG_PRINT("buffer char:");
|
|
583 |
WL_DEBUG_PRINT(c); |
|
584 |
WL_DEBUG_PRINT("\r\n"); |
|
585 |
WL_DEBUG_PRINT("buffer char|");
|
|
586 |
WL_DEBUG_PRINT_CHAR(c);
|
|
587 |
WL_DEBUG_PRINT("|\r\n");
|
|
585 | 588 |
|
586 | 589 |
if (c == *curr) { |
587 | 590 |
curr++; |
Also available in: Unified diff