ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Воскресенье
2 июня
331432 Топик полностью
Гудвин, волшебник (29.05.2012 00:16, просмотров: 198) ответил carlosh на Безнадёга. Использовал библиотеки и инициализацию регистров от Hoperf, использовал библиотеки и инициализацию регистров от Voti. Инициализация модулей у приемника и передатчика одинаковая. Результат один. Приемник и передачик не видят друг друга.
Вот этотим простейшим куском кода тестировал передачу с автоподтверждением от приемника, пользуясь вышеописанной библиотекой. На меге168 с тактовой 4 МГц получилась скорость более 20 кбайт/сек. И расстояние 20 м без потерь и ~50-60 м максимально возможное расстояние со штатной антенной. void main(void) { unsigned char stat; unsigned char value; unsigned int counter; // количество переданных пакетв, на которые пришло подтверждение от приемника unsigned int counter_err; // количество ошибочных попыток передачи rfm70_init(); // rfm70_air_data_rate(1); rfm70_channel(100); //rfm70_lna_low(); rfm70_retransmit_delay_attempts(0,15); if (KEY_U) stat=1; // проверяем нажата ли кнопка KEY_U при сбросе для выбора приемник/передатчик if (stat) // это приемник { rfm70_mode_receive(); while (1) // цикл для приемника { if( rfm70_receive( &pipe, buff, &len )) { // rfm70_register_write( RFM70_CMD_FLUSH_RX,0 ); // lcd_pos(3,0); // sprintf(disp,"ПРИНЯТО: %3d",++counter); // lcd_str(disp); } } } else // передатчик { while (1) // цикл для передатчика { rfm70_mode_transmit(); rfm70_transmit_message(buff,32); while (1) { value = rfm70_register_read( RFM70_REG_STATUS ); if (value & 0x30) { rfm70_register_write( RFM70_REG_STATUS ,value ); break; } } if (value & 0x20) ++counter; if (value & 0x10) ++counter_err; } } }