Гудвинволшебник (29.05.2012 00:16, просмотров: 256) ответил 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;
   }
  
  }
}