Подскажите пожалуйста что делаю не так, передаю посылки к примеру 0 1 2 3 4 5 а принимаю почему то так _ 0 1 2 3 4 5 То есть передатчик первую посылку отправляет пустую,и дальше как надо, со сдвигом, отправляю так: _tr24a(0x07,0x01,ch); _tr24a(0x52,0x80,0x00); _ ну и пишу в буфер. такое ощущение что в буфер надо писать перед тем как скидывать буфер,
По такому развернутому ответу можно сказать только ХЗ. Я не телепат. Не знаю как ты принимаешь, как отправляешь. И вообще для начала ты его инициализировал верно?
Да конечно , инициализировал регистрами с даташита Register optimize value for EM198810, как принимаю думаю не важно так как на 100% уверен что передатчик первый байт отправляет пустой, а второй отправляет тот что записывал первым.
Нет вы не поняли я отправляю посылки по 1байту, Первую посылку он отправляет пустую, (вроде я в буфер не чего не писал),а вторую ту что записал первую(хотя в буфер уже записал вторую), и так дальше!
Все таки я чегото не пойму, А как перейти в режим тх? Через регистр reg7 бит 7??? Если да то у меня трансивер после установки этого бита начинает отправлять! Я делал сначала как вы написали, сначала переходил в режим тх, а потом заполнял буфер, а трансивер то уже отправил, вот поэтому у меня первая посылка приходила пустой!
dimka11, прауильно! Я сегодня запустил прём/передачу!!!! В один трансивер микроконтроллер отправляет посылку, а с другого принимает!!!! Итог - первичные эксперименты можно считать успешными.
Усё работает! Вначале первый передаёт, второй принимает. Потом наоборот. И в цикле, передача пакетов длиной от 2 до 63 байт.
Ты проверь содержание посылок. Важно, чтоб отправляемая посылка и возвращаемая были разные по размеру и содержанию.
Вот это неправильно. Данные в буфере трансивера не удаляется. И далеко не факт, что ты получил посылку. Трансивер может сообщить о приходе пакета, но если код неверен то в буфер трансивера ничего не запишется. Первые версии моего кода содержали именно такой косяк. В них данные не принимались.
нет. Усё хорошо у меня. Один трансивер вгоняется в приём. Во второй впихивается посылка. Второй включается на передачу. Читается приёмник. main_work: while (FlagTik==0); // Ожидание нового тика 10 мсек FlagTik=0; Tik++; clock(); // if (Tik==0) {Text_Work(); // puts("0123456789;\0x0D"); // putc(SekD+T30); putc(SekE+T30);putc(0x0D); // }; Test_Len++; if (Test_Len>63) Test_Len=2; //Заполнение буфера для передачи. [0]=Длина посылки, [1...]=посылка for (TR24_Temp=0;TR24_Temp<64;TR24_Temp++) {TR24_Buf[TR24_Temp]=0; }; putc(0x55); TR24_Buf[0]=Test_Len; putc(TR24_Buf[0]); for (TR24_Temp=1;TR24_Temp<(TR24_Buf[0]+1);TR24_Temp++) { TR24_Buf[TR24_Temp]=TR24_Temp+TR24_Buf[0]*2; putc(TR24_Buf[TR24_Temp]); }; //Включение трансивера на приём TR24_Number=2; //Трансивер 2 TR24_set_RX_mode(); // -> приём delay_us(10); // //Включение трансивера на передачу TR24_Number=1; //Трансивер 1 TR24_FIFO_W(); //Передача в трансивер данных из буфера TR24_set_TX_mode(); //В режим TX (отправка в антену) //Очистка буфера перед чтением из трансивера for (TR24_Temp=0;TR24_Temp<64;TR24_Temp++) {TR24_Buf[TR24_Temp]=0; }; //Чтение принимающего трансивера TR24_Number=2; //Чтение трансивера в приёмный буфер TR24_FIFO_R(); TR24_set_idle_mode(); delay_ms(250); delay_ms(250); delay_ms(250); //Чтение буфера полученного из FIFO putc(0xAA); for (TR24_Temp=0;TR24_Temp<(TR24_Buf[0]+1);TR24_Temp++) { putc(TR24_Buf[TR24_Temp]); }; delay_ms(250); delay_ms(250); delay_ms(250); goto main_work;
Отпишитесь те у кого получилось передать данные больше чем на пару метров. Ибо в интернете стало появляться все больше и больше статей с обвинением этих модулей а не своих рук. Капец если руки кривые зачем же статьи писать!
Демонстрация работы протокола + демонстрация возможностей модуля. Модуль конечно же не идеал, но дешевле да еще с такими параметрами на рынке ничего нет. http://www.youtube.com/watch?v=HYnQRP0CEZY