0 / 0 / 0
Регистрация: 14.02.2010
Сообщений: 799
1

XBee/ZigBee и иже с ними

27.07.2011, 14:51. Показов 6011. Ответов 8
Метки нет (Все метки)

Всем доброго времени суток!
Использую в проекте для связи модули Xbee (Xbee PRO), столкнулся с граблями.
Щупаю вообще первый раз их, решил для проверки и практики просто покидать туда-сюда байты. Подключил к двум компам - работает, круто. Подключил к МК и компу - начались грабли. Если кидаnь по одному байту - все в порядке, возвращает назад все красиво и правильно. Пытаюсь с МК отправить хелловорлд целым стригом (по одному скармливая в цикле, со всеми проверками, свободен ли передатчик итд) - первые несколько симолов запороты. Как вариант, что неправильно оформлена процедура - вряд ли. Пользоваться проводом - и стринги, и чары передаются нормально. ): Что я делаю неправильно?
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
27.07.2011, 14:51
Ответы с готовыми решениями:

Строки и иже с ними
Как бы странно не звучало, но:я не могу нормально очистить строку в C++ пытаюсь присвоить признак...

Speed2.ru и иже с ними
Вчера началось, обычный откат в восстановлении системы не помог. (вижу не я 1 с ним тут воюю) Логи...

платная регистрация в Ya M@ и иже с ними
Подскажите плиззз стоит ли проходить платную регистрацию в каталогах, в частности сейчас стоит...

Маги, гадания и иже с ними
Праздный интерес - как Вы лично относитесь к форумам эзотерической направленности, какова Ваша...

8
pkm
27.07.2011, 14:59 2
Цитата Сообщение от sohbtixhuk
Что я делаю неправильно?
Создаешь темы.
Телепатов тут не встречал ни когда, так что код в студию.
0 / 0 / 0
Регистрация: 14.02.2010
Сообщений: 799
27.07.2011, 19:26 3
Атжеж неудача, а я уж подумал..
Код
void WriteString(const char *string)
{
while(*string != \0)
{
while(!UARTTransmitterIsReady(UART1));
UARTSendDataByte(UART1, *string);
string++;
while(!UARTTransmissionHasCompleted(UART1));
}
}
Код взял из примера, сполшные макро, лень было разбираться и городить свое. Год назад он идеально работал в другом проекте, без зигби, связь по проводу
Код
// UART1 interrupt homdler. UART1 is connected to Arduino Rx/Tx pins
void __ISR(_UART1_VECTOR, ipl3) IntUart1Homdler(void)
{
if(INTGetFlag(INT_SOURCE_UART_RX(UART1)))
{
// Clear the RX interrupt Flag
INTClearFlag(INT_SOURCE_UART_RX(UART1));
// Echo what we just received.
UARTSendDataByte(UART1,UARTGetDataByte(UART1));
// Toggle LED to indicate UART activity
mPORTFToggleByts(BIT_0);
}
//We dont care bout Tx ints, so just drop the flag
if ( INTGetFlag(INT_SOURCE_UART_TX(UART1)) )
{
INTClearFlag(INT_SOURCE_UART_TX(UART1));
}
}
Этот кусок работает идеально, можно скормить по другую сторону и целую строку, и отдельный чар.
Код
int main(void)
{
unsykned int x,y,servoStep;
x=0;
setup();
while(1)
{
/*for(servoStep=315;servoStep<625;servoStep+=10)
{
for(x=0;x<4000000;x++);
for(y=0;y<12;y++)
{
servos[y].val=servoStep;
}
//PORTToggleByts(IOPORT_F, BIT_0);
WriteString("Hello World!\r\n");
}*/
};
return(0);
}
Хелловорлд тут приходит в виде ±±%lo world. Каждый раз одна и та же строка с такой фигней.
0
0 / 0 / 0
Регистрация: 18.03.2010
Сообщений: 2,233
27.07.2011, 21:28 4
просто как предположение: у вас портится в памяти сама строка. зацените, что реально появляется на выходе уарта именно при этой "битой" проге.
0
pkm
27.07.2011, 22:35 5
Скорость юарт 9600?
и мож вместо UARTSendDataByte(UART1, *string); нужно использовать просто UARTSendData(UART1, *string);
0 / 0 / 0
Регистрация: 14.02.2010
Сообщений: 799
27.07.2011, 23:40 6
Ymk, ну вы издеваетесь?
Пользоваться проводом - и стринги, и чары передаются нормально.
pkm, скорость выставлена правильно на обоих концах, я же уже сказал, что эхо работает правильно.
Проблема возникает только при передаче строки с МК на комп и только при использовании Xbee. То есть - если взять вместо Xbee просто три проводочка на Rx/Tx/GND - никаких проблем. Проблемы появляются при использовании Xbee. Я уже подумал, что мало ли они в каком энергосберегающем режиме - нет, конфиг проверил
0
pkm
28.07.2011, 12:06 7
а что если попробовать тогда строку передаваться через чар, к примеру:

char str1[20];
strcpy(str1, *string);
UARTSendDataByte(UART1, str1);

кстати что будет если просто послать Hello в вашем коде?
0 / 0 / 0
Регистрация: 28.02.2011
Сообщений: 461
28.07.2011, 12:43 8
Может в радио-тракте трабл. На самой низкой скорости работает?
0
0 / 0 / 0
Регистрация: 14.02.2010
Сообщений: 799
28.07.2011, 15:22 9
pkm, что вы так уперлись в процедуру отправки? На ногах МК все правильно в результате выходит. Запарываюстя строго три первых символа, вне зависимости от длины строки. И то, что вы предожили ничего не меняет. Ну окей, будет еще один массив в памяти висеть.
Otykzzz, что 2400, что 57600, результат одинаковый

Поковырял вчера еще, удивился. Интересно девки пляшут. У С32 есть две доки для библиотеки для периферии, ПДФ и обычный хэлп-файл. Многие функции слегка отличаются. Дык вот, если использовать функции UART из ПДФ (хотя ПДФ уже считается как obsotite,) то все прекрасно работает с Xbee. По проводам - тоже. Если использовать функции из хелпа - по проводам ок, по воздуху - фуфел. Про эти доки еще давно спрашивал у суппорта Микрочипа - божились, что функции там одинаковые, отличаются только форматом.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
28.07.2011, 15:22
Помогаю со студенческими работами здесь

Про ООП, ФП, ПП и иже с ними
Здравствуйте. Прежде всего хотелось бы дополнить, что несмотря на то, что тема находится в разделе...

Наследование. Классы. Перегрузка '=' и иже с ними
Всем доброго самого. Вопрос для уточнения. Есть класс: class A { public: ...

Pc для графики 2d: corel painter и иже с ними
Помогите, пожалуйста, полному чайнику) Комп нужен ребенку поиграть (без фанатизма), позаниматься и...

Выгрузка на GDrive, Яндекс Диск и иже с ними
Здравствуйте! Волнует такой больше теоритич. вопрос.. Если я к примеру открыл общий доступ к...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru