اطلاعیه

Collapse
No announcement yet.

توضیح در مورد توابع nrf در lpc1768

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

    توضیح در مورد توابع nrf در lpc1768

    با سلام
    خدمت دوستان و اساتید محترم
    لطفا کسانی که اطلاع دارند ، در مورد توابع ماژول nrf برد آموزشی شرکت توضیح دهید، اینکه تابع REC و SEND چگونه عمل می کنند و بافر آن چگونه است؟
    با تشکر

    پروژه برد آموزشی lpc1768 شرکت

    #2
    پاسخ : توضیح در مورد توابع nrf در lpc1768

    سلام.
    1= با دستور ()Init_24L01 و ()init_io ماژول nrf آماده به کار میشه
    2=با دستور (Set_RF_RX_Mode(4به ما ژول علام می کنیم که ماژول حداکثر 4 بایت می تونه دریافت کنه
    3= با دستور(send(buff,4ماژول حداکثر 4 بایت از بافر ارسال می کنه.
    4-با دستور() REC میکرو به انداز ه 4 بایت (باتوجه به تنظیم در تابع Set_RF_RX_Mode) در متغییر[Buff[0 تا [ Buff[3 قرار می ده این متغییر در فایل کتابخانهnrf استفاده شده و برای استفاده از آن باید [extern uchar Buff[5(در خط 30 در برنامه گیرنده) در برنامه اصلی بنویسیم یعنی متغییر در برنامه اصلی استفاده شده برابر میشه با متغییر که در کتابخانه nrf استفاده شده

    دیدگاه


      #3
      پاسخ : توضیح در مورد توابع nrf در lpc1768

      نوشته اصلی توسط MM320 نمایش پست ها
      سلام.
      1= با دستور ()Init_24L01 و ()init_io ماژول nrf آماده به کار میشه
      2=با دستور (Set_RF_RX_Mode(4به ما ژول علام می کنیم که ماژول حداکثر 4 بایت می تونه دریافت کنه
      3= با دستور(send(buff,4ماژول حداکثر 4 بایت از بافر ارسال می کنه.
      4-با دستور() REC میکرو به انداز ه 4 بایت (باتوجه به تنظیم در تابع Set_RF_RX_Mode) در متغییر[Buff[0 تا [ Buff[3 قرار می ده این متغییر در فایل کتابخانهnrf استفاده شده و برای استفاده از آن باید [extern uchar Buff[5(در خط 30 در برنامه گیرنده) در برنامه اصلی بنویسیم یعنی متغییر در برنامه اصلی استفاده شده برابر میشه با متغییر که در کتابخانه nrf استفاده شده

      با تشکر از پاسختان
      اما برای اینکه یک برد هم گیرنده باشد و هم فرستنده، تنظیم خاصی نسبت به هر حالت ندارد؟ یعنی فقط توابع rec و send را استفاده کنیم،یک گیرنده ارسال هم می تواند بکند؟

      دیدگاه


        #4
        پاسخ : توضیح در مورد توابع nrf در lpc1768

        فکر نکنم دستور دیگه بخواد البته من خودم برد ورژن سی رو دارم همچین کاری انجام دادم(هم زمان ارسال و دریافت )
        البته این کتابخانه شما تغییراتی داشته نسبت به فایل های که من دارم، شما با همین دستورات کار رو انجام بده اگر نشد بگید تا فایل پروژه ام براتون بزارم.

        دیدگاه


          #5
          پاسخ : توضیح در مورد توابع nrf در lpc1768

          نوشته اصلی توسط MM320 نمایش پست ها
          فکر نکنم دستور دیگه بخواد البته من خودم برد ورژن سی رو دارم همچین کاری انجام دادم(هم زمان ارسال و دریافت )
          البته این کتابخانه شما تغییراتی داشته نسبت به فایل های که من دارم، شما با همین دستورات کار رو انجام بده اگر نشد بگید تا فایل پروژه ام براتون بزارم.
          با تشکر
          اما هنگامی که ارسال انجام می شود دیگر دریافت صورت نمی گیرد.

          دیدگاه


            #6
            پاسخ : توضیح در مورد توابع nrf در lpc1768

            سلام .
            می تونی از برنامه زیر استفاده کنی
            کد:
            #include "LPC17xx.h"
            #include "24L01.h"
            
            
            #include <lpc17xx_gpio.h>
            #include "lpc17xx_rit.h"
            
            volatile uint32_t msTicks;                            /* counts 1ms timeTicks */
            extern uchar Buff[5];//1..32 byte
            uchar send_[5]={0x11,0x22,0x33,0x44,0x55};
            uchar n;
            long long c,d_time;
            uchar a;
            /*----------------------------------------------------------------------------
              SysTick_Handler
             *----------------------------------------------------------------------------*/
            void SysTick_Handler(void) {
              msTicks++;                        /* increment counter necessary in Delay() */
            }
            
            void Delay()
            {
                int i=200000;
                while(i--);
            }
            
            
            /*----------------------------------------------------------------------------
              MAIN function
             *----------------------------------------------------------------------------*/
            int main (void) 
            {
                
              
              SystemInit();
            
            
              Init_24L01();
              init_io();
              Set_RF_RX_Mode(5);//1..32 byte 
            
                GPIO_SetDir(2,0xff,1);
                GPIO_ClearValue(2,0xff);    
            
              while (1){
                
            send_[0]=0;
            ///////MODE TX///////////////
            send(send_,5);
            ////////////////////////////
            
            
            ///////MODE RX/////////////
                  Init_24L01();
                  init_io();
                Set_RF_RX_Mode(5);
            
            for(c=0;c<130;c++)
            {
                    
                    REC();
                    
            GPIO_ClearValue(2,0xff);
            GPIO_SetValue(2,Buff[3]);
            
            }
            //////////////////////////    
            
                
                        
                }                        
            }
            جدیدترین ویرایش توسط MM320; ۰۰:۰۱ ۱۳۹۵/۰۶/۲۵.

            دیدگاه


              #7
              پاسخ : توضیح در مورد توابع nrf در lpc1768

              نوشته اصلی توسط MM320 نمایش پست ها
              سلام .
              می تونی از برنامه زیر استفاده کنی
              کد:
              #include "LPC17xx.h"
              #include "24L01.h"
              
              
              #include <lpc17xx_gpio.h>
              #include "lpc17xx_rit.h"
              
              volatile uint32_t msTicks;                            /* counts 1ms timeTicks */
              extern uchar Buff[5];//1..32 byte
              uchar send_[5]={0x11,0x22,0x33,0x44,0x55};
              uchar n;
              long long c,d_time;
              uchar a;
              /*----------------------------------------------------------------------------
                SysTick_Handler
               *----------------------------------------------------------------------------*/
              void SysTick_Handler(void) {
                msTicks++;                        /* increment counter necessary in Delay() */
              }
              
              void Delay()
              {
                  int i=200000;
                  while(i--);
              }
              
              
              /*----------------------------------------------------------------------------
                MAIN function
               *----------------------------------------------------------------------------*/
              int main (void) 
              {
                  
                
                SystemInit();
              
              
                Init_24L01();
                init_io();
                Set_RF_RX_Mode(5);//1..32 byte 
              
                  GPIO_SetDir(2,0xff,1);
                  GPIO_ClearValue(2,0xff);    
              
                while (1){
                  
              send_[0]=0;
              ///////MODE TX///////////////
              send(send_,5);
              ////////////////////////////
              
              
              ///////MODE RX/////////////
                    Init_24L01();
                    init_io();
                  Set_RF_RX_Mode(5);
              
              for(c=0;c<130;c++)
              {
                      
                      REC();
                      
              GPIO_ClearValue(2,0xff);
              GPIO_SetValue(2,Buff[3]);
              
              }
              //////////////////////////    
              
                  
                          
                  }                        
              }
              با تشکر
              بنده با کد های زیر سعی کردم هر دو کاربرد را داشته باشم، اما متاسفانه انجام نمی شود:
              برد A:
              #include "LPC17xx.h"
              #include "24L01.h"
              #include "uart.h"

              volatile uint32_t msTicks; /* counts 1ms timeTicks */
              /*----------------------------------------------------------------------------
              SysTick_Handler
              *----------------------------------------------------------------------------*/
              void SysTick_Handler(void) {
              msTicks++; /* increment counter necessary in Delay() */
              }

              void delay(){
              int i=50000000;
              while(i--);
              }
              /*----------------------------------------------------------------------------
              MAIN function
              *----------------------------------------------------------------------------*/
              int main (void)
              {
              int i=0;
              uchar Buff[5]={'1','$','.','@','4'};
              uchar buff[5]={'L','P','C','.'};
              SystemInit();



              printf("Init NRF24L01P\n");
              Init_24L01();
              init_io();

              UART0_Init();

              printf("Set_RF_RX_Mode\n");
              Set_RF_RX_Mode(4);

              for(i=0;i<=120;i++)
              {
              printf("Send Data\n");
              send(Buff,4);
              delay();

              }

              Init_24L01();
              init_io();
              Set_RF_RX_Mode(5);

              while (1)
              {
              REC();
              delay();
              }
              }


              برد B:
              #include "LPC17xx.h"
              #include "24L01.h"
              #include "uart.h"

              volatile uint32_t msTicks; /* counts 1ms timeTicks */
              extern uchar Buff[5];
              /*----------------------------------------------------------------------------
              SysTick_Handler
              *----------------------------------------------------------------------------*/
              void SysTick_Handler(void) {
              msTicks++; /* increment counter necessary in Delay() */
              }

              void Delay()
              {
              int i=2000000;
              while(i--);
              }
              /*----------------------------------------------------------------------------
              MAIN function
              *----------------------------------------------------------------------------*/
              int main (void)
              {
              int i,led=0;
              uchar AAA[5]={'a','b','c','d','e'};
              SystemInit();
              LPC_GPIO0->FIODIR |= 1<<20 ;

              UART0_Init();

              printf("Init NRF24L01P\n");
              Init_24L01();
              init_io();

              printf("Set_RF_RX_Mode\n");
              Set_RF_RX_Mode(4);



              while (1)
              {
              send(AAA,4);
              Delay();

              }
              }

              دیدگاه


                #8
                پاسخ : توضیح در مورد توابع nrf در lpc1768

                نوشته اصلی توسط a.valinezhad نمایش پست ها
                با تشکر
                بنده با کد های زیر سعی کردم هر دو کاربرد را داشته باشم، اما متاسفانه انجام نمی شود:
                برد A:
                #include "LPC17xx.h"
                #include "24L01.h"
                #include "uart.h"

                volatile uint32_t msTicks; /* counts 1ms timeTicks */
                /*----------------------------------------------------------------------------
                SysTick_Handler
                *----------------------------------------------------------------------------*/
                void SysTick_Handler(void) {
                msTicks++; /* increment counter necessary in Delay() */
                }

                void delay(){
                int i=50000000;
                while(i--);
                }
                /*----------------------------------------------------------------------------
                MAIN function
                *----------------------------------------------------------------------------*/
                int main (void)
                {
                int i=0;
                uchar Buff[5]={'1','$','.','@','4'};
                uchar buff[5]={'L','P','C','.'};
                SystemInit();



                printf("Init NRF24L01P\n");
                Init_24L01();
                init_io();

                UART0_Init();

                printf("Set_RF_RX_Mode\n");
                Set_RF_RX_Mode(4);

                for(i=0;i<=120;i++)
                {
                printf("Send Data\n");
                send(Buff,4);
                delay();

                }

                Init_24L01();
                init_io();
                Set_RF_RX_Mode(5);

                while (1)
                {
                REC();
                delay();
                }
                }


                [/CPP]
                سلام
                شما در مثال برد A در حلقه بی نهایت فقط دریافت انجام دادید و چیزی نمایش ندادید اگه اشتباه گفتم لصفا بگید؟

                دیدگاه


                  #9
                  پاسخ : توضیح در مورد توابع nrf در lpc1768

                  در داخل تابع rec ، دستوراتی برای ارسال نتیجه روی uart0 وجود دارد، به صورت زیر:
                  uchar Buff[5];
                  void REC(void)
                  {
                  CurrentData=SPI_Read(STATUS); // read register STATUS's value

                  if(CurrentData == 0x40) // if receive data ready (RX_DR) interrupt
                  {
                  CurrentData = 0; // clear flag
                  SPI_Read_Buf(RD_RX_PLOAD,Buff,4); // read receive payload from RX_FIFO buffer

                  printf("Data RX:");
                  Buff[4] = 0;
                  printf("%s\n", Buff);
                  Delay1ms(0x1000);

                  SPI_RW_Reg(WRITE_REGL+STATUS,0X70);
                  SPI_RW_Reg(FLUSH_RX,0);

                  send(Buff,1);
                  Set_RF_RX_Mode(4);
                  }
                  }

                  دیدگاه


                    #10
                    پاسخ : توضیح در مورد توابع nrf در lpc1768

                    نوشته اصلی توسط a.valinezhad نمایش پست ها
                    در داخل تابع rec ، دستوراتی برای ارسال نتیجه روی uart0 وجود دارد، به صورت زیر:
                    uchar Buff[5];
                    void REC(void)
                    {
                    CurrentData=SPI_Read(STATUS); // read register STATUS's value

                    if(CurrentData == 0x40) // if receive data ready (RX_DR) interrupt
                    {
                    CurrentData = 0; // clear flag
                    SPI_Read_Buf(RD_RX_PLOAD,Buff,4); // read receive payload from RX_FIFO buffer

                    printf("Data RX:");
                    Buff[4] = 0;
                    printf("%s\n", Buff);
                    Delay1ms(0x1000);

                    SPI_RW_Reg(WRITE_REGL+STATUS,0X70);
                    SPI_RW_Reg(FLUSH_RX,0);

                    send(Buff,1);
                    Set_RF_RX_Mode(4);
                    }
                    }
                    دستور خط 20 و 21(تابع REC) خودتون اضاف کردید ?

                    دیدگاه


                      #11
                      پاسخ : توضیح در مورد توابع nrf در lpc1768

                      خیر، داخل خود تابع بود.

                      دیدگاه

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