اطلاعیه

Collapse
No announcement yet.

مشکل با nrf24l01+

Collapse
X
 
  • فیلتر
  • زمان
  • Show
Clear All
new posts

    مشکل با nrf24l01+

    چند وقتی هست دارم رو nrf کار میکنم اما هر کاری میکنم نمیتونم فرستنده رو راه بندازم :cry:
    میتونم رجیستراشو بخونم یا بنویسم اما تو لحظه فرستادن بیت TX_DS که نشون دهنده درست فرستاده شدن payload هست رو از رجیستر STATUS هست یک نمیشه و این یعنی اینکه اطلاعات فرستاده نمیشه.
    این main برنامس
    [code=c][int main(void)
    {
    BYTE x,data[3]={0x31,0x45,0x66};
    DDRC=0xFF;
    Setup();
    TXMode();
    while(1)
    {
    for(x=0;x<=255;x++)
    {
    WritePayload(3,data);
    while(!(ReadRegister(STATUS) & (1<<5)));
    PORTC=x;
    delay_ms(500);
    FlushTXRX();
    }
    }
    }]
    //--------------------------------------------------------------------------------------------][/code]



    یه تابع برا تنظیمات اولیه نوشتم .
    [code=c][void Setup(void)
    {
    Spi_Init(); // Initialize the SPI:
    delay_ms(101); //Power on reset 100ms
    SetBit(DDRB,2);//CE Data direction OUT PUT
    SetBit(DDRB,4);//CSN Data direction OUT PUT

    /********* Initialize the CSN and CE pins:********/
    CEPin_Low;
    CSNPin_High;
    //************************************************
    WriteAddress(TX_ADDR, 5,RXTX_ADDRESS); // Transmit address. Used for a PTX device only.for this module is 5 byte like as RX_ADDR_P0
    WriteRegister(EN_RXADDR, 0x01); // Enabled RX Addresses-Enable data pipe 0
    WriteRegister(SETUP_AW, 0x03); // 5 BYTE address
    //WriteRegister(NRF_CONFIG, 0x0E); // 2 BYTE CRC, POWER UP, PTX
    WriteRegister(EN_AA, 0x01); // Enable/Disable ‘Auto Acknowledgment’ Function Disable
    WriteRegister(SETUP_RETR, 0x1A); // 500us + 86us, 10 returns...
    WriteRegister(RF_CH,RF_CHANNEL); // Total canal in this module is 125-Use canal 5 for this connection
    WriteRegister(RF_SETUP,0b00000110); // 1Mbps, 0dBm-Max Power(max distance transmit)
    WriteRegister(RX_PW_P0,Number_Bytes); // RX payload = 16 BYTE.Number of bytes in RX payload in data pipe 0 (1 to 32 bytes)
    WriteAddress(RX_ADDR_P0,Address_Width,RXTX_ADDRESS ); // Receive address data pipe 0. 5 Bytes maximum length.for this module is 3 byte
    WriteAddress(TX_ADDR,Address_Width,RXTX_ADDRESS); //Transmit Address
    WriteRegister(DYNPD,0x01);
    WriteRegister(FEATURE,0x07);
    FlushTXRX(); // Flush TX/RX FIFO, used in TX mode.Empty TX/RX FIFO
    }
    //--------------------------------------------------------------------------------------------][/code]


    اینم تابع فرستادن اطلاعات


    [code=c][void WritePayload(BYTE num, BYTE *Data)
    {
    BYTE x;
    CSNPin_Low;
    Spi_Transfer(TX_PAYLOAD);
    for (x=0;x<num;x++)Spi_Transfer(Data[x]);
    delay_ms(10);
    CSNPin_High;

    CEPin_High;
    delay_us(12); //Minimum 10µs high pulse + a bit (2us)
    CEPin_Low;//cePin = 0;//wake up from Stand By
    }][/code]

    #2
    پاسخ : مشکل با nrf24l01+

    این همه زحمت میکشی ماژول رو راه اندازی میکنی
    بعدی میبینی که بردش کمه!
    من که حالم گرفته شد. حیف اینهمه وقت که براش گذاشتم

    دیدگاه


      #3
      پاسخ : مشکل با nrf24l01+

      نوشته اصلی توسط ghmansoory
      این همه زحمت میکشی ماژول رو راه اندازی میکنی
      بعدی میبینی که بردش کمه!
      من که حالم گرفته شد. حیف اینهمه وقت که براش گذاشتم
      مگه بردش چقدره؟
      .The best question deserves a better answer
      =-=-=-=-=-=-=-=-=-==-=-=-=-=-=-=-=-=
      «پناه»می برم «به خدا»
      از عـیبی که ، «امروز» در خود می بینم، و «دیروز» «دیگران را» به خاطر، «هـمان عیـب» ملامت کرده ام.
      محتاط باشیم، در «سرزنش» و «قضاوت کردن دیگران». وقتی نه از «دیروز او» خبر داریم و نه از "فردای خودمان" .

      دیدگاه


        #4
        پاسخ : مشکل با nrf24l01+

        نوشته اصلی توسط •.´™ مَسِِــــح`.•
        مگه بردش چقدره؟
        به درد کار صنعتی نمیخوره. پایداری نداره. حداکثر برد درصورتیکه هردو ماژول با آنتن داخلی باشند (از او 6 تومنی ها) بردش درصورتیکه مانعی بینشون نباشه و همدیگه رو ببینند حدود ده متره. داده ها مدام از بین میره، یعنی نمیشه یک جریان ثابت داده رو برقرار کرد. (مثل ارسال آنلاین صوت یا تصویر). طول packet اگه زیاد باشه شانس دریافت صحیح داده کمه و برد باید کمتر از ده متر باشه.
        خلاصش اینکه این ماژولها هزینه زیادی رو دست من گزاشت. امیدوارم مدیر سایت هرچه زودتر اینها رو از سایت برداره تا بقیه رو سرکار نگذاشته.
        موفق باشید

        دیدگاه

        لطفا صبر کنید...
        X