Лучше всего подключить логический зонд или даже прицел к линиям TX и RX, чтобы вы могли увидеть, что вы на самом деле отправляете. Вы сможете посмотреть битовые времена, чтобы увидеть, правильно ли вы вычислили скорость передачи. Все остальное, что вы будете делать, будет просто слепым гаданием.
Есть ли на этой платформе Microchip драйвер UART с прерыванием или DMA, который вы можете использовать вместо собственного? Можете ли вы проверить свой драйвер с проводным последовательным соединением с ПК вместо XBee (который вводит другую возможную точку отказа)?
Ваш UART1_Write()
блокируется, поэтому задержка не требуется.
Убедитесь, что вы настроили XBee для правильной скорости передачи (я уверен, ATBD=3
для 9600). Попробуйте отправить последовательность 0x01, 0x03, 0x07 0x0F, 0x1F, 0x3F, 0x7F, 0xFF
. Это генерирует последовательность из 1 бита, за которой следуют 0 битов, и может помочь в устранении ошибки в расчете скорости передачи.