اطلاعیه

Collapse
No announcement yet.

کمک در راه اندازی برد درایور USB ماژول های NRF24L01

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

    کمک در راه اندازی برد درایور USB ماژول های NRF24L01

    با سلام خدمت دوستان

    سایت ECA یک برد درایور USB ماژول های NRF24L01 را تولید و ارائه کرده. توی توضیحاتش دستوراتی برای کانفیگش گذاشته.
    دو تا سوال دارم اول اینکه این دیتاشیت NRF24L01 رو خوندم هیچی ازش نفهمیدم.از دوستان اگه کسی میتونه ممنون میشم کمکم کنه.

    دوم اینکه در مورد دستور اول کد زیر میشه یه توضیحی بهم بدین .


    دستورات AT :

    1) AT+SET=AABBCCCCCCCCCC

    AA : کانال فرکانسی ماژول مابین 00 و 7F (رجیستر RF_CH مطابق دیتاشیت NRF24L01 )

    BB : توان و سرعت ارتباطی (رجیستر RF_SETUP مطابق دیتاشیت NRF24L01 )

    CCCCCCCCCC : آدرس فیزیکی دریافت و ارسال داده ها ( رجیستر RX_ADDR_P0 و TX_ADDR )

    نمونه حالت پیشفرض : AT+SET=28073443101001

    2) AT+RESET بازگرداندن تنظیمات پیشفرض

    3) AT+BAUD=N تنظیم بیت ریت پورت سریال

    N : سرعت ارتباطی (9600 ، 14400 ، 19200 ، 38400 ، 57600 ، 115200 )

    اضافه شده در تاریخ :
    کسی از دوستان از این ماژول استفاده نکردن بتونن کمک کنم.

    از مسئولین فروشگاه و متخصصین سایت کسی نیست به من کمک کنه؟


    اضافه شده در تاریخ :
    یعنی از دوستان هیچ کس حوصله یک جواب دادن رو نداره.

    بخدا خیلی گیرم. حتما جبران میکنم.

    #2
    پاسخ : کمک در راه اندازی برد درایور USB ماژول های NRF24L01

    دوست عزیز کامل مشخص نکردین مشکلتون چیه یا نیاز به چه تغییراتی دارین ؟ لازم هم نیست که کل دیتاشیت رو مطالعه کنین. فقط کافیه رجیستر مشخص شده رو جستجو و بخش مربوط به اون را نگاه کنین.
    در حالت عادی با کانفیگ اولیه هم میتونین از این برد راه انداز استفاده کنین. منتها برای اینکه دست کاربر برای اعمال برخی کانفیگ های پشتیبانی شده توسط NRF24L01 باز باشه این دستور اول تو برد راه انداز تعریف شده.
    دو کاراکتر اول این دستور که در مبنای هگز هست کانال فرکانسی ماژول رو تعیین میکنه. طبق دیتاشیت فرکانس کاریر از طریق رابطه زیر محاسبه میشه ( صفحه 23 دیتاشیت نسخه 2 )
    F0 = 2400 + RF_CH[MHz]
    اندازه گام برای هر واحد افزایش این رجیستر یک مگاهرتز هست.
    دو کاراکتر دوم موبوط به رجیستر RF_SETUP هست. با این رجیستر میشه توان ارسالی، نرخ داده و بهره بخش LNA رو کنترل کرد. به عنوان مثال در حالت پیش فرض ماژول برای حداکثر توان ارسالی با دیتا ریت یک مگابیت تنظیم شده.
    10 کاراکتر آخر هم آدرس نرم افزاری مازول برای ارسال و دریافت پایپ لاین 0 رو مشخص میکنه. داخل NRF شش تا پایپ لاین دریافت با آدرس های متفاوت تعریف شدن. در این راه انداز پایپ لاین صفر استفاده میشه و آدرس اون هم برابر با آدرس ارسال هست. باید توجه داشته باشین که هر دو سمت فرستنده و گیرنده باید آدرس مشابهی داشته باشن تا بتونن با همدیگه تبادل داده داشته باشن.

    دیدگاه


      #3
      پاسخ : کمک در راه اندازی برد درایور USB ماژول های NRF24L01

      آقا من با نرم افزار های مختلف تست کردم نشد.یعنی دستور های AT را که میزنم ال ای دی روشن میمونه و هیچ کاری نمی کنه.هر چی هم که مینویسم رو صفحه ترمینال هیچی نمیاد.
      هر کی نتیجه گرفته بی زحمت یه فیلم از کارش بگیره بذاره + فایل برنامه گیرنده.
      خلاصه از صفر توضیح بده دیگه.

      اضافه شده در تاریخ :
      الان با ترمینال کد ویژن دستور های at میاد ولی نمیدونم کار میکنه یا نه.
      اون آدرس فیزیکی بین فرستنده و گیرنده باید چی باشه دقیقا؟
      آیا جهالت نیست که آدمی ساعات شیرین امروز را فدای روزهای آینده کند؟

      دیدگاه


        #4
        پاسخ : کمک در راه اندازی برد درایور USB ماژول های NRF24L01

        هدری که من استفاده میکنم که از همین سایت هم گرفتم اینه :

        کد:
        ifndef __nRF24L01+_H
        #define __nRF24L01+_H
        
        #include <mega32.h>
        #include <nRF24L01+.h>
        #include <stdio.h>
        #include <delay.h>
        // SPI functions
        #include <spi.h>
        
        
        #define CE PORTB.3
        #define CSN PORTB.4
        
        /* Instruction Mnemonics */
        #define R_REGISTER 0x00
        #define W_REGISTER 0x20
        #define REGISTER_MASK 0x1F
        #define ACTIVATE 0x50
        #define R_RX_PL_WID 0x60
        #define R_RX_PAYLOAD 0x61
        #define W_TX_PAYLOAD 0xA0
        #define W_ACK_PAYLOAD 0xA8
        #define FLUSH_TX 0xE1
        #define FLUSH_RX 0xE2
        #define REUSE_TX_PL 0xE3
        #define NOP 0xFF
        
        
        /* Memory Map */
        #define CONFIG 0x00
        #define EN_AA 0x01
        #define EN_RXADDR 0x02
        #define SETUP_AW 0x03
        #define SETUP_RETR 0x04
        #define RF_CH 0x05
        #define RF_SETUP 0x06
        #define STATUS 0x07
        #define OBSERVE_TX 0x08
        #define CD 0x09
        #define RX_ADDR_P0 0x0A
        #define RX_ADDR_P1 0x0B
        #define RX_ADDR_P2 0x0C
        #define RX_ADDR_P3 0x0D
        #define RX_ADDR_P4 0x0E
        #define RX_ADDR_P5 0x0F
        #define TX_ADDR 0x10
        #define RX_PW_P0 0x11
        #define RX_PW_P1 0x12
        #define RX_PW_P2 0x13
        #define RX_PW_P3 0x14
        #define RX_PW_P4 0x15
        #define RX_PW_P5 0x16
        #define FIFO_STATUS 0x17
        #define DYNPD 0x1C
        #define FEATURE 0x1D
        
        
        
        
        #pragma used+
        /* library function prototypes */
        
        flash unsigned char Base_Addrs[5]={0x00,0x01,0x03,0x07,0x00};
        unsigned char Temp_Addrs[5]={0x00,0x01,0x03,0x07,0x00};
        unsigned char payload[33];
        unsigned char Command_Reg = 0,Status_Reg = 0,State = 0;
        char Opr_Mode;
        bit send_actived = 0;
        
        
        void Set_Reg(unsigned char ins)
        {
        int i;
        CSN = 0;
        Status_Reg=spi(ins);
        switch(ins & 0xE0)
        {
        case 0x00:
        {
        if((ins & 0x1F)==0x0A || (ins & 0x1F)==0x0B || (ins & 0x1F)==0x10)
        {
        for(i=4;i>=0;i--)
        {
        Temp_Addrs[i]=spi(NOP);
        }
        }
        else
        {
        Command_Reg=spi(NOP);
        }
        break;
        }
        case W_REGISTER:
        {
        if((ins & 0x1F)==0x0A || (ins & 0x1F)==0x0B || (ins & 0x1F)==0x10)
        {
        for(i=4;i>=0;i--)
        {
        spi(Base_Addrs[i]);
        }
        }
        else
        {
        spi(Command_Reg);
        }
        break;
        }
        case R_RX_PL_WID:
        {
        if((ins & 0x01)==1)
        {
        i=payload[0];
        while(i!=0)
        {
        payload[i]=spi(NOP);
        i--;
        }
        }
        else
        {
        Command_Reg=spi(NOP);
        }
        break;
        }
        case W_TX_PAYLOAD:
        {
        i=payload[0];
        while(i!=0)
        {
        spi(payload[i]);
        i--;
        }
        break;
        }
        
        }
        CSN=1;
        delay_us(10);
        }
        
        
        
        
        // External Interrupt 2 service routine
        interrupt [EXT_INT2] void ext_int2_isr(void)
        {
        // Place your code here
        if(Opr_Mode==0)
        {
        Set_Reg(NOP);
        if(Status_Reg & W_REGISTER)
        {
        State = 2;
        Set_Reg(FIFO_STATUS);
        if((Command_Reg & 0x01)==0)
        {
        Set_Reg(R_RX_PL_WID);
        if(Command_Reg<=32)
        {
        payload[0]=Command_Reg;
        Set_Reg(R_RX_PAYLOAD);
        State = 3;
        }
        else
        Set_Reg(FLUSH_RX);
        }
        }
        else
        {
        State = 4;
        }
        }
        else
        {
        Set_Reg(R_RX_PL_WID);
        if(Command_Reg>32)
        {
        Set_Reg(FLUSH_RX);
        }
        else
        {
        payload[0]=Command_Reg;
        Set_Reg(R_RX_PAYLOAD);
        State = 1;
        }
        }
        Command_Reg = 0x7E;
        Set_Reg(0x27);
        Set_Reg(FLUSH_TX);
        }
        
        
        
        
        
        void Send_Data(char num , char *data)
        {
        int counter = 0;
        
        payload[0] = num;
        
        for(counter=0;counter<num;counter++)
        payload[counter+1] = *(data+counter);
        
        if(send_actived)
        {
        send_actived = 0;
        if((Temp_Addrs[4]==Base_Addrs[4]) && (Temp_Addrs[3]==Base_Addrs[3]) && (Temp_Addrs[2]==Base_Addrs[2]) && (Temp_Addrs[1]==Base_Addrs[1]) && (Temp_Addrs[0]==Base_Addrs[0]))
        {
        Set_Reg(FLUSH_TX);
        Set_Reg(W_TX_PAYLOAD);
        delay_ms(10);
        CE = 1;
        delay_us(20);
        CE = 0;
        delay_ms(10);
        }
        else
        State = 5;
        }
        
        if(State!=0)
        {
        send_actived=1; //faal sazi ersal mojadad
        State=0;
        }
        }
        
        
        
        void nRF_Config(char mode)
        {
        // Port B initialization
        // Func7=Out Func6=In Func5=Out Func4=Out Func3=In Func2=In Func1=In Func0=In
        // State7=0 State6=T State5=0 State4=0 State3=T State2=T State1=T State0=T
        PORTB=0x00;
        DDRB=0xB0;
        
        CSN = 1;
        CE = 0;
        
        
        // External Interrupt(s) initialization
        // INT0: Off
        // INT1: Off
        // INT2: On
        // INT2 Mode: Falling Edge
        GICR|=0x20;
        MCUCR=0x00;
        MCUCSR=0x00;
        GIFR=0x20;
        
        
        // SPI initialization
        // SPI Type: Master
        // SPI Clock Rate: 2000.000 kHz
        // SPI Clock Phase: Cycle Start
        // SPI Clock Polarity: Low
        // SPI Data Order: MSB First
        SPCR=0x50;
        SPSR=0x00;
        
        
        #asm("sei")
        
        delay_ms(110);
        
        Opr_Mode = mode;
        
        Command_Reg = 0x01;
        Set_Reg(0x21);
        
        Command_Reg = 0x01;
        Set_Reg(0x22);
        
        Command_Reg = 0x03;
        Set_Reg(0x23);
        
        Command_Reg = 0x2f;
        Set_Reg(0x24);
        
        Command_Reg = 0x01;
        Set_Reg(0x25);
        
        Command_Reg = 0x06;
        Set_Reg(0x26);
        
        Set_Reg(0x2A);
        
        Set_Reg(0x30);
        
        Command_Reg = 0x01;
        Set_Reg(0x3C);
        
        Command_Reg = 0x07;
        Set_Reg(0x3D);
        
        if(mode==0)
        {
        Command_Reg = 0x4E;
        Set_Reg(W_REGISTER);
        delay_ms(100);
        send_actived = 1;
        }
        else
        {
        Command_Reg = 0x3F;
        Set_Reg(W_REGISTER);
        delay_ms(5);
        CE = 1;
        }
        }
        
        
        #pragma used-
        
        
        //#pragma library nRF24L01+.lib
        
        
        #endif
        حالا با توجه به اطلاعات این هدر اون دستور AT+SET را باید چی بزنم.



        من اینو میزنم AT+SET=05060001030700 در جوابش ok هم میاد
        ولی ارتباط برقرار نمیشه. :sad:
        کمک کنید لطفا

        دیدگاه


          #5
          پاسخ : کمک در راه اندازی برد درایور USB ماژول های NRF24L01

          آقا چیکار می کنید که اون ok را میده؟
          از چه ترمینالی استفاده میکنید؟
          چه تنظیماتی؟
          یه عکس از مراحل کارتون میذارید؟
          اینا را امتحان کنید شاید جواب داد
          AT+SET=0506000100000َََA
          AT+SET=0506000A000010
          آیا جهالت نیست که آدمی ساعات شیرین امروز را فدای روزهای آینده کند؟

          دیدگاه


            #6
            پاسخ : کمک در راه اندازی برد درایور USB ماژول های NRF24L01

            نوشته اصلی توسط pooyan-shafiei
            آقا چیکار می کنید که اون ok را میده؟
            از چه ترمینالی استفاده میکنید؟
            چه تنظیماتی؟
            یه عکس از مراحل کارتون میذارید؟
            اینا را امتحان کنید شاید جواب داد
            AT+SET=0506000100000َََA
            AT+SET=0506000A000010
            من خودم یه برنامه نوشتم با VB که کدها رو ارسال میکنم.


            کدهای AT که نوشتید اون 05 که مربوط به RF_CH اون 06 هم که مربوط به RF_SETUP هست با توجه به هدری که گذاشتم.

            اون الباقیش که مربوط به آدرس فیزیکیه رو از کجا آوردین

            دیدگاه


              #7
              پاسخ : کمک در راه اندازی برد درایور USB ماژول های NRF24L01

              نه اصلا اشتباس.تست کردم نشد.
              خود سایت گفته رجیستر RX_ADDR_P0 و TX_ADDR
              تو دیتا شیت هم نوشته(قسمتmulti ceivier) هر کدوم از این رجیستر ها 5 تا عدد دورقمی هگزند.حالا سوال اینه که که کدومش را باید وارد کرد؟
              RX
              یا
              TX
              یا اصلا اینا باید تو برنامه گیرنده یکی باشند
              آیا جهالت نیست که آدمی ساعات شیرین امروز را فدای روزهای آینده کند؟

              دیدگاه


                #8
                پاسخ : کمک در راه اندازی برد درایور USB ماژول های NRF24L01

                آدرس ارسال یا TX_ADDR و آدرس دریافت 0 یا RX_ADDR_P0 هردوتا باید عین هم و برابر ده کاراکتر آخر دستور AT+SET باشن که تو حالت پیش فرض 3443101001 ( در مبنای هگز) هستش.

                میتونین از سورس کد آماده زیر کمک بگیرین که کامل هم چی توش رعایت شده ولی برای 8051 هست.
                http://vip.eca.ir/sharing/uploads/13983636361.rar

                دیدگاه


                  #9
                  پاسخ : کمک در راه اندازی برد درایور USB ماژول های NRF24L01

                  آقا میشه یه لطفی بکنید واسه کد اولی دستور AT را به طور واضح مشخص کنید.
                  AT+SET=?
                  اگه تغییراتی هم واسه کد گیرنده نیاز هست بگید.
                  ممنون
                  آیا جهالت نیست که آدمی ساعات شیرین امروز را فدای روزهای آینده کند؟

                  دیدگاه


                    #10
                    پاسخ : کمک در راه اندازی برد درایور USB ماژول های NRF24L01

                    نوشته اصلی توسط mahmood_s328
                    هدری که من استفاده میکنم که از همین سایت هم گرفتم اینه :

                    کد:
                    ifndef __nRF24L01+_H
                    #define __nRF24L01+_H
                    
                    #include <mega32.h>
                    #include <nRF24L01+.h>
                    #include <stdio.h>
                    #include <delay.h>
                    // SPI functions
                    #include <spi.h>
                    
                    
                    #define CE PORTB.3
                    #define CSN PORTB.4
                    
                    /* Instruction Mnemonics */
                    #define R_REGISTER 0x00
                    #define W_REGISTER 0x20
                    #define REGISTER_MASK 0x1F
                    #define ACTIVATE 0x50
                    #define R_RX_PL_WID 0x60
                    #define R_RX_PAYLOAD 0x61
                    #define W_TX_PAYLOAD 0xA0
                    #define W_ACK_PAYLOAD 0xA8
                    #define FLUSH_TX 0xE1
                    #define FLUSH_RX 0xE2
                    #define REUSE_TX_PL 0xE3
                    #define NOP 0xFF
                    
                    
                    /* Memory Map */
                    #define CONFIG 0x00
                    #define EN_AA 0x01
                    #define EN_RXADDR 0x02
                    #define SETUP_AW 0x03
                    #define SETUP_RETR 0x04
                    #define RF_CH 0x05
                    #define RF_SETUP 0x06
                    #define STATUS 0x07
                    #define OBSERVE_TX 0x08
                    #define CD 0x09
                    #define RX_ADDR_P0 0x0A
                    #define RX_ADDR_P1 0x0B
                    #define RX_ADDR_P2 0x0C
                    #define RX_ADDR_P3 0x0D
                    #define RX_ADDR_P4 0x0E
                    #define RX_ADDR_P5 0x0F
                    #define TX_ADDR 0x10
                    #define RX_PW_P0 0x11
                    #define RX_PW_P1 0x12
                    #define RX_PW_P2 0x13
                    #define RX_PW_P3 0x14
                    #define RX_PW_P4 0x15
                    #define RX_PW_P5 0x16
                    #define FIFO_STATUS 0x17
                    #define DYNPD 0x1C
                    #define FEATURE 0x1D
                    
                    
                    
                    
                    #pragma used+
                    /* library function prototypes */
                    
                    flash unsigned char Base_Addrs[5]={0x00,0x01,0x03,0x07,0x00};
                    unsigned char Temp_Addrs[5]={0x00,0x01,0x03,0x07,0x00};
                    unsigned char payload[33];
                    unsigned char Command_Reg = 0,Status_Reg = 0,State = 0;
                    char Opr_Mode;
                    bit send_actived = 0;
                    
                    
                    void Set_Reg(unsigned char ins)
                    {
                    int i;
                    CSN = 0;
                    Status_Reg=spi(ins);
                    switch(ins & 0xE0)
                    {
                    case 0x00:
                    {
                    if((ins & 0x1F)==0x0A || (ins & 0x1F)==0x0B || (ins & 0x1F)==0x10)
                    {
                    for(i=4;i>=0;i--)
                    {
                    Temp_Addrs[i]=spi(NOP);
                    }
                    }
                    else
                    {
                    Command_Reg=spi(NOP);
                    }
                    break;
                    }
                    case W_REGISTER:
                    {
                    if((ins & 0x1F)==0x0A || (ins & 0x1F)==0x0B || (ins & 0x1F)==0x10)
                    {
                    for(i=4;i>=0;i--)
                    {
                    spi(Base_Addrs[i]);
                    }
                    }
                    else
                    {
                    spi(Command_Reg);
                    }
                    break;
                    }
                    case R_RX_PL_WID:
                    {
                    if((ins & 0x01)==1)
                    {
                    i=payload[0];
                    while(i!=0)
                    {
                    payload[i]=spi(NOP);
                    i--;
                    }
                    }
                    else
                    {
                    Command_Reg=spi(NOP);
                    }
                    break;
                    }
                    case W_TX_PAYLOAD:
                    {
                    i=payload[0];
                    while(i!=0)
                    {
                    spi(payload[i]);
                    i--;
                    }
                    break;
                    }
                    
                    }
                    CSN=1;
                    delay_us(10);
                    }
                    
                    
                    
                    
                    // External Interrupt 2 service routine
                    interrupt [EXT_INT2] void ext_int2_isr(void)
                    {
                    // Place your code here
                    if(Opr_Mode==0)
                    {
                    Set_Reg(NOP);
                    if(Status_Reg & W_REGISTER)
                    {
                    State = 2;
                    Set_Reg(FIFO_STATUS);
                    if((Command_Reg & 0x01)==0)
                    {
                    Set_Reg(R_RX_PL_WID);
                    if(Command_Reg<=32)
                    {
                    payload[0]=Command_Reg;
                    Set_Reg(R_RX_PAYLOAD);
                    State = 3;
                    }
                    else
                    Set_Reg(FLUSH_RX);
                    }
                    }
                    else
                    {
                    State = 4;
                    }
                    }
                    else
                    {
                    Set_Reg(R_RX_PL_WID);
                    if(Command_Reg>32)
                    {
                    Set_Reg(FLUSH_RX);
                    }
                    else
                    {
                    payload[0]=Command_Reg;
                    Set_Reg(R_RX_PAYLOAD);
                    State = 1;
                    }
                    }
                    Command_Reg = 0x7E;
                    Set_Reg(0x27);
                    Set_Reg(FLUSH_TX);
                    }
                    
                    
                    
                    
                    
                    void Send_Data(char num , char *data)
                    {
                    int counter = 0;
                    
                    payload[0] = num;
                    
                    for(counter=0;counter<num;counter++)
                    payload[counter+1] = *(data+counter);
                    
                    if(send_actived)
                    {
                    send_actived = 0;
                    if((Temp_Addrs[4]==Base_Addrs[4]) && (Temp_Addrs[3]==Base_Addrs[3]) && (Temp_Addrs[2]==Base_Addrs[2]) && (Temp_Addrs[1]==Base_Addrs[1]) && (Temp_Addrs[0]==Base_Addrs[0]))
                    {
                    Set_Reg(FLUSH_TX);
                    Set_Reg(W_TX_PAYLOAD);
                    delay_ms(10);
                    CE = 1;
                    delay_us(20);
                    CE = 0;
                    delay_ms(10);
                    }
                    else
                    State = 5;
                    }
                    
                    if(State!=0)
                    {
                    send_actived=1; //faal sazi ersal mojadad
                    State=0;
                    }
                    }
                    
                    
                    
                    void nRF_Config(char mode)
                    {
                    // Port B initialization
                    // Func7=Out Func6=In Func5=Out Func4=Out Func3=In Func2=In Func1=In Func0=In
                    // State7=0 State6=T State5=0 State4=0 State3=T State2=T State1=T State0=T
                    PORTB=0x00;
                    DDRB=0xB0;
                    
                    CSN = 1;
                    CE = 0;
                    
                    
                    // External Interrupt(s) initialization
                    // INT0: Off
                    // INT1: Off
                    // INT2: On
                    // INT2 Mode: Falling Edge
                    GICR|=0x20;
                    MCUCR=0x00;
                    MCUCSR=0x00;
                    GIFR=0x20;
                    
                    
                    // SPI initialization
                    // SPI Type: Master
                    // SPI Clock Rate: 2000.000 kHz
                    // SPI Clock Phase: Cycle Start
                    // SPI Clock Polarity: Low
                    // SPI Data Order: MSB First
                    SPCR=0x50;
                    SPSR=0x00;
                    
                    
                    #asm("sei")
                    
                    delay_ms(110);
                    
                    Opr_Mode = mode;
                    
                    Command_Reg = 0x01;
                    Set_Reg(0x21);
                    
                    Command_Reg = 0x01;
                    Set_Reg(0x22);
                    
                    Command_Reg = 0x03;
                    Set_Reg(0x23);
                    
                    Command_Reg = 0x2f;
                    Set_Reg(0x24);
                    
                    Command_Reg = 0x01;
                    Set_Reg(0x25);
                    
                    Command_Reg = 0x06;
                    Set_Reg(0x26);
                    
                    Set_Reg(0x2A);
                    
                    Set_Reg(0x30);
                    
                    Command_Reg = 0x01;
                    Set_Reg(0x3C);
                    
                    Command_Reg = 0x07;
                    Set_Reg(0x3D);
                    
                    if(mode==0)
                    {
                    Command_Reg = 0x4E;
                    Set_Reg(W_REGISTER);
                    delay_ms(100);
                    send_actived = 1;
                    }
                    else
                    {
                    Command_Reg = 0x3F;
                    Set_Reg(W_REGISTER);
                    delay_ms(5);
                    CE = 1;
                    }
                    }
                    
                    
                    #pragma used-
                    
                    
                    //#pragma library nRF24L01+.lib
                    
                    
                    #endif
                    حالا با توجه به اطلاعات این هدر اون دستور AT+SET را باید چی بزنم.



                    من اینو میزنم AT+SET=05060001030700 در جوابش ok هم میاد
                    ولی ارتباط برقرار نمیشه. :sad:
                    کمک کنید لطفا

                    یه سری اطلاعات تو هدر بالا وحود داره

                    کد:
                    #define RF_CH 0x05
                    #define RF_SETUP 0x06
                    #define STATUS 0x07
                    #define OBSERVE_TX 0x08
                    #define CD 0x09
                    #define RX_ADDR_P0 0x0A
                    #define RX_ADDR_P1 0x0B
                    #define RX_ADDR_P2 0x0C
                    #define RX_ADDR_P3 0x0D
                    #define RX_ADDR_P4 0x0E
                    #define RX_ADDR_P5 0x0F
                    #define TX_ADDR 0x10
                    با توجه به این کد ها باید اون دستور AT رو بسازیم. درسته؟
                    من هر چی میزنم نمیشه. میشه شما بفرمایید این کد چی باید باشه؟

                    ممنون

                    دیدگاه


                      #11
                      پاسخ : کمک در راه اندازی برد درایور USB ماژول های NRF24L01

                      کشف شد.
                      رونمایی می کنم از دستور:
                      AT+SET=01060007030100
                      آیا جهالت نیست که آدمی ساعات شیرین امروز را فدای روزهای آینده کند؟

                      دیدگاه


                        #12
                        پاسخ : کمک در راه اندازی برد درایور USB ماژول های NRF24L01

                        نوشته اصلی توسط pooyan-shafiei
                        کشف شد.
                        رونمایی می کنم از دستور:
                        AT+SET=01060007030100
                        سلام تبریک میگم و خوشحالم که تونستید راش بندازید.

                        فقط اون کد رو از کجا آوردید . یعنی میشه کدتون رو تفسیر کنید.

                        آیا از هدر من استفاده کردید.

                        دیدگاه


                          #13
                          پاسخ : کمک در راه اندازی برد درایور USB ماژول های NRF24L01

                          بله از هدر شما استفاده کردم.
                          تفسیرش هم این میشه که اون قسمت اول برنامه تنها رجیستر ها معرفی می شوند و برای هر رجیستر یک عدد خاص در نظر گرفته میشود ولی مقدار دهی نمیشوند.
                          بلکه توی تابع nrf confing رجیستر ها مقدار دهی می شوند.
                          البته یه خورده فهمیدنش سخته.این صفحه از تاپیک را بخونید دوست خوبمون خیلی عالی توضیح داده.
                          http://www.eca.ir/forum2/index.php?topic=83754.150
                          اولین پست این صفحه را بخونید.
                          اما آدرس 10 رقمیه هم توی یه آرایه اول کار گذاشته شده که باید برعکس وارد بشه.
                          کد:
                          flash unsigned char Base_Addrs[5]={0x00,0x01,0x03,0x07,0x00};
                          سوال دیگه هم بود بپرسید.
                          آیا جهالت نیست که آدمی ساعات شیرین امروز را فدای روزهای آینده کند؟

                          دیدگاه


                            #14
                            پاسخ : کمک در راه اندازی برد درایور USB ماژول های NRF24L01

                            نوشته اصلی توسط pooyan-shafiei
                            بله از هدر شما استفاده کردم.
                            تفسیرش هم این میشه که اون قسمت اول برنامه تنها رجیستر ها معرفی می شوند و برای هر رجیستر یک عدد خاص در نظر گرفته میشود ولی مقدار دهی نمیشوند.
                            بلکه توی تابع nrf confing رجیستر ها مقدار دهی می شوند.
                            البته یه خورده فهمیدنش سخته.این صفحه از تاپیک را بخونید دوست خوبمون خیلی عالی توضیح داده.
                            http://www.eca.ir/forum2/index.php?topic=83754.150
                            اولین پست این صفحه را بخونید.
                            اما آدرس 10 رقمیه هم توی یه آرایه اول کار گذاشته شده که باید برعکس وارد بشه.
                            کد:
                            flash unsigned char Base_Addrs[5]={0x00,0x01,0x03,0x07,0x00};
                            سوال دیگه هم بود بپرسید.

                            ممنون از توضیحاتتون. برم ببینم میتونم راش بندازم.
                            راستی از چه کدی برای تست برنامه استفاده میکنید؟ نمونه سورس که تست کردید رو میتونید به من هم بدید.

                            دیدگاه


                              #15
                              پاسخ : کمک در راه اندازی برد درایور USB ماژول های NRF24L01

                              من از این دو نمونه برنامه استفاده کردم.
                              code-examp-nRF24L01.rar - 121 KB
                              آیا جهالت نیست که آدمی ساعات شیرین امروز را فدای روزهای آینده کند؟

                              دیدگاه

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